FB_BACnet_MultiStateOutput_ADS
Anwendung
Mit Hilfe des Funktionsbausteins FB_BACnet_MultiStateOutput_ADS kann lesend und schreibend auf ein BACnet-Objekt vom Typ MultiStateOutput zugegriffen werden.
Das Schrieben der Property Present_Value wird, im Unterschied zur Standard- und _EX-Variante, mittels ADS-WRITE realisiert (azyklisch).
VAR_INPUT
bEnablePV : BOOL;
bNullPV : BOOL;
nPV : UDINT;
bManual : BOOL;
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 die 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 kein Schreibzugriff (keine Änderung) mehr.
bNullPV: Überschreibt den Eintrag der kommandierbaren Property Present_Values in der Priorität ePriority mit dem Wert NULL, wenn bEnablePV auf TRUE gesetzt ist. Der Eingang nPV wird ignoriert, so lange bNullPV auf TRUE gesetzt ist.
nPV: Wert der an die entsprechenden Stelle der Property Priority_Array der kommandierbaren Property Present_Value geschrieben werden soll, wenn bEnablePV auf TRUE und bNullPV auf FALSE gesetzt ist. Die Priorität wird mit dem Eingang ePriority bestimmt (Default: 12, wenn der Eingang ePriority nicht beschaltet ist). Das Schreiben wird bei Wertänderung azyklisch ausgeführt (ADS-WRITE).
Da das Schreiben der Property Present_Value azyklisch und nur bei Wertänderung geschieht, ist es potenziell möglich, dass die 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: Schreiben der Property Present_Value bei Flankenwechsel.
- 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 für Schreibzugriffe auf die Property Present_Value (Default: 12, siehe auch E_BACNETPRIORITY).
VAR_OUPUT
bReady : BOOL;
bPvDone : BOOL;
nPresentValue : UDINT;
bOverridden : BOOL;
bOutOfService : BOOL;
bFault : BOOL;
bInAlarm : BOOL;
nNbrOfStates : UDINT;
tObjectID : T_BACnet_ObjectIdentifier:=16#FFFFFFFF;
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 TwinCAT 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.
tObjectID: Objekt ID des BACnet Objekts Objekt Type und Objekt Instanz.
bError: Ein Fehler steht an.
nErrorId: siehe globale Konstanten BACnet_Globals.
nAdsErrorId: ADS Fehlercode.
VAR_IN_OUT
Device : FB_BACnet_Device;
Device: Angabe der 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.