FB_BACnet_Program

Der folgende Funktionsbaustein wird für die Verbindung von einem BACnet-Objekt des lokalen BACnet-Servers verwendet. Die Verknüpfung des Funktionsbausteins zu dem entsprechenden BACnet-Objekt erfolgt mit Hilfe von Prozessdaten.

Die Prozessdaten können manuell in dem BACnet-Objekt erstellt und von Hand verknüpft werden oder mittels PLC-Automapping automatisch erzeugt werden. Die für das PLC-Automapping nötigen Kommentare ( (* ~ (BACnet... | ??? | ??? ) *) ) sind bereits in der Deklaration des Funktionsbausteins enthalten.

FB_BACnet_Program 1:

Verwendung

Mit Hilfe des Funktionsbausteins "FB_BACnet_Program" wird die Objekt-Funktionalität für den BACnet-Stack zur Verfügung gestellt. Das BACnet-Objekt wurde dazu unter einem lokalen BACnet-Server angelegt. Das BACnet-Objekt auf Seite BACnet-Stack dient als Interface zur BACnet-Welt. Die Abarbeitung der Funktionalität des BACnet-Objekts wird durch die SPS-Instanz des Bausteins "FB_BACnet_Program" bereitgestellt.

Diese Herangehensweise hat den Vorteil, dass damit bereits bestehende, kundenspezifische SPS-Funktionen leicht mit der BACnet-Welt verknüpft werden können. In SPS-Code implementierte Abläufe können so mit Hilfe des Handshake-Interfaces (stDoneFlags, stFailedFlags und stRequestFlags) des FB "FB_BACnet_Program" getriggert werden.

Der Funktionsbaustein "FB_BACnet_Program" enthält die in der BACnet-Spezifikation beschrieben State-Transistions und bildet diese auf dem FB-Interface mit Hilfe der Strukturen: stDoneFlags, stFailedFlags und stRequestFlags ab (siehe unter Transition-Diagram Bild-2).

FB_BACnet_Program 2:
Bild-1: Beispiel eines BACnet-Program-Objekts unterhalb eines lokalen BACnet-Servers.

VAR_INPUT

bRelease           : BOOL;
bCommonError       : BOOL;
bWaitForSomething  : BOOL;
stDoneFlags        : ST_BACnet_ProgramHandshakeRequests;
stFailedFlags      : ST_BACnet_ProgramHandshakeRequests;
bModeUnloadComplex : BOOL := TRUE;

bRelease: Gibt die Freigabe für das Abarbeiten von Anforderungen. Wenn bRelease = FALSE gesetzt ist, dann verharrt des Programm im Zustand HALTED.

bCommonError: Fehler bei der Ausführung eines Program_Change-Requestsaus der Struktur stRequestFlags. Das Setzten des Eingangs bei laufender Ausführung eines Program_Change-Requests führt zu einer Abbruchbedingung (siehe unter Transition-Diagram Bild-2).

bWaitForSomething: Befindet sich das BACnet-Objekt im Zustand RUNNING kann mit TRUE Setzen des Eingangs auf den Zustand WAITING umgeschaltet werden, so dass das BACnet-Objekt für weitere Requests außer Unload und Halt gesperrt wird (siehe unter Transition-Diagram Bild-2).
Um in den Zustand RUNNING zurück zu kehren muss der Eingang auf FALSE zurück gesetzt werden.

stDoneFlags: Die Flags innerhalb der Eingangsstruktur dienen der Quittierung von anstehenden Program_Change-Requests aus der Ausgangsstruktur stRequestFlags. Ein Signalwechsel eines der Flags von FALSE --> TRUE bestätigt die Ausführung des entsprechenden Program_Change-Requests.

stFailedFlags: Die Flags innerhalb der Eingangsstruktur dienen der Abbruchmeldung des anstehenden Program_Change-Requests aus der Ausgangsstruktur stRequestFlags. Ein Signalwechsel eines der Flags von FALSE --> TRUE bricht die Ausführung des entsprechenden Program_Change-Requests ab.

bModeUnloadComplex: Wurde der Modus "Unload Complex" mit Hilfe des Eingangs aktiviert, so wechselt der BACnet-Objekt Status von UNLOADING zu IDLE nach der Ausführung des Requests Unload (siehe unter Transition-Diagram Bild-2). Wird der Eingang auf FALSE gesetzt, dann verharrt das BACnet-Objekt im Zustand UNLOADING nach dem der Request Unload ausgeführt wurde.

VAR_OUTPUT

bReady             : BOOL;
bOverridden        : BOOL;
bOutOfService      : BOOL;
bFault             : BOOL;
bInAlarm           : BOOL;
bProcessError      : BOOL;
bOtherFault        : BOOL;
stRequestFlags     : ST_BACnet_ProgramHandshakeRequests;
stActiveStateFlags : ST_BACnet_ProgramHandshakeStates;
bError             : BOOL;
nErrorId           : UINT;

bReady: Meldung der allgemeinen Bereitschaft. Ist dieser Ausgang gesetzt, so sind die übrigen Status-Ausgänge gültig (ActiveStateFlags, Overridden ...). Ist der Ausgang FALSE, dann meldet der zugehörige Funktionsbaustein "FB_BACnet_Device" nicht "Operational" oder die Baustein-Instanz wurde im System Manager nicht richtig verknüpft.

bOverridden, bOutOfService, bFault, bInAlarm: Siehe BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt Program und Property Status_Flags.

bProcessError, bOtherFault: Siehe BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt Program und Property Reliability.

stRequestFlags: Enthält die Flags zu den entsprechenden Program_Change-Requests. Ist ein Flag auf TRUE gesetzt, so wird eine Statusänderung des Programm-Objekts durch das SPS-Programm angefordert. Wurde die Änderung erfolgreich ausgeführt wird dies mit einem Signalwechsel FALSE --> TRUE des entsprechenden Flags der Eingangsstruktur stDoneFlags bestätigt. Kann der Request von dem zugehörigen SPS-Programm nicht ausgeführt werden oder gibt es einen Abbruch während der Ausführung, so muss dies mit Hilfe des entsprechenden Flags der Eingangsstruktur stFailedFlags gemeldet werden. Der Abbruch wird dann im Status des BACnet-Objekts sichtbar.

stActiveStateFlags: Enthält Flags die den aktuellen Zustand des BACnet-Program-Objects widerspiegeln (siehe unter Transition-Diagram Bild-2).

bError: Ein Fehler steht an.

nErrorId: Fehlernummer
0 = kein Fehler
2 = fehlerhaftes Prozessdatenmapping erkannt (Mapping im System Manager prüfen; evtl. SPS-Projekt komplett übersetzen und erneut laden)
3 = der zugehörige BACnet-Server ist nicht bereit (bOperational = FALSE an Instanz des FB_BACnet_Device)
Die Fehlernummern können als Baustein-Konstanten über die FB-Instanz abgefragt werden (FB_BACnet_???.nERR_xxx).

VAR_IN_OUT

Device       : FB_BACnet_Device;

Device: Angabe der Instanz des lokalen, zugehörigen BACnet-Server Bausteins. Pro BACnet-Adapter ist ein BACnet-Server möglich. Siehe FB_BACnet_Adapter und FB_BACnet_Device für weitere Informationen.

Transition-Diagram

FB_BACnet_Program 3:

Bild-2: aus BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt Program, Abbildung 12-3 "State Transitions for the program object"