Aufgabenstellung
Mittels der 433MHz Senderoption des Hubo lassen sich diverse Geräte per Funk steuern.
Lösung
Im folgenden Beispiel wurde auf das in der Hubo C++-Library enthaltene Demoprogramm „RCSwitch“ einer Funksteckdosensteuerung zurückgegriffen, um den Sender zu steuern. Das Programm muß sich demnach im Usermode ausführbar, und im Standardsuchpfad des Betriebssystems (z.B. unter „/usr/bin/“) befinden. Zudem bedarf es einer Anpassung der CODESYS Runtime Konfiguration (siehe “/etc/CODESYSControl_User.cfg”) um die Einträge:
[SysProcess]
Command.0=RCSocket
Das Vorgehen ist ebenfalls in der Onlinehilfe der Bibliothek beschrieben.
Deklarationsteil
PROGRAM PLC_Switch VAR bSocketOn : BOOL := FALSE; bSocketState : BOOL := FALSE; mySocket : Hubo.RCSocket := (familyCode := 31, SocketNo := 1); END_VAR
Der FB RCSocket wird entsprechend der Konfiguration der Steckdose mit Familycode und Steckdosennummer konfiguriert.
Funktionsrumpf
// Einmalige Initialisierung des Objektes. Folgeaufrufe sind unschädlich und werden ignoriert. IF mySocket.Initialize() <> Hubo.ERROR.NO_ERROR THEN return; END_IF // Schalter zyklisch anhand der Variable "bSocketOn" aktualisieren. IF bSocketState <> bSocketOn THEN mySocket.Switch(bSocketOn); bSocketState := bSocketOn; END_IF
Ein puffern der Werte entfällt hier. Stattdessen wird eine Variable bSocketOn von der Webvisualisierung geändert und der jeweils geänderte Wert gesendet.