FB_BACnet_RemoteDevice
Anwendung
Funktionsbaustein für die Anbindung des PLC Programmes an ein entferntes BACnet Device Objekt (Client). Die Verknüpfung des Funktionsbausteins erfolgt mit Hilfe von Prozessdaten und ADS (AMS Port evaluieren, Objekt Liste lesen und ermitteln der Stack Revision).
Eine Instanz des Bausteins FB_BACnet_RemoteDevice ist immer dann nötig, wenn auf Objekte eines entfernten BACnet-Servers mit Hilfe eines lokalen BACnet-Clients aus der SPS zugegriffen werden soll. Mehrere Instanzen des Bausteins FB_BACnet_RemoteDevice können angelegt und mittels SPS-Automapping zu den entsprechenden Clients im TwinCAT System Manager verbunden werden.
Grundsätzlich ist der Funktionsbaustein abwärtskompatibel (Revision 6). Bei Verwendung von Revision 6 gibt es jedoch Einschränkungen bei einigen ADS Diensten des BACnet Stacks; z.B. Der AMS Port des BACnet Device (Server und Client) kann erst ab Revision 12 automatisch ermittelt werden. Der im TwinCAT System Manager ersichtliche AMS Port (Ads Port) muss daher, bei Verwendung von Revision 6, am Eingang nAmsPort übergeben werden (siehe Bild-1)! |
VAR_INPUT
Variablen sind optional und müssen bei Verwendung von Revision 12 oder höher nicht belegt werden. |
bReset : BOOL;
bAutoReset : BOOL;
bDisableWOC : BOOL;
bReSubscribeCOV : BOOL;
bAutoReSubscribe : BOOL;
bTriggerWOC : BOOL;
bReload : BOOL;
nAmsPort : UINT:=0; (*siehe Info*)
bReset: Zurücksetzen des Fehlerzustands bei Signalwechsel FALSE --> TRUE.
bAutoReset: Bei Setzen des Eingangs auf TRUE werden Fehler mit ID 22 und 23 automatisch quittiert. Verbundene Remote-FBs werden nicht blockiert (bReady an den Objekt-FBs bleibt TRUE). Statt des Fehlers wird ein Fehlerzähler hoch gezählt (siehe nTimeoutCnt und nServiceFailCnt).
bDisableWOC: Bei Setzen des Eingangs auf TRUE wird WriteOnChange (WOC, Schreiben-bei-Änderung) für sämtliche Objekte dieses Clients unterdrückt. Das bedeutet, dass Änderungen der Prozessdaten kein automatisches Schreiben der Properties an die entfernten Objekte auslöst (gilt nur für Properties die für WriteOnChange unter dem Client konfiguriert sind).
bReSubscribeCOV: Bei Signalwechsel des Eingangs von FALSE --> TRUE wird das Neu-Abonnieren sämtlicher Properties die für COV konfiguriert sind ausgelöst. Diese Funktion betrifft unter Umständen potenziell viele Objekte und sollte daher nur bei Bedarf ausgeführt werden. Im Normalfall werden alle abonnierten Properties nach Ablauf einer Timeoutzeit automatisch erneut abonniert (Resubscription-Intervall).
bAutoReSubscribe: Bei Setzen des Eingangs auf TRUE wird das automatische Neu-Abonnieren sämtlicher für COV konfigurierter Properties bei Bedarf ausgelöst. Dies ist nicht mit dem Resubscription-Intervall zu verwechseln! Ein automatisches Neu-Abonnieren wird ausgelöst, wenn z.B. ein entfernter Server nicht mehr erreichbar war und die Verbindung wieder hergestellt werden konnte. Wird der Eingang auf FALSE gesetzt, dann wird ein erneutes Abonnieren erst nach Ablauf des Resubscription-Intervalls ausgelöst.
bTriggerWOC: ab Revision 12: Wechsel von FALSE → TRUE schreibt sämtliche Prozessdaten erneut.
bReload: Die ADS Verbindung wird erneuert. Nachfolgenden Bausteine, die die ADS-Verbindung nutzen, werden ebenfalls getriggert.
nAmsPort: Nur bei Verwendung von Revision 6, sonst nicht verwenden: AMS Port des lokalen BACnet Client. Im Standardfall ist dieser nicht definiert und muss im TwinCAT System Manager abgelesen werden (siehe Bild-1). |
VAR_OUPUT
stAdsConn : ST_BACnet_AdsConnection;
eSystemStatus : E_BACNETDEVICESTATUS;
bEthLinkOk : BOOL;
bGatewayOk : BOOL;
sAmsNetId : T_AmsNetId;
bEnabledWOC : BOOL;
bWOCTriggered : BOOL;
bOperational : BOOL;
bConnecting : BOOL;
bFirstCycle : BOOL;
bError : BOOL;
nErrorId : UINT;
bClientTimeout : BOOL;
bServiceFailed : BOOL;
nTimeoutCnt : UDINT;
nServiceFailCnt : UDINT;
eSystemStatus: Aktueller Status des entfernten BACnet Server Objekts (siehe BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet Device Objekt und Property System_Status).
bEthLinkOk: Die lokale Ethernet-Verbindung ist aktiv (Kabel gesteckt, Adapter verbunden), wenn der Ausgang auf TRUE gesetzt ist.
bGatewayOk: Das konfigurierte Gateway ist erreichbar, wenn der Ausgang auf TRUE gesetzt ist.
sAmsNetId: Ausgabe der AMS-NetID des lokalen BACnet-Adapters (kann für den asynchronen Zugriff via ADS auf BACnet-Objekte verwendet werden).
bEnabledWOC: WriteOnChange (WOC, Schreiben-bei-Änderung) ist für COV konfigurierte Properties aktiviert.
bOperational: BACnet-Device Objekt des entfernten Servers meldet "Operational" (System_Status = 0), der Device-Adapter meldet den Status bEthLinkOk, Status bConnecting ist FALSE und das Bit 0 des Prozessdatums "Client Status" ist nicht gesetzt (Timeout-Fehler). Fällt der Ausgang auf FALSE werden sämtliche verbundene Objekte (Bausteininstanzen) gesperrt.
bConnecting: Die Verbindung zum entfernten Server wird aufgebaut (Prozessdatum "Client Status" ist kleiner 0x04xx).
bFirstCycle: Wird mit dem ersten Aufruf der Bausteininstanz nach SPS-Reset bzw. -Neustart für einen Zyklus gesetzt.
bError: Ein Fehler steht an.
nErrorId: siehe globale Konstanten BACnet_Globals.
bClientTimeout: Bei gesetztem Ausgang liegt ein Timeout-Fehler an. Der Ausgang wird erst zurück gesetzt, wenn 10 Sekunden lang kein Timeout Fehler mehr aufgetreten ist.
bServiceFailed: Bei gesetztem Ausgang liegt ein Service-Fehler an. Der Ausgang wird erst zurück gesetzt, wenn 10 Sekunden lang kein Fehler mehr aufgetreten ist.
nTimeoutCnt: Anzahl aufgetretener Timeout-Fehler. Es wird die positive Flanke des entsprechenden Status-Flag des Clients gezählt.
nServiceFailCnt: Anzahl aufgetretener Service-Fehler. Es wird die positive Flanke des entsprechenden Status-Flag des Clients gezählt.