FB_BACnet_RemoteProgram

Der folgende Funktionsbaustein wird für die Verbindung von einem entfernten BACnet-Objekt eines lokalen BACnet-Clients verwendet. Die Verknüpfung des Funktionsbausteins zu dem entsprechenden BACnet-Objekt erfolgt mit Hilfe von Prozessdaten. Der Datenaustausch mit dem entfernten BACnet-Server erfolgt via BACnet mit Hilfe von WOC (Write-On-Change) und COV (Change-On-Value) oder via Polling (nicht empfohlen).

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_RemoteProgram 1:

Verwendung

Mit Hilfe des Funktionsbausteins "FB_BACnet_RemoteProgram" kann lesend und schreibend auf ein entferntes BACnet-Objekt vom Typ Program (PROG) zugegriffen werden. Das entfernte BACnet-Objekt wurde dazu unter einem lokalen BACnet-Client hinzugefügt.

FB_BACnet_RemoteProgram 2:
Bild-1: Beispiel eines entfernten BACnet-Objekts unterhalb eines lokalen BACnet-Clients.

VAR_INPUT

bEnablePV      : BOOL;
ePV            : E_BACnetProgramRequest;
bRetrigger     : BOOL; (* execute selected request on raising edge again *)

bEnablePV: Gibt den Wert des Eingangs ePV frei. Sobald der Eingang auf TRUE gesetzt wird, wird der Wert von ePV in die Property Program_Change des Objekts geschrieben. Wird der Eingang auf FALSE gesetzt, dann wird 0xFFFF in das Prozessdatum der Property Program_Change des Objekts geschrieben. Der Wert 0xFFFF verhindert das Schreiben an den entfernten Server und damit ebenfalls das Schreiben an das entfernte Objekt.

ePV: Anforderung an das entfernte Programm-Objekt. Wurde bEnablePV auf TRUE gesetzt, dann wird der Wert des Eingangs in die Property Program_Change geschrieben (siehe auch Transition-Diagram).

bRetrigger: Ein Wechsel von FALSE --> TRUE löst das erneute Schreiben des Eingangs ePV in die Property Program_Change aus, wenn Eingang bEnablePV auf TRUE gesetzt ist.

VAR_OUTPUT

bReady             : BOOL;
ePrgState          : E_BACnetProgramState;
ePrgChangeReq      : E_BACnetProgramRequest;
ePrgReasonHalt     : E_BACnetProgramError;
bOverridden        : BOOL;
bOutOfService      : BOOL;
bFault             : BOOL;
bInAlarm           : BOOL;
bError             : BOOL;
nErrorId           : UINT;

bReady: Meldung der allgemeinen Bereitschaft. Ist dieser Ausgang gesetzt, so sind die übrigen Status-Ausgänge gültig (ProgramState, Overridden ...). Ist der Ausgang FALSE, dann meldet der zugehörige Funktionsbaustein FB_BACnet_RemoteDevice nicht "Operational", die Baustein-Instanz wurde im System Manager nicht richtig verknüpft oder der entfernte Server ist nicht erreichbar (Gateway nicht erreichbar, kein Ethernet-Link).

ePrgState: Rückmeldung des aktuellen Programmzustands (siehe auch Transition-Diagram).

ePrgChangeReq: Rückmeldung über den Zustand der aktuellen Programmanforderung (siehe auch Transition-Diagram).

ePrgReasonHalt: Fehlerrückmeldung bei Programmabbruch.

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

bError: Ein Fehler steht an.

nErrorId: Fehlernummer
0 = kein Fehler
1 = Funktionsbaustein des zugehörigen Clients (RemoteDevice) wird gar nicht oder zu unregelmäßig im SPS-Programm aufgerufen.
2 = fehlerhaftes Prozessdatenmapping erkannt (Mapping im System Manager prüfen; evtl. SPS-Projekt komplett übersetzen und erneut laden)
3 = der zugehörige BACnet-Client ist nicht bereit (bOperational = FALSE an Instanz des FB_BACnet_RemoteDevice)
Die Fehlernummern können als Baustein-Konstanten über die FB-Instanz abgefragt werden (FB_BACnet_Remote???.nERR_xxx).

VAR_IN_OUT

RemoteDevice     : FB_BACnet_RemoteDevice;

RemoteDevice: Angabe der Baustein-Instanz des zugehörigen entfernten BACnet-Device Objekts (remote). Das entfernte BACnet-Device Objekt eines entfernten BACnet-Servers ist unter einem lokalen BACnet-Client hinzugefügt. Lokaler Client und entfernter Server sind via BACnet verbunden. Pro BACnet-Adapter sind beliebig viele Clients möglich. Siehe FB_BACnet_Adapter und FB_BACnet_RemoteDevice für weitere Informationen.

Transition-Diagram

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