FB_BACnet_WriteProp
Funktionsbaustein für den Zugriff auf BACnet Properties über ADS. Sämtliche BACnet Properties, die im Online-Reiter des jeweiligen BACnet-Objekts angezeigt werden, von Server und Client Objekten können über ADS gelesen bzw. geschrieben werden. Wird auf einen Client (entfernter BACnet-Server) über ADS zugegriffen, dann werden die ADS Zugriffe in BACnet-Abfragen umgewandelt und an den entfernten Server gesendet.
Anwendung
Die Bausteininstanz wird im SPS Programm angelegt und zyklisch aufgerufen. Der Eingang BACnetDevicePort und sNetId muss mit dem entsprechenden AMS Port und AMS NetID belegt werden. Der AMS Port und AMS NetID können für jeden BACnet-Server und -Client über den zugehörigen BACnet-Device Baustein abgefragt werden.
Die AMS NetID entspricht nicht der lokalen AMS NetID und muss immer angegeben werden - keine Verwendung von Leerstrings möglich! |
Die aktuelle AMS NetID und AMS Port werden vom zugehörigen FB_BACnet_Device bzw. FB_BACnet_RemoteDevice ausgegeben:
AMS NetId und AMS Port in der Ausgabe-Struktur stAdsConn des Device Bausteins.
TYPE ST_BACnet_AdsConnection :
STRUCT
bValid : BOOL;
nReload : USINT;
sAmsNetId : T_AmsNetId;
nAmsPort : T_AmsPort;
bServer : BOOL;
bClient : BOOL;
bNSink : BOOL;
nDeviceId : UDINT;
END_STRUCT
END_TYPE
Zudem kann der AMS Port und die AMS NetID im TwinCAT System Manager angezeigt werden (siehe Bild-3 und -4). Je nach Konfiguration können Ports für Server und Client variieren.
VAR_INPUT
BACnetDevicePort : UINT:=16#FFFF;
bExecute : BOOL;
sNetId : T_AmsNetId;
ObjectType : E_BACNETOBJECTTYPE;
PropertyID : E_BACNETPROPERTYIDENTIFIER;
Priority : E_BACNETPRIORITY;
DataType : E_BACNETDATATYPES;
ObjectInstance : UDINT;
ptrValue : POINTER TO BYTE;
nLenValue : UDINT;
BACnetDevicePort: AMS Port unter dem das gewünschte Objekt angelegt wurde.
bExecute: Steigende Flanke am Eingang startet den Schreibvorgang. Fallende Flanke löscht den Ausgang bDone.
sNetId: AMS NetId des BACnet Devices (Adapter) unter dem der Server bzw. Client konfiguriert wurde.
ObjectType: Enumeration des Objekttypes (AnalogValue, BinaryInput...).
PropertyID: Enumeration des Property-Identifiers (Present_Value, Status_Flags...).
Priority: Enumeration der Priorität des Schreibzugriffs. Die Priorität wird bei Schreibzugriffen auf priorisierbare Properties benötigt (z.B. Present_Value). Ein Zugriff mit Priorität x erzeugt einen Eintrag im zugehörigen Priority_Array an x-ter Stelle.
DataType: Datentyp der Property (Bool, BinaryPV, Real, Unsigned Integer...).
ObjectInstance: Objekt-Nummer des BACnet Objekts (die unteren 22 Bit des Object_Identifier).
ptrValue: Zeiger auf die Variable in die die Daten abgelegt werden sollen (zu ermitteln mit ADR()).
nLenValue: Byte-Länge der Variable in die die Daten abgelegt werden sollen (zu ermitteln mit SIZEOF()).
VAR_OUPUT
bDone : BOOL;
bBusy : BOOL;
bError : BOOL;
nErrID : UDINT;
bDone: Schreiben der Daten erfolgreich beendet. bDone bleibt so lange gesetzt bis bExecute zurückgesetzt wird. Wurde bExecute zurück gesetzt bevor bDone aktiv ist, dann wird bDone für einen Zyklus gesetzt.
bBusy: Der Baustein ist beschäftigt.
bError: Fehler während der Abarbeitung.
nErrID: ADS Fehlercode.