FB_BACnet_NSinkReadEvent

FB_BACnet_NSinkReadEvent 1:

Anwendung

Mit Hilfe des Bausteins kann ein beliebiger Eintrag aus der BACnet Notification Sink ausgelesen werden. Unter Beispiel wird eine mögliche Beschaltung gezeigt.

Am Eingang nIndex wird der zu lesende Eintrag selektiert. Die Nummerierung entspricht der Reihenfolge im Puffer der Notification Sink. Bei rotierendem Puffer beginnt die Nummierung eintreffender Events bei 0, im Falle des Pufferüberlaufs.

Baustein intern wird zudem die Decodierung des Nachrichtentextes anhand des String-Codings vorgenommen. Dabei werden folgende Encodings unterstützt: UTF-8, UCS2, UCS4 und ISO8859-1. Der String sMessage innerhalb der Ausgabestruktur stEvent liegt Windows-1252 codiert vor (siehe auch FB_BACnet_StringExtDecode). Tritt bei der Decodierung der ein Fehler auf, so wird dies am Ausgang nErrorId signalisiert.

Die Bausteininstanz wird im SPS Programm angelegt und zyklisch aufgerufen. Der Ein-/Ausgang stAdsConn muss mit dem Ausgang stBACnetAds des entsprechenden NotificationSink-Bausteins (FB_BACnet_NotificationSink) verbunden werden.

FB_BACnet_NSinkReadEvent 2:
Bild-1: Online-Ansicht der BACnet Notification Sink.

VAR_INPUT

nIndex     : UDINT;
bAutoGet   : BOOL:=TRUE;
bGet       : BOOL;

 

nIndex: Index des zu lesenden Event-Eintrags (0..n).

bAutoGet: TRUE = Lese den Eventeintrag automatisch aus, wenn die ADS Verbindung oder der Eingang nIndex sich geändert haben. Eine ADS Verbindungsänderung liegt vor, wenn die Verbindung nach einem Unterbruch wiederhergestellt oder die AMS NetID bzw. Port geändert wurde. Ein automatisches Auslesen geschieht nicht zyklisch und auch nicht bei Änderung des Eventeintrags selbst!

bGet: FALSETRUE = Eventeintrag wird unabhängig vom Eingang bAutoGet einmalig ausgelesen.

 

VAR_OUPUT

bDone      : BOOL;
bNoEntry   : BOOL;
bBusy      : BOOL;
bError     : BOOL;
nErrorId   : UINT;
stEvent    : ST_BACnet_NSinkEvent;

 

bDone: Lesen der Daten erfolgreich beendet. bDone bleibt so lange gesetzt bis bGet und bAutoGet zurückgesetzt sind oder ein erneutes Auslesen beginnt. Wurde bGet und bAutoGet zurück gesetzt bevor bDone aktiv ist, dann wird bDone für einen Zyklus gesetzt. bDone wird nur gesetzt, wenn der zu lesende Eventeintrag nicht leer ist.

bNoEntry: Lesen beendet; jedoch ohne Daten - Eventeintrag unter nIndex ist leer. bNoEntry bleibt so lange gesetzt bis ein erneutes Auslesen beginnt. Der Ausgang dient dazu das Ende der Event-Liste zu erkennen.

bBusy: Der Baustein ist beschäftigt.

bError: Fehler während der Abarbeitung.

nErrorId: Fehlercode, siehe BACnet_Globals für eine Übersicht.

stEvent: Ausgabestruktur mit Daten eines Eventeintrags. Siehe Beispiel für eine Gegenüberstellung der PLC Daten und des Online-Eventeintrags im TwinCAT System Manager.

VAR_IN_OUT

stAdsConn      : ST_BACnet_AdsConnection;

 

stAdsConn: Verknüpfung mit dem Ausgang stBACnetAds des entsprechenden NotificationSink-Bausteins.

 

Beispiel 1: Gegenüberstellung PLC und System Manager

FB_BACnet_NSinkReadEvent 3:
Bild-2: Beispiel eines Event-Eintrag in der PLC
FB_BACnet_NSinkReadEvent 4:
Bild-3: Beispiel eines Event-Eintrag im TwinCAT System Manager

Beispiel 2: Bausteinaufruf

FB_BACnet_NSinkReadEvent 5:
Bild-4: Beispiel für die Verwendung. Zyklisches Lesen des ersten Event-Eintrags einer BACnet Notification Sink mit AMS Port 1001.
FB_BACnet_NSinkReadEvent 6:

Der AMS Port ist abhängig von der TwinCAT System Manager Konfiguration des entsprechenden BACnet Device (siehe FB_BACnet_NotificationSink).