KAPITEL 13. DER PROTOKOLLMONITOR
13.3 Template Sprachsyntax
Jedes Protokoll Template (Datei bzw. Skript) muss mindestens zwei Funktionen
bereitstellen. Die Erste extrahiert aus den eintreffenden oder aufgenommenen
Daten die einzelnen Datagramme bzw. Telegramme. Diese enthält den Code
der nötig ist, um zu entscheiden wann ein Telegramm beginnt und wann es
endet.
Die zweite Funktion kontrolliert das Erscheinungsbild jedes Telegramms in ei-
nem extrem großen Umfang. Hier spezifizieren Sie wie der Telegramminhalt
(oder Teile davon) dargestellt werden. Zum Beispiel: Sie können eine Bytefolge
in andere Zahlenformate umwandeln, die Prüfsumme validieren oder einzelne
Bereiche mit einem Bezeichner versehen. Und Sie können beliebige Abschnit-
te unterschiedlich einfärben.
Neben diesen beiden Funktionen existiert noch eine dritte, optionale Filterfunk-
tion. Sie erlaubt Ihnen in Verbindung mit dem Filterelement in der Toolbar be-
stimmte Telegramm auszublenden.
Zunächst werden wir uns aber auf die zwei essentiellen Dinge konzentrieren,
die ein Template leisten muss:
1
Aufsplitten des Datenstroms in einzelne Telegramme
2
Individuelle Anzeige der Telegramme
13.3.1
Aufsplitten des Datenstroms in einzelne Telegramme
Bei der Definition eines Protokoll Templates muss die erste Frage lauten:
Wann startet ein Telegramm und wann endet es?
Manchmal reicht eine Ende-Bedingung aus, z.B. bei einem Carriage Return
und/oder einem Linefeed, oder wenn ein Wechsel in der Datenrichtung auftrat.
Aber oftmals ist die reale Welt komplizierter. Denken Sie an binäre Protokolle
mit definierten Zeitpausen zwischen den einzelnen Telegrammen wie Modbus
RTU, Profibus oder ähnliche.
Der Protokollmonitor behandelt die komplette Auftrennung in der Funktion split
wie im folgenden gezeigt.
1
function s p l i t ( data , i n t e r v a l , a l t e r n a t i o n , s t r i n g , f i l t e r )
2
here are your s p l i t i n s t r u c t i o n s and t h e i r r e t u r n s t a t e s
3
r e t u r n STATE
4
end
Diese Funktion wird jedesmal aufgerufen wenn ein neues Datenbyte aufge-
nommen oder aus einer vorhandenen Aufzeichnung gelesen wird und muss
einen der folgenden Zustände zurückgeben:
1
STARTED
Ein neues Telegramm beginnt
2
MODIFIED
Das neue Byte ändert nichts außer die Telegrammlänge
3
COMPLETED
Das Telegram ist komplett
4
REMOVED
Entfernt das aktuelle Telegramm zu Filterzwecken
5
MARKED
Vormerken des aktuellen Bytes für späteren Telegrammstart
Es wird schnell klar, das die Auswertung nur des aktuellen Datenbytes nicht
ausreicht um einen gültigen Start oder das Ende eines Telegramms zu erken-
nen. Denken Sie an ein EOS (End Of String) bestehend aus mehr als einem
Zeichen. Oder: Ein Telegramm spezifiziert durch ein bestimmtes Start- UND
106