FB_EnOceanSTM100
Veraltet! Bei neuen Projekten sollte der Baustein FB_EnOceanSTM100Generic() verwendet werden!
Der Funktionsbaustein FB_EnOceanSTM100() gibt eine anwenderfreundliche Auswertung über die Daten eines EnOcean STM100-Moduls. Hierzu ist die Verwendung des Funktionsblocks FB_EnOceanReceive() notwendig.
Wichtig ist, dass zu jedem verwendeten STM100-Modul eine neue Instanz dieses Bausteines angelegt werden muss.
VAR_INPUT
bEnable : BOOL := FALSE;
tWatchdog : TIME;
nTransmitterId : UDINT;
stEnOceanReceivedData : ST_EnOceanReceivedData;
bEnable: Ein positives Signal an diesem Eingang setzt den Baustein aktiv. Bei einem negativen Signal am bEnable Eingang wird im Baustein keine Funktion ausgeführt und alle Ausgänge werden auf 0 bzw. FALSE gesetzt.
tWatchdog: Überwachungszeit. Innerhalb dieser Zeit müssen neue Informationen über den Eingang stEnOceanReceivedData in diesen Baustein gelangen. Ist diese Zeit auf t#0s gesetzt, so ist die Watchdog-Funktion inaktiv.
nTransmitterId: ID des EnOcean-Modules, auf den der Baustein reagieren soll.
stEnOceanReceivedData: Informationen und notwendige Verbindung zum EnOcean-Empfangsbaustein FB_EnOceanReceive(). Diese Informationen sind in einer Struktur des Typs ST_EnOceanReceivedData hinterlegt.
VAR_OUTPUT
eEnOceanRotarySwitch : E_EnOceanRotarySwitch;
nSetpoint : INT;
nTemperature : INT;
bPresentSwitch : BOOL;
bLearnSwitch : BOOL;
bError : BOOL := FALSE;
nErrorId : UDINT := 0;
eEnOceanRotarySwitch: Die Ausgabe an diesem Ausgang erfolgt nach der Definition des ENUM-Types E_EnOceanRotarySwitch und beschreibt die Stellung des Drehschalters am Raumbediengerät.
nSetpoint: An dieser Ausgangsvariablen liegt der am Gerät eingestellte Sollwert an. Dieser kann Werte im Bereich von -100 bis +100 annehmen.
nTemperature: Hier wird die gemessene Temperatur in 1/10 °C ausgegeben mit einem Messbereich von 0 °C bis 40 °C. Bei ausgelöstem Watchdog vermutet der Baustein einen drahtbruchähnlichen Fehler und der Wert wird fest auf 850 °C gesetzt.
bPresentSwitch: Bei Aktivierung der Anwesenheitstaste am Raumbediengerät wird dieser Ausgang TRUE.
bLearnSwitch: Bei Aktivierung der Anlerntaste am Raumbediengerät wird dieser Ausgang TRUE.
bError: Der Ausgang wird TRUE sobald ein Fehler auftritt. Dieser Fehler wird über die Variable nErrorId beschrieben.
nErrorId: Beschreibt die Art des Fehlers (siehe Fehlercodes).
Anhand des folgenden Programmbeispiels soll die Funktionsweise des Bausteines näher beschrieben werden:
PROGRAM MAIN
VAR
fbEnOceanReceive : FB_EnOceanReceive;
fbEnOceanSTM100_1 : FB_EnOceanSTM100;
fbEnOceanSTM100_2 : FB_EnOceanSTM100;
nTemperature : ARRAY [1..2] OF INT;
nSetpoint : ARRAY [1..2] OF INT;
nStateRotarySwitch : ARRAY [1..2] OF E_EnOceanRotarySwitch;
bPresentSwitch : ARRAY [1..2] OF BOOL;
END_VAR
fbEnOceanReceive(bEnable := TRUE,
stEnOceanInData := stEnOceanInData,
tEnOceanOutData := stEnOceanOutData);
fbEnOceanSTM100_1(bEnable := NOT fbEnOceanReceive.bError AND fbEnOceanReceive.bEnable,
nTransmitterId := 16#000000C4,
tWatchdog := t#1h,
stEnOceanReceivedData := fbEnOceanReceive.stEnOceanReceivedData
nTemperature => Temperature[1],
nSetpoint => nSetpoint[1] ,
eEnOceanRotarySwitch => nStateRotarySwitch[1],
bPresentSwitch => bPresentSwitch[1]);
fbEnOceanSTM100_2(bEnable := NOT fbEnOceanReceive.bError AND fbEnOceanReceive.bEnable,
nTransmitterId := 16#000000C5,
tWatchdog := t#0s,
stEnOceanReceivedData := fbEnOceanReceive.stEnOceanReceivedData,
nTemperature => Temperature[2],
nSetpoint => nSetpoint[2] ,
eEnOceanRotarySwitch => nStateRotarySwitch[2],
bPresentSwitch => bPresentSwitch[2]);
In diesem Beispielprogramm werden 2 Raumbediengeräte abgefragt, einer mit der Transmitter-Id 16#000000C4 und ein anderer mit der Transmitter-Id 16#000000C5. Für beide Module wurde jeweils ein Funktionsbaustein FB_EnOceanSTM100() angelegt. Beide Funktionsbausteine erhalten ihre Informationen von einem vorangeschalteten Empfängerbaustein FB_EnOceanReceive() und sind nur dann aktiv (Eingang bEnable), wenn der Empfängerbaustein aktiv und nicht in Störung ist. Das erste Gerät wird durch die Watchdog-Funktion überwacht, wobei innerhalb von 1 Stunde neue Werte an die Steuerung übertragen werden müssen, das zweite Gerät ist ohne Watchdog-Überwachung programmiert. Zur weiteren Auswertung sind die an den Funktionsbausteinen ausgegebenen Werten Merkern zugewiesen.
Im freigrafischen Funktionsplaneditor (CFC) würde dasselbe Beispiel folgendermaßen aussehen, wobei die Variablendeklaration die gleiche wie beim oben aufgeführten Beispiel ist: