FB_BACnet_ReadProp
Funktionsbaustein für den Zugriff auf BACnet Properties über ADS. Sämtliche BACnet Properties von Server und Client Objekten können über ADS gelesen bzw. geschrieben werden. Wird auf einen Client über ADS zugegriffen, dann werden die ADS Zugriffe in "Read_Property" bzw. "Read_Range" BACnet-Abfragen umgewandelt und an den entfernten Server gesendet.
Verwendung
Die Bausteininstanz wird im SPS Programm angelegt und zyklisch aufgerufen. Der Eingang BACnetDevicePort wird mit dem ADS Port aus der System Manager Konfiguration belegt (siehe Bild-1). Je nach Konfiguration können Ports für Server und Client variieren.
Die NetId (AMS NetId) des BACnet Device kann ebenfalls im System Manager abgelesen werden (siehe Bild-2).
Die NetId entspricht nicht der lokalen NetId und muss immer angegeben werden - keine Verwendung von Leerstrings möglich!). Eine andere Möglichkeit besteht darin, die NetId aus dem Device Baustein bzw. Adapter Baustein in der SPS abzufragen (siehe Bild-3). |
Für Informationen zur Funktionsweise des Adapter Bausteins siehe FB_BACnet_Adapter.
VAR_INPUT
BACnetDevicePort : UINT := 16#FFFF;
bExecute : BOOL;
sNetId : T_AmsNetId;
ObjectType : E_BACnetObjectType;
PropertyID : E_BACnetPropertyIdentifier;
DataType : E_BACnetDataTypes;
ObjectInstance : DINT;
ptrValue : POINTER TO BYTE;
nLenValue : UDINT; (* byte size of value (SIZEOF) *)
BACnetDevicePort: ADS Port unter dem das gewünschte Objekt angelegt wurde (siehe auch unter Verwendung).
bExecute: Steigende Flanke am Eingang startet den Lesevorgang. 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...).
ObjectInstance: Objekt-Nummer des BACnet Objekts (die unteren 22 Bit des Object_Identifier).
ptrValue: Zeiger auf die Variable in der die gelesenen Daten abgelegt werden sollen (zu ermitteln mit ADR()).
nLenValue: Byte-Länge der Variable in der die gelesenen Daten abgelegt werden sollen (zu ermitteln mit SIZEOF()).
VAR_OUTPUT
bDone : BOOL;
bBusy : BOOL;
bError : BOOL;
nErrID : UDINT;
nProcessedLen : UDINT; (* the received data length (can be different to given length) *)
bDone: Lesen 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.
nProcessedLen: Byte-Länge der gelesenen Daten. Die Länge kann sich von der Ziellänge nLenValue unterscheiden (kleiner/gleich).