Übung 7.5
Steuerung der Raumbeleuchtung in Gebäuden
In Gebäuden soll die Steuerung der Raumbeleuchtung objektorientiert programmiert werden.
- a) Programmieren Sie den Funktionsbaustein LightRoom für Räume mit einer Lampe, der jeweils durch eine Methode die Lampe ein- und ausschaltet!
- b) Programmieren Sie den Funktionsbaustein LightRoom2 für Räume mit zwei Lampen, indem Sie das Prinzip der Vererbung anwenden!
- c) Legen Sie die Schnittstelle Room mit den beiden Methoden fest um implementieren Sie sie!
- d) Programmieren Sie unter Verwendung der Schnittstelle den Funktionsbaustein RoomControl, der abhängig von der aktuellen Uhrzeit die Lampen eines Raums abends ein- und morgens ausschaltet!
- e) Instanziieren Sie den Funktionsbaustein zur Steuerung mehrerer unterschiedlicher Räume im Programm Gebaeudesteuerung!
Hinweis: Um Methoden und Properties mit CoDeSys in Funktionsbausteinen einfügen zu können, muss u.U. im Menü Tools/Options/Features.
der Button "Predefined Feature Sets" auf "Professional" eingestellt werden.
Lösung:
Die Lösung ist auch dokumentiert im Artikel von Werner: "Object-Oriented Extensions for IEC 61131", IEEE Industrial Electronics Magazine, 2009.
Insgesamt werden die nebenstehenden Module angelegt (s. auch Projekt U7_5_Gebaeude.project):
a) Der folgende Funktionsbausten LightRoom schaltet die Lampe in einem Raum ein oder aus:
FUNCTION_BLOCK LightRoom IMPLEMENTS Room
VAR_OUTPUT
LIGHT:BOOL;
END_VAR
METHOD ON
LIGHT:=TRUE;
METHOD OFF
LIGHT:=FALSE;
Insgesamt werden die nebenstehenden Module angelegt (s. auch Projekt U7_5_Gebaeude.project):
a) Der folgende Funktionsbausten LightRoom schaltet die Lampe in einem Raum ein oder aus:
FUNCTION_BLOCK LightRoom IMPLEMENTS Room
VAR_OUTPUT
LIGHT:BOOL;
END_VAR
METHOD ON
LIGHT:=TRUE;
METHOD OFF
LIGHT:=FALSE;
b. Der folgende Funktionsbausten LightRoom2 schaltet zwei Lampen in einem Raum ein oder aus.
Durch das Schlüsselwort EXTENDS wird die Vererbung aus dem Funktionsbaustein Lightroom angegeben,
durch den Befehl SUPER^ werdend ie Methdoen ON und OFF aus Lightroom übernommen.
FUNCTION_BLOCK LightRoom2 EXTENDS LightRoom
VAR_OUTPUT
LIGHT2:BOOL;
END_VAR
METHOD ON
SUPER^.ON();
LIGHT2:=TRUE;
METHOD OFF
SUPER^.OFF();
LIGHT2:=FALSE;
c. Die Schnittstelle Room umfasst wie abgebildet die Methoden ON und OFF.
d) Der Funktionsbaustein RoomControl schaltet die Lampen eines Raums ab 20:15 Uhr automatisch ein und ab 06:15 Uhr
automatisch aus:
FUNCTION_BLOCK RoomControl
VAR_INPUT
RM: Room;
Daytime: TOD;
END_VAR
IF Daytime>=TOD#20:15 OR Daytime<TOD#6:15 THEN
RM.ON();
ELSE
RM.OFF();
END_IF
e) Für jeden Raum muss zunächst ein Funktionsbaustein (Lightroom oder Lightroom2) instanziiert werden. Die Lichtsteuerung
kann dann polymoprh erfolgen. Durch die Schnittstelle Room kann entweder wie im Fall von Raum1 eine Lampe entsprechend
der Tageszeit angesteuert werden oder mit demselben Baustein auch ein Raum mit 2 Lampen (Raum2).
Speicherprogrammierbare Steuerungen für die Fabrik- und Prozessautomation
4. Auflage erschienen im Hanser Verlag, 2015