Beispiel: NotificationClass und NotificationSink
Im Folgenden wird ein Beispiel zur Verwendung der NotificationClass in Zusammenspiel mit einer NotificationSink gegeben. Diese "sammelt" die Events von 3 Objekten (BV, AV, MV) und sendet diese an den lokalen Prozess 10 (NotificationSink) des lokalen BACnet-Device (Event-Notification mittels Intrinsic-Reporting).
Zudem soll das PresentValue des AnalogValue-Objekts bei Wertänderung von 0.1 an die NotificationSink gesendet werden (COV-Notification).
Das Beispiel demoeventnclassnsink.zip kann hier heruntergeladen werden. Das enthaltene TSM File kann auch ohne Laden der SPS zum Testen verwendet werden.
Die Konfiguration der Objekte erfolgt durch die Deklaration im SPS Programm:
VAR
viewDummy : BOOL; (* ~( BACnet_StructuredViewPath : \/DemoNClass : ) *)
fbDevice : FB_BACnet_Device;
fbBV_0 : FB_BACnet_BinaryValue;
(* ~(BACnet_ObjectIdentifier : 0 : nolink )
(BACnet_EventEnable : {to_offnormal;to_fault;to_normal} : nolink )
(BACnet_ActiveText : EIN : nolink )
(BACnet_InactiveText : AUS : nolink )
(BACnet_NotificationClass : 10 : nolink ) *)
fbAV_0 : FB_BACnet_AnalogValue;
(* ~(BACnet_ObjectIdentifier : 0 : nolink )
(BACnet_EventEnable : {to_offnormal;to_fault;to_normal} : nolink )
(BACnet_NotificationClass : 10 : nolink ) *)
fbMV_0 : FB_BACnet_MultiStateValue;
(* ~(BACnet_ObjectIdentifier : 0 : nolink )
(BACnet_EventEnable : {to_offnormal;to_fault;to_normal} : nolink )
(BACnet_NotificationClass : 10 : nolink )
(BACnet_NumberOfStates : 5 : nolink )
(BACnet_StateText : ErrLow;WarnLow;Normal;WarnHigh;ErrHigh : nolink )
(BACnet_FaultValues : 1;5 : nolink )
(BACnet_AlarmValues : 2;4 : nolink )
(BACnet_Description : MV DEMO Objekt. : nolink ) *)
fbNC_10 : FB_BACnet_NotificationClass;
(* ~(BACnet_ObjectIdentifier : 10 : nolink )
(BACnet_Priority : 70;80;90 : nolink )
(BACnet_AckRequired : {to_offnormal;to_fault;to_normal} : nolink )
(BACnet_RecipientList :
<ArrayOfBACnetDestination>
<BACnetDestination>
<recipient>
<choice>device</choice>
<BACnetObjectIdentifier>
<objId>33661729</objId>
</BACnetObjectIdentifier>
</recipient>
<validDays>65025</validDays>
<fromTime>
<hour>0</hour>
<minute>0</minute>
<second>0</second>
<hundredths>0</hundredths>
</fromTime>
<toTime>
<hour>23</hour>
<minute>59</minute>
<second>59</second>
<hundredths>99</hundredths>
</toTime>
<processIdentifier>10</processIdentifier>
<transitions>57349</transitions>
<issueConfirmedNotifications>false</issueConfirmedNotifications>
</BACnetDestination>
</ArrayOfBACnetDestination>
: nolink ) *)END_VAR
Die zum Empfang der Events eingefügte wird im System Manager konfiguriert: NotificationSink
Process ID: Die Prozessidentifikation wird auf 10 eingestellt und der NotificationClass als Empfangs-Prozess mitgeteilt (via SPS-Automapping Kommentar).
COV Subscriptions: Als Beispiel wird das PresentValue des AnalogValue-Objekts (AV:0) abonniert. Der Parameter covIncrement gibt die nötige Wertänderung an bei deren Erreichen eine COV-Notification versendet wird.
Folgende Einträge werden im Online-Reiter der angezeigt, nachdem die Konfiguration geladen und die 's der jeweiligen Objekte verändert wurden: NotificationSink PresentValue
Der Text unter messageText wird aus der Property Description des Event-generierenden Objekts gebildet. |