FB_BACnet_Accumulator_EX

FB_BACnet_Accumulator_EX 1:

Anwendung

Mit Hilfe des Funktionsbausteins FB_BACnet_Accumulator kann lesend und schreibend auf ein BACnet-Objekt vom Typ Accumulator (ACC) zugegriffen werden.

Der typische Anwendungsfall eines Accumulator-Objekt, ist die Abbildung von Zählerständen nach BACnet. Unter Beispiel ist die Anbindung eines M-Bus Zählers an ein Accumulator-Objekt dargestellt.

Der Unterschied in der Basis- und _EX-Variante des Bausteins, besteht zum einen in der Art die Property Present_Value zu schreiben und zum anderen in der Anzahl der Statusausgänge. In der Basis-Variante wird mit Hilfe der Property Value_Set in das Objekt geschrieben. Vor der Wertübernahme in die Property Present_Value wird der vorherige Wert inklusive Zeitstempel gesichert. So kann anhand der Property Value_Change_Time z.B. erkannt werden, wann die Property Present_Value zuletzt aktualisiert wurde. Im Falle eines externen Zählers (Bsp. M-Bus), kann so die Aktualität des Werts überprüft werden.

VAR_INPUT

FB_BACnet_Accumulator_EX 2:

Grau dargestellte Variablen sind nicht in der Basisversion des Bausteins enthalten. Schwarz dargestellte Variablen sind nicht in der _EX-Variante des Bausteins enthalten.

nPV        : UDINT;
nValueSet  : UDINT;

nPV: Wert der in die Property Present_Value geschrieben werden soll. Das Schreiben der Prozessdaten erfolgt bei Änderung.

nValueSet: Wert der in die Property Value_Set geschrieben werden soll. Ein Schreibzugriff löst zudem die Aktualisierung der Property Value_Change_Time und Value_Before_Change aus. Das Schreiben der Prozessdaten erfolgt bei Änderung.

VAR_OUPUT

bReady         : BOOL;
nPresentValue  : UDINT;
nMaxPV         : UDINT;
bOverridden    : BOOL;
bOutOfService  : BOOL;
bFault         : BOOL;
bInAlarm       : BOOL;
bOverRange     : BOOL;
bUnderRange    : BOOL;
bNoSensor      : BOOL;
bOpenLoop      : BOOL;
bCommFailure   : BOOL;
bShortedLoop   : BOOL;
bOtherFault    : BOOL;
eEventState    : E_BACNETEVENTSTATE;
tObjectID      : T_BACnet_ObjectIdentifier:=16#FFFFFFFF;
bError         : BOOL;
nErrorId       : UINT;

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.

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

nMaxPV: Aktueller Wert der Property Max_Pres_Value des BACnet-Objekts (siehe auch BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt Accumulator und Property Max_Pres_Value).

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

bOverRange, bUnderRange, bNoSensor, bOpenLoop, bShortedLoop, bOtherFault: Siehe BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt Accumulator und Property Reliability.

eEventState: Siehe BACnet-Spezifikation DIN EN ISO 16484-5 zum BACnet-Objekt Accumulator und Property Event_State.

tObjectID: Objekt ID des BACnet Objekts (Objekt Type und Objekt Instanz).

bError: Ein Fehler steht an.

nErrorId: siehe globale Konstanten (BACnet_Globals).

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.

Beispiel

Im folgenden Beispiel wird die Umsetzung eines M-Bus Zählers auf ein BACnet Objekt vom Typ Accumulator gezeigt.

FB_BACnet_Accumulator_EX 3:
Bild-1: Beispiel für die Umsetzung eines M-Bus Zählers in das BACnet Objekt Accumulator im PLC Programm

Dabei wird seitens BACnet Objekt der Wert des Eingangs nValueSet erfasst und als Property Present_Value übernommen. Als weitere Information dienen der Status bError und bReady des M-Bus Bausteins für das Setzen der Property Reliability des BACnet Objekts. Diese Property gibt an, in welchem Zustand sich der Wert des BACnet Objekts befindet. Meldet der M-Bus Baustein bReady = TRUE, dann geht das BACnet Objekt in no_fault_detected → Wert gültig.