Zum Hauptinhalt springen

Betrieb virtueller Tags

Übersicht​

Ein virtueller Tag ist ein Tag, der durch die Berechnung anderer Tag-Werte erstellt wird. Was er ist und wie er erstellt wird, ist im Benutzerhandbuch unter Virtuelle Tags beschrieben. Diese Seite behandelt ausschließlich das, was Administratoren wissen müssen: Wo die Berechnung läuft, wann sie bereitgestellt wird, wo Fehler protokolliert werden und was die Performance beeinflusst.


Eine Berechnung = Ein CEP-Statement​

Das EQL, das in den Berechnung-Tab eines Tags eingegeben wird, wird als ein Statement in CEP bereitgestellt.

ElementWert
Statement-IDCALCULATION_ + Tag-ID (z. B. CALCULATION_TAG_V_FILTER_DP)
Ein-/Ausschaltwertuse_calculation des Tags — Anwenden im Berechnungs-Tab
Ziel der ErgebnisseEine Ergebniszeile wird zu einem Datenpunkt dieses Tags und fließt in die gleiche Pipeline wie die Erfassungswerte — Speicherung, Alarme und andere Berechnungen lesen ihn wie einen normalen Tag
ErgebnisverarbeitungWenn das Statement ein Ergebnis liefert, wandelt ein asynchroner Worker dieses in einen Datenpunkt um und speist ihn in die Pipeline ein

Das Berechnungsergebnis ist das einzige CEP-Ergebnis, dessen Wiedereintritt in CEP erlaubt ist. Andere CEP-Ergebnisse werden am CEP-Eingang nicht akzeptiert. Dadurch können virtuelle Tags als Quelle für andere virtuelle Tags dienen (Kaskadierung). Ob eine Berechnung sich selbst liest, wird bei der Speicherung nicht geprüft. Wenn ein Zyklus erstellt wird, liest das Statement seine eigene Ausgabe erneut.


Bereitstellungszeitpunkte​

ZeitpunktAktionBei Fehler
Speichern im Berechnungs-Tab · V5 PATCH /api/v5/tag/{tag_id}/calculationDas Statement wird zuerst kompiliert, dann gespeichert; das alte Statement wird entfernt und das neue hochgeladenWenn die Kompilierung fehlschlägt, erfolgt keine Speicherung. Wenn gespeichert, aber die Bereitstellung fehlschlägt, ist die Antwort ein Fehler — ein nicht bereitgestelltes Statement wird nicht als Erfolg gemeldet
ServerstartAlle Tags mit aktiviertem use_calculation werden gleichzeitig in 4er-Gruppen bereitgestelltDieser Tag wird übersprungen und die Bereitstellung der restlichen Tags wird fortgesetzt. Die Diagnose «Bereitstellung virtueller Tag fehlgeschlagen» wird aktiviert — siehe unten
Löschen eines TagsDas Berechnungs-Statement des Tags wird entfernt und die Alarm-Einstellungen des Tags werden gelöschtSelbst wenn ein Schritt fehlschlägt, werden der nächste Schritt und das Löschen aus der DB fortgesetzt
Löschen einer VerbindungDie Berechnungen, Aggregationen und Alarme aller Tags dieser Verbindung (einschließlich virtueller Tags) werden entfernt und zusammen mit den Tags gelöscht—

Ablehnung der Speicherung — 422​

Wenn ein Statement beim Speichern im Berechnungs-Tab nicht kompiliert werden kann, wird dies mit HTTP 422 abgelehnt, und die Ursache wird auf dem Bildschirm angezeigt.

OrtInhalt
Informationsfeld direkt unter dem EQL-EditorTitel «EQL konnte nicht gelesen werden», Positions-Chip «Zeile N Spalte M», Ursachen-Statement und Hinweis, eingeklappter Original-Engine-Text. Der Cursor springt an die Stelle (ohne Position nur das Statement ohne Chip). Es erscheint kein separates Toast-Fenster
Statement des Servers (V5-Antwort detail)«EQL-Kompilierung fehlgeschlagen (Zeile N Spalte M): …» — ohne Position: «EQL-Kompilierung fehlgeschlagen: …»
Erweiterungsfeld der V5-Antwortreason = eql.compile, cause · compiler_message = aufbereitetes Compiler-Statement, engine_message = ursprüngliches Engine-Statement, line · col = 1-basierte Position

Wenn CEP nicht gestartet ist und somit keine Prüfung erfolgen kann, erfolgt eine HTTP 503 Antwort und es erscheint ein Toast mit: «Verbindung zum CEP-Engine nicht möglich, EQL-Validierung fehlgeschlagen.» — Da dies kein Fehler im Statement ist, wird es nicht im Editor angezeigt. In den Serverlogs wird die Ablehnung als Tag calculation refused: tag_id=[…] und die Speicherung bei fehlender CEP-Verbindung als Tag calculation not saved - CEP could not check the EQL protokolliert.

Die gleiche Logik gilt für alle anderen Eingänge, die EQL empfangen.

EingangBeispiele
KonsoleTag-Berechnungs-Tab · Hinzufügen/Ändern von Asset-Statements · Plugin-Statements · Speichern von Alarm-Einstellungen · [EQL ausführen] Prüfung · Query-Ausführung
V5Tag-Formel · Asset-Statement · Alarm-Einstellungen · Query-Kompilierung/Ausführung
Bei deaktiviertem CEP können Formeln nicht gespeichert werden

