Fall 2: Sollwertverlauf wird intern generiert
In diesem Fall wird ein neuer Funktionsbaustein definiert, der die Klasse MC_SEW_UserBasic erweitert.

Im Rumpf des Funktionsbausteins wird die Methode SUPER^() aufgerufen, in welcher bestimmte Funktionen vorimplementiert sind. Wenn beim Einfügen dieses neuen Funktionsbausteins auch automatisch die Properties der Vaterklasse angehängt werden, dann müssen diese alle wieder gelöscht werden. Es ist lediglich eine Methode CallHighPrio() einzufügen, in welcher die Berechnung des gewünschten Sollwertverlaufs zu implementieren ist.

In nachfolgendem Beispiel wird gezeigt, wie die Implementierung des selben Sollwertverlaufs wie in Fall 1: Sollwertverlauf wird von außen eingespeist (Sinusschwingung der Amplitude _lrAmplitude mit der Periodendauer _lrPeriod) aussehen könnte. Dazu sind zusätzliche lokale Variable im neuen Funktionsbaustein MyUserMaster zu deklarieren. Außerdem wird ein zusätzlicher Eingang StartSetpointGeneration benötigt, mit dem die Sollwert-Generierung gestartet werden kann.

In der Methode allHighPrio() sind dann die dazugehörigen Berechnungen zu programmieren. Dabei muss die Zuweisung an die Variablen _lrMasterPosition, _lrMasterVelocity und _lrMasterAcceleration durchgeführt werden:

Eine Instanz des neuen Funktionsbausteins muss deklariert werden. Bei der Deklaration können die charakteristischen Parameter des Sollwertverlaufs initialisiert werden.

Die Instanz des Funktionsbausteins ist in der Task der Sollwert-Generierung (TaskHighPrio) aufzurufen. Der Aufruf erfolgt idealerweise vor dem Aufruf des dazugehörigen MC_GearIn, dem die Instanz als "Master" verschaltet ist. Die Sollwert-Generierung wird gestartet, wenn der betreffende Funktionsbausteins MC_GearIn die Meldung InGear geschaltet hat:

Schließlich erhält man so denselben Sollwert-Verlauf wie im Fall 1. Die Berechnung der Sollwert-Generierung sind nun aber im Baustein gekapselt und nicht außerhalb programmiert.
