FB_BACnet_Device
Der folgende Funktionsbaustein wird für die Anbindung des SPS-Programmes an ein lokales BACnet-Device Objekt (Server) verwendet. Die Verknüpfung des Funktionsbausteins erfolgt mit Hilfe von Prozessdaten.
Die Prozessdaten können manuell oder mittels PLC-Automapping automatisch verknüpft werden. Die für das PLC-Automapping nötigen Kommentare ( (* ~ (BACnet... | ??? | ??? ) *) ) sind bereits in der Deklaration des Funktionsbausteins enthalten. Zu den Prozessdaten des BACnet-Device Objekts sind ebenfalls die nötigen Prozessdaten für die Anbindung des BACnet Servers enthalten.
Verwendung
Mit Hilfe des Funktionsbausteins "FB_BACnet_Device" wird der Zustand des lokalen BACnet Device Objects gelesen (System_Status) und im SPS-Programm ausgegeben. Zudem wird mit Hilfe des Prozessdatums "Server Control" der lokale BACnet Server gesteuert (Aktivierung und Handhabung des SPS-Backups).
Für die Verwendung des Bausteins "FB_BACnet_Device" wird zudem eine globale Instanz des Bausteins FB_BACnet_Adapter pro SPS-Projekt benötigt. Der Baustein FB_BACnet_Adapter stellt die Verbindung zwischen SPS und BACnet-Adapter im System Manager her. Diese globale Instanz wird bereits von der SPS-Bibliothek bereit gestellt. Im Folgenden ist die Hierarchie zwischen FB_BACnet_Adapter, "FB_BACnet_Device" bzw. FB_BACnet_RemoteDevice und einem Objekt vom Typ AnalogValue (AV) dargestellt:
Für Informationen zur Verwendung der Bausteine FB_BACnet_Adapter und -_RemoteDevice siehe FB_BACnet_Adapter bzw. FB_BACnet_RemoteDevice.
VAR_INPUT
bReset : BOOL;
bSupportBackup : BOOL;
nAdsPort : UINT := 1000; (* Optional setting: Ads port of local BACnet-Server, default = 1000 *)
bReset: Zurücksetzen des Fehlerzustands bei Signalwechsel FALSE --> TRUE.
bSupportBackup: Bei Setzen des Eingangs auf TRUE wird das Sichern der persistenten Daten der SPS-Laufzeit über BACnet unterstützt. Ist dieser Modus aktiviert müssen die persistenten Dateien der SPS (standardmäßig unter: "C:\TwinCAT\Boot\") als BACnet-File Objekte angelegt und mit dem Wert "TwinCAT Configuration File" der Property File_Type versehen werden (damit sorgt der BACnet-Stack für die Sicherung der Dateien).
Bei Verwendung des BACnet-seitigen Backups der persistenten SPS-Daten sollte keine weitere Instanz des Bausteins FB_WritePersistentData in der SPS-Laufzeit verwendet werden (FB_WritePersistentData wird von FB_BACnet_Device ausgeführt)!
nAdsPort: ADS Port des lokalen BACnet-Servers. Im Standardfall ist dieser 1000 (vorausgesetzt der BACnet-Server ist das erste Element unterhalt des BACnet-Adapters im System Manager). Die Portnummer kann im System Manager abgelesen werden (siehe Bild-4):
VAR_OUTPUT
eSystemStatus : E_BACnetDeviceStatus;
sAmsNetId : T_AmsNetId;
bBackupActive : BOOL;
bOperational : BOOL;
bFirstCycle : BOOL;
bError : BOOL;
nErrorId : UINT;
eSystemStatus: Aktueller Status des BACnet Server Objekts (siehe BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet Device Objekt und Property System_Status).
0: BACnetDeviceStatus_Operational (Betriebsbereit)
1: BACnetDeviceStatus_OperationalReadOnly (Nur-Lese-Zugriff auf Properties)
2: BACnetDeviceStatus_DownloadRequired (Konfiguration-Laden erforderlich)
3: BACnetDeviceStatus_DownloadInProgress (Konfiguration-Laden wird ausgeführt)
4: BACnetDeviceStatus_NonOperational (Nicht-Betriebsbereit)
5: BACnetDeviceStatus_BackupInProgress (Datensicherung wird ausgeführt)
sAmsNetId: Ausgabe der AMS-NetID des lokalen BACnet-Adapters (kann für den asynchronen Zugriff via ADS auf BACnet-Objekte verwendet werden).
bBackupActive: Rückmeldung dass ein Backup via BACnet ausgeführt wird, wenn der Ausgang auf TRUE gestzt ist.
bOperational: BACnet-Device Objekt (des lokalen Servers) meldet "Operational" und der Device-Adapter meldet den Status "GetGatewayMAC" (0x03xx) oder "WaitGatewayMAC" (0x04xx) oder "Complete" (0x08xx). Fällt der Ausgang auf FALSE werden sämtliche verbundene Objekte (Bausteininstanzen) gesperrt.
bFirstCycle: Wird mit dem ersten Aufruf der Bausteininstanz nach SPS-Reset bzw. -Neustart für einen Zyklus gesetzt.
bError: Ein Fehler steht an.
nErrorId: Fehlernummer
0 = kein Fehler
1 = keine gültige AMS-NetID
20 = Fehler beim Schreiben der persistenten Daten
Die Fehlernummern können als Baustein-Konstanten über die FB-Instanz abgefragt werden (FB_BACnet_Device.nERR_xxx). Alle Fehler mit Fehlernummer größer oder gleich 20 müssen mittels bReset quittiert werden.
Eine Instanz des Bausteins FB_BACnet_Device ist immer dann nötig, wenn auf Objekte eines lokalen BACnet-Servers aus der SPS zugegriffen werden soll. Mehrere Instanzen des Bausteins FB_BACnet_Device können prinzipiell angelegt werden, führen jedoch zu einer Fehlermeldung bei Verwendung des SPS-Automappings im System Manager. Der Grund dafür liegt in der Architektur von BACnet. Unter einem BACnet-Adapter (Netzwerk-Device) kann immer nur ein BACnet-Server angelegt werden. Wird jedoch auf das SPS-Automapping verzichtet, können x-beliebige BACnet-Adapter und -Server in einem SPS-Projekt verwendet werden. Die Verknüpfung der Instanzen wird dann von Hand vorgenommen.
Der Baustein FB_BACnet_Device greift intern auf die globale Variable "pBACnet_Adapter" zu. Diese enthält eine Referenz zur globalen Instanz des Bausteins FB_BACnet_Adapter. Sollen mehrere Instanzen des Bausteins FB_BACnet_Device angelegt und von Hand im System Manager mit den entsprechenden BACnet-Servern verknüpft werden, so müssen auch mehrere Instanzen des Bausteins FB_BACnet_Adapter angelegt werden. Vor dem Aufruf der Instanz des BACnet-Server Bausteins muss zwingend vorab die zugehörige Instanz des BACnet-Adapters Bausteins erfolgen. Im Folgenden ein CFC-Beispiel (Wichtig ist die Aufrufreihenfolge der Bausteine zu beachten!):
Die Verwendung von mehreren lokalen BACnet-Servern (-Adapter) pro SPS-Projekt ist ein Spezialfall und wird nicht empfohlen. Sinnvoll wäre (z.B. bei Verwendung mehrerer Netzwerkkarten und damit getrennte BACnet-Netzwerke) die Verwendung mehrerer SPS-Projekte und damit mehrere SPS-Laufzeiten. Der Datenaustausch zwischen den einzelnen Laufzeiten kann via Prozessdatenmapping oder ADS-Kommunikation realisiert werden. Somit wäre auch die Verwendung des SPS-Automappings für BACnet-Objekte möglich.