Verarbeitung des Logspeichers in der SPS
BACnet definiert für verschiedene Properties den Datentyp CHOICE. Dieser repräsentiert eine Auswahl verschiedener möglicher Propertywerte.
Um diese Datentypen in der SPS verarbeiten zu können, wird der SPS-Datentyp UNION zusammen mit einer Enumeration verwendet. Dabei enthält die Enumeration die Information, auf welches Element der Union zugegriffen werden muss.
Logspeicher des Trendlog-Objektes
Im nachfolgenden Beispiel wird die Verarbeitung des Logspeichers eines Trendlog-Objektes dargestellt.
Dabei kommt ein Objekt vom Typ FB_BACnet_TLogBuf
zum Einsatz. Dieses stellt einen Logspeicher bereit, dessen Inhalt von der SPS ausgelesen werden kann. Die Variable aLogBuffer
steht dabei als Array vom Typ T_BACnet_TLogBuffer
zur Verfügung. Die einzelnen Elemente des Logbuffer sind vom Typ ST_BA_TrendEntry
mit folgenden Elementen:
dtTime: Enthält das Datum und die Uhrzeit des Logeintrags im BACnet Format (ST_BA_Date
und ST_BA_Time
).
eType: Enthält die Information über den Typ des Logeintrags:
eBinary
: Der Logeintrag enthält einen Wert vom Typ BinaryPV. Im Element uValue ist der Wert der Variable bVal zu verarbeiten.
eAnalog
: Der Logeintrag enthält einen Wert vom Typ REAL. Im Element uValue ist der Wert der Variable fVal zu verarbeiten.
eMultistate
: Der Logeintrag enthält einen Wert vom Typ UDINT. Im Element uValue ist der Wert der Variable udiVal zu verarbeiten.
eEvent
: Der Logeintrag enthält ein Ereignis. In der Struktur stEvent stehen vier Bits zur Verfügung:
bStart
: Die Aufzeichnung wurde gestartet.
bStop
: Die Aufzeichnung wurde gestoppt.
bBufferPurged
: Der Logspeicher wurde geleert.
bInterrupted
: Die Aufzeichnung wurde unterbrochen (z. B. durch eine Netzwerkunterbrechung)
Zusätzlich stehen im Strukturelement stState die vier Statusflags zur Verfügung:
bInAlarm
: Das Objekt befindet sich in einem aktiven Alarmzustand.
bFault
: Das Objekt befindet sich in einem fehlerhaften Zustand, z. B. Geberstörung.
bOverridden
: Das Objekt wurde durch einen internen Mechanismus, z. B. durch die SPS übersteuert.
bOutOfService
: Das Objekt wurde außer Betrieb gesetzt. Werte werden simuliert.
Logspeicher des Eventlog-Objektes
Im nachfolgenden Beispiel wird die Verarbeitung des Logspeichers eines Eventlog-Objektes dargestellt.
Dabei kommt ein Objekt vom Typ FB_BACnet_ELogBuf
zum Einsatz. Dieses stellt einen Logspeicher bereit, dessen Inhalt von der SPS ausgelesen werden kann. Die Variable aLogBuffer
steht dabei als Array vom Typ T_BACnet_ELogBuffer
zur Verfügung. Die einzelnen Elemente des Logbuffer sind vom Typ ST_BACnet_EventLogEntry
mit folgenden Elementen:
dtTime: Enthält das Datum und die Uhrzeit des Logeintrags im BACnet Format (ST_BA_Date
und ST_BA_Time
).
eType: Enthält die Information über den Typ des Logeintrags:
eStatus
: Der Logeintrag enthält die Information der StatusFlags. In der Struktur stStatus stehen vier Bits zur Verfügung:
bInAlarm
: Das Objekt befindet sich in einem aktiven Alarmzustand.
bFault
: Das Objekt befindet sich in einem fehlerhaften Zustand, z. B. Geberstörung.
bOverridden
: Das Objekt wurde durch einen internen Mechanismus, z. B. durch die SPS übersteuert.
bOutOfService
: Das Objekt wurde außer Betrieb gesetzt. Werte werden simuliert.
eTimesync
: Es wurde eine Uhrzeitsynchronisationsnachricht empfangen. Das Element fTimeSync enthält das Delta zur vorherigen Uhrzeit.
eNotification
: Der Logeintrag enthält eine Ereignismeldung. In der Struktur stNotification
stehen die Parameter der Ereignisnachricht zur Verfügung, z. B. die Prozess-ID, das auslösende Gerät und Objekt, die Alarmpriorität, usw.