FB_BACnet_MultiStateOutput_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.
Verwendung
Mit Hilfe des Funktionsbausteins "FB_BACnet_MultiStateOutput_ADS" kann lesend und asynchron schreibend (per ADS) auf ein BACnet-Objekt vom Typ MultiStateOutput (MO) zugegriffen werden. Das BACnet-Objekt wurde dazu unter einem lokalen BACnet-Server angelegt.
VAR_INPUT
bEnablePV : BOOL;
nPV : UDINT; (* 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 "nPV" frei. Sobald der Eingang auf TRUE gesetzt wird erfolgt ein Schreibzugriff mit dem Wert aus "nPV" 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).
nPV: 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.
Da das Schreiben der Property Present_Value azyklisch und nur bei Wertänderung durchgeführt wird, 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:
- FALSE: Schreiben bei Wertänderung
- Flankenwechsel FALSE --> TRUE: löst das Schreiben der Property Present_Value unmittelbar aus.
- TRUE: Schreiben bei Wertänderung und wenn der zugehörige BACnet-Server in den Zustand "Operational" wechselt (siehe FB_BACnet_Device).
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 *)
nPresentValue : UDINT;
bOverridden : BOOL;
bOutOfService : BOOL;
bFault : BOOL;
bInAlarm : BOOL;
nNbrOfStates : UDINT;
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.
nPresentValue: Aktueller Wert des BACnet-Objekts (siehe auch BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt MultiStateOutput und Property Present_Value).
bOverridden, bOutOfService, bFault, bInAlarm: Siehe BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt MultiStateOutput und Property Status_Flags.
nNbrOfStates: Anzahl Zustände die die Property Present_Value annehmen kann. Widerspiegelt den Wert der Property Number_Of_States.
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.