StreamTelLogger Plugin¶
Das StreamTelLogger Plugin empfängt Meldungen von SPSen (oder anderen Fremdsystemen) über Viper-Streams und schreibt sie über dedizierte log4net-Logger in eigene Logdateien — getrennt von der Viper-Logdatei, aber im gewohnten Format und mit der bekannten Rolling-Mechanik.
Funktionsweise¶
Das Plugin betreibt einen eigenen ConStreamTelPool (unabhängig vom globalen
Stream-Pool der Anlage). Jeder Stream des Pools kann auf einen benannten log4net-Logger
gemappt werden („Stream-Tel-Logger“); jedes empfangene Telegramm wird über diesen Logger
geschrieben. Die Logger hängen per additivity=false an eigenen Appendern — die
Viper-Logdatei bleibt unberührt.
Der Empfang nutzt die vorhandene Stream-Infrastruktur (UDP/TCP/COM): Port, Bind, Reconnect usw. werden wie gewohnt über die Stream-Parameter konfiguriert, es gibt keinen eigenen Socket-Code. Für den SPS-Fall: einen UDP-Stream anlegen und den lokalen Port konfigurieren — der Stream empfängt dann Datagramme beliebiger Absender.
Aktivierung¶
Das Plugin ist opt-in: Es wird nur geladen, wenn es in der Projekt-Konfiguration
aktiviert ist (Plugin „Stream-telegram-logger“, GUID
3CA6902A-5C1B-477E-BB24-C85E809609A4). Bestandsprojekte ohne Aktivierung verhalten
sich unverändert.
Dateien & Ablageorte¶
Alle Konfigurationsdateien liegen unter <ViperData>\StreamTelLoggerPlugin\ und werden
beim ersten Start mit Defaults angelegt:
Datei |
Inhalt |
|---|---|
|
der Plugin-eigene Stream-Pool (Verbindungen) |
|
Logger/Appender der SPS-Logs (wird gewatcht, Änderungen greifen sofort) |
|
Zuordnungen Stream → Logger → Encoding → PrefixTelId → PrefixLogLevel → SendResponse |
Die Default-log4net-Config definiert den Logger „PLC“: einen RollingFileAppender
nach D:/log/PLC.log (10 MB, 10 Rollbackups) plus einen GBufferAppender (eigener
Tab „PLC“ im Viper-Log-Viewer, Dump nach D:/log/PLC_Dump.log). Weitere Logger und
Appender können in der Config ergänzt und in den Zuordnungen verwendet werden.
Die log4net-Config wird additiv zur Haupt-Config der Anlage geladen; der Verweis auf die Haupt-Config bleibt unverändert (Log-Editor und ResetConfiguration der Shell arbeiten weiter auf der Haupt-Config).
Meldungsformat¶
Encoding ist pro Zuordnung konfigurierbar (ASCII, UTF8, Unicode, ISO-8859-x, …); Default
WesternEuropean_8_Bit(ISO-8859-1). Mit der SPS abstimmen.Trim:
\0,\r,\n,\t, Leerzeichen sowie das Delimiter-Zeichen des Stream-Protokolls werden am Meldungsrand entfernt.PrefixTelId (pro Zuordnung, Default aus): Beginnt die Meldung mit einer Telegramm-ID, gefolgt von
|(z. B.123|D:Meldung), wird die ID vor der weiteren Verarbeitung abgetrennt. Sie wird nicht mitgeloggt, sondern nur dem Antwort-Telegramm vorangestellt (siehe Antwort-Telegramme). Enthält die Meldung kein|, wird sie unverändert verarbeitet.PrefixLogLevel (pro Zuordnung, Default aus): Beginnt die Meldung (nach dem Abtrennen einer Telegramm-ID) mit
D:/I:/W:/E:/F:, wird sie mit Debug / Info / Warn / Error / Fatal geloggt und das Präfix entfernt. Ohne bekanntes Präfix (oder bei deaktiviertem Feature) wird die Meldung unverändert mit Level Info geloggt.
Antwort-Telegramme¶
Mit SendResponse (pro Zuordnung, Default aus) bestätigt das Plugin jedes empfangene Telegramm mit einem Antwort-Telegramm über denselben Stream:
ACK— die Meldung wurde geloggtWARNING:<Text>— die Meldung wurde nicht geloggt (kein Logger zugeordnet oder das Log-Level ist in der log4net-Config für diesen Logger deaktiviert)ERROR:<Text>— bei der Verarbeitung ist ein Fehler aufgetreten
Ist PrefixTelId aktiv und die Meldung enthielt eine Telegramm-ID, wird diese der
Antwort vorangestellt, z. B. 123|ACK. Die Antwort wird mit dem Encoding der Zuordnung
kodiert; bei einem Delimiter-Protokoll wird das Delimiter-Zeichen angehängt.
Bemerkung
Antworten werden nur bei Streams mit Delimiter-Protokoll (ConProtDel) oder ohne
Protokoll (ConProtNone) gesendet. Bei anderen Protokollen bleibt SendResponse ohne
Wirkung; beim Start des Streams steht dazu eine Warnung im Viper-Log. Schlägt das Senden
einer Antwort fehl, wird ein Fehler ins Viper-Log geschrieben.
Bedienung¶
Der State-Menü-Eintrag zeigt den Verbindungsstatus der Plugin-Streams (sofern am Pool
„Add to state menu“ aktiv ist). Ein Klick öffnet — geschützt durch die Operation
StreamTelLogger.EditParams — den Parametrier-Dialog mit drei Tabs:
Streams — Verwaltung des Plugin-eigenen Stream-Pools
Log Config — XML-Editor der log4net-Config mit Default-Button
Stream-Tel-Loggers — die Zuordnungsliste (Stream → Logger → Encoding → PrefixTelId → PrefixLogLevel → SendResponse); beim Schließen mit ungespeicherten Änderungen fragt der Dialog nach („Apply changes?“)
Rechtevergabe¶
Beim Upgrade einer Anlage über Version 8.0.4 wird StreamTelLogger.EditParams
automatisch an die Standardrollen Admin und Service vergeben — sofern diese Rollen
existieren und das Plugin zu diesem Zeitpunkt bereits aktiviert ist. In allen anderen
Fällen (projektspezifisches Rollenmodell, nachträgliche Aktivierung) das Recht manuell im
Rollenmodell zuweisen.
Fehlerverhalten¶
Startfehler eines Streams (z. B. Port bereits belegt): Warnung im Viper-Log, Viper läuft normal weiter.
Verarbeitungsfehler eines Telegramms (Encoding, unerwarteter Inhalt): Fehlereintrag im SPS-Logfile, bewusst im zeitlichen Kontext der betroffenen Meldungen.
Bemerkung
Einen UDP-Port kann nur ein Prozess binden. Sobald das Plugin den Port öffnet, darf kein anderes Programm (z. B. ein früheres Python-Empfangsskript der SPS-Kollegen) mehr auf demselben Port lauschen — ablösen oder auf einen anderen Port legen.