Ereignisse
Die Aufzeichnung der Station über das Geschehene: dauerhafte Verläufe von Alarmen, Ereigniseinträgen und Verriegelungen neben der laufenden Diagnosekonsole, mit Suche, Filtern und Export nach CSV/JSON.
Ereignisse ist die Seite, die die Frage "Was ist geschehen?" beantwortet. Sie steht in der unteren Gruppe der Navigationsleiste (Validierung, Ereignisse, Agentenzugriff, Einstellungen, Konto) und trägt vier Registerkarten: Alarme, Ereigniseinträge und Verriegelungen sind dauerhafte Verläufe aus dem Ereignisjournal der Station, und Konsole ist der laufende Diagnosestrom, in den jedes Teilsystem schreibt. Der Seitenkopf lautet "Dauerhafte Historien von Alarmen, Ereigniseinträgen und Verriegelungen sowie die laufende Diagnosekonsole."
Die Seite zu sehen setzt die Berechtigung Ereignisse anzeigen voraus (Bereich System): sowohl
der Eintrag in der Navigationsleiste als auch die Adresse /events prüfen sie. Jede werkseitige
Rolle hält sie standardmäßig, "Nicht angemeldet" eingeschlossen, und Admin immer; eine leer
angelegte Rolle beginnt ohne sie, und ein Administrator kann sie jeder Rolle außer Admin entziehen.
Das Exportieren aus einer Registerkarte setzt zusätzlich Historien exportieren/importieren
voraus.
Die Registerkarten und ihre Adressen
| Registerkarte | Was sie auflistet | Adresse | Seite |
|---|---|---|---|
| Alarme | Die jetzt wartenden Alarme, über dem dauerhaften Verlauf aller Alarmzustandswechsel | /events?view=alarms |
Alarme |
| Ereigniseinträge | Jede Ereignisflanke, die während eines Laufs oder von der laufunabhängigen Überwachung Always beobachtet wurde | /events?view=occurrences |
Ereigniseinträge |
| Verriegelungen | Jeder Wechsel des Stopp-Verriegelungsspeichers einer Einheit | /events?view=interlocks |
Verriegelungen |
| Konsole | Die letzten 500 Diagnoseeinträge des laufenden Programms | /events?view=console |
Konsole |
Die Seite öffnet auf Alarme. Ein Klick auf eine Registerkarte schreibt die Adresse um (ersetzend, so
dass die Registerkartenleiste den Zurück-Verlauf des Browsers nie füllt), und ein Link, der view=
trägt, landet auf dieser Registerkarte; ein Wert, den die Seite nicht kennt, lässt sie auf Alarme
öffnen. So erreicht die Alarmanzeige der Statusleiste (die Glocke mit "N aktiv (M unquittiert)", nur
gezeichnet, solange ein Alarm aktiv ist oder auf eine Quittierung wartet) die Alarmliste: Sie
navigiert nach /events?view=alarms, also auf den Bildschirm, auf dem das Gezählte sowohl gelesen
als auch beantwortet wird, und nie auf die Seite Logic, auf der Alarme konfiguriert werden.
Konsole bleibt hinter den anderen Registerkarten eingehängt, so dass ihr Mitlauf und ihre Bildlaufposition einen Wechsel überstehen; jeder der drei Verläufe behält seine eigene Suche, seinen Filter, seine Zeilen und seine Auswahl, während Sie zwischen ihnen wechseln.
Wer sehen und exportieren darf
| Berechtigung | Was sie auf dieser Seite öffnet | Ohne sie |
|---|---|---|
| Ereignisse anzeigen | Den Eintrag in der Navigationsleiste, die Adresse und jede Registerkarte | Der Eintrag wird nicht gezeichnet und die Adresse wird abgewiesen |
| Historien exportieren/importieren | Export auf jeder Registerkarte (CSV, JSON) und Supportpaket erstellen auf der Konsole | Die Schaltfläche Export wird nicht gezeichnet; ein Druck, der dennoch die Verarbeitung erreicht, antwortet im Aktionsprotokoll "Der Export von Ereignissen setzt die Berechtigung Historien exportieren/importieren voraus." |
| Logic bedienen | Quittieren und Alle quittieren auf der Registerkarte Alarme | Die Befehle werden nicht gezeichnet; die Zeilen bleiben lesbar |
| Einstellungen ändern | Aufzeichnung starten und Aufzeichnung beenden auf der Konsole | Die Schaltfläche wird nicht gezeichnet; der Aufzeichnungszustand wird Screenreadern weiterhin angesagt |
Die Berechtigungen werden je Verbindung entschieden, also sieht ein Browserkreis, der als anderer Benutzer angemeldet ist, seinen eigenen Satz Schaltflächen, und eine Anmeldung, eine Abmeldung oder eine Rollenänderung zeichnet sie sofort neu. Der Katalog steht unter Berechtigungen.
Wie sich die drei Verläufe verhalten
Die Registerkarten Alarme, Ereigniseinträge und Verriegelungen teilen ein Verhalten, so dass ein Wechsel der Registerkarte nie die Regeln ändert:
| Verhalten | Einzelheit |
|---|---|
| Fenster | Jede Registerkarte listet 500 Ereignisse je Seite, die auf ihre Suche, ihren Filter und den gewählten Zeitraum passen, das neueste zuerst (bei gleichem Zeitstempel entscheidet die Reihenfolge des Einfügens). Unter der Liste gehen Neuere und Ältere seitenweise durch das übrige Journal, und die Leiste wird nur gezeichnet, solange es eine weitere Seite gibt. Die neueste Seite folgt dem Journal laufend; eine Seite dahinter steht still, damit ein jetzt eintreffendes Ereignis nicht wegschiebt, was Sie gerade lesen. |
| Zeitraum | Zwei Datumsfelder, Von und Bis, jedes ein Ende des gelesenen Zeitraums. Ein leeres Feld ist gar keine Grenze, bei zwei leeren Feldern liest die Registerkarte also das ganze Journal, und der als Ende gewählte Tag zählt vollständig mit, bis zu seinem letzten Augenblick. Das Kreuz daneben hebt beide auf und stellt die Registerkarte auf die erste Seite zurück. |
| Suche | Ein Textfeld, dessen Platzhalter die Spalten nennt, auf die es passt (Name, Meldung, Quelle, Modell, Einheit, Ablauf, Verfasser, je nach Registerkarte). Verglichen wird auf "enthält", ohne Beachtung der Groß- und Kleinschreibung, 250 ms nachdem Sie zu tippen aufhören; führende und abschließende Leerzeichen werden übergangen. |
| Stufenfilter | Eine Liste je Registerkarte: Priorität bei Alarmen, Schweregrad bei Ereigniseinträgen, Übergang bei Verriegelungen. Eine Änderung liest das Journal sofort neu. |
| Aktualisieren | Die Schaltfläche mit dem Kreispfeil liest das Journal auf Wunsch neu; ihr Tooltip nennt die Registerkarte ("Alarmereignisse aktualisieren", "Ereigniseinträge aktualisieren", "Verriegelungsereignisse aktualisieren"). Sie ist ausgegraut, solange ein Lesevorgang läuft. |
| Laufende Aktualisierung | Jedes ins Journal geschriebene Ereignis fragt die offene Registerkarte von selbst neu ab, zusammengefasst, so dass ein Schwall einen Lesevorgang kostet (etwa 200 ms nach dem letzten Schreibvorgang). Eine Registerkarte, auf die Sie nicht schauen, wird bei der Rückkehr neu gelesen. |
| Auswahl | Ein Klick auf eine Zeile öffnet den Detailbereich rechts. Die Auswahl bleibt über Aktualisierungen hinweg an ihrer Ereigniskennung erhalten und entfällt, wenn die Zeile nicht auf der gelesenen Seite steht; das Kreuz im Kopf des Bereichs schließt ihn. |
| Ereignis kopieren | Die Schaltfläche am Fuß des Detailbereichs kopiert das Ereignis als eine Textzeile: vollständiger Zeitstempel, Art, Stufe, Name, die Zusammenfassung des Übergangs, die Meldung und, bei Ereigniseinträgen und Verriegelungen, die Kennungen. Das Aktionsprotokoll antwortet "Ereignis in die Zwischenablage kopiert." oder "Die Zwischenablage hat das Kopieren verweigert.", wenn der Browser es zurückgehalten hat. |
| Export | Export öffnet ein Menü mit Als CSV exportieren… und Als JSON exportieren… für jedes Ereignis, auf das Suche, Filter und Zeitraum passen, Seite um Seite und nicht nur die gezeichneten Zeilen. Die Schaltfläche ist ausgegraut, solange die Seite leer ist. |
| Ungefilterte Aufzeichnung | Das Journal wird nicht danach gefiltert, wer angemeldet ist oder was diese Rolle anderswo sehen darf: Es ist die technische Aufzeichnung der Station, und eine still fehlende Zeile würde die Historie lügen lassen. |
Die Liste und der Detailbereich
Jede Zeile trägt Datum und Uhrzeit des Ereignisses im Format, das unter Lokalisierung eingestellt ist, einen Punkt im Ton seiner Stufe, den Namen des Ereignisses, eine einzeilige Zusammenfassung des Übergangs und am rechten Rand das Wort der Stufe selbst (die Priorität, den Schweregrad oder den Übergang). Die Töne folgen auf jeder Fläche einer Skala: der kritische Ton für einen kritischen Alarm, einen kritischen Ereigniseintrag oder eine ausgelöste Verriegelung; der Warnton für Hoch, Warnung und "Quelle sicher"; der Hinweiston für Mittel; neutral für den Rest.
Der Detailbereich öffnet mit dem Abzeichen der Stufe und dem Namen, dann dem vollständigen Zeitstempel mit Millisekunden, der Zusammenfassung des Übergangs, der Meldung (oder "Keine Meldung erfasst.", wenn die Definition keine hatte), einer Karte EREIGNIS mit Stufe und Ereigniskennung sowie einer oder mehreren Momentaufnahmekarten, deren Felder die Seite jeder Registerkarte auflistet.
Die Statuszeile
Unter jedem Verlauf: "N angezeigt · Seite 1", wobei N die Zeilen der geöffneten Seite zählt, gefolgt von " · gefiltert", solange eine Suche, ein Stufenfilter oder ein Zeitraum wirkt; "N angezeigt · wird aktualisiert…" während eines erneuten Lesens; rechts "1 ausgewählt", solange eine Zeile ausgewählt ist, und "Aktualisiert hh:mm:ss", die Zeit des letzten erfolgreichen Lesens.
Zustände beim Laden, im Leerfall und bei Fehlern
| Zustand | Was die Registerkarte zeigt |
|---|---|
| Erstes Lesen | "Alarmereignisse werden geladen…" mit "Die neuesten passenden Alarmereignisse werden aus dem dauerhaften Journal gelesen." (das Hauptwort folgt der Registerkarte). |
| Nichts aufgezeichnet | "Noch keine Alarmereignisse" mit einer Zeile, die sagt, was dort erscheinen wird; die Seite jeder Registerkarte zitiert ihre eigene. |
| Nichts passt | "Keine Alarmereignisse passen zu diesen Filtern" mit "Passen Sie die Priorität oder die Suchbegriffe an, um diese Historie zu weiten." (Priorität, Schweregrad oder Übergang, je nach Registerkarte). |
| Das Journal ist nicht lesbar | "Alarme konnten nicht geladen werden" mit "Das dauerhafte Journal ist vorübergehend nicht verfügbar. Die Konsolenprotokolle sind davon nicht betroffen." und einer Schaltfläche Erneut versuchen; die Statuszeile lautet "Alarme nicht verfügbar". |
| Eine spätere Aktualisierung schlägt fehl | Die letzten guten Zeilen bleiben auf dem Bildschirm, und das Aktionsprotokoll meldet "Aktualisieren der Alarme fehlgeschlagen." |
Einen Verlauf exportieren
Beide Formate sind Browser-Downloads, sie funktionieren also im Fenster der Station selbst wie in
einem entfernten Browser; das Aktionsprotokoll antwortet "N Ereignis(se) exportiert nach" gefolgt
vom Dateinamen oder "Export fehlgeschlagen.". Der Dateiname trägt die Registerkarte und einen
sortierbaren Stempel: alarm-history-20260902-143000.csv, occurrence-history-<stamp>.json,
interlock-history-<stamp>.csv.
Jeder Zeitpunkt wird im eingestellten Anzeigeformat geschrieben, und die Datei erklärt den Zeitbezug
einmal: Die CSV nennt ihn in der Kopfzeile ihrer ersten Spalte, "Timestamp (UTC-03:00)" (oder
"Timestamp (UTC)"), und die JSON ist ein Umschlag mit einem Feld TimeZone auf oberster Ebene neben
einem Feld Events. Über das hinaus, was die Zeile zeigt, tragen die Spalten die vollständige
eingefrorene Momentaufnahme mitsamt den Kennungen (die Ereigniskennung, die Kennungen von Alarm,
Ereigniseintrag oder Beobachtung, die Kennungen von Modell und Einheit), so dass ein exportierter
Verlauf mit Laufdateien und Berichten in Beziehung gesetzt werden kann. Einer CSV-Zelle, die mit
=, +, - oder @ beginnt, wird ein Apostroph vorangestellt, damit eine Tabellenkalkulation sie
als Text und nicht als Formel öffnet. Die Seite jeder Registerkarte listet ihre Spalten auf.
Was das Journal aufbewahrt
Die drei Verläufe leben in events.db, einer eigenen Datenbank im Datenordner der Station neben
config.db und history-index.db, mit einer nur anfügenden Tabelle je Verlauf. Geschrieben wird
eine Momentaufnahme, die im Augenblick des Ereignisses entsteht (Namen, Priorität, Meldung, Modell,
Einheit, Quelle, der beobachtete Wert), so dass ein späteres Umbenennen, Ändern oder Löschen der
Definition nie umschreibt, was die Station Ihnen damals gesagt hat. Nichts auf dieser Seite, und
auch sonst nirgends in der Anwendung, löscht eine Zeile: Die Aufbewahrung hält die neuesten
100.000 Zeilen je Verlauf und schneidet die ältesten bei jedem Anfügen in der Reihenfolge des
Einfügens ab, so dass eine korrigierte Uhr kein frisches Ereignis verdrängen kann.
Das Journal übersteht einen Neustart und eine Wiederherstellung der Konfiguration: Eine Sicherung kopiert nur die Konfigurationsdatenbank und den Ordner der Betriebsmittel, also nimmt eine Wiederherstellung das Journal weder mit noch setzt sie es zurück. Es ist eine Aufzeichnung von Übergängen, nicht von Zuständen: Nach einem Neustart leitet das Alarmregister jeden Alarm aus dem ersten Zyklus neu ab, ausstehende Quittierungen gehen verloren, und der Verlauf zeigt schlicht, was davor und danach geschah.
Ereignisse erreichen das Journal über eine geordnete Warteschlange, die die Runtime nie blockiert:
Der Erzeuger nimmt die Momentaufnahme sofort, ein einzelner Schreiber schreibt in der Reihenfolge
des Eintreffens, und ein Schreibvorgang, der weiter fehlschlägt, wird bis zu zehnmal wiederholt,
bevor das Ereignis mit einer Fehlerzeile in der Konsole verworfen wird. Ein Ereigniseintrag, der
während eines Laufs beobachtet wird, wird zuerst in die Datei dieses Laufs geschrieben (die
Quelle, die Historien und Berichte lesen) und dann mit derselben Ereigniskennung und dem Laufkontext
ins Journal kopiert; eine Beobachtung außerhalb eines Laufs durch einen Ereigniseintrag vom Typ
Always geht nur ins Journal. Verriegelungs- und Alarmwechsel haben keine Aufzeichnung außer dem
Journal. Ein Agent mit geöffnetem Bereich Logs liest dasselbe Journal über event_history_read, nur
lesend (siehe Freigegebene Bereiche).
Die Konsole neben der Aufzeichnung
Die Konsole ist etwas anderes als die drei Verläufe: eine rollende Sicht auf 500 Einträge des Diagnosestroms des Programms, im Arbeitsspeicher, bei einem Neustart verloren und durch Ansicht leeren geleert. Beide überschneiden sich dort, wo die Runtime erzählt, was sie tut. Eine Ereignisflanke hinterlässt eine Konsolenzeile im Bereich Process (eine Aktivierung auf der Stufe ihres Schweregrads: Kritisch als Fehler, Warnung als Warnung, Info als Information), und ein Verriegelungswechsel ebenso (eine Auslösung als Warnung, eine sichere Quelle und ein Zurücksetzen als Information). Alarmwechsel erscheinen nicht in der Konsole: Die Spur des Auswerters ist Diagnosedetail, das nur eine ausführliche Aufzeichnung festhält. Die Verläufe sind die typisierte Aufzeichnung; die Konsole erklärt die Runtime darum herum.
Was Ereignisse nicht tut
- Es konfiguriert nichts. Alarme werden unter Logic > Alarme festgelegt, Ereigniseinträge unter Process > Setup > Ereigniseinträge und die Stopp-Verriegelung unter Process > Definition > Automatisierung.
- Es setzt keine Verriegelung zurück: Das tut die Komponente Verriegelung auf einem Dashboard oder die eigene Ansicht der Einheit.
- Es hat keinen Filter für Einheit oder Lauf: Suchen Sie nach dem Namen oder öffnen Sie den Lauf in den Historien für dessen eigene Aufzeichnung der Ereigniseinträge.
- Es löscht nichts und ändert nichts; allein die Aufbewahrung entfernt Zeilen.
- Solange die Runtime gestoppt ist, wird diese Seite gar nicht gezeichnet: Jeder Bildschirm außer Konto wird durch den Hinweis auf die Pause ersetzt, die Verläufe eingeschlossen. Das Journal selbst bleibt unberührt und liest sich genau so wie zuvor, sobald die Runtime wieder gestartet ist.