Übung 6.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!
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 U6_5_Gebaeude.project1,2) und Video):
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).
1) in einigen Browsern muss die .project-Datei mit der rechten Maustaste angeklickt und zunächst durch "Link speichern unter" oder "Link herunterladen" gespeichert werden, bevor man diese dann mit Codesys öffnen kann.
2) Die Projekte wurden mit Codesys V3.5.16.4 erstellt. Falls Sie eine neuere Version verwenden, setzen Sie bitte nach dem Öffnen der Projektdateien unter Projekt|Projektumgebung "Alles auf neuest". Außerdem klicken Sie bitte im Fenster Geräte auf Device und mit der rechten Maustaste auf "Gerät aktualisieren"!
Speicherprogrammierbare Steuerungen in der Industrie 4.0
5. Auflage erschienen im Hanser Verlag 2021