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).

Beispiel: NotificationClass und NotificationSink 1: Das Beispiel demoeventnclassnsink.zip kann hier heruntergeladen werden. Das enthaltene TSM File kann auch ohne Laden der SPS zum Testen verwendet werden.

Beispiel: NotificationClass und NotificationSink 2:
Bild-1: Schematische Darstellung zur Beispielkonfiguration der NotificationClass, deren Event-generierenden Objekte (AV, MV, BV) und der NotificationSink.

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

Beispiel: NotificationClass und NotificationSink 3:
Bild-2: NotificationSink in der System Manager Baumansicht
Beispiel: NotificationClass und NotificationSink 4:
Bild-3: NotificationSink Konfiguration im System Manager

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

Beispiel: NotificationClass und NotificationSink 5:
Bild-4: NotificationSink Online-Daten nachdem COV- und Event-Notifications empfangen wurden.
Beispiel: NotificationClass und NotificationSink 6:

Der Text unter messageText wird aus der Property Description des Event-generierenden Objekts gebildet.