FB_BACnet_RemoteCommand
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.
Verwendung
Mit Hilfe des Funktionsbausteins "FB_BACnet_RemoteCommand" kann lesend und schreibend auf ein entferntes BACnet-Objekt vom Typ Command (CMD) zugegriffen werden. Das entfernte BACnet-Objekt wurde dazu unter einem lokalen BACnet-Client hinzugefügt.
VAR_INPUT
bEnablePV : BOOL;
nPV : UDINT;
bRetrigger : BOOL;
bEnablePV: Gibt den Wert des Eingangs nPV frei. Sobald der Eingang auf TRUE gesetzt wird, erfolgt das Schreiben in die Property Present_Value des zugehörigen BACnet-Objekts mit dem Wert des Eingangs nPV.
Wird bEnablePV auf FALSE gesetzt, dann werden die Prozessdaten des gemappten Property Present_Value auf 16#FFFFFFFF geschrieben und damit deaktiviert.
nPV: Wert der Property Present_Value der geschrieben werden soll. Liegt der Wert außerhalb des Wertebereicht (siehe BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt Command und Property Present_Value), dann wird das zugehörige Prozessdatum deaktiviert, d.h. das Schreiben auf die Property ist deaktivert und andere BACnet-Dienste können schreibend auf die Property Present_Value zugreifen.
Das Schreiben eines gültigen Wertes löst die Ausführung der zugehörigen Kommando-Liste des BACnet-Objekts aus. Geschrieben wird der Wert der Property Present_Value immer dann, wenn eine Änderung des Prozessdatums erfolgt (d.h. Änderung des Wertes von nPV bei gesetztem bEnablePV oder Signalwechsel FALSE --> TRUE am Eingang bRetrigger bei gesetztem bEnablePV).
bRetrigger: Bei steigender Flanke an diesem Eingang wird das Schreiben und damit die Ausführung des entsprechenden Kommandos des BACnet-Objekts Command wiederholt. Der Signalwechsel von FALSE --> TRUE entspricht einer Änderung des Prozessdatums der Property Present_Value von x --> 0 --> x.
VAR_OUTPUT
bReady : BOOL;
nPresentValue : UDINT;
bAllWritesOk : BOOL;
bInProcess : BOOL;
bError : BOOL;
nErrorId : UINT;
bReady: Meldung der allgemeinen Bereitschaft. Ist dieser Ausgang gesetzt, so sind die übrigen Status-Ausgänge gültig (PresentValue, AllWritesOk, InProcess). Ist der Ausgang FALSE, dann meldet der zugehörige Funktionsbaustein "FB_BACnet_RemoteDevice" nicht "Operational".
nPresentValue: Aktueller Wert des BACnet-Objekts (siehe auch BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt Command und Property Present_Value).
bAllWritesOk: Die zuletzt angeforderte Kommando-Liste wurde erfolgreich abgearbeitet (siehe auch BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt Command und Property All_Writes_Successful).
bInProcess: Die selektierte Kommando-Liste wird abgearbeitet (siehe auch BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt Command und Property In_Process).
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.
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.