Schritt 4: Erzeugen des Submoduls "Light"
Wie vorher für den Schalter (Switch
) und den einfachen Schalter (SwitchSimple
) muss für das Modul Light
“ eine Moduldeklaration Light
, ein Funktionsbaustein Light
und ein Interface ILight
angelegt werden. Das Modul wird vom Funktionsbaustein implementiert, welcher seinerseits das Interface ILight
implementiert.
Um das Modul Light
unterhalb des Moduls Room
hinzufügen zu können, muss die Moduldeklaration vonRoom
mit der Sektion Slots
erweitert werden. In dieser Sektion wird eine Untersektion Slot_Multi
deklariert, welche Lights
genannt wird und welche Module des Tyjps Light
aufnehmen kann. Die Anzahl der Lichter, welche zu einem Raum hinzugefügt werden muss oder kann, wird durch den Parameter Cardinality
definiert (in unserem Beispiel zwischen 1 und 3 Lichter). Weiterhin müssen zwei Variablen definiert werden: Variable
(pLights
, welche die Funktionsbausteininstanzen der Licht-Module des Raumes beschreibt), und Var_Count
(uiNumberOfLights
, welche die Anzahl der Lichter des Raumes beschreibt).
Slots

Die Variablen pLights
und uiNumberOfLights
müssen zum Funktiosbaustein der Module „Lights“ hinzugefügt werden, wobei uiNumberOfLights
ein UINT
und pLights
vom Typ POINTER TO ILight
ist. Mit dieser Definition können nur Module zum Slot Lights
hinzugefügt werden, deren Funktionsblöcke auch das Interface ILight
implementieren.
Room

Das gleiche Slot-Kozept, welches für die Module Room
“ verwendet wurde, wird nun für das Modul Light
verwendet. Somit beinhaltet die Deklaration von Light
einen Slot mit einem Switch
, weshalb dieser Slot kein Multi-Slot, sondern ein einfacher Slot ist. Die zusätzlichen Parameter des Moduls Light
sind die Geschwindigkeit des Dimmers rSpeed
und die maximale Helligkeit uiMaxValue
. Abschließend muss noch ein Ausgang definiert werden, welcher die Helligkeit des damit verbundenen Lichts repräsentiert. Alle Parameter, Slots und Ausgänge müssen auch als Variablen zum Funktionsbaustein des Moduls Light
hinzugefügt werden.
Light

Light