Die Regel besagt, dass nicht validiertes EQL nicht in der DB gespeichert wird. Während eines CEP-Neustarts ist es normal, dass das Speichern im Berechnungs-Tab fehlschlägt; speichern Sie erneut, nachdem CEP gestartet ist.


Fehler bleiben in der Diagnose​

Wenn eine Berechnung fehlschlägt, wird dies in der Diagnose in zwei Formen protokolliert.

CodeName · Typ · SchweregradNachrichtZeitpunkt
diagnostic.tag.calculation_deploy_failedBereitstellung virtueller Tag fehlgeschlagen · Status · ERRORDie Berechnung für Tag {target} konnte nicht angewendet werden({operation}): {error}Wenn eine gespeicherte Formel beim Start oder bei der Neubereitstellung nicht in die Engine geladen werden konnte. Pro Tag ein Eintrag; verschwindet automatisch nach erfolgreicher Bereitstellung
diagnostic.tag.calculation_listener_failingStatus · ERRORDie Berechnung von Tag {target} schlägt fehl.Wenn die Umwandlung eines Statement-Ergebnisses in einen Datenpunkt fehlschlägt. Verschwindet, wenn das nächste Ergebnis erfolgreich ist

In {error} der Bereitstellung virtueller Tag fehlgeschlagen steht das von der Engine abgelehnte Statement, in den Diagnoseparametern line · col die Position. Das Detailpanel des Diagnosebildschirms enthält den Link «Bildschirm zur Korrektur öffnen», der direkt zum Einstellungsformular des Tags führt. Nach Korrektur und Speicherung im Berechnungs-Tab wird das Statement erneut bereitgestellt und die Diagnose gelöscht. Falls diagnostic.infra.component_unreachable(cep) gleichzeitig aktiv ist, muss zuerst CEP beheben werden.

Da unbereitgestelltes EQL nicht ausgeführt wird, gibt es für andere EQL-nutzende Funktionen pro Ziel jeweils einen eigenen Diagnoseeingrag.

CodeNameZielZiel von «Bildschirm zur Korrektur öffnen»
diagnostic.tag.calculation_deploy_failedBereitstellung virtueller Tag fehlgeschlagenTagTag-Einstellungsformular
diagnostic.tag.alarm_deploy_failedBereitstellung Tag-Alarm fehlgeschlagenAlarm-Einstellungs-ID (Tag ist tag_id)Alarm-Einstellungsformular
diagnostic.asset.statement_deploy_failedBereitstellung Anlagen-Statement fehlgeschlagenasset_id/statement_nameStatement-Tab des Assets

Wenn in der Ergebniszeile einer der Werte timestamp · value · quality · error_code fehlt oder value leer ist, wird dies als Warnlog (kein Fehler) protokolliert und das Ergebnis verworfen. Wenn keine Werte für einen virtuellen Tag entstehen, die Diagnose aber keine Fehler zeigt, suchen Sie in den Serverlogs nach Calculated point validation failed.


Performance​

AspektGrund
Anzahl virtueller Tags = Anzahl CEP-StatementsFür jeden virtuellen Tag läuft ein zusätzliches Statement. Vermeiden Sie es, dass dieselben Werte in mehreren virtuellen Tags separat berechnet werden
Kleine Zeitfenster für QuellenWenn zwei oder mehr Quellen kombiniert werden, entstehen Kombinationen der Werte innerhalb des Fensters. win:length(1) nutzt nur jeweils den neuesten Wert, was zu einer einzigen Kombination führt. Bei großen Zeitfenstern steigt die Anzahl der Kombinationen multiplikativ an
OUTPUT LAST EVERY nDa bei jedem Wert einer Quelle neu berechnet wird, führt eine hohe Anzahl schneller Quellen zu häufigeren Ergebnissen. Dieser Abschnitt ist ein Limit, das pro Intervall nur das letzte Ergebnis ausgibt — da das Ergebnis ein gespeicherter Datenpunkt ist, reduziert dies auch das Speichervolumen
StartzeitBeim Start werden Berechnungs-Statements in 4er-Gruppen bereitgestellt. Bei vielen virtuellen Tags kann es nach dem Start eine Weile dauern, bis alle Berechnungen laufen

Grenzen​

ElementInhalt
Obergrenze für Quell-TagsEs gibt keine festgelegte Obergrenze im Produkt
Kaskadierung (Virtueller Tag eines virtuellen Tags)Möglich
Zyklus- · SelbstreferenzprüfungNicht vorhanden — wird bei der Speicherung nicht erkannt
Länge der Formel4.000 Zeichen bei Eingabe über V5 API
SyntaxEs werden nur Statements bereitgestellt, die vom gestarteten CEP-Backend akzeptiert werden — CEP — Backends

Konfigurationsschlüssel​

Es gibt keine spezifischen Konfigurationsschlüssel nur für die Berechnung virtueller Tags. Welches Engine das Statement ausführt, wird durch cep.backend von CEP bestimmt (CEP — Backends).


Verwandte Dokumente​