FB_EnOceanPTM200

FB_EnOceanPTM200 1:

Der Funktionsbaustein FB_EnOceanPTM200() gibt eine anwenderfreundliche Auswertung über den Zustand eines EnOcean PTM200- oder PTM250-Moduls. Hierzu ist die Verwendung des Funktionsblocks FB_EnOceanReceive() notwendig.

Im Unterschied zum PTM100-Modul, können beim PTM200-Module und beim PTM250-Modul bis zu zwei Taster gleichzeitig gedrückt werden. Des weiteren unterstützt das PTM200- und PTM250-Modul vier, statt acht Taster.

Wichtig ist, dass zu jedem verwendeten Tasten-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

bSwitches          : ARRAY [0..3] OF BOOL;
bError             : BOOL := FALSE;
nErrorId           : UDINT := 0;

bSwitches: Dieses Feld von 4 boolschen Werten beschreibt die Zustände der 4 Taster auf dem Taster-Modul.

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;
  fbEnOceanPTM100_1    : FB_EnOceanPTM200;
  fbEnOceanPTM100_2    : FB_EnOceanPTM200;
  bSwitches1           : ARRAY [0..3] OF BOOL;
  bSwitches2_1         : BOOL;
  bSwitches2_2         : BOOL;
  bSwitches2_3         : BOOL;
  bSwitches2_4         : BOOL;
END_VAR
     
fbEnOceanReceive(bEnable := TRUE,
         stEnOceanInData := stEnOceanInData
         stEnOceanOutData := stEnOceanOutData);
     
fbEnOceanPTM200_1(bEnable := NOT fbEnOceanReceive.bError AND fbEnOceanReceive.bEnable,
          nTransmitterId := 16#000000C6,
          tWatchdog := t#0s,
          stEnOceanReceivedData := fbEnOceanReceive.stEnOceanReceivedData);
          bSwitches1 := fbEnOceanPTM200_1.bSwitches;
     
fbEnOceanPTM200_2(bEnable := NOT fbEnOceanReceive.bError AND fbEnOceanReceive.bEnable,
          nTransmitterId := 16#000000C7,
          tWatchdog := t#0s,
          stEnOceanReceivedData := fbEnOceanReceive.stEnOceanReceivedData);

bSwitches2_1 := fbEnOceanPTM200_2.bSwitches[0];
bSwitches2_2 := fbEnOceanPTM200_2.bSwitches[1];
bSwitches2_3 := fbEnOceanPTM200_2.bSwitches[2];
bSwitches2_4 := fbEnOceanPTM200_2.bSwitches[3];  

In diesem Beispielprogramm werden 2 Sendemodule (PTM200 / PTM250) abgefragt, ein Sendemodul mit der Transmitter-Id 16#C6 und ein anderes mit der Transmitter-Id 16#C7. Für beide Sendemodule wurde jeweils ein Funktionsbaustein FB_EnOceanPTM200() 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. Die Taster des ersten Sendemoduls werden zur weiteren Auswertung einem gleich großen boolschen Array bSwitches1 zugeordnet, während die Taster des zweiten Sendemoduls einzelnen boolschen Variablen bSwitches2_1 bis bSwitches2_4 zugewiesen werden - beide Möglichkeiten sind denkbar.

Ein Bespielprogramm im freigrafischen Funktionsplaneditor (CFC) finden sie bei der Beschreibung zum FB_EnOceanPTM100().