FB_BACnet_AnalogOutput_ADS

Der folgende Funktionsbaustein wird für die Verbindung von einem BACnet-Objekt des lokalen BACnet-Servers verwendet. Die Verknüpfung des Funktionsbausteins zu dem entsprechenden BACnet-Objekt erfolgt mit Hilfe von Prozessdaten.

Die Prozessdaten können manuell in dem BACnet-Objekt erstellt und von Hand verknüpft 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.

FB_BACnet_AnalogOutput_ADS 1:

Verwendung

Mit Hilfe des Funktionsbausteins "FB_BACnet_AnalogOutput_ADS" kann lesend und asynchron schreibend (per ADS) auf ein BACnet-Objekt vom Typ AnalogOutput (AO) zugegriffen werden. Das BACnet-Objekt wurde dazu unter einem lokalen BACnet-Server angelegt.

FB_BACnet_AnalogOutput_ADS 2:
Bild-1: Beispiel eines BACnet-Objekts unterhalb eines lokalen BACnet-Servers.

VAR_INPUT

bEnablePV           : BOOL;
fPV                 : REAL; (* decimal number for priority x, when input bEnablePV is TRUE *)
bManual             : BOOL; (* FALSE --> TRUE: write present_value immediately,
                FALSE: only write present_value on-change,
                TRUE: write present_value on-change and when device turns operational *)
ePriority           : E_BACNETPRIORITY := BACNETPRIORITY_12;

bEnablePV: Gibt den Wert des Eingangs "fPV" frei. Sobald der Eingang auf TRUE gesetzt wird erfolgt ein Schreibzugriff mit dem Wert aus "fPV" auf das kommandierbare Property Present_Value mit Priorität aus "ePriority" (Default: 12, wenn der Eingang "ePriority" nicht beschaltet ist).
Wird der Eingang auf FALSE gesetzt erfolgt ein Schreibzugriff mit dem Wert NULL auf das kommandierbare Property Present_Value mit Priorität aus "ePriority" (NULL Schreiben).

fPV: Wert der in das Priority_Array der kommandierbaren Property Present_Value geschrieben werden soll, wenn "bEnablePV" auf TRUE gesetzt ist. Die Priorität wird mit dem Eingang "ePriority" bestimmt (Default: 12, wenn der Eingang "ePriority" nicht beschaltet ist). Das Schreiben wird mit TRUE-Setzen des Eingangs "bEnablePV" freigegeben. Das Schreiben auf das Objekt wird bei Wertänderung via ADS ausgeführt.

FB_BACnet_AnalogOutput_ADS 3:

Da das Schreiben der Property Present_Value azyklisch und nur bei Wertänderung geschieht, ist es potenziell möglich dass das Property Present_Value mit gleicher Priorität auch von anderen BACnet-Geräten überschrieben wird. Bei gleicher Priorität "gewinnt" immer der letzte Schreibzugriff.

bManual: Folgende Auswertung werden für den Eingang unterschieden:

ePriority: Vorgabe der Priorität der Schreibzugriffe auf die Property Present_Value (Default: 12, siehe auch E_BACNETPRIORITY).

VAR_OUTPUT

bReady           : BOOL;
bPvDone          : BOOL; (* present_value written over ADS *)
fPresentValue    : REAL;
bOverridden      : BOOL;
bOutOfService    : BOOL;
bFault           : BOOL;
bInAlarm         : BOOL;
bError           : BOOL;
nErrorId         : UINT;
nAdsErrorId      : UDINT;

bReady: Meldung der allgemeinen Bereitschaft. Ist dieser Ausgang gesetzt, so sind die übrigen Status-Ausgänge gültig (PresentValue, Overridden ...). Ist der Ausgang FALSE, dann meldet der zugehörige Funktionsbaustein "FB_BACnet_Device" nicht "Operational" oder die Baustein-Instanz wurde im System Manager nicht richtig verknüpft.

bPvDone: Positive Flanke bei erfolgreichem Schreiben der Property Present_Value über ADS.

fPresentValue: Aktueller Wert des BACnet-Objekts (siehe auch BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt AnalogOutput und Property Present_Value).

bOverridden, bOutOfService, bFault, bInAlarm: Siehe BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt AnalogOutput und Property Status_Flags.

bError: Ein Fehler steht an.

nErrorId: Fehlernummer
0 = kein Fehler
2 = fehlerhaftes Prozessdatenmapping erkannt (Mapping im System Manager prüfen; evtl. SPS-Projekt komplett übersetzen und erneut laden)
3 = der zugehörige BACnet-Server ist nicht bereit (bOperational = FALSE an Instanz des FB_BACnet_Device)
4 = der Objekttyp des BACnet Objekts passt nicht zum Funktionsbaustein (Der Objekttyp wird über die Prozessdaten ausgelesen --> Verknüpfung im System Manager prüfen!)
Die Fehlernummern können als Baustein-Konstanten über die FB-Instanz abgefragt werden (FB_BACnet_???.nERR_xxx).

nAdsErrorId: ADS Fehlercode.

VAR_IN_OUT

Device       : FB_BACnet_Device;

Device: Instanz des lokalen, zugehörigen BACnet-Server Bausteins. Pro BACnet-Adapter ist ein BACnet-Server möglich. Siehe FB_BACnet_Adapter und FB_BACnet_Device für weitere Informationen.