Zum Hauptinhalt springen

Überwachungsmodul "diagnostics"

Beschreibung

Aufgabe des Überwachungsmoduls "diagnostics" ist es, unterschiedliche Arten von Eingangsdaten bezüglich festgelegter Kriterien zu überwachen und die hieraus resultierenden Alarminformationen anschließend in die smartCORE Alarmdatenbank zu schreiben.

Diese Datenbank kann infolgedessen zur weiteren Verarbeitung der Alarmmeldungen, wie z.B. einer Übertragung in die Cloud, herangezogen werden.

Zu den Arten überwachter Eingangsdaten zählen unter anderem

  • Boolesche Kanäle
  • ganzzahlige Kanäle mit (enumeriertem) (Fehler-)Wertebereich
  • analoge Kanäle mit Messwerten
  • zweikanalige Kombinationen (Error Streams) bestehend aus Fehlercode und Fehlerlevel

Darüberhinaus werden im Rahmen der Zusammenstellung von Alarmmeldungen aktuelle Werte von smartCORE Kanälen erfasst (sogenannte Snapshots) sowie benutzerdefinierte Metadaten integriert.

Verwendete Schnittstellen & Protokolle

  • smartCORE Alarmdatenbank

JSON-Konfiguration

In den folgenden Abschnitten werden Beispielkonfigurationen aufgelistet sowie hieran beteiligte Modulparameter diskutiert.

Beispielkonfiguration (Überwachung eines Booleschen Kanals)

In diesem Beispiel wird ein Boolescher Kanal auf den Wert true hin überwacht.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"activationMode": "channelvalues",
"pollingIntervalMs": 1000,
"messages": [
{
"messageLevel": "WARNING",
"context": "Some WARNING occurred",
"channel": "someBooleanChannel",
"activation": "high"
}
]
}
}

Beispielkonfiguration (Überwachung der Überschreitung eines Kanalwerts mit Stabilisierungsverzögerungen und Hysterese)

In diesem Beispiel wird ein ganzzahliger oder Fließkomma-Kanal auf die Überschreitung des Wertes von 42.0 hin überwacht. Im Beispiel ist es zur Auslösung notwendig, dass die Überschreitung mindestens 5 Sekunden lang andauert bzw. zur Deaktivierung, dass diese mindestens 10 Sekunden lang nicht vorliegt und hierfür der Wert des Kanals unterhalb des Schwellwerts minus seiner Hysterese liegt.

Es wird zudem eine ereignisbezogene Meldung generiert, die den aktuellen Wert, das bisherige Extremum, d.h. in diesem Fall Maximum, sowie den Schwellwert beinhaltet.

Diese Meldung wird sowohl bei initialer Überschreitung als auch bei Deaktivierung aktualisiert. Außerdem wird diese Meldung bei Abweichungen des aktuellen Werts vom zuletzt gemeldeten Extremum, die größer als die Hysterese sind, ebenfalls aktualisiert.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"activationMode": "channelvalues",
"pollingIntervalMs": 1000,
"messages": [
{
"messageLevel": "WARNING",
"context": "Some WARNING occurred",
"messageEvent": "Some WARNING occurred (current value ${value} > ${boundary}) (maximum value ${minmax} on ${minmaxDate} at ${minmaxTime})",
"channel": "someValueChannel",
"boundary": 42.0,
"hysteresis": 7.0,
"activation": "high",
"stabilizationSecondsRaise": 5,
"stabilizationSecondsRelease": 10,
}
]
}
}

Beispielkonfiguration (Überwachung enumerierter Kanalwerte)

In diesem Beispiel wird ein ganzzahliger Kanal überwacht, wobei die Wertebereiche (17, 77-99) als Auslösebedingung, die Wertebereiche (31-39, 66, 69-71) als Deaktivierungsbedingung sowie sämtliche anderen Bereiche als ungültige Alarmbedingung interpretiert werden.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"activationMode": "channelvalues",
"pollingIntervalMs": 1000,
"messages": [
{
"messageLevel": "WARNING",
"context": "Some WARNING occurred",
"messageEvent": "Some WARNING occurred",
"messageFailure": "INVALID error occurred",
"channel": "someEnumeratedChannel",
"activation": "enum",
"valuesHigh": "17,77-99",
"valuesLow": "31-39,66,69-71"
}
]
}
}

Beispielkonfiguration (Überwachung eines Error Streams)

In diesem Beispiel wird ein sogenannter Error Stream überwacht. Dieser besteht aus den beiden sourceErrorCode und sourceErrorLevel Kanälen, die zeitlich synchron sein müssen. Es werden hierbei sowohl ganzzahlige als auch String Fehlercode-Kanäle unterstützt, wohingegen der Fehlerlevel-Kanal ganzzahlige Werte beinhalten muss.

Im Beispiel werden sowohl der benutzerspezifizierte Fehlercode "47:11" als auch sämtliche unbekannten Fehlercodes überwacht.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"activationMode": "errorstream",
"pollingIntervalMs": 1000,
"sourceErrorCode": "Some.Name.Space.ErrorCodeChannel",
"sourceErrorLevel": "Some.Name.Space.ErrorLevelChannel",
"messages": [
{
"errorCode": "47:11",
"messageLevel": "WARNING",
"context": "WARNING ${errorCode} occurred",
"messageEvent": "WARNING ${errorCode} occurred"
},
{
"isTemplate": true,
"messageLevel": "WARNING",
"context": "UNKNOWN WARNING ${errorCode} occurred",
"messageEvent": "UNKNOWN WARNING ${errorCode} occurred"
}
]
}
}

Beispielkonfiguration (Überwachung eines Booleschen Kanals, Verwendung von Metadaten)

In diesem Beispiel wird ein Boolescher Kanal auf den Wert true überwacht. Ziel dieses Beispiels ist es, die Ergänzung von Alarmmeldungen um benutzerspezifizierte Metadaten zu veranschaulichen.

Es werden hierfür im Rahmen der Zusammenstellung der Alarmmeldung Metadaten in Form eines JSON-Objekts hinzugefügt, wobei immer die globalen Metadaten um die im Rahmen der Message spezifizierten Metadaten ergänzt bzw. auf oberster Ebene des JSON-Objekts ersetzt werden.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"activationMode": "channelvalues",
"pollingIntervalMs": 1000,
"globalMetadata": {
"actionToBePerformed":"some action",
"consequences":[
"consequence1",
"consequence2"
]
},
"messages": [
{
"messageLevel": "WARNING",
"context": "Some WARNING occurred",
"channel": "someBooleanChannel",
"boundary": 0,
"activation": "high",
"metadata": {
"actionToBePerformed":"some CRITICAL action",
"consequences":[
"some SEVERE consequence",
"consequence1",
"consequence2"
],
"additionalRemarks":[
"some REMARK"
]
}
}
]
}
}

Beispielkonfiguration (Überwachung eines Booleschen Kanals, Verwendung von Snapshot-Kanälen)

In diesem Beispiel wird ein Boolescher Kanal auf den Wert true überwacht. Ziel dieses Beispiels ist es, die Ergänzung von Alarmmeldungen um einen benutzerspezifizierten Snapshot von Kanalwerten zu veranschaulichen.

Es wird hierfür zum Zeitpunkt des initialen Auftretens der Alarmbedingung eine Momentaufnahme diverser smartCORE Kanäle angefertigt, die aus der Vereinigung aller globalen und meldungsbezogenen Snapshot-Kanäle besteht.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"activationMode": "channelvalues",
"pollingIntervalMs": 1000,
"globalSnapshot": [
"someGps.Location",
"someOutsideTemperature"
]
"messages": [
{
"messageLevel": "WARNING",
"context": "Some WARNING occurred",
"channel": "someBooleanChannel",
"boundary": 0,
"activation": "high",
"snapshot": [
"somePressure",
"someTemperature",
"someQuantity",
]
}
]
}
}

Beispielkonfiguration (Überwachung eines Booleschen Kanals, Verwendung von Snapshot-Gruppen)

In diesem Beispiel wird ein Boolescher Kanal auf den Wert true überwacht. Dieses Beispiel veranschaulicht zusätzlich die Verwendung sogenannter Snapshot-Gruppen.

{
"module": "diagnostics",
"factory": "diagnostics",
"config": {
"activationMode": "channelvalues",
"pollingIntervalMs": 1000,
"snapshotGroups": [
{
"name": "gpsInfoChannels",
"channels": [
"GPS.Location",
"GPS.Altitude",
"GPS.SatCount"
]
},
{
"name": "EngineOilPTQChannels",
"channels": [
"Engine.Oil.Pressure",
"Engine.Oil.Temperature",
"Engine.Oil.Quantity"
]
}
],
"globalSnapshot": [
"gpsInfoChannels",
"someOutsideTemperature"
]
"messages": [
{
"messageLevel": "WARNING",
"context": "Some WARNING occurred",
"channel": "someBooleanChannel",
"boundary": 0,
"activation": "high",
"snapshot": [
"Engine.Revs",
"EngineOilPTQChannels"
]
}
]
}
}

Globale Modulparameter

Im folgenden Abschnitt werden sämtliche Parameter des Moduls diskutiert.

ParameternameErforderlichDatentypsinnvoller WertebereichDefault-WertBeschreibung
pollingIntervalMsNeinINT1 -1000 (1 s)Verarbeitungsintervall [ms]
globalMetadataNeinJSON ObjectEMPTY JSON ObjectJSON Objekt mit beliebigen benutzerspezifizierten Metadaten
globalSnapshotNeinJSON Array of STRINGEMPTY JSON ArrayJSON Array, welches eine globale Liste mit Kanälen beinhaltet, deren Werte zum Zeitpunkt der Alarmierung punktuell erfasst werden sollen
snapshotGroupsNeinJSON Array of JSON ObjectEMPTY JSON Arraysiehe unten
activationModeJASTRINGKEIN Default-WertAktivierungsmodus, entweder Kanalwertüberwachung ("channelvalues") oder Error-Stream-Überwachung ("errorstream")
messagesJAJSON Array of JSON ObjectKEIN Default-Wertsiehe unten

Globale Snapshot Gruppen "snapshotGroups"

Mehrere im Rahmen eines Snapshots zu erfassende Kanäle können in Form einer Snapshot-Gruppe als JSON-Objekt konfiguriert werden, deren Name dann im weiteren Verlauf der Konfiguration wie ein Kanalname verwendet werden kann. Sinnvollerweise sollten diese Gruppen so benannt werden, dass keine Überschreibung existierender Kanalnamen erfolgt, da die Namen dieser Gruppen zunächst in die Namen ihrer Bestandteile aufgelöst werden.

ParameternameErforderlichDatentypsinnvoller WertebereichDefault-WertBeschreibung
nameJASTRINGName bzw. Alias der Snapshot-Gruppe
channelsJAJSON Array of STRINGListe aller zusammengefassten Kanalnamen

Konfiguration der Alarmmeldungen "messages"

Die Alarmmeldungen "messages" werden hierbei in Form von JSON Objekten und je nach Art der Überwachung unterschiedlich konfiguriert.

Gemeinsame Konfigurationsparameter dieser JSON Objekte sind hierbei

ParameternameErforderlichDatentypsinnvoller WertebereichDefault-WertBeschreibung
messageLevelJASTRINGinfo, action, service, warning, alarm, error, fatalKEIN Default-WertSchweregrad der Alarmmeldung
contextJASTRINGKontext der Alarmmeldung
messageEventNeinSTRINGAlarmmeldung, wenn Alarm ausgelöst wird
needAcknowledgeNeinBOOLEANfalse, truefalseist eine Quittierung auf Cloud-Seite erforderlich
keepAcknowledgedStatusNeinBOOLEANfalse, truefalsesoll quittierter Status beibehalten werden
stabilizationSecondsRaiseNeinINTEGER1 -0Stabilisierungsverzögerung, nach der der Alarm ausgelöst werden soll (es wird der initiale Zeitpunkt des ersten Auftretens der Alarmbedingung gemeldet)
stabilizationSecondsReleaseNeinINTEGER1 -0Stabilisierungsverzögerung, nach der der Alarm deaktiviert werden soll (es wird der initiale Zeitpunkt des ersten Auftretens der Deaktivierungsbedingung gemeldet)
metadataNeinJSON ObjectEMPTY JSON ObjectBenutzerdefinierte Metadaten, die die globalen Metadaten potentiell überschreiben können
snapshotNeinJSON Array of STRINGEMPTY JSON Arraywährend des initialen Auftretens der Alarmbedingung zu erfassende Kanäle. Es wird der globale Snapshot "globalSnapshot" mit den hier spezifizierten und aufgelösten Snapshot-Gruppen (aus "snapshotGroups") sowie hier individuell spezifizierten Kanälen vereinigt.

Konfiguration der Kanalwertüberwachung ("activationMode" = "channelvalues")

Im Rahmen der Wertüberwachung eines smartCORE Kanals wird das o.g. Konfigurationsobjekt durch folgende Parameter ergänzt, wobei folgende Parameter für eine Schwellwertüberwachung festzulegen sind

ParameternameErforderlichDatentypsinnvoller WertebereichDefault-WertBeschreibung
channelJASTRINGKEIN Default-WertName des überwachten smartCORE Kanals
boundaryJAINTEGER oder FLOAT0Schwellwert, dessen Überschreitung bzw. Unterschreitung zur initialen Erfüllung der Alarmbedingung führt
activationJASTRINGlow, high, minimum, maximum, positiveEdge, negativeEdgeKEIN Default-WertArt der Alarmaktivierung. ("low" => Unterschreitung, "high" => Überschreitung, "minimum" => Unterschreitung mit Überwachung des Minimums, "maximum" => Überschreitung mit Überwachung des Maximums, "positiveEdge" => Überschreitung (nur initiale, zustandslose Alarmierung), "negativeEdge" => Unterschreitung (nur initiale, zustandslose Alarmierung)

Im Fall der Bereichsüberwachung , d.h. wenn der Wert eines Kanals aus einer Aufzählung (enum) stammt, können folgende zusätzliche Parameter spezifiziert werden.

ParameternameErforderlichDatentypsinnvoller WertebereichDefault-WertBeschreibung
channelJASTRINGKEIN Default-WertName des überwachten smartCORE Kanals
valuesLowWAHLWEISESTRING"0"Spezifikation der Wertebereiche, die einer deaktivierten Alarmbedingung korrespondieren
valuesHighWAHLWEISESTRING"0"Spezifikation der Wertebereiche, die einer ausgelösten Alarmbedingung korrespondieren
activationJASTRINGenumKEIN Default-WertArt der Alarmaktivierung. In dieser Konfiguration ist lediglich enum sinnvoll.

Es kann hier wahlweise eine bzw. beide der o.g. Wertebereichsspezifikationen valuesLow bzw. valuesHigh verwendet werden. Wird lediglich eine Spezifikation verwendet, so entspricht die andere dem Gegenteil dieser Spezifikation. Werden hingegen beide Spezifikationen verwendet, so entsprechen die nicht abgedeckten Wertebereiche einer ungültigen Alarmbedingung. Hierfür kann eine ungültige Alarmmeldung in Form folgenden zusätzlichen Parameters spezifiziert werden

ParameternameErforderlichDatentypsinnvoller WertebereichDefault-WertBeschreibung
messageFailureNeinSTRINGAlarmmeldung, wenn Alarmierungsbedingung ungültig ist

Konfiguration der Kanalwertüberwachung ("activationMode" = "errorstream")

Es kann ebenso ein sogenannter Error Stream überwacht werden. Dieser besteht i.A. aus zwei zeitlich synchronen smartCORE Kanälen, die einerseits den Fehlercode und andererseits das Fehlerlevel beinhalten.

Diese beiden Kanäle werden als globale Modulparameter wie folgt konfiguriert

ParameternameErforderlichDatentypsinnvoller WertebereichDefault-WertBeschreibung
sourceErrorCodeJASTRINGKEIN Default-WertsmartCORE Kanal, der einen zeitlich variablen Fehlercode beinhaltet
sourceErrorLevelJASTRINGKEIN Default-WertsmartCORE Kanal, der ein hierzu synchrones Fehlerlevel beinhaltet

Der sourceErrorCode Kanal ist hierbei ein Kanal, der entweder ganzzahlige Werte oder Strings bereitstellt. Der sourceErrorLevel Kanal hingegen stellt ganzzahlige Werte bereit.

Weiterhin kann in der globalen Modulkonfiguration ein neutraler Fehlerlevel wie folgt spezifiziert werden

ParameternameErforderlichDatentypsinnvoller WertebereichDefault-WertBeschreibung
neutralErrorCodeNeinSTRING0Neutraler Fehlerlevel, bei dem KEIN Alarm ausgelöst wird

Die einzelnen Alarmmeldungen "messages" (in diesem Fall bezüglich unterschiedlicher Fehlercodes) werden wie oben dargestellt konfiguriert. Es sind außerdem folgende Parameter zu spezifizieren

ParameternameErforderlichDatentypsinnvoller WertebereichDefault-WertBeschreibung
errorCodeWAHLWEISESTRINGFehlercode, der von dieser Überwachungseinheit überwacht wird
isTemplateWAHLWEISEBOOLEANfalse, truefalsehandelt es sich um eine Überwachungseinheit für unbekannte Fehlercodes (Wildcard)?

Ist errorCode spezifiziert, wird die entsprechende Alarmmeldung in Reaktion auf den Fehlercode erstellt. Ein Template hingegen konfiguriert Alarmmeldungen für sämtliche unbekannten Fehlercodes.

Modul-Informationen

InformationWert
AutorenoptiMEAS Measurement and Automation Systems GmbH
seit smartCORE2.6
ModultypConsumer
AbhängigkeitenKEINE