Schritt 6: Implementierung
Schalter
Für die Implementierung der Funktion für das Modul Switch
wird die Methode CallPrioMediumStart
von Module
verwendet und mit der eigenen Implementierung überschrieben. Diese Funktion wird gewählt, weil das Modul Room
eine Task MEDIUM
deklariert, Dies bedeutet nämlich, dass die Methode CallPrioMediumStart
des Funktionsbausteins Switch
automatisch in jedem Zyklus der mittlerern Task aufgerufen wird. Genauere Informationen können dem Beispielprojekt selber entnommen werden. Die Hauptfunktion des Schalters ist die Unterscheidung zwischen Schalten und Dimmen. Nach dem Drücken des Schalters startet ein Timer mit einer Zeit, welche durch Anwenderparameter vorgegeben werden kann. Wenn der Timer abgelaufen ist und der Schalter immer noch gedrückt ist, wird die Dimmerfunktion verwendet, was auch durch die Variable XPushLong
angezeigt wird. Die Variable xPush
wird TRUE
, wenn der Schalter nur kurz gedrückt wird. Für beide Variablen xPushLong
und xPush
werden sowohl im Funktionsbaustein Switch
als auch im Interface ISwitch
Eigenschaften hinzugefügt, so dass sie vom Eltern-Lichtfunktionsbaustein benutzt werden können.
Licht
Auch der Funktionsbaustein Light
überschreibt die Methode CallPrioMediumStart
. Abhängig von der Eingangsvariablen der zugehörigen Variablen wird das Licht auf "an“ oder "aus“ gedimmt oder einfach nur geschaltet. Für den Dimmer wird der Geschwindigkeitswert des deklarierten Parameters rSpeed
verwendet. Nach Erreichen des Maximums oder Minimums des Dimmwertes wird das Dimmen beenddet. Wenn das Licht in einem gedimmten Zustand ist und der Schalter gedrückt wird, wird das Licht ausgeschaltet. (Die vollständige Implementierung kann im Beispielprojekt gesehen werden)
Programmcode überprüfen
Nach der Implementierung sollten die Deklarationen durch Ausführen des Befehls Übersetzen überprüft werden. Wenn kein Fehler erscheint, ist die Deklaration in Ordnung.