Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für...

291
Manual Version 4.6.8 www.iftools.com

Transcript of Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für...

Page 1: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

Manual

Version 4.6.8

www.iftools.com

Page 2: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf
Page 3: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

Inhaltsverzeichnis

1 Analyse von RS232 Verbindungen 11.1 Spezieller serieller Treiber . . . . . . . . . . . . . . . . . . . . . 21.2 Y-Kabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Y-Kabel mit gemeinsamer TxD und RxD Leitung . . . . . . . . 2X-Kabel mit getrennten TxD und RxD Leitungen . . . . . . . . 2

1.3 Abtastung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 MSB-RS232 Analyser 52.1 Vorteile einer Hardware Lösung . . . . . . . . . . . . . . . . . . 52.2 Innovatives Software Konzept . . . . . . . . . . . . . . . . . . . 62.3 Anwendungsgebiete . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Features & Benefits 9

4 Spezifikationen 11

5 Programm Installation 155.1 Installation unter Linux . . . . . . . . . . . . . . . . . . . . . . . 165.2 Manuelle Installation unter Linux . . . . . . . . . . . . . . . . . 165.3 Installation für alle Benutzer . . . . . . . . . . . . . . . . . . . . 175.4 Programm Updates . . . . . . . . . . . . . . . . . . . . . . . . . 17

6 Anschluß des Analysers 196.1 RS232 Signalbelegung . . . . . . . . . . . . . . . . . . . . . . . 196.2 RS232 Signalpegel . . . . . . . . . . . . . . . . . . . . . . . . . 206.3 Leuchtdioden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Grüne LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Rote LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6.4 Unterbrechungsfreier Anschluss des Analyser . . . . . . . . . . 22

7 Programm Start 237.1 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247.2 Anschlussart auswählen . . . . . . . . . . . . . . . . . . . . . . 247.3 Der erste Start . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Automatische Protokollermittlung . . . . . . . . . . . . . . . . . 25Manuelle Protokolleinstellung . . . . . . . . . . . . . . . . . . . 25Aufzeichnung starten/stoppen . . . . . . . . . . . . . . . . . . . 25

7.4 Display Anzeige . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Anzeige I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Anzeige II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Anzeige III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

7.5 Konfigurierung der Aufzeichnung . . . . . . . . . . . . . . . . . 27Verbindung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Signale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Aufnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Autospeichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

7.6 Die Analysetools . . . . . . . . . . . . . . . . . . . . . . . . . . 32

i

Page 4: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

INHALTSVERZEICHNIS

7.7 Ein Aufzeichnung speichern . . . . . . . . . . . . . . . . . . . . 337.8 Ein Sitzung als Projekt speichern . . . . . . . . . . . . . . . . . 337.9 Eine frühere Aufzeichnung öffnen . . . . . . . . . . . . . . . . . 347.10 Eine frühere Sitzung (Projekt) öffnen . . . . . . . . . . . . . . . 347.11 Zuletzt geöffnete Aufzeichnungen und Projekte . . . . . . . . . 347.12 Drag und Drop . . . . . . . . . . . . . . . . . . . . . . . . . . . 357.13 Anschluß mehrerer Analyser . . . . . . . . . . . . . . . . . . . 357.14 Automatisches Starten nach Rechner Reboot . . . . . . . . . . 36

Autostart aktivieren . . . . . . . . . . . . . . . . . . . . . . . . . 367.15 Kurzbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377.16 Allgemeine Programm Parameter . . . . . . . . . . . . . . . . . 377.17 Spezielle Programm Parameter . . . . . . . . . . . . . . . . . . 39

8 Das MultiView Konzept 418.1 Synchronisierung . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Folgen (Autoscroll) . . . . . . . . . . . . . . . . . . . . . . . . . 42Gesperrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Verschränkt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

8.2 Views (Ansichten) . . . . . . . . . . . . . . . . . . . . . . . . . 43Virtueller Ledtester . . . . . . . . . . . . . . . . . . . . . . . . . 43DataView - Datenmonitor . . . . . . . . . . . . . . . . . . . . . 43EventView - Ereignismonitor . . . . . . . . . . . . . . . . . . . . 44ProtocolView - Protokollmonitor . . . . . . . . . . . . . . . . . . 44SignalView - Signalmonitor . . . . . . . . . . . . . . . . . . . . 44Regionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

8.3 Views kopieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 448.4 Zustand der Views speichern . . . . . . . . . . . . . . . . . . . 44

9 Session Management 479.1 Projekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479.2 Projekte speichern/laden . . . . . . . . . . . . . . . . . . . . . . 489.3 Automatisches Speichern einer Sitzung . . . . . . . . . . . . . 49

10 Ein virtueller Ledtester 5110.1 Werkzeugleiste . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

11 Der Datenmonitor 5311.1 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Auswahl des Datenrichtung . . . . . . . . . . . . . . . . . . . . 55Synchronisierung der Ansicht . . . . . . . . . . . . . . . . . . . 55Fensterinhalt positionieren . . . . . . . . . . . . . . . . . . . . . 56

11.2 Bereich auswählen . . . . . . . . . . . . . . . . . . . . . . . . . 56Copy and Paste . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Datenauschnitt speichern . . . . . . . . . . . . . . . . . . . . . 57Exportieren der Daten . . . . . . . . . . . . . . . . . . . . . . . 57

11.3 Datenanzeige einstellen . . . . . . . . . . . . . . . . . . . . . . 58Spaltenanzahl und Datenformat . . . . . . . . . . . . . . . . . . 59Daten einfärben . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Schriftart ändern . . . . . . . . . . . . . . . . . . . . . . . . . . 60

11.4 Der Dateninspektor . . . . . . . . . . . . . . . . . . . . . . . . . 60

ii

Page 5: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

INHALTSVERZEICHNIS

11.5 Aufzeichnung durchsuchen . . . . . . . . . . . . . . . . . . . . 60Mustersuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Zeitabstände suchen . . . . . . . . . . . . . . . . . . . . . . . . 63Übertragungsfehler suchen . . . . . . . . . . . . . . . . . . . . 64

11.6 Integrierte Skriptsprache Lua . . . . . . . . . . . . . . . . . . . 6411.7 Das Watch Fenster . . . . . . . . . . . . . . . . . . . . . . . . . 64

Der Skript Editor . . . . . . . . . . . . . . . . . . . . . . . . . . 64Beispiel Skripts . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Einschränkungen . . . . . . . . . . . . . . . . . . . . . . . . . . 66

11.8 Die Werkzeugleiste . . . . . . . . . . . . . . . . . . . . . . . . . 6611.9 Kurzbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

12 Der Ereignismonitor 6912.1 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Jede Zeile ein Ereignis . . . . . . . . . . . . . . . . . . . . . . . 70Alle Ereignistypen auf einen Blick . . . . . . . . . . . . . . 70

12.2 Durch Ereignisliste navigieren . . . . . . . . . . . . . . . . . . 7112.3 Ereignissuche mit dem Levelfinder . . . . . . . . . . . . . . . . 71

Suchmuster eingeben . . . . . . . . . . . . . . . . . . . . . . . 72Formulierung eines Pegelzustandes . . . . . . . . . . . . 72Formulierung eines Datenfehlers . . . . . . . . . . . . . . 73Formulierung eines Datenwerts . . . . . . . . . . . . . . . 73

Sucheingabe und Suche . . . . . . . . . . . . . . . . . . . . . . 74Suche nach Signaländerungen . . . . . . . . . . . . . . . . . . 74Suchen mit Zeitvorgaben . . . . . . . . . . . . . . . . . . . . . 75

12.4 Eine Auswahl markieren und speichern . . . . . . . . . . . . . 76Eine Auswahl als Region speichern . . . . . . . . . . . . . . . . 76Eine Auswahl als CSV Datei exportieren . . . . . . . . . . . . . 76

12.5 Zeitabstände messen . . . . . . . . . . . . . . . . . . . . . . . 7912.6 Die Werkzeugleiste . . . . . . . . . . . . . . . . . . . . . . . . . 7912.7 Kurzbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

13 Der Protokollmonitor 8113.1 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8213.2 Protokoll Darstellung . . . . . . . . . . . . . . . . . . . . . . . . 84

Synchronisierung der Ansicht . . . . . . . . . . . . . . . . . . . 84Bereich auswählen . . . . . . . . . . . . . . . . . . . . . . . . . 85

13.3 Protokoll Templates . . . . . . . . . . . . . . . . . . . . . . . . . 85Eigene Templates definieren . . . . . . . . . . . . . . . . . . . . 85Vorhandenes Template modifizieren . . . . . . . . . . . . . . . 86Template Dateien und wo sie abgelegt werden . . . . . . . . . 86Der Template Dateimanager . . . . . . . . . . . . . . . . . . . . 87

13.4 Template Sprachsyntax . . . . . . . . . . . . . . . . . . . . . . 87Aufsplitten des Datenstroms in einzelne Telegramme . . . . . . 88Individuelle Darstellung der Telegramme . . . . . . . . . . . . . 95

13.5 Filterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Anzeigen und verbergen kompletter Telegramme . . . . . . . . 114Zwischen verschiedenen Telegramm Darstellungen wählen . . 117

13.6 Telegramm Export . . . . . . . . . . . . . . . . . . . . . . . . . 119Welche Daten werden exportiert? . . . . . . . . . . . . . . . . . 119

iii

Page 6: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

INHALTSVERZEICHNIS

Der Exportdialog . . . . . . . . . . . . . . . . . . . . . . . . . . 120Export als CSV Datei . . . . . . . . . . . . . . . . . . . . . . . . 121Export als HTML . . . . . . . . . . . . . . . . . . . . . . . . . . 121Export als Text . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Export als Latex . . . . . . . . . . . . . . . . . . . . . . . . . . 121Ein paar besondere Hinweise zur Feld- oder Boxbezeichnung . 122

13.7 Protokollmonitor spezifische Lua Erweiterungen . . . . . . . . . 123Das base16 Modul . . . . . . . . . . . . . . . . . . . . . . . . . 124Die bunpack Funktion . . . . . . . . . . . . . . . . . . . . . . . 125Das box Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Das cfg Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128Das checksum Modul . . . . . . . . . . . . . . . . . . . . . . . 129Das datetime Modul . . . . . . . . . . . . . . . . . . . . . . . . 132Das debug Modul . . . . . . . . . . . . . . . . . . . . . . . . . . 133Das event Modul . . . . . . . . . . . . . . . . . . . . . . . . . . 136Das linestates Modul . . . . . . . . . . . . . . . . . . . . . . . . 139Das protocol Modul . . . . . . . . . . . . . . . . . . . . . . . . . 141Das record Modul . . . . . . . . . . . . . . . . . . . . . . . . . . 143Das shared module . . . . . . . . . . . . . . . . . . . . . . . . . 144Die string dump Erweiterung . . . . . . . . . . . . . . . . . . . 146Der telegram Typ . . . . . . . . . . . . . . . . . . . . . . . . . . 147Das telegrams Modul . . . . . . . . . . . . . . . . . . . . . . . . 152

13.8 Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Anzeige zusätzlicher Telegramminformationen . . . . . . . . . 154Änderung der Schriftart . . . . . . . . . . . . . . . . . . . . . . 155Eine andere Hintergrundfarbe . . . . . . . . . . . . . . . . . . . 155Lua Kompatibilität . . . . . . . . . . . . . . . . . . . . . . . . . . 155

13.9 Die Werkzeugleiste . . . . . . . . . . . . . . . . . . . . . . . . . 15513.10 Kurzbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15713.11 Obsolete Funktionen und Module . . . . . . . . . . . . . . . . . 15713.12 Lua Referenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

14 Der Signalmonitor 16114.1 Die Signaldarstellung . . . . . . . . . . . . . . . . . . . . . . . . 16214.2 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

Navigation mit dem Mausrad . . . . . . . . . . . . . . . . . . . 164Verschieben mit dem Hand-Werkzeug . . . . . . . . . . . . . . 164

14.3 Die Zeitbasis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16414.4 Undo und Redo . . . . . . . . . . . . . . . . . . . . . . . . . . . 16514.5 Einstelldialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

Signaldarstellung . . . . . . . . . . . . . . . . . . . . . . . . . . 165Signalinvertierung . . . . . . . . . . . . . . . . . . . . . . 166Signalreihenfolge . . . . . . . . . . . . . . . . . . . . . . . 166Dateneinblendung . . . . . . . . . . . . . . . . . . . . . . 166

Grafikeffekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16614.6 Cursor Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Auswahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168Regionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

14.7 Datenrahmen mit Rahmenlineal ausmessen . . . . . . . . . . . 168Rahmenlineal anpassen . . . . . . . . . . . . . . . . . . . . . . 170

iv

Page 7: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

INHALTSVERZEICHNIS

14.8 Synchronisierung . . . . . . . . . . . . . . . . . . . . . . . . . . 17014.9 Die Werkzeugleiste . . . . . . . . . . . . . . . . . . . . . . . . . 17114.10 Kurzbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

15 Regionen 17315.1 Region ein/ausschalten . . . . . . . . . . . . . . . . . . . . . . 17415.2 Eine Region löschen . . . . . . . . . . . . . . . . . . . . . . . . 17415.3 Namensgebung für Regionen . . . . . . . . . . . . . . . . . . . 17415.4 Regionen anspringen . . . . . . . . . . . . . . . . . . . . . . . 174

16 Schnelleinstieg in Lua 17716.1 Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17716.2 Lua und der Datenmonitor . . . . . . . . . . . . . . . . . . . . . 17816.3 Sequenzen im Datenmonitor markieren . . . . . . . . . . . . . 179

17 Einleitung in Lua 18117.1 Groß-/Kleinschreibung in Lua . . . . . . . . . . . . . . . . . . . 18117.2 Leerzeichen und Zeilenende . . . . . . . . . . . . . . . . . . . . 18117.3 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18217.4 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183Boolesche Konstanten . . . . . . . . . . . . . . . . . . . . . . . 183Zeichenketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184nil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

17.5 Bezeichner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18617.6 Schlüsselworte . . . . . . . . . . . . . . . . . . . . . . . . . . . 18717.7 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

Zuweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187Globale und lokale Variablen . . . . . . . . . . . . . . . . . . . 188

17.8 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Arithmetische Operatoren . . . . . . . . . . . . . . . . . . . . . 188Vergleichsoperatoren . . . . . . . . . . . . . . . . . . . . . . . . 189Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . 189String Verkettungs-Operator . . . . . . . . . . . . . . . . . . . . 189Der Längen-Operator . . . . . . . . . . . . . . . . . . . . . . . . 189Rangfolge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

17.9 Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . 190if then else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191Numerisches for . . . . . . . . . . . . . . . . . . . . . . . . . . 191break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

17.10 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Funktionsaufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Funktionsdefinition . . . . . . . . . . . . . . . . . . . . . . . . . 192

17.11 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Standard Module . . . . . . . . . . . . . . . . . . . . . . . . . . 193Analyser Module . . . . . . . . . . . . . . . . . . . . . . . . . . 193

v

Page 8: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

INHALTSVERZEICHNIS

Bit Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Data View Modul . . . . . . . . . . . . . . . . . . . . . . . 195Record Module . . . . . . . . . . . . . . . . . . . . . . . . 196

17.12 Analyser specifische Datentypen . . . . . . . . . . . . . . . . . 19617.13 Einschränkungen . . . . . . . . . . . . . . . . . . . . . . . . . . 19717.14 Weitergehende Information . . . . . . . . . . . . . . . . . . . . 197

18 Der Schalteditor 19918.1 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19918.2 Signale schalten und mehr . . . . . . . . . . . . . . . . . . . . 20018.3 Eingabemodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20118.4 Editiermodus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

Einfügen eines neuen Schaltelements . . . . . . . . . . . . . . 201Schaltelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Elemente auswählen . . . . . . . . . . . . . . . . . . . . . . . . 203Löschen von Elementen/Verbindungen . . . . . . . . . . . . . . 203Horizontales Umkehren von Elementen . . . . . . . . . . . . . 203Eingabe von Text . . . . . . . . . . . . . . . . . . . . . . . . . . 203Begrenzte Resourcen . . . . . . . . . . . . . . . . . . . . . . . 204Undo/Redo Mechanismus . . . . . . . . . . . . . . . . . . . . . 204

18.5 Verbindungsmodus . . . . . . . . . . . . . . . . . . . . . . . . . 204Verbindungsregeln . . . . . . . . . . . . . . . . . . . . . . . . . 205Eine Verbindung eingeben . . . . . . . . . . . . . . . . . . . . . 205Verzweigungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 206Eine Verbindung verschieben . . . . . . . . . . . . . . . . . . . 206Verbindungen löschen . . . . . . . . . . . . . . . . . . . . . . . 206

18.6 Ausführmodus . . . . . . . . . . . . . . . . . . . . . . . . . . . 207Schaltfehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

18.7 Ein/Ausgangselemente an Port A und B . . . . . . . . . . . . . 20718.8 Beliebige Daten einspeisen . . . . . . . . . . . . . . . . . . . . 20818.9 Datenaufzeichnung . . . . . . . . . . . . . . . . . . . . . . . . . 20918.10 Pegelabgriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21018.11 Voreinstellung wieder herstellen . . . . . . . . . . . . . . . . . . 21118.12 Schaltpläne laden und speichern . . . . . . . . . . . . . . . . . 21118.13 Lizensierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

Eine Lizenz erwerben . . . . . . . . . . . . . . . . . . . . . . . 21218.14 Die Werkzeugleiste . . . . . . . . . . . . . . . . . . . . . . . . . 21218.15 Kurzbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

19 Zwei Verbindungen aufzeichnen 21519.1 Technische Voraussetzungen . . . . . . . . . . . . . . . . . . . 21519.2 Master Slave Betrieb . . . . . . . . . . . . . . . . . . . . . . . . 21619.3 Einrichten einer synchronen Aufzeichnung . . . . . . . . . . . . 21719.4 Auswertung/Analyse einer synchronen Aufzeichnung . . . . . . 21819.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . 219

Synchrones Aufzeichnen . . . . . . . . . . . . . . . . . . . . . . 220Synchrones Auswerten/Analysieren . . . . . . . . . . . . . . . 220

vi

Page 9: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

INHALTSVERZEICHNIS

20 Kommandozeilen API 22120.1 Beliebige Verarbeitungsketten mittels Pipes . . . . . . . . . . . 222

Datenquellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Manipulatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Datensenken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Ein paar Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . 223

20.2 Aufzeichnen mit msb_record . . . . . . . . . . . . . . . . . . . 223Verbindungsparameter und Ereignisse . . . . . . . . . . . . . . 224Einbindung in eigene Applikationen . . . . . . . . . . . . . . . . 225Remote Kommandos . . . . . . . . . . . . . . . . . . . . . . . . 225Synchrones Aufzeichnen mit zwei oder mehreren Analyser . . 226Eine synchrone Aufzeichnung fernsteuern . . . . . . . . . . . . 227msb_record Programm Parameter . . . . . . . . . . . . . . . . 229

20.3 Formatierte Ausgabe mit msb_format . . . . . . . . . . . . . . . 231Ausgabe mit beliebigen Zeichen . . . . . . . . . . . . . . . . . 233Ausgabe in Datei . . . . . . . . . . . . . . . . . . . . . . . . . . 233Format Parameter . . . . . . . . . . . . . . . . . . . . . . . . . 233Benutzerdefinierte Datumausgabe . . . . . . . . . . . . . . . . 236msb_format Programm Parameter . . . . . . . . . . . . . . . . 238

20.4 Datenausgabe filtern mit msb_filter . . . . . . . . . . . . . . . . 239Daten filtern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Bestimmte Leitungsereignisse herausfiltern . . . . . . . . . . . 240Einen Aufzeichnungsabschnitt filtern . . . . . . . . . . . . . . . 240msb_filter Programm Parameter . . . . . . . . . . . . . . . . . . 241

20.5 Aufzeichnungen splitten mit msb_split . . . . . . . . . . . . . . 242Bestehende Rekorddatei splitten . . . . . . . . . . . . . . . . . 242Laufende Aufzeichnung von msb_record splitten . . . . . . . 243msb_split Programm Parameter . . . . . . . . . . . . . . . . . . 244

20.6 Eine Aufzeichnung triggern mit msb_trigger . . . . . . . . . . . 245Eine Trigger Bedingung definieren . . . . . . . . . . . . . . . . 245Pre und Post Trigger . . . . . . . . . . . . . . . . . . . . . . . . 247Trigger Ausschnitt aus Aufzeichnung extrahieren . . . . . . . . 248Eine Aufzeichnung nach bestimmten Ereignissen durchsuchen 248Ein Skript zur Triggerung und Suche . . . . . . . . . . . . . . . 250Mehrfaches Triggern . . . . . . . . . . . . . . . . . . . . . . . . 251

20.7 msb_trigger spezifische Lua Erweiterungen . . . . . . . . . . . 253msb_trigger Programm Parameter . . . . . . . . . . . . . . . . 254

20.8 Eine Konfigurationsdatei für alle . . . . . . . . . . . . . . . . . . 255

A ASCII Zeichensatz 257

B Baudratemessung 259

C Farben 261C.1 RGB Wert kurze Form . . . . . . . . . . . . . . . . . . . . . . . 261C.2 RGB Wert lange Form . . . . . . . . . . . . . . . . . . . . . . . 261C.3 Vordefinierte Farbnamen . . . . . . . . . . . . . . . . . . . . . . 261

Grey colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262Basic colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262Extended colors . . . . . . . . . . . . . . . . . . . . . . . . . . 262

vii

Page 10: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

INHALTSVERZEICHNIS

D Unterbrechungsfreie Analyse mit W232-Kabel 265

E Windows Trouble-Shooting 267E.1 Analyser wird nicht erkannt (Teil I) . . . . . . . . . . . . . . . . 267E.2 Analyser wird nicht erkannt (Teil II) . . . . . . . . . . . . . . . . 268E.3 Analyser arbeitet nicht wie erwartet . . . . . . . . . . . . . . . . 268E.4 Unbekannte Probleme . . . . . . . . . . . . . . . . . . . . . . . 269

F Linux Trouble-Shooting 271F.1 Analyser wird nicht erkannt (Teil I) . . . . . . . . . . . . . . . . 271F.2 Analyser wird nicht erkannt (Teil II) . . . . . . . . . . . . . . . . 271F.3 Analyser wird nicht erkannt (Teil III) . . . . . . . . . . . . . . . . 272F.4 Aufnahme funktioniert nicht . . . . . . . . . . . . . . . . . . . . 273F.5 Segmentation Fehler während Installation . . . . . . . . . . . . 274F.6 Das Menü Hilfe→Inhalt F1 funktioniert nicht . . . . . . . . . . . 274F.7 Programm läuft nicht unter einem 64 bit Linux (Part I) . . . . . . 274F.8 Programm läuft nicht unter einem 64 bit Linux (Part II) . . . . . 275F.9 Unbekannte Probleme . . . . . . . . . . . . . . . . . . . . . . . 275

viii

Page 11: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

1Analyse von RS232 Verbindungen

Es gibt eine Reihe von technischen Varianten zur Untersuchungvon RS232 Datenübertragungen. Nicht alle jedoch sind für jedesProblem gleich geeignet und liefern teilweise sogar falscheResultate.

Nach wie vor stellt die Verwendung einer RS232 Schnittstelle eine der ein-fachsten Möglichkeiten zur Verbindung / Kommunikation zweier Geräte bzw.zwischen einem PC und einem externen Gerät dar.Die RS232 Schnittstelle ist die meist verwendete Schnittstelle in der Meß- undRegeltechnik. Obwohl mit Einführung des USB Busses eine wesentlich schnel-lere Alternative vorhanden ist, die zusätzlich als echtes Bussystem den gleich-zeitigen Anschluß vieler Geräte erlaubt, hat die RS232 Schnittstelle nicht anAttraktivität verloren. Sie wird von fast allen Mikrokontrollern unterstützt, isteinfach zu implementieren, erlaubt größere Kabellängen und ist unempfindlichgegen Kurzschlüsse und Störungen. Nach wie vor verwenden sehr viele Rou-ter, Computer und Geräte der Telekommunikation und Konsumer Elektronik dieRS232 Schnittstelle als Konsolen Zugang oder zum Update ihrer Firmware.

War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf RS232Umsetzer vorhanden, wobei die 100%tige ’Kompatibilität’ zwischen den USBUmsetzern und echten RS232 Schnittstellen nicht immer gegeben ist.

Solange die RS232 Schnittstelle existiert, werden allerdings typische RS232Probleme wie nicht übereinstimmende Baudraten, Angaben zu Parity, Daten-länge und Anzahl der Stopbits, weiterhin zum ’Tagesgeschäft’ serieller RS232Verbindungen gehören. Darüber hinaus aber auch nicht oder nur teilweisefunktionierende USB auf RS232 Umsetzer, plötzliche Verbindungsabbrücheund andere typische Kommunikationsschwierigkeiten, die nur durch genaueAnalyse der Verbindung eingeordnet und beseitigt werden können.

Zur Analyse einer RS232 Verbindung existieren mehrere Verfahren:

1 Aufzeichnung der Daten durch den seriellen Treiber des PC’s

2 Verwendung eines Y-Kabel oder X-Kabels

3 Abtastung der Leitungen durch spezielle Hardware

1

Page 12: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 1. ANALYSE VON RS232 VERBINDUNGEN

1.1 Spezieller serieller TreiberIst einer der Kommunikationspartner ein PC, kann durch Installation eines ent-sprechenden Treibers jedes empfangene bzw. gesendete Datenbyte mit proto-kolliert werden. Dieses Verfahren erlaubt allerdings nur das Protokollieren derdurch den ’seriellen Treiber’ des Betriebssystems verarbeiteten Bytes.Durch Pufferüberläufe (der Standard Schnittstellenbaustein UART des PC’s be-sitzt einen internen Puffer von gerade mal 16 Bytes) verloren gegangene Da-ten werden nicht erkannt. Eine genaue Zeitangabe der übertragenen Bytes istMögliche Datenverluste

durch Überlauf des 16Byte großen FIFO Daten-puffers im PC UART.

ebenfalls nicht möglich, da ein- und ausgehende Datenbytes zwar per ’Inter-rupt’ signalisiert werden, die eigentliche Bearbeitung aber vom Betriebssystemzu einem nicht genau vorhersagbaren ’späteren’ Zeitpunkt erfolgt.Daher sind die Zeitangaben solcher ’Sniffer’ Programme, oftmals sogar im Mil-lisekunden Bereich, mit Vorsicht zu genießen. Sie entsprechen eher dem Zeit-punkt, wann die Bearbeitung des ein/ausgehenden Zeichens seitens des Be-triebssystems erfolgte, und nicht dem Zeitpunkt, wann das Zeichen wirklichphysikalisch auf der Leitung präsent war.

1.2 Y-KabelHier existieren zwei Varianten. Wahlweise werden die Sende- und Empfangs-leitungen entweder über eine Diode mit der Empfangsleitung eines dritten An-schlusses verbunden, oder die Sende- und Empfangsleitung jeweils getrenntmit einem zusätzlichen Anschluß verbunden.

Y-Kabel mit gemeinsamer TxD und RxD LeitungDiese Variante erlaubt das Mitprotokollieren aller übertragenen Datenbytes(auch von zwei nicht PC Geräten) mit einem PC und entsprechender Softwarewie z.B. Hyperterm. Der Nachteil: Da beide Leitungen zusammengelegt wur-den, kann nicht zwischen gesendeten und empfangenen Daten unterschiedenwerden.

X-Kabel mit getrennten TxD und RxD LeitungenDie Sende- und Empfangsleitungen werden getrennt aufgezeichnet. Allerdingserfordert diese Variante zwei freie serielle Anschlüsse des analysierenden PC’ssowie spezielle serieller Treiber, da die getrennt empfangenen Datenbytes miteiner Zeitmarke oder eindeutigen Nummer versehen werden müssen, um siemiteinander synchronisieren zu können. Die Datenrichtung wird hier zwar kor-rekt erkannt, allerdings kann aus oben genannten Gründen nicht eindeutig be-stimmt werden, in welcher Reihenfolge Sende- und Empfangsdaten vorliegen.Letztendlich wurde diese Möglichkeit deshalb hauptsächlich unter MS-DOSverwendet, da dieses Betriebssystem (auf Grund seiner Einfachheit) eine di-rekte Echtzeitbearbeitung des UART erlaubt.

1.3 AbtastungDieses Verfahren erfordert eine zusätzliche Hardware, die alle Signalleitungensimultan abtastet und entsprechend aufarbeitet.Der Vorteil: Da die Abtastung und Auswertung unabhängig von den ange-schlossenen Geräten erfolgt, können auch Zustände wie falsche Baudraten,

2

Page 13: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

1.3. ABTASTUNG

falsche Protokolle, ungültige Pegel etc. eindeutig erkannt und protokolliert wer-den.Darüber hinaus erlaubt nur die Abtastung der Signalleitungen eine genaue zeit-liche Erfassung der Daten- und Kontrollleitungen wie RTS, CTS, DTR, DTSusw. Damit sind selbst ’jitternde’ oder leicht abweichende Baudraten erkenn-bar.Abtastende Analysatoren vereinigen die Vorzüge eines Protokollanalysers mitden Eigenschaften eines Digitalscopes und bieten neben der Protokollierungdes Datentransfers auch die physikalische Darstellung der Leitungspegel.

3

Page 14: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 1. ANALYSE VON RS232 VERBINDUNGEN

4

Page 15: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

2MSB-RS232 Analyser

Der MSB-RS232 Analyzer ist ein unverzichtbares Werkzeug zurAnalyse und Optimierung von RS232 Verbindungen. Alseigenständiges Gerät liefert es Mikrosekunden genaue Datenüber jede Leitungsänderung - unabhängig von PC undBetriebssystem.Ausgestattet mit einer Vielzahl von Visualisierungs-Tools erlaubtes einen detailierten Blick in jede RS232 Kommunikation underkennt Zustände, die nur einer echten ’Hardware Lösung’vorbehalten sind.

Der Analyser MSB-RS232 tastet alle 8 Signalleitungen simultan mit einer Abta-strate von maximal 16 MHz ab. Dabei werden alle ’Ereignisse’, sprich Pegel-wechsel, mit einer Mikrosekunden genauen Zeitmarke versehen. Dies gilt auchfür die Pegelwechsel der Datenleitungen RxD und TxD.

Max. 16MHz Abtastungsorgt für zeitlich klareVerhältnisse und µsec

genaue Zeitmarken

Als Ereignisse gelten alle Änderungen der Leitungspegel, d.h. Wechsel von 0(space) auf 1 (mark) oder von einem ungültigen zu einem logischen Pegel.Die aufgezeichneten Daten werden per USB an den PC übertragen, wobei ein500 KByte großer Cache als Zwischenpuffer dient.Die Aufzeichnung ist zeitlich nicht beschränkt. 64 Bit große Datentypen für dieµs genaue Zeitmarken garantieren auch in dieser Auflösung eine quasi beliebiglange Aufzeichnung (wenn man 500000 Jahre als beliebig lang definiert). D.h.die Aufzeichnung ist nur von der max. erlaubten Dateigröße abhängig.

2.1 Vorteile einer Hardware LösungDer MSB-RS232 Analyzer bietet die Fähigkeiten eines Logik-Analysers verbun-den mit einem sehr günstigen Preis. Dabei werden die Nachteile reiner Soft-ware Lösungen durch die direkte Verarbeitung der Signaländerungen in einerunabhängigen Hardware vermieden.Auf reiner Software basierende Lösungen sind abhängig von den nicht gleich-mäßigen Reaktions- und Bearbeitungszeiten des Betriebssystems von Inter-rupt Anforderungen. Die Verwendung von RS232 zu USB Umsetzern fügt nochdie Verzögerungen des USB Subsystems hinzu. Zudem sind die Hardware Ein-gangsfifos der PCs i.a. auf 16 Zeichen und eine max. Baudrate von 115200Baud begrenzt. Ist die Interruptbearbeitung zu langsam, gehen durch den Über-lauf der Empfangspuffer Zeichen verloren. Und auch RS232 auf USB Konverter

5

Page 16: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 2. MSB-RS232 ANALYSER

haben i.a. keinen viel größeren Datenspeicher.Die resultierenden Zeitmarken sind die Zeiten der Interrupt Bearbeitung desBetriebssystems, aber nicht die wirklich Zeiten der auftretenden Ereignisse.Besonders, wenn nur ein Eingang verwendet wird, um RxD und TxD zu unter-suchen (Y-Kabel), können sie nicht sicher sein, die wirkliche Reihenfolge derübertragenen Daten an Rxd und Txd zu sehen.Und selbst bei Verwendung von zwei Eingängen zur Aufzeichnung (X-Kabel)gibt es keine Informationen über die korrekten Zeitbeziehungen der Kanäle un-d/oder Signale.Der MSB-RS232 Analyser und reine Software Lösungen im Vergleich:

Eigenschaften MSB-RS232 SoftwareLösung

Erkennt ungültige Pegel (tristate Pegel) ja nein

Beliebige Baudraten (1 Baud ... 1 MBaud ) ja nein

Echte Zeitstempel ja nein

Darstellung der Pegelwechsel von TxD und RxD ja nein

Automatische Baudrate und Protokoll Erkennung ja nein

Datenübertragungen mit 9 Bit Datenwortlänge ja nein

Korrekte Zeitbeziehungen zwischen Daten- undKontroll Leitungen

ja nein

Erkennt Baudrate Jitter und falsche Bitzeiten ja nein

Umverdrahten und invertieren von Signalen ja nein

Schalten und Manipulieren von Leitungen ja bedingt1

1 Wenn der PC aktiver Teil der Verbindung ist. Und nur Modem Kontroll Leitungen.

2.2 Innovatives Software KonzeptBereits während der Aufzeichnung können beliebige Ausschnitte des Daten-transfers untersucht werden. Dies schließt sowohl die physikalische Darstel-lung des Signals (Scopedarstellung) in unterschiedlichen zeitlichen Auflösun-gen also auch die Anzeige der übertragenen Datenbytes ein.

Neben der reinen Abtastung ist der MSB-RS232 Analyser zusätzlich in der Lage,die einzelnen Leitungen während des Betriebes zu ’verschalten’ (Schaltoption).Damit lassen sich z.B. RTS/CTS Protokolle testen bzw. simulieren oder einzel-ne Leitungen unterbrechen, bzw. auf einen definierten Pegel legen.

Die Software des MSB-RS232 ist modular aufgebaut. Während das Kontrollpro-gramm die Aufzeichnung kontrolliert, können die übertragenen Daten/Signaledurch beliebig viele ’Analysefenster’ zu unterschiedlichen Zeitpunkten unter-sucht und analysiert werden.

6

Page 17: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

2.3. ANWENDUNGSGEBIETE

So kann z.B. das physikalische Signal der TxD Leitung zum aktuellen Zeitpunktverfolgt und gleichzeitig ein früherer Ausschnitt in einer höheren Auflösung be-trachtet werden. Dies gilt im übrigen für alle Analysefenster und erlaubt damitauch den Vergleich übertragener Daten zu unterschiedlichen Zeitpunkten.

Umfangreiche Suchalgorithmen gestatten die gezielte Suche nach bestimmtenDatensequenzen, wobei durch ’reguläre Ausdrücke’ auch komplexe Suchan-fragen wie:Alle Sequenzen, die mit einem ’A’ beginnen und mit einem ’Z’ enden möglichsind. Darüber hinaus kann auch nach bestimmten Pegeln oder Pegelwechselgesucht werden. Der MSB-RS232 Analyser wird über den per USB verbunde-nen PC versorgt und ist bei Verwendung eines Laptops oder Notebooks auchfür den mobilen Einsatz geeignet.Analyser und Software sind für Microsoft Windows Systeme und Linux verfüg-

MultiPlatform SupportVersionen für Windows

und Linux

bar.

2.3 AnwendungsgebieteDer Analysator MSB-RS232 findet seine Verwendung bei der Analyse von Da-tenverbindungen mit RS232 Signalen. Nicht nur die reine Datenübertragungauf der Sende und Empfangsleitung kann überwacht werden, sondern auch al-le 8 dazugehörenden Signal und Datenleitungen. Die hohe zeitliche Auflösungvon einer Microsekunde erlaubt eine genaue Timing Analyse der Kommunika-tion, sowie detailierte Aussagen über Reaktionszeiten in RS232 Protokollen.Durch die aktive Abtastung aller Leitungen können auch nicht angeschlosseneSignale bzw. Signale ohne ausreichenden Pegel festgestellt werden. Oder Si-gnale, die auf der Sendeseite in einen Power down Modus geschaltet wurden.Damit lassen sich auch Hardware Protokolle leicht überprüfen.Typische Anwendungsgebiete sind:

Barcode Lesegeräte

Registrier/Computer Kassen

Karten-Lesegeräte

Unterhaltungsgeräte mit RS232 Schnittstelle

Kontroll- und Messgeräte (Oszilloskope, Sensoren, ...)

Maschinensteuerung/Automatisierungstechnik

Embedded Devices

7

Page 18: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 2. MSB-RS232 ANALYSER

8

Page 19: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

3Features & Benefits

Der MSB-RS232 Analyzer bietet alle nötigen Eigenschaften für eineeffektive Untersuchung von asynchronen EIA-232 Verbindungen.Insbesondere für Debugging, Tests und ’Reverse Engineering’.

Simultane Erfassung aller Leitungen durch externe Hardware : ExakteMessung des Zeitverhaltens aller EIA-232 Signale mit einer Genauigkeit von1µsec durch maximale Abtastung mit 16 MHz unabhängig vom Betriebssys-tem. Keine Verfälschung von Zeitpunkt und Reihenfolge durch verschleppteoder nicht bearbeitete System Interrupts (Software Lösungen).Beliebige Baudraten mit FLEXUART: Hochpräzises Setzen und Messen auchnicht standardisierter Baudraten im Bereich von 1Baud bis 1 MBaud mit 0.1%Genauigkeit. Aufzeichnung, Analyse und eigene Dateneinspeisung mit belie-bigen auch unüblichen Baudraten. Detektion von nicht synchronen oder drif-tenden Baudraten zwischen Sender und Empfänger.Automatische Protokoll Erkennung : Einfache Kontrolle oder Analyse derDatenverbindung bei unbekannten Verbindungsparametern.Unterstützt 9 Bit Datenlänge : Aufzeichnung und Analyse auch von Daten-protokollen mit 9 Bit Datenwortlänge.Scope ähnliche Darstellung der Datenleitungen: Gleichzeitige Anzeige so-wohl der logischen Signalpegel als auch der übertragenen Daten. Dadurchleichte Fehleranalyse bei Übertragungsfehlern, z.B. ungenauen Bitraten (Jit-tern) oder falschen Datenformate. Ausmessen der realen Signale mit integrier-tem Baudrate Lineal.Protokoll Templates : Definieren Sie eigene Regeln wie Ihre Daten dargestelltwerden sollen und visualisieren Sie beliebige Protokolle.Datenanalyse in Echtzeit : Untersuchung der Verbindung bereits während derAufzeichnung.Detektion ungültiger Leitungspegel : Erkennen von offenen Leitungen, StandbyZuständen der Datentreiber und Kurzschlüssen.Framing, Parity, Break Erkennung : Direkte Analyse der Fehlerbedingungenund der Reaktionen der Endgeräte darauf.Integrierter Schalteditor : Erweitert den Analysator um die Fähigkeit interaktivSignale zu verändern. Leitungspegel können umgeschaltet, umverdrahtet undDaten in beliebige Leitungen eingespeist werden (inkl. Simulation von Framingbzw. Parity Fehlern).

9

Page 20: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 3. FEATURES & BENEFITS

Mustersuche mit regulären Ausdrücken : Ermöglicht die Suche nach belie-bigen Datensequenzen mit ’wild card’ Zeichen (Platzhalter) sowie nach Zeitab-ständen und Pausen zwischen Zeichen(ketten).Integrierter LevelFinder : Findet beliebige statischen Pegel, Pegelwechselsowie Fehlerzuständen. Kombiniert mit dem Auftreten bestimmter Datenbytesist es ein wertvolles Werkzeug zur Analyze von Hardware Protokollen.Skriptsprache Lua: Zur Definition, Visualisierung, Verrechnung (ChecksumTest) sowie Umwandlung der aufgenommenen Daten.MultiViewKonzept : Simultane Analyse der Aufzeichnung an verschiedenenPositionen und mit unterschiedlichen Ansichten. Z.B. übertragene Daten undihr physikalischer Signalpegel oder um verschiedene Ausschnitte zu vergleich-en.Copy And Paste : Einfaches Kopieren von aufgezeichneten Protokollen oderDatensequenzen in andere Anwendungen.Datenexport als CSV: Bearbeitung der aufgezeichneten Daten in MicrosoftExcel oder anderen Tabellenkalkulations Programmen.Direkte Anzeige des Datenstroms durch grüne LEDs : Zusätzliche Kontrolledes Datenaufkommens, schnelle Kontrolle auf korrekte Datenverbindung.Zukunftssicher durch moderne FPGA Technik : Integrierte Gate Array Tech-nologie des neuesten Stands ermöglicht eine permanente Weiterentwicklungund Anpassung des Analysers an die verschiedensten Applikationen. Die Ak-tualisierung der Firmware erfolgt dabei einfach beim Starten der Software.Logikmodus : Jeder RS232 Eingang kann als logischer Eingang mit einemTriggerpegel von 1.3V, 5kOhm geschaltet werden um auch �nicht RS232�kompatible Logiksignale verarbeiten zu können.Mikrosekunden genaue Synchronisation zwei Analyser : Durch die einge-baute Link Buchse ist die zeitgleiche Datenaufzeichnung zweier unterschiedli-cher RS232/RS422/485 Verbindungen möglich.Multiplattform Support : Die MSB-RS232 Software wird als ’Native Binary’ fürMicrosoft Windows R©und Linux geliefert. Keine Emulation, keine zusätzlichenBibliotheken oder Installationen wie .NET R©oder Java R©.MultiLanguage Support : Deutsche und englische Sprachunterstützung. DieAuswahl erfolgt automatisch entsprechend den OS Vorgaben, kann aber auchvorgegeben werden.Multi-Process Architektur : Aufteilung der verschiedenen Funktionen in un-terschiedliche Programme/Prozesse garantiert größte Datensicherheit währendder Aufzeichnung und bestmögliche Anpassung (Skalierung) an die SystemResourcen.Kompaktes Gehäuse mit USB Anschluß : Kein zusätzliches Netzteil nötig.Mobiler Einsatz auch mit Laptop.

10

Page 21: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

4Spezifikationen

AllgemeinRS232 Protokoll Analysator zur Aufnahme und Analyse der RS232 LeitungenTXD, RXD, CTS, RTS, DTR, DSR, DCD, RI durch paralleles Abtasten mit maxi-mal 16 MHz. Exakte Messung des Zeitverhaltens aller RS232 Signale mit einerGenauigkeit von 1µs.Dekodierung und Eingabe serieller Daten RxD und TxD mit beliebiger Baudra-te im Bereich 1 Baud bis 1 MBaud.Automatisches Erkennen der Baudrate und des Protokolls.

RS232 MessungBeliebige Baudraten mit FlexUartHochpräzises Setzen und Messen auch nicht standardisierter Baudraten imBereich von 1 Baud bis 1 MBaud mit 0.1% Genauigkeit.

DatenformateParameter für RXD,TXD: 5 bis 9 Datenbits; Parität aus, gerade, ungerade, fest0, fest 1

Logischer LeitungsstatusLogischer Pegel 1 (V-), 0 (V+), ungültig (-1.3V <In <+1.3V)

ZeitauflösungAlle Leitungsänderungen werden per Hardware exakt mit 1µs erfasst - unab-hängig vom Betriebssystem.

RS232 AnschlüsseSignalpegelStandard RS232 Pegel ±3V zu ±15 V, ESD geschützte Eingänge 5kOhm

Stecker/BuchsenStandard D-Sub 9pin Anschlüsse, Stecker und Buchse.

Intere BeschaltungAlle Anschlüsse von A und B sind durch High Speed Treiber verbunden undseparat schaltbar.

LogikmodusJeder RS232 Eingang kann als logischer Eingang mit einem Triggerpegel von1.3V, 5kOhm geschaltet werden.

11

Page 22: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 4. SPEZIFIKATIONEN

Zusätzliche FeaturesCacheInterner Memory Cache von 512kB zur Pufferung der Messdaten bei Aufzeich-nung hoher TransferratenStatus LEDsLEDs zur Anzeige von: rot: Aufnahmestatus, Puffer Auslastung grün: RXD undTXD Datenfluß

StromversorgungDie Stromversorgung erfolgt direkt über das USB Kabel, Aufnahme ca. 200mA(USB GND entspricht RS232 GND).Kein externes Netzteil nötig.

Unterstützte OSWindowsWindows 2000, Windows XP, Vista, Windows 7 (32 und 64 Bit)LinuxAlle Linuxe mit Kernel ab 2.4.18 und installierten Gtk2 Bibliotheken (sind Stan-dard). (Im Zweifelsfalle können Sie einfach die Linux Version von unserer Dow-nload Seite testen). 32 und 64 Bit Systeme.

AbmessungenAbmessungen100mm x 50mm x 25mm (Länge, Breite, Höhe)Gewichtca. 100g

LieferumfangAnalyzerMSB-RS232 Analyzer Gerät.KabelRS232 Kabel, 2m, 1:1, 9Pol DSub-Anschlüsse Stecker/Buchse. USB Kabel.SoftwareCD für Windows und Linux, Anleitung als Online Hilfe und PDF Dokument indeutsch und englisch.

VoraussetzungenGrafikdisplayGrafikkarte und Monitor mit 1024x768 Auflösung und 16 Bit Farbtiefe oder bes-ser.Festplattenplatz100 MByte freier Festplattenplatz für die Software Installation plus zusätzlicherPlatz für die Aufnahmedateien.Speicher (RAM)256 MByte oder mehr

12

Page 23: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

USB AnschlussEin freier USB 1.1 oder 2.0 Anschluss (full speed).

13

Page 24: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 4. SPEZIFIKATIONEN

14

Page 25: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

5Programm Installation

Die MSB-Analyser Software steht sowohl für Microsoft Windows alsauch für Linux zur Verfügung. Beide Versionen sind auf derProgramm CD-ROM enthalten und werden Ihnen entsprechendIhrem System automatisch zur Installation angeboten. Was Siedabei im einzelnen beachten müssen, erfahren Sie in diesemAbschnitt.

Der MSB-Analyser wird per USB an den PC angeschlossen und kommuniziertmit diesem mittels eines virtuellen COM Port. Unter Microsoft Windows wirddeshalb bei der Programm Installation automatisch ein entsprechender VCOMTreiber eingerichtet.Linux Distributionen besitzen seit Kernel 2.4.18 von Haus aus ein auch für denMSB-Analyser funktionierendes Kernelmodul ftdi_sio.Die Software ist mehrsprachig (deutsch und englisch) und kann auch ohneAnalysator installiert und verwendet werden, z.B. um bereits gemachte Aufnah-men auszuwerten (offline Modus). Oder wenn Sie die Fähigkeiten des Analy-sers am Beispiel mehrerer beigefügter Aufzeichnungen zunächst testen einmalmöchten.

Installation unter WindowsBeenden Sie alle laufenden Anwendungen vor dem Einlegen der CD-ROM.Schliessen Sie den MSB-Analyser erst an, nachdem Sie die Programm Installa-tion durchgeführt haben.

1 Legen Sie die Installations CDROM ein.Der IFTOOLS Produkt Installer wird aufgerufen. Wenn der Installer nicht auto-matisch startet, doppelklicken Sie auf dem Desktop auf Arbeitsplatz bzw.öffnen diesen im Startmenü. Doppelklicken Sie das IFTOOLS-Setup-CD Iconum den IFTOOLS Produkt Installer zu starten.

2 Produkt auswählen.Klicken Sie in der linken Produktauswahl auf den entsprechenden AnalyserTyp (MSB-RS232 oder MSB-RS485). Starten Sie anschliessend die Softwa-re Installation inklusive des nötigen Treibers mit einem einzelnen Klick aufInstallation (Version 4.6.8). Eventuell dauert es einen Augenblick, bisder Installer auf dem Bildschirm erscheint.

15

Page 26: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 5. PROGRAMM INSTALLATION

3 Software installieren.Setzen Sie die Installation gemäß den auf dem Bildschirm erscheinenden Hin-weisen fort. Der für den Betrieb nötige Treiber wird dabei automatisch einge-richtet.

5.1 Installation unter LinuxModerne Linux Distribution bieten i.a. den gleichen Komfort zur Programm In-stallation von CD-ROM. Wie bei Windows muß dieses Verhalten u.U. aber zu-nächst aktiviert werden. Ihr Linux System muß dazu die CD-ROM automatischals ausführbar einhängen. Ist dies der Fall, läut die Installation im großen gan-zen wie unter Windows ab.

1 Legen Sie die Installations CDROM ein.Der IFTOOLS Produkt Installer wird aufgerufen. Je nach Distribution werdenSie zunächst gefragt, ob Sie das AUTORUN Feature aktivieren wollen. Beant-worten Sie dies mit ’ja’. Wenn der Installer nicht automatisch startet, lesen Siebitte den folgenden Anschnitt ’Manuelle Installation unter Linux’.

2 Produkt auswählen.Klicken Sie in der linken Produktauswahl auf den entsprechenden AnalyserTyp (MSB-RS232 oder MSB-RS485). Starten Sie anschliessend die SoftwareInstallation mit einem Klick auf Installation (Version 4.6.8).

3 Software installieren.Setzen Sie die Installation gemäß den auf dem Bildschirm erscheinenden Hin-weisen fort. Das für den Betrieb nötige Kernelmodul ist Bestandteil aller Kernelseit Kernel Version 2.4.18 und muß deshalb nicht extra eingerichtet werden.

5.2 Manuelle Installation unter LinuxSollte der IFTOOLS Produkt Installer nach einlegen der CD-ROM nicht auto-matisch starten, gehen Sie wie folgt vor:

1 Öffnen Sie eine Konsole2 Kopieren Sie die Installationsdatei auf Ihren Desktop

Geben Sie dazu folgendes Kommando ein:

cp PFAD_ZU_CDROM/programs/msb/msb-4.6.8-linux-installer.run ~/Desktop

3 Machen Sie die Installationsdatei ausführbarindem Sie das executable Flag setzen mit:

chmod +x ~/Desktop/msb-4.6.8-linux-installer.run

4 Starten Sie die InstallationsdateiStarten Sie die Installationsdatei per Mausklick (Doppelklick).Alternativ können Sie den Installer auch im Textmodus starten. Dies bietet sichan, wenn der grafische Installer nicht starten sollte. Öffnen Sie dazu eine Text-konsole und geben folgendes Kommando ein:

~/Desktop/msb-4.6.8-linux-installer.run --mode text

16

Page 27: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

5.3. INSTALLATION FÜR ALLE BENUTZER

5.3 Installation für alle BenutzerDie Installation benötigt nur root Rechte wenn Sie die Software für alle amSystem angemeldeten Benutzer installieren wollen. Die Installation der Soft-ware kann in diesem Fall unter /opt oder /usr/local erfolgen. Starten Siedie Datei deshalb unter KDE mit:

kdesu ~/Desktop/msb-4.6.8-linux-installer.run

Unter Gnome entweder mit:

gnomesu ~/Desktop/msb-4.6.8-linux-installer.run

bzw.

gksu -k ~/Desktop/msb-4.6.8-linux-installer.run

Alternativ können Sie den Installer auch im Textmodus starten. Dies bietet sichan, wenn der grafische Installer nicht starten sollte oder Sie ihn einfach perroot bzw. mit dem sudo Kommando ausführen wollen:

sudo ~/Desktop/msb-4.6.8-linux-installer.run --mode text

5.4 Programm UpdatesIFTOOLS veröffentlicht in unregelmäßigen Abständen Software Updates mitneuen Eigenschaften und Verbesserungen. Diese Updates sind für Sie kos-tenlos und können jederzeit unter folgender Adressehttps://iftools.com/download herunter geladen werden.Bei den Updates handelt es sich um komplette Programminstallationen, die inder Windows Version auch den jeweils aktuellen Treiber enthalten. Updateskönnen parallel zu Ihrer aktuellen MSB-Analyser Programm Version installiertwerden. Windows User müssen dazu lediglich die Update Datei ausführen.Unter Linux ist es erforderlich, die Datei zunächst ausführbar zu machen undsie dann, wie oben beschrieben, zu starten.

17

Page 28: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 5. PROGRAMM INSTALLATION

18

Page 29: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

6Anschluß des Analysers

Wie schließe ich den Analyser an meinen PC an? Wie binde ichihn in die zu überwachende Verbindung ein? Was bedeuten dieLED’s? Diese und andere Fragen beantwortet der folgendeAbschnitt.

Der Analyser MSB-RS232 besitzt zwei 9polige D-Sub Buchsen, die als Stecker(Port B) bzw. Buchse (Port A) ausgeführt sind und zur Einbindung in die zuuntersuchende EIA-232 Verbindung diesen. Ein entsprechendes 1:1 RS232Kabel ist beigelegt. Über die Buchse PC USB wird der Analyser mit einemfreien USB Anschluß Ihres PC’s verbunden, auf dem die Analyser Softwareinstalliert ist. Die Spannungsversorgung erfolgt ebenfalls über das USB Kabel,so dass keine zusätzliche Versorgung benötigt wird und Sie den Analyser auchim mobilen Einsatz mit einem Laptop verwenden können. Die Stromaufnahmeliegt bei ca. 250 mA.

Der Anschluß Link MSB ist zur Mikrosekunden genauen Synchronisierung zwei-er MSB-RS232 Analyser vorgesehen.Alle Pins des 9 poligen Steckers und der 9 poligen Buchse sind über Hi-SpeedRS232 Treiber verbunden und schaltbar (Schaltoption). Zusätzlich sind alle Lei-tungen sind mit High Speed 1MBaud RS232 Empfängern ausgestattet. Da-durch ist eine präzise Signalerfassung mit 1µsec Auflösung möglich.

6.1 RS232 SignalbelegungDie Steckerbelegung entspricht dem Standard. Die Eingänge A und B sind 1:1verbunden (sofern Sie nicht durch die Schaltoption verändert wurden), nur die

19

Page 30: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 6. ANSCHLUSS DES ANALYSERS

Bezeichnung der Signale ändert sich.

Pin Name Port A Port B

1 DCD Ausgang Eingang

2 RxD Ausgang Eingang

3 TxD Eingang Ausgang

4 DTR Eingang Ausgang

5 GND

6 DSR Ausgang Eingang

7 RTS Eingang Ausgang

8 CTS Ausgang Eingang

9 RI Ausgang Eingang

6.2 RS232 SignalpegelDie Schwelle der RS232 Eingänge liegt bei ±0.3V. Nur Signalpegel ≥ +0.3Voder Signalpegel ≤ -0.3V werden als gültig anerkannt. Pegel, die für mehr als30µs zwischen diesen beiden Schwellen liegen werden als ungültig angese-hen.Ungültig sind die Signale sowohl wenn keine Spannung anliegt (fehlendeLeitungen), als auch bei abgeschalteten Treibern des sendenden Gerätes.Dies kann z.B. bei stromsparenden Geräten vorkommen, die nach einer gewis-sen Zeit ohne aktiven Datentransfer ihre Datensender in einen Stromsparmo-dus bringen. Da eine Reaktivierung der Treiber auch eine bestimmte Zeit be-nötigt, kann dadurch das erste Sendezeichen fehlerhaft zum Empfänger über-tragen werden.Diese Zustände können durch den MSB-RS232 genauestens bestimmt und aus-gemessen werden.

6.3 LeuchtdiodenDer MSB-RS232 Analyser besitzt 4 Leuchtdioden (LED) zur Anzeige seines Be-triebszustandes und des Zustandes der Datenaufnahme. Sie sitzen zwischender 9 poligen Sub-D Buchse (Port A) und dem 9 poligen Sub-D Stecker (PortB) und sind mit Rot 1, Rot 2 rot, Grün 1 und Grün 2 bezeichnet.Die roten Leuchtdioden dienen zur Signalisierung des Aufnahmestatus und

Kontrol LEDsfür den richtigenAnschluß und AufnahmeKontrolle

der interne Pufferauslastung, während die grünen LED’s eine Kontrolle der Ver-bindung ermöglichen.

Grüne LEDsWird die Sub D-Buchse A direkt 1:1 mit einem PC verbunden, so leuchtet dienebenliegende Leuchtdiode Grün 1. Gleiches gilt für Grün 2, wenn das End-gerät 1:1 an den 9pol Sub-D Stecker B angeschlossen wird. Die Leuchtdiodenzeigen den Ruhepegel (0, negative Spannung) an. Während der Datenüber-tragung flackern sie durch den Wechsel der Datenpegel. Je mehr Daten proSekunde übertragen werden desto stärker ist das Flackern. Eine gute Anzeigefür den Datenstrom.

20

Page 31: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

6.3. LEUCHTDIODEN

Mit Hilfe dieser Leuchtdioden lässt sich auch der korrekte Anschluss des MSB-RS232, des PCs und des Endgerätes prüfen:

1 LED neben Anschluß leuchtet:Korrekter 1:1 Anschluss: Werden die Kabel an beiden Eingängen nacheinan-der im Wechsel gesteckt, so muss die Leuchtdiode neben dem jeweils belegtenAnschluss leuchten.

2 LED des anderen Anschlusses leuchtet:Leuchtet die jeweils entgegengesetzte grüne LED, so wurden zwei NullmodemKabel verwendet. Die Aufzeichnung des MSB-RS232 arbeitet weiterhin, jedochsind die Bezeichnungen RXD und TXD, DSR und DTR, CTS und RTS zu ver-tauschen. Ausserdem ist RI und DCD nicht angeschlossen. Um keine verwir-renden Datenaufzeichnungen zu bekommen sollte dieser Zustand vermiedenwerden. Wechseln Sie in diesem Fall die Kabel oder verwenden Sie GenderChanger.

3 Keine LED leuchtet:Leuchtet bei Verbindung keine der grünen LEDs, so ist die Sendeschnittstellenicht aktiv oder das Kabel defekt.

4 Immer gleiche LED leuchtet:Leuchtet bei wechselseitigem Stecken immer die gleiche Diode, so wurde einNullmodemkabel (bzw. bei Verbindung von 2 PCs ein 1:1 Kabel) verwendetund es gibt einen Kurzschluss zwischen den Datenleitungen. Es kommt keineDatenübertragung zustande.

Rote LEDsDie roten Leuchtdioden dienen der Anzeige des Zustandes des MSB-RS232.Folgende Zustände können angezeigt werden:

1 Beide LEDs dauerhaft an:Der MSB-RS232 wurde noch nicht durch den PC initialisiert und ist nicht bereit.Die Eingänge A und B sind nicht verbunden und alle Ausgänge inaktiv.

2 Beide LEDs blinken:Der MSB-RS232 wurde initialisiert, ist aber noch nicht aktiv, d.h. es wurde nochkeine Aufzeichnung gestartet.

3 Rot 1 leuchtet, Rot 2 ist aus:Aufzeichnung ist aktiv, d.h. der PC zeichnet alle eingestellten SchnittstellenEreignisse auf.

4 Rot 1 leuchtet, Rot 2 blinkt:Der Füllzustand des internen Datenpuffers wird angezeigt. Die Füllzustände 1

4 ,12 , 3

4 werden durch verschieden lange Pausen zwischen den Blinks angezeigt,je voller der Speicher, desto kürzer die Pausen.

5 Beide LEDs blinken gleichzeitig:Der Pufferspeicher ist voll und es gehen Aufzeichnungsdaten verloren. DieDauer des Datenverlustes wird protokolliert.

21

Page 32: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 6. ANSCHLUSS DES ANALYSERS

6.4 Unterbrechungsfreier Anschluss des AnalyserDer MSB-RS232 Analyser leitet alle Leitungen intern durch ein Gate Array, waszusätzliche Vorteile wie z.B. die Schaltoption eröffnet (Signale umverdrahten,schalten, invertieren, ...). Dies bedeutet allerdings auch, das die Verbindungnur besteht, so lange der Analyser in der Leitung eingebunden und mit Stromversorgt ist.

Das optional erhältliche W232 Kabel bietet eine einfache Lösung um den Ana-lyser beliebig an eine RS232 Leitung anzuschliessen ohne die Verbindung zuunterbechen. Weitere Informationen zur Verwendung des W232 Kabels findenSie im Anhang D.

22

Page 33: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

7Programm Start

Automatischer Scan der Verbindung nach Baudrate, Protokoll,Auswahl der zu protokollierenden Ereignisse, Aufzeichnungsart(kontinuierlich oder Fifomodus), Aufzeichnungen speichern oderladen. All diese Funktionen steuern Sie über dasKontrollprogramm.

Die Firmware des Analysers ist nicht fest im Gerät integriert sondern muß nachEinschalten (Anschluß) des Gerätes zunächst geladen werden. Dies findet al-lerdings nur einmal statt. Solange das Gerät eingeschaltet, d.h. mit Spannungversorgt wird, bleibt die Firmware erhalten.

Der erste Startlädt die Firmware in denAnalyzer

Sobald Sie die Analyser Software durch Doppelklick auf Ihren Desktop Iconstarten, erscheint deshalb zunächst der Firmware Loader.Der Firmware Lader erkennt automatisch, ob ein Analyser angeschlossen istund ob die Firmware bereits geladen ist oder noch übertragen werden muß.Wurde das Gerät korrekt erkannt und die Firmware geladen (erkennbar amFortschrittsbalken im unteren Teil des Dialogfensters) startet automatisch dasMSB-RS232 Kontrollprogramm.Sollten Sie mehrere Analyser an Ihrem PC angeschlossen haben zeigt Ihnender Firmware Loader eine Auswahlliste der vorhandenen Analyser.

Wurde kein Analyser gefunden, obwohl Sie diese mit IhremPC verbunden haben, lesen Sie die Hinweise im Anhang zuWindows im Abschnitt E.1, bzw. für Linux unter F.1 .Falls Sie einfach nur vergessen haben, den Analyser anzusch-liessen, verbinden Sie diesen mit dem PC und klicken Sie aufden ’Suche’ Knopf um die Auswahlliste zu aktualisieren.Sie können allerdings auch ohne MSB-RS232 mit dem Pro-gramm arbeiten, z.B. um nachträglich aufgezeichnete Datenauszuwerten oder das Tutorial durchgehen, um sich mit derArbeitsweise des Programmes vertraut zu machen. Da dasProgramm in diesem Fall den Analyser Typ (MSB-RS232 oderMSB-RS485) nicht automatisch ermitteln kann, müssen Siediesen aus der Liste vorgeben.

Die MSB-RS232 Software verwendet eine MultiProzess Architektur. Das bedeu-tet, dass das Programm nicht ausschließlich in einem einzigen Fenster abläuft,sondern für die unterschiedlichsten Aufgaben ein speziell darauf abgestimmtes

23

Page 34: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 7. PROGRAMM START

Tool startet.Angesichts dessen mag Ihnen der Start eines kleinen Kontrollpanels kümmer-lich erscheinen. Die Software soll Sie aber nicht mit unnötigen Fenstern, mehr-zeiligen Werkzeugleisten und verschachtelten Menüs verwirren, sondern Ihneneinen Satz einfach zu bedienender Tools zur Verfügung stellen, die für Ihre An-wendung am geeignetsten sind.Das MSB-RS232 Kontrollprogramm ist Ihr �Cockpit� zur Steuerung des Ana-lysers. Mit ihm starten Sie eine Aufzeichnung, speichern oder laden Aufnah-men und Projekte und öffnen die verschiedenen Analysetools zur Untersu-chung der Aufzeichnung.

7.1 User Interface

A Aufnahmesteuerung: Einfaches starten, pausieren oder stoppen einerAufzeichnung.

B Protokoll Scanner: Automatisches Erkennen von (unbekannter) Baud-rate und Protokoll.

C Einstellungen: Alle nötigen Aufnahme Einstellungen sind mit einemKlick erreichbar. Kein umständliches Navigieren durch Menüeinträge.

D Aufnahmekontrolle : Übersichtliche Darstellung der aufgezeichnetenDaten/Ereignisse, Einstellung, Aufnahmedauer und Zustand. Wechselder Anzeige per rechtem Mausklick.

E Analysetools: Startet das gewünschte Analyzetool mit seinen letztenEinstellungen.

7.2 Anschlussart auswählenDer MSB-RS232 Analysators erlaubt neben der Aufzeichnung von Signalen mitRS232 Pegel auch solche mit Logikpegel (+1.3V Schaltschwelle). In diesemFall müssen Sie vor dem ersten Start die Eingänge des Analysers entspre-chend einstellen. Siehe auch Abschnitt 7.5.Die RS232 Pegel sind voreingestellt, so dass Sie in diesem Fall nichts weitertun müssen.

7.3 Der erste StartStellen Sie sich das Kontrollprogramm als eine Art Aufnahmegerät vor. Umeine Datenverbindung aufzuzeichnen benötigten Sie zunächst nicht mehr alsdie Verbindungsparameter (Baudrate, Protokoll). Alle weiteren Tools zur Anzei-

24

Page 35: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

7.3. DER ERSTE START

ge der übertragenen Daten oder deren physikalischen Signalpegel können Sieganz nach Belieben öffnen oder schliessen ohne die Aufnahme zu beeinfluß-en.Der MSB-RS232 Analyzer enthält mit dem sogenannten FLEXUART Kern eineeigene Dekodiert-Hardware für die serielle Datenübertragung, die neben derMessung der Baudrate auch das automatische Erkennen des verwendetenProtokolls erlaubt.Das einzige, was Sie tun müssen, ist den Knopf zu klicken um den ProtokollScanner Dialog zu öffnen.

Automatische ProtokollermittlungEine korrekte Detektion der Verbindungsparameter setzt natürlich eine ent-sprechende Datenübertragung voraus . Dabei reicht es, die Daten an einemder Ports (Port A oder Port B) anzulegen. Eine Aufzeichnung muss hierzu nichtextra gestartet werden.Starten Sie die automatische Erkennung mit einem Klick auf den ’Start’ Knopfdes Scan Dialoges.Bei der Protokoll Erkennung misst der MSB-RS232 Analyser zunächst die Über-

Protocol ScannerAutomatische Erkennungvon Baudrate undProtokoll

tragungsrate der an Port A oder Port B angelegten Daten. Im weiteren Verlaufwird der Datenstrom analysiert und die korrekte Anzahl von Start, Datenbitsund Parität ermittelt.Der komplette Vorgang dauert nur wenige Sekunden und kann jederzeit durcherneutes Klicken des ’Start’ Knopfes wiederholt werden. Sobald die Parameterkorrekt ermittelt wurden, können Sie die gefundene Einstellung mit dem ’Über-nehmen’ Knopf übernehmen.

Manuelle ProtokolleinstellungWenn Sie Baudrate und Protokoll bereits kennen, können Sie diese auch imEinstelldialog direkt vorgegeben. Die MSB-RS232 Software merkt sich die Ein-stellungen, so dass Sie diese nicht ständig neu eingeben müssen.Alle für die Aufzeichnung relevanten Parameter sind mit einem Klick auf denKnopf erreichbar. Dabei werden die wichtigsten Einstellung direkt angezeigt.Einstellungen für fortgeschrittene Anwender oder speziellere Anwendungensind über die Seitenauswahl des Dialogs auswählbar und werden im Detailim Abschnitt 7.5 behandelt.

Aufzeichnung starten/stoppen

Record Pause StopAufnahmekontrolle

Sobald Sie Anschlussart und Übertragungsparameter festgelegt haben reichtein Klick auf die Aufnahmetaste (Record) um die Aufzeichnung zu starten. DerAufnahmeknopf beginnt rot zu leuchten und das Aktivsymbol im Display sichzu drehen.Mit der Pause Taste können Sie die Aufnahmejederzeit anhalten und zu einemspäteren Zeitpunkt durch erneutes Klicken des Aufnahmetaste fortsetzen.Um die Aufzeichnung endgültig anzuhalten, genügt ein Mausklick auf die StopTaste.Die MSB-RS232 Analyser Software erlaubt Ihnen bereits während der Aufzeich-nung die Untersuchung der Daten. Insofern werden Sie eine Aufzeichnung inder Regel nur dann stoppen, wenn Sie eine neue Aufnahme starten wollen,oder um sie zur späteren Auswertung zu speichern.

25

Page 36: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 7. PROGRAMM START

MSB-RS232 Software ohne Analyser testenSie können das Programm auch ohne angeschlossenen Analyser ausprobie-ren. Laden Sie dazu einfach per Strg+O eine Bespielaufzeichnung aus demBeispiel (examples) Ordner des Installationsverzeichnis.

7.4 Display AnzeigeZentraler Bestandteil des Kontrollprogrammes ist die Anzeige der aktuellenAufzeichnung (Display).Um alle Informationen übersichtlich darstellen zu können, lässt sich die An-zeige in drei verschiedenen Darstellungen betreiben. Die Umschaltung erfolgteinfach per rechtem Mausklick auf das Display.Zusätzlich zu den Verbindungsdaten wird auch die verfügbare Aufzeichnungs-

Anzeige umschaltenmit rechtem Mausklick

kapazität dargestellt. Die dazu benötigte Festplattenkapazität hängt sehr starkvom Datenaufkommen und den ausgewählten Ereignissen, die aufgezeichnetwerden sollen, ab. Eine Abschätzung des Verbrauchs liefert der Marker (Punkt)auf der horizontalen Trennlinie. Er zeigt den noch freien Platz (rechts von derMarkierung) im Verhältnis zur insgesamt verfügbaren Kapazität an.Voreingestellt ist das unter Windows bzw. Linux übliche temporäre Verzeichnis.Sie können dies allerdings auch per Programmaufruf (siehe Abschnitt 20.5 Zu-sätzliche Programm Argumente) ändern.Die Geschwindigkeit, mit der die Markierung nach rechts wandert ist abhängigvon der Anzahl der auftretenden (und ausgewählten) Ereignissen sowie derGröße des im verwendeten temporären Verzeichnisses noch freien Platzes.

Anzeige ISie enthält die eingestellten Verbindungsparamter (Set: Baudrate, Datenlänge,Parität und Stopbits), die gemessene Baudrate Mete: sowie die zur Aufzeich-nung aktivierten einzelnen Leitungen im unteren Bereich.Zusätzlich wird die Anzahl der empfangenden bzw. gesendeten Datenbytes,getrennt für die beiden Datenkanäle A und B, angezeigt.Die Zeitanzeige entspricht dem Zeitpunkt des zuletzt aufgetretenen Ereignis-ses relativ zum Start der Aufzeichnung.

Anzeige IIDie zweite Anzeige informiert Sie über die Gesamtzahl der übertragenen Da-tenbytes (der gesendeten und empfangen Daten) sowie der Anzahl der übri-gen Ereignisse wie z.B. Pegelveränderungen, aber auch Breaks etc.In diesem Anzeigemodus wird als Zeitangabe nicht das zuletzt aufgetrete-ne Ereignis verwendet, sondern die laufende Aufzeichnungszeit dargestellt,und zwar unabhängig von etwaigen Ereignissen. D.h. diese Zeit entspricht dereigentlichen Aufnahmezeit.

26

Page 37: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

7.5. KONFIGURIERUNG DER AUFZEICHNUNG

Anzeige IIIDie dritte Anzeigevariante dient zur Kontrolle der Verbindung zum Analyser.Der Analyser MSB-RS232 wird direkt über eine USB Verbindung gesteuert undversorgt. Die USB Verbindung erfolgt als virtueller COM Port und wird unterWindows als normaler COM Anschluss angezeigt, unter Linux ist dies typisch-erweise /dev/ttyUSBx.

Die Felder Gaps und Fifo zeigen Ihnen an, ob der Analyser mehr Daten aufge-zeichnet hat, als der PC (auf Grund eines zu langsamen Anschlusses) verar-beiten konnte. Normalerweise sollten beide Felder den Wert 0 enthalten. Ab-weichende Werte bedeuten, dass entweder der interne Puffer des Analysers(Gaps) bzw. die Hardware oder der Treiber das Datenaufkommen nicht ver-arbeiten konnte. In diesem Fall sollten Sie die Anzahl der aufzuzeichnendenEreignisse reduzieren.Alle Signal- und Datenleitungen können individuell zur Aufzeichnung (de)aktiviertwerden. Nicht eingeschaltete Leitungen werden durch Striche dargestellt. Imobigen Beispielen werden die Pegelwechsel der Sende (TxD) und Empfangs-leitung (RxD) nicht aufgenommen, allerdings die auf ihnen übertragenen Daten(Data A und Data B).

7.5 Konfigurierung der AufzeichnungIn der Programmvorgabe sind alle Signale aktiviert und vorbenannt, die Ver-bindungsparameter auf 8N1 mit 115200 Baud eingestellt.Diese Vorgaben entsprechen wahrscheinlich nur selten Ihren Wünschen. Be-vor Sie eine Aufzeichnung starten, können Sie diese zunächst entsprechendIhren Bedürfnissen konfigurieren.Sie erreichen alle Einstellparameter unter Einstellungen→Kontrollprogramm ein-richten... oder per einfachem Klick auf das Einstellsymbol links neben dem Dis-play.Da sich manche Einstellungen direkt auf die Aufzeichnung auswirken sind die-se während einer laufenden Aufnahme deaktiviert, die entsprechenden Ein-stellseiten erscheinen dann grau.Der Einstelldialog ist in folgende Abschnitte unterteilt:

VerbindungSignaleAufnahmeAuto SpeichernAllgemein

27

Page 38: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 7. PROGRAMM START

Die Aufzeichnung der Sende- und Empfangsleitungen erfolgt in Form der über-tragenen Daten als auch des physikalischen (Tri-State) Signals.Jeder RS232 Eingang kann zusätzlich als logischer Eingang mit einem Trig-gerpegel von 1.3V, 5kOhm geschaltet werden um auch �nicht RS232� kom-patible Logiksignale verarbeiten zu können.

VerbindungDiese Einstellungen betreffen die zu analysierende Verbindung, nicht die Ver-bindung zwischen Analyser und PC. Sie sind vor allem dann relevant, wennSie die übertragenen Datenbytes aufzeichnen wollen.Dazu gehören die Baudrate, die Anzahl der Datenbits sowie die Vorgabe derParität. Die Anzahl der Stopbits ist unerheblich, da der Analyser das Ende ei-nes Datenrahmens automatisch erkennt.

VerbingungseinstellungBaudrate, Wortlänge,Parität und Logikpegel

Mit dem integrierten Protokoll Scanner können Sie die korrekte Ermittlung derVerbindungsparameter allerdings auch dem Analyser überlassen.

Der MSB-RS232 Analyser unterstützt zusätzlich zu den Standard Baudraten be-liebige Baudraten im Bereich von 1Baud bis zu 1 MBaud.Geben Sie einfach Ihre gewünschte Baudrate ein oder wählen Sie sie aus einerListe der standardisierten Baudraten aus indem Sie auf den Knopf klicken.Erlaubt sind alle Eingaben von 1 bis 1 MBaud.

Neben den üblichen Datenlängen erlaubt der Analyser auch die Aufzeichnungvon Verbindungen mit 9 Bit Daten wie sie gerne zur Adressdekodierung bzw.zur Kennzeichnung eines neuen Datentelegrammes verwendet werden.Beachten Sie, das bei der Angabe von 9-Bit Daten die Parität ausgeschaltetbzw. fest auf ’Nein’ gesetzt wird.

Per Voreinstellung wird im Display des Kontrollprogrammes immer die gemes-sene Baudrate angezeigt, wobei wahlweise die gesendeten oder empfange-nen Daten zur Berechnung verwendet werden. Sie können den Port (und damitdie Richtung) explizit vorgeben, oder aber die Baudrate Messung auch ganzabschalten.

Die Eingänge des Analysators können auch gemeinsam als Logikeingänge ge-schaltet werden, um serielle oder parallele Verbindungen zu analysieren, diekeine RS232 Pegel verwenden. Dies ist häufig im Embedded System Bereichder Fall. Ebenfalls lassen sich in diesem Modus auf einfache Weise Pegelkon-verter anschließen ohne eine zusätzliche Pegelkonvertierung zu RS232 durch-führen zu müssen.Im Logikmodus entfällt die interne RS232 Konvertierung der Pegel und der un-gültige Pegelzustand zwischen ±1.3V wird unterdrückt.

Wo werden die Stopbits angegeben?

Stop bitswerden automatischberücksichtigt

Die Antwort zuerst: Die korrekte Anzahl der Stopbits ist nicht von Belang undSie müssen sich nicht darum kümmern.Während das Startbit den Beginn eines Datenrahmens einleitet, indem es vomRuhepegel zum Aktivpegel wechselt (logisch 1), kennzeichnet das Stopbit dasEnde des Datenrahmens durch die Rückkehr auf den Ruhepegel (logisch 0).

28

Page 39: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

7.5. KONFIGURIERUNG DER AUFZEICHNUNG

Zur richtigen Kodierung und Markierung des nächsten Datenrahmens ist einStopbit ausreichend. Dadurch ist sicher gestellt, das das nächste Startbit er-neut aus einem Ruhepegel zum aktiven Pegel wechseln kann. Eine größereAnzahl Stopbits gibt dem Empfänger lediglich mehr Zeit zur Dekodierung (be-vor das folgende Startbit einen weiteren Datenrahmen einleitet).Für die korrekte Datenverabeitung durch den Analyser ist die Kenntnis der An-zahl von Stopbits jedoch unnötig. Stopbits sind für ihn lediglich ein Ruhepegelder ignoriert wird, bis der Empfang des nächsten Startbits die nächste Daten-byte Dekodierung einleitet.

SignaleAlle vom MSB-RS232 Analyser abgetasteten Leitungen bzw. zur Verfügung ge-stellten Signale können einzeln für die Aufnahme aktiviert und mit einem indivi-

Signale auswählenund individuelle Namenvergeben

duellen Namen versehen werden. Letzteres ist im übrigen auch während einerlaufenden Aufnahme möglich.

Zwei der meist üblichen Signalbezeichnungen sind bereits vorgegeben, DTEoder ’Data Terminal Equipment’ bzw. DCE ’Data Communication Equipment’.Letztendlich bleibt es Ihnen überlassen, welche Signalbelegung sie wählen,oder ob Sie als ’Benutzer definiert’ eine eigene Namensvergebung vornehmenmöchten. In diesem Fall setzen Sie die Einstellung Signal Namen auf ’Benut-zer definiert’ und geben in den einzelnen Feldern eine Bezeichnung Ihrer Wahlein.Jede Name kann maximal aus 7 Zeichen bestehen, erlaubt sind alle Zahlenund Buchstaben, der Unterstrich, Doppelpunkt und Punkt.Der eingegebene Signalname wird sofort vom Program übernommen und vonden offenen Views aktualisiert.

Die Aufzeichnung der Pegelveränderungen können für jede Leitung einzelnein- oder ausgeschaltet werden indem Sie das ’Häckchen’ Aufzeichnen ne-ben dem Signalnamen setzen bzw. entfernen. Als Vorgabe sind alle Leitungensowie die Aufzeichnung der Sende- und Empfangsdaten eingeschaltet. Beach-ten Sie, dass hier die von Ihnen vergebenen Signalnamen stehen. Sollten SieBenutzer definiert gewählt aber keine Namen eingetragen haben, erscheinenhier - keine Namen!Die Signale 2 und 3 (i.a. RxD und TxD) verdienen besondere Aufmerksamkeit.Sind diese aktiviert wird bei jedem Pegelwechsel ein Ereignis ausgelöst, d.h.bei jedem übertragenen Zeichen sind das gleich mehrere Ereignisse.Im allgemeinen werden Sie diese beiden Leitungen nur benötigen, wenn Sie

die übertragenen Datenbytes physikalisch in der Signalanalyse darstellen wol-len. Sind Sie lediglich am Inhalt der Daten interessiert, reicht es ’RxData’ und’TxData’ zu aktivieren und die Signale 2 und 3 auszuschalten.

Generell gilt: Je mehr Ereignisse Sie aktivieren desto mehr Daten fallen für dieAufzeichnung an.

AufnahmeBei der Fehlersuche in seriellen Verbindungen stellt sich oft das Problem, dasSie nicht wissen, wann der Fehler auftritt, sie aber zum Zeitpunkt des Fehlers

29

Page 40: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 7. PROGRAMM START

eine entsprechend große Datenmenge benötigen, um Aussagen über eventu-elle Ursachen machen zu können.

Aufnahmeart wählenSynchrones Aufzeichnen,kontinulierlichesAufnehmen oderAufnahmeschleife

Sie können natürlich die Aufzeichnung einfach solange laufen lassen, bis derFehler auftritt, was allerdings je nach Aufzeichnungskriterien eine schnell wachs-ende Datenmenge verursacht (bei der Aufzeichnung aller Pegelwechsel in ei-ner 115200 schnellen Verbindung sind das über 2 MByte Daten pro Sekunde).Der Analyser unterstützt deshalb zwei Aufzeichnungsarten:

1 Kontinuierliche Aufzeichnung:Im kontinuierlichen Modus werden alle auftretenden Daten gespeichert, bis

die Aufzeichnung beendet wird. Dieser Modus ist immer dann sinnvoll, wennSie bereits während der Aufzeichnung den Datenstrom beobachten oder ana-lysieren wollen.

2 Aufnahmeschleife mit Fifo Modus:Im Fifo Modus wird eine bestimmte Anzahl der zuletzt (vor Ende der Aufzeich-nung) aufgetretenen Ereignisse gespeichert. Sie wird vorgegen durch eine Ma-ximalanzahl (1000...1000000 Ereignisse) oder als maximale Zeit im Bereichvon 10...600 Sekunden.Dies entspricht quasi dem Verhalten eines analogen Endlosbandes, (wie Siez.B. bei analogen Überwachungskameras üblich sind), bei dem immer die durchdie Bandlänge definierte zuletzt verstrichene Zeit aufgenommen wird. Aller-dings können Sie hier die Bandlänge in einem vorgegebenen Bereich frei wäh-len.

Beachten Sie, dass im Fifo Modus während der Aufzeichnung keine Analyse-tools verwendet werden können. Der Grund hier liegt darin, dass die Analyse-tools einen wahlfreien Zugang zu den aufgenommenen Daten erfordern, wasim Fifomodus nicht gegeben ist. Da der Fifomoduls allerdings hauptsächlichzur Aufzeichnung mit ’späterer’ Auswertung verwendet wird, ist das nicht unbe-dingt von Nachteil.Sobald Sie die Aufnahme stoppen werden die aufgezeichneten Daten automa-tisch normalisert, d.h. in ihre richtige zeitliche Abfolge gebracht und könnendann wie üblich analysiert werden.

30

Page 41: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

7.5. KONFIGURIERUNG DER AUFZEICHNUNG

Zwei Analyser synchronisierenPer Voreinstellung arbeitet jeder MSB-Analyser autonom solange er nicht überdie MSB-Link Buchse Synchron-Impulse eines verbundenen ’Masters’ emp-fängt. Sobald Sie zwei unabhängige Verbindungen gleichzeitig aufnehmen wol-len, beispielsweise den RS232 und RS485 Anschluß eines Pegelwandlers,müssen Sie einen der beteiligten MSB-Analyser als Aufnahme ’Master’ definie-ren.Ob das Gerät im Master oder Slave Betrieb arbeitet erkennen Sie an der ent-sprechenden Kennung in der Kontrollanzeige. Da zwei Geräte nicht gleichzeitigals Master arbeiten können, wird die Einstellung beim Slave mit Empfang desersten Synchron-Impulses über die MSB-Link Buchse deaktiviert.

Benutzen Sie den ’Zeige verbundenen Analyser’ Knopf, wenn Sie sich nichtsicher sind, welcher Analyser von den Einstellungen betroffen (d.h. mit demProgramm verbunden) ist.

Aufzeichnungsdatum anpassenAufnahmedatum und Zeit richten sich immer nach der aktuellen Zeit und loka-len Zeitzone. Manchmal ist es deshalb nötig, Zeit und Datum nachträglich an-zupassen, z.B. wenn Sie zwei Aufzeichnungen zeitlich anpassen wollen oderunterschiedliche Zeitzonen berücksichtigen müssen.

Klicken Sie den Knopf ’Jetzt anpassen’ und wählen Sie das gewünschte Datumsowie die gewünschte Uhrzeit in den Stunden, Minuten und Sekunden Feldern.

Bestätigen Sie die Änderungen mit Ok. Die neue Datumzeit wird sofort auf je-des offene View angewendet. Sie können das ursprüngliche Aufnahmedatumjederzeit in dem Eingabedialog wieder herstellen.Bei der Anpassung handelt es sich lediglich um einen internen Offset, die Auf-nahme selbst wird dadurch nicht verändert!

Speichern des neuen AufzeichnungsdatumDie Änderung des Augfzeichnungsdatums bzw. Zeit wirkt sich nicht auf dieAufzeichnungsdatei aus und ist lediglich temporär für die aktuelle Sitzung. Umdie Änderung permanent zu sichern müssen Sie die Aufzeichnung speichern.

AutospeichernDie vom Analyser aufgenommenen Datenmengen können schnell mehrerehundert Megabyte erreichen. Die MSB-Analyser Software speichert die Datendeshalb nur explizit wenn Sie das wünschen.

Aufnahme speichernautomatisch nachAufnahmestop

Allerdings gibt es Situationen die eine Speicherung ausdrücklich erfordern.Z.B. wenn Sie mehrere aufeinander folgende Aufnahmen zur späteren Aus-wertung machen wollen oder ein im Slave Modus arbeitender Analyser nichtdirekt zugänglich ist.In beiden Fällen können Sie eine automatische Speicherung der Aufnahmevoreinstellen. Die Speicherung erfolgt wahlweise bei:

1 Nach Stop einer Synchronaufnahme2 Nach jedem Stop

31

Page 42: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 7. PROGRAMM START

Ort und Verzeichnis sind frei wählbar. Der Dateiname wird vom Programm au-tomatisch aus Seriennummer des Analysers und Startdatum der Aufnahmegebildet um Überschreibungsfehler zu vermeiden. Sie können allerdings einenbeliebigen Prefix zur besseren Kennzeichnung der Aufnahmedateien voran-stellen.

AllgemeinDiese Seite ist für allgemeine Einstellungen vorgesehen. U.a. können Sie hier

Generelle EinstellungenWarnungen, Taskleiste,externe Synchronisation

die Sicherheitsabfrage bei ungesicherten Daten abschalten und/oder die An-zeige jedes einzelnen Views in der Taskleiste bzw. im Task Wechsler unter-drücken . Letzteres ist allerdings nur für Microsoft Windows R© möglich. LinuxDesktops gruppieren i.a. von Haus aus die einzelnen Programm Ansichten in-nerhalb eines Taskleisten Eintrages.

Die MSB-Analyser Software erlaubt die ’externe’ Synchronisation der Views durcheine andere, parallel laufende Analyser Applikation. Dies ist z.B. sinnvoll, wennSie zwei synchron aufgenommene Aufzeichnungsdateien in zwei Programmenparallel untersuchen und die Views zwischen beiden sychronisieren wollen wieSie es bereits innerhalb einer Aufnahme gewohnt sind.In diesem Fall müssen Sie die externe Synchronisation explizit erlauben.

7.6 Die AnalysetoolsDas Kontrollprogramm stellt lediglich die vom Analyser gelieferten Verbindungs-daten zur Verfügung. Die eigentliche Darstellung und Analyse der Daten erfolgtdurch Analysetools - separate Programme, die die Daten an unterschiedlichenStellen und in verschiedenen Darstellungsarten visualisieren.Sie können beliebig viele Analysefenster öffnen indem Sie entweder die untenaufgeführten Kurzbefehle verwenden, oder auf einen der Schnellstart Knöpferechts neben dem Displayfeld des Kontrollprogrammes klicken.

A (S.51) Virtueller Ledtester: Das virtuelle Gegenstück zu einem Led-tester.

B (S.53) Datenmonitor: Datendump der übertragenen Daten mit um-fangreichen Suchmöglichkeiten.

C (S.69) Ereignismonitor: Alle Leitungsveränderungen übersichtlichdargestellt, Suche nach Pegelveränderungen.

D (S.81) Protokollmonitor: Darstellung von Datensequenzen mit eige-nen Protokolldefinitionen.

E (S.161) Signalmonitor: Digital Scope ähnliche Visualisierung allerLeitungen.

32

Page 43: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

7.7. EIN AUFZEICHNUNG SPEICHERN

F (S.199) Schalteditor: Eine virtuelle Breakout Box zur direkten Mani-pulation der Leitungen und Dateneinspeisung.

7.7 Ein Aufzeichnung speichernUnabhängig von Status der Aufzeichnung (aktiv, pausierend oder gestoppt)können die bis dato angefallenen Daten jederzeit in einer Datei gespeichertwerden.Drücken Sie die Tasten Strg+S oder wählen Sie im Menü Datei den MenüpunktSpeichern→Speichere Aufzeichnung. In dem sich öffnenden Dialog könnenSie entweder einen neuen Dateinamen eingeben (als Endung wird automa-tisch .msblog hinzugefügt) oder eine bereits vorhandene Aufzeichnung über-schreiben.Diese Datei enthält dann alle Informationen über die von Ihnen ausgewähltenund vom Analyser aufgezeichneten Ereignisse und Datenbytes sowie die nöti-gen Baudrate/Protokoll Informationen. Einstellungen des Kontrollprogrammesoder evtl. geöffneter Analysefenster werden separat als Projektdatei gespeich-ert.Jedesmal, wenn Sie eine Aufzeichnung sichern, wird die von Ihnen ausgewähl-te Datei in einer Liste zuletzt geöffneter Aufzeichnungsdateien gespeichert undkann von dort jederzeit wieder geladen werden. Nähere Informationen dazu fin-den Sie im Abschnitt zuletzt geöffnete Aufzeichnungen und Projekte.

Speicherung beliebiger AusschnitteUm einen beliebigen Ausschnitt aus den aufgenommenen Daten zu spei-chern verwenden Sie den Ereignismonitor und markieren dort die gewünsch-ten Bereiche. Um nur die übertragenen Daten oder einen Ausschnitt ausihnen zu speichern (z.B. um Sie zu vergleichen) öffnen Sie den Datenmonitorund selektieren dort den entsprechenden Bereich.

7.8 Ein Sitzung als Projekt speichernEine Sitzung bezeichnet den aktuellen Stand des laufenden Analyser Pro-gramms und enthält alle momentanen Einstellungen und Ansichten in denensich das Programm auf dem Bildschirm präsentiert. D.h. neben den Verbin-dungseinstellungen des Kontrollprogrammes auch Position, Größe und Inhaltaller geöffneten Analysetools. Darüber hinaus alle markierten Regionen.Sie können die aktuelle Sitzung jederzeit sichern indem Sie die TastenStrg+Umschalt+S drücken oder im Dateimenü dem MenüpunktSpeichern→Speichere Projekt ... auswählen.Beim Speichern einer Sitzung werden immer auch die bis dahin aufgenomme-nen Daten in einer separaten Aufzeichnungsdatei mit gleichen (Projekt) Na-men, aber anderer Endung gespeichert.

Getrennte Projekt- und AufzeichnungsdateienProjektdateien haben immer die Endung *.msbprj, die Aufzeichnungsdateiendie Endung *.msblog.

33

Page 44: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 7. PROGRAMM START

Entsprechend wird beim Öffnen einer zuvor gespeicherten Projektdatei eine(falls vorhandene) Aufzeichnungsdatei mit gleichem Namen geladen.Damit haben Sie alle Informationen, die Sie benötigen, um eine Untersuchungder aufgezeichneten Daten exakt an der Stelle wieder aufnehmen zu können,an der Sie diese beendet bzw. unterbrochen haben.Gespeicherte Projekte werden ebenfalls in einer Liste zuletzt geöffneter Pro-jektdateien verwaltet, siehe hierzu zuletzt geöffnete Aufzeichnungen und Pro-jekte. Jede Sitzung kann als eigenständige Projektvorlagen gespeichert wer-den.Löschen Sie dazu die aktuell aufgenommenen Daten indem Sie im Dateime-nü den Punkt Neu→Neue Aufzeichnung auswählen oder einfach die TastenStrg+N drücken. Anschließend speichern Sie die Sitzung unter einem Datei-namen Ihrer Wahl.

7.9 Eine frühere Aufzeichnung öffnenDie Unterteilung zwischen Projektdateien und Aufzeichnungen ist bewusst ge-wählt worden. Dadurch können Sie jederzeit eine frühere Aufzeichnung in einaktuelles Projekt laden ohne dabei ihre aktuellen Einstellungen zu verlieren.Drücken Sie die Taste Strg+O oder klicken Sie im Dateimenü den PunktÖffnen→Öffne Datenaufzeichnung um eine Aufzeichnung in Ihre aktuelle Sitz-ung zu laden. Beachten Sie, dass dies nur möglich ist, wenn Sie keine aktiveAufzeichnung läuft und das dabei ihre dato aufgenommenen Daten überschrie-ben werden.

7.10 Eine frühere Sitzung (Projekt) öffnenDrücken Sie die Tasten Strg+Umschalt+O oder klicken Sie im Dateimenü denEintrag Öffnen→Öffne Projekt um eine gespeicherte Sitzung erneut zu öffnen.Das Kontrollprogramm lädt die zugehörige Aufzeichnung, platziert die zumZeitpunkt der Speicherung aktiven Analysetools und übernimmt die entsprech-enden Einstellungen - kurzum restauriert den Programmstatus, wie er beimSpeichern der Sitzung vorherrschte.

7.11 Zuletzt geöffnete Aufzeichnungen und ProjekteAlle von Ihnen gespeicherte Aufzeichnungen und Sitzungen (Projekte) werdenin zwei separaten Listen vermerkt. Sie haben damit einen sehr schnellen Zu-gang gerade auf die Dateien, die Sie zuletzt verwendet haben.

Die Aufzeichnung- und Projektlisten enthaltendie einzelnen Einträge in der Reihenfolge ihrerVerwendung, wobei die Dateien jüngsten Da-tums an oberster Stelle stehen. Alle Dateienwerden mit vollem Pfad gelistet um deren Un-terscheidung zu erleichtern.Klicken Sie im Dateimenü den Punkt ’Zuletztgeöffnete Aufzeichnungen’ und wählen Sie dievon Ihnen gewünschte Aufzeichnung aus. Diesentspricht dem Öffnen eines Aufzeichnung mit

dem Aufzeichnung Öffnen Dialog, ist allerdings um einiges schneller, da Siesich hier nicht durch verschiedene Verzeichnisbäume bewegen müssen.

34

Page 45: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

7.12. DRAG UND DROP

Sollte die ausgewählte Datei nicht mehr verfügbar sein, z.B. weil Sie sie ge-löscht haben, werden Sie vom Programm gefragt, ob die fragliche Datei aus derListe entfernt werden soll. Wenn die Datei wirklich nicht mehr existiert, könnenSie diese Frage ruhig mit ’Ja’ beantworten. Befindet sich die Datei allerdingsauf einem z.Z. nicht verfügbaren Datenträger (d.h. sie ist nur momentan nichtverfügbar), verneinen Sie die Frage und der Eintrag bleibt erhalten.

7.12 Drag und DropSie können eine beliebige Aufnahme oder Projektdatei auch einfach per Dragund Drop in die Anwendung laden. Ziehen Sie dazu die gewünschte Rekord-oder Projektdatei aus Ihrem Dateibrowser oder von Ihrem Desktop in das Kon-trollprogramm.Die aktuelle Sitzung wird dadurch beendet und durch die Daten der ausge-wählten Datei ersetzt. Handelt es sich um eine Projektdatei werden zusätzlichdie entsprechenden Session Einstellungen wieder hergestellt.Beachten Sie das während einer laufenden Aufzeichnung Drag und Drop nichtmöglich ist.

7.13 Anschluß mehrerer AnalyserSie können gleichzeitig mehrere Analyser an Ihrem PC betreiben. Außerdemist es damit möglich, während einer Aufzeichnung die Daten bzw. Ereignissemit denen eines anderen Analysers oder einer früheren Aufzeichnung direktzu vergleichen. Jedes Kontrollprogramm inkl. seiner Analysetools agiert dabeivöllig unabhängig voneinander.Um ein Kontrollprogramm explizit mit einem ganz bestimmten MSB-RS232 Ana-lyser zu verbinden, müssen Sie das Programm mit Angabe der Seriennummerdes MSB-RS232 Analysers starten. Die Seriennummer befindet sich auf derUnterseite des Analysers und wird in jedem Fensterrahmen der Software ein-geblendet. Sie hat die Form MSB#####.Geben Sie keine Seriennummer ein, verbindet sich das Programm mit demersten Gerät, welches es am USB Bus findet. Dies ist gleichzeitig das Stan-dardverhalten.Allerdings ist damit bei mehreren Geräten nicht gewährleistet, dass es sich da-bei immer um ein- und denselben Analyser handelt.Um per Doppelklick auf das MSB-RS232 Starticon einen ganz bestimmten Ana-lyser auszuwählen, gehen Sie wie folgt vor:

1 Rechtsklicken Sie das MSB-RS232 Icon und wählen Sie den Eintrag Kopieren.2 Rechtsklicken Sie eine freie Stelle Ihres Desktops und wählen Sie Einfügen um

eine Kopie des Starticons anzulegen.3 Nennen Sie die Kopie um in z.B. MSB##### (##### entspricht dabei der Ser-

iennummer des zu verbindenden Analysers).4 Rechtsklicken Sie das umbenannte Icon und wählen Sie den Punkt Eigen-

schaften.5 Ergänzen Sie im Feld Ziel: den Aufruf des Kontrollprogrammes um den Pro-

grammparameter -nMSB#####. Also in der Art:C:\Programme\msb-4.6.8\msb_serv.exe -nMSB#####bzw. für Linux: /home/USER/msb-4.6.8\msb_serv -nMSB#####

35

Page 46: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 7. PROGRAMM START

6 Klicken Sie OK um Ihre Ergänzung zu übernehmen.

Beachten Sie, dass die Seriennummer exakt mit der Ihres Analysers überein-stimmt. Ansonsten wird das Gerät beim Start der Software nicht gefunden undSie erhalten eine Fehlermeldung. Auf diese Weise können Sie für jeden MSB-RS232 Analyser ein eigenes Starticon definieren.

7.14 Automatisches Starten nach Rechner RebootDer Analyser kann automatisch nach Hochfahren (booten) des Rechners ge-startet und in den Aufnahmemodus versetzt werden. Im einzelnen bedeutetdies:

1 Sobald der Windows Anmeldeprozess abgeschlossen ist, wird nach einem an-geschlossenen MSB-RS232 Analyser gesucht und die Firmware übertragen.

2 Der Analyser schaltet anschliessend in den Aufnahmemodus und beginnt mitder Aufzeichnung der Verbindung. Dabei werden automatisch die zuletzt ver-wendeten Einstellungen berücksichtigt.

3 Jede neue Aufzeichnung wird in einer eigenen Logdatei abgelegt, die sich ausder Seriennummer des Analysers und dem aktuellen Datum und Uhrzeit desBeginns der Aufzeichnung zusammensetzt. Eine Aufnahme, gestartet am 2.Juli 2012 um 09:31:07 wird z.B. als MSB01060-20120702093107.msbloggespeichert.

4 Die Analyser Software schließt die Aufnahme automatisch, wenn der Rechnerheruntergefahren wird.

Autostart aktivierenWindows startet selbständig alle Programme, die sich bei Anmeldung im Au-tostart Ordner befinden. Dies gilt auch für die MSB-RS232 Software. Damitder Analyzer allerdings automatisch nach Start und Laden der Firmware inden Aufnahmemodus schaltet, muß dem Programm ein zusätzlicher Parame-ter übergeben werden. Gleichzeitig bewirkt die Angabe dieses Parameters, daßbei System Shutdown die Aufzeichnung korrekt abgeschlossen und gespeich-ert wird.Öffnen Sie dazu per Dateiexplorer den Autostart Ordner des entsprechendenBenutzerkontos. Es befindet sich i.a. im Verzeichnis:C:\Dokumente und Einstellungen\Benutzername\Startmenü\Programme\Autostart

Kopieren Sie das MSB-RS232 Starticon auf Ihrem Desktop in den AutostartOrdner. (Kopieren, nicht verschieben). Danach rechtsklicken Sie das neue Iconim Autostart Ordner und wählen den Punkt Eigenschaften.Ergänzen Sie den Zieleintrag mit dem autostart Parameter -a, also:C:\Programme\msb-4.6.8\msb_serv.exe -aKlicken Sie Übernehmen und anschließend OK um Ihre Änderung zu spei-chern. Beim nächsten Hochfahren des Systems wird nun automatisch der Ana-lyser gestartet und mit einer Aufnahme begonnen.Beachten Sie, daß bei nicht ordnungsgemäßem Abschalten des Rechners (oh-ne ihn herunter zu fahren) die letzten Ereignisse der Aufzeichnung u.U. nichtgespeichert werden können.

36

Page 47: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

7.16. ALLGEMEINE PROGRAMM PARAMETER

Autostart bei sehr großem DatenaufkommenBeachten Sie, daß bei sehr großen Datenmengen das Abspeichern durchauseinige Minuten dauern kann und den Shutdown Vorgang entsprechend ver-zögert.Alternativ können Sie auch die Kommandozeilen Tools aus Kapitel 20 ver-wenden, indem Sie im Autostart Ordner ein entsprechendes Skript bzw. eineBatchdatei ablegen.

7.15 Kurzbefehle

Tastenkommandosder wichtigstenFunktionen

Die Kurzbefehle oder Tastenkürzel im Überblick:

Aktion Kurzbefehl

Online Hilfe zum Kontroll Programm F1

Neue Aufzeichnung Strg+N

Neues Projekt Strg+Umschalt+N

Öffne Aufzeichnung Strg+O

Öffne Projekt Strg+Umschalt+O

Aufzeichnung speichern unter... Strg+S

Projekt speichern unter... Strg+Umschalt+S

Aufzeichnung (Record) starten R

Aufzeichnung pausieren P

Aufzeichnung stoppen S

Virtueller Ledtester öffnen Strg+Alt+L

Datenansicht öffnen Strg+Alt+D

Ereignisansicht öffnen Strg+Alt+E

Protokollansicht öffnen Strg+Alt+P

Signalansicht öffnen Strg+Alt+S

Optionaler Schalteditor öffnen Strg+Alt+O

Einstellungen speichern und Programm beenden Alt+F4

7.16 Allgemeine Programm ParameterDas MSB-RS232 Kontrollprogramm kann mit einer Reihe von zusätzlichen Ar-gumenten (Programm Parametern) aufgerufen werden, um z.B. eine expliziteSpracheinstellung auszuwählen, den Offline Modus zu wählen, oder den an-geschlossenen Analyser Typ vorgeben.In den meisten Fällen ist die Voreinstellung (automatische Suche und Initiali-

37

Page 48: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 7. PROGRAMM START

sierung des Analysers) völlig ausreichend. Sollte der Analyser trotzdem einmalnicht korrekt erkannt werden, (dies kann z.B. bei Verwendung von BluetoothAdaptern passieren, da diese eine Reihe von virtuellen COM Ports für sichreservieren), oder Sie möchten ein anderes Verzeichnis zur Speicherung dertemporären Logdateien vorgeben, können Sie dieses Verhalten mit den folgen-den Programmparametern explizit vorgeben.

Die Parameter könne Sie wie unter Anschluss mehrerer Analyser beschriebenauch Ihrem Starticon zuordnen.

Argument Beschreibung

-a Startet den Analyser im Autostart Modus. D.h. nach Ladender Firmware wird sofort in den Aufnahmemodus geschaltetund alle Aufzeichnungen mit einer durchlaufenden Nummerversehen.

-DVerzeichnis Vorgabe des Arbeitsverzeichnis.

-e Startet das Kontrollprogramm mit den Vorgabewerten. Allegespeicherten Programm- und Sitzungseinstellungen wer-den ignoriert.

--force Erzwingt die Anwendung des Analysers mit der angege-benen Seriennummer an dem übergebenen seriellen An-schluss im Falle das das Gerät nicht automatisch erkanntwurde.Bitte beachten Sie! Dieser Parameter arbeitet nur in Ver-bindung mit einem angegebenen Port- und Seriennummer-Paramter, z.B.:msb_serv -pCOM12 -nMSB01234 --force

-i Erzwingt das Laden der Firmware beim Start des MSB-RS232 Kontrollprogrammes (auch wenn sie bereits geladensein sollte).

-j Erzwingt die Öffnen der Programmfenster auf dem aktuel-len Bildschirm. Verwenden Sie diesen Parameter, wenn Sieein Projekt laden, welches auf einem System mit mehrerenBildschirmen abgespeichert wurde und die Programmfens-ter evtl. nicht sichtbar sind.

-l Sprache Gibt die Spracheinstellung vor. Werte für Sprache sind:0: Systemvorgabe, 1: Englisch, 2: DeutschSyntax: msb_serv -l1

-n Serno Vorgabe eines Analysers mit der Seriennummer Serno. Da-durch kann bei gleichzeitigem Betrieb mehrerer MSB-RS232gezielt ein Analyser ausgewählt werden.Syntax: msb_serv -n MSB12345

38

Page 49: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

7.17. SPEZIELLE PROGRAMM PARAMETER

-o Typ Startet das Kontrollprogramm im ’offline’ Modus für den an-gegebenen Analyser Typ (und unterdrückt den Auswahldia-log). Ein angeschlossener Analyser wird nicht gesucht. Auf-zeichnungen sind nicht möglich, allerdings können gespei-cherte Projekte oder Aufzeichnungen bearbeitet bzw. un-tersucht oder mit einer laufenden Aufzeichnung verglichenwerden. Syntax: msb_serv -o typErlaubter Typ ist: MSB-RS232 oder MSB-RS485, z.B.msb_serv -o MSB-RS232

-p Anschluss Virtueller serieller Anschluss, der verwendet werden soll,z.B. COM1 (Windows) oder /dev/ttyUSB0 (Linux).Achtung! Geben Sie zusätzlich die Seriennummer des Ana-lysers an, da sonst die MSB00000 Voreinstellung zur Spei-cherung der Projekteinstellungen verwendet wird.Syntax: msb_serv -p COM1 -n MSB12345 (Windows)bzw.msb_serv -p /dev/ttyUSB0 -n MSB12345 (Linux)

-r Zahl Verlangsamt den Transfer der Firmware um die angegeben-en Zahl (Vorgabe ist 0, d.h. keine Verzögerung, bis maximal100.

-T Verzeichnis Vorgabe des Verzeichnisses, in dem die temporären Log-dateien gespeichert werden. Per default ist das:C:\Dokumente und Einstellungen\Benutzer\Lokale Einstellungen\Temp

(Windows) bzw. /tmp (Linux).

--verbose Legt eine Reportdatei (AnalyzerScan.txt) mit Details zurAnalyser Erkennung auf dem Desktop ab. Senden Sie die-se Datei an [email protected] wenn der Analyzer nichtkorrekt von der Software erkannt wird.

7.17 Spezielle Programm ParameterNeben den ’normalen’ Programm Parametern unterstützt das Kontrollprogrammauch eine Reihe von Einstellungen, die den Programmablauf im Speziellen be-einflussen.Die entsprechenden Parameter sind im nach folgenden aufgelistet und wer-den vom Programm nicht gespeichert. D.h. sie müssen explizit bei jedem Pro-grammstart übergeben werden.

Argument Beschreibung

--ignore-unsaved-data Deaktiviert die Abfrage bei ungesicherten (d.h. nochnicht gespeicherten) Daten. Dies ist z.B. sinnvoll beiTests die keine Speicherung der Daten erfordern.

39

Page 50: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 7. PROGRAMM START

--socket=portnumber Zur Kommunikation mit dem Schalteditor wird einSocket Port im Bereich 50000...50100 verwendet. Soll-te dieser Bereich bereits durch eine andere Anwen-dung belegt sein, können Sie einen Port explizit vor-geben. Gültige Portnummern beginnen bei 1024 undenden bei 65535.Die Portnummer 0 deaktiviert den Socket komplett, ei-ne Verwendung des Schalteditors ist dann nicht mög-lich.

40

Page 51: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

8Das MultiView Konzept

Bereits während der Aufzeichnung können Sie die Daten anzeitlich unterschiedlichen Stellen in unterschiedlichen Formatenund mit verschiedener zeitlicher Auflösung untersuchen. Wirnennen das Konzept MultiView, die Aktoren Views oderAnalyseTools.

Die MSB-RS232 Analyzer Software verwendet eine Multi-Process Architekturum ein Höchstmaß an Stabilität und Skalierbarkeit zu garantieren. Aufzeich-nung der Daten des per USB angeschlossenen Analysers sowie Darstellungund Auswertung erfolgen durch getrennte und unabhängige Programme/Pro-zesse die miteinander kommunizieren (verteilte Anwendung). Dies hat eineReihe entscheidender Vorteile:

Eine Aufzeichnung kann gleichzeitig an verschiedenen Stellen und in unter-schiedlichsten Darstellungen untersucht werden.

Visualisierung in Echtzeit bereits während der Aufzeichnung.

Anzahl der Ansichten nur abhängig von Rechen-/Systemleistung (Skalierbar-keit).

Applikationsfehler in den darstellenden Programmen wirken sich nicht auf dieAufzeichnung aus.

Durch die Fähigkeit der einzelne Programme (Views) miteinander zu kommu-nizieren ergeben sich zudem eine Reihe von Möglichkeiten, die die Analyseeiner EIA-232 Datenübertragung deutlich vereinfachen.So können die verschiedensten Ansichten der Aufzeichnung miteinander ver-schränkt werden. Was bedeutet das?Jedes Anzeigeprogramm kann als Master ausgewählt werden, worauf alle an-deren Datenansichten automatisch diesem folgen und entsprechend ihre An-zeige aktualisieren. Zum Beispiel:Der Graph des physikalischen Datensignals (Logikpegel Ansicht) folgt demCursor des Datenmonitors oder umgekehrt.Die Suche nach einem bestimmten Pegelwechsel oder einer Datenpause blen-det die zugehörigen Datensequenzen ein. Der Klick auf ein aufgezeichnetenParity Fehler zeigt das entsprechende Signal, etc...

41

Page 52: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 8. DAS MULTIVIEW KONZEPT

8.1 SynchronisierungDie Art, miteinander zu kommunizieren, wird als Synchronisierung bezeichnet,die Bedienung ist für alle Views identisch.Jedes Anzeigeprogramm kann dabei wahlweise der aktuellen Aufzeichnungfolgen und damit immer das zuletzt aufgetretene Ereignis (Datenbyte, Pegel-wechsel) darstellen. Oder den momentanen Ausschnitt sperren, z.B. um diesenmit einem anderen Ausschnitt der Aufnahme zu vergleichen.Ist das Anzeigeprogramm auf verschränkt geschaltet, reagiert es auf alle Syn-chron Anforderung, die andere Views auslösen und blendet den entsprech-enden Ausschnitt der Aufzeichnung in der eigenen Darstellung ein. Dabei istdas Programm, mit welchem der Anwender gerade interagiert automatisch derMaster.Mit diesem einfachen Konzept lassen sich beliebige Ansichten miteinanderkoppeln (verschränken). Und dies völlig unabhängig von der laufenden Auf-zeichnung.

Ansichtsynchronisierenindividuell für jedes View

Symbol Bedeutung Beschreibung

Folgen(Autoscroll)

die Anzeige folgt der Aufzeichnung und blendet im-mer die zuletzt aufgenommenen Daten ein.

Gesperrt der Inhalt des Views wird eingefroren, z.B. um es mitanderen Stellen der Aufzeichnung zu vergleichen.

Verschränkt die Anzeige wird mit dem Inhalt des Master Viewssynchronisiert.

Folgen (Autoscroll)Liegt Ihr Augenmerk auf den letzten Ereignissen der von Ihnen untersuchtenDatenverbindung, beispielsweise wenn Sie die aktuell gesendeten Datenbytesverfolgen oder Signalleitungen hin- und herschalten, und dies auf der Leitungkontrollieren wollen, dann aktivieren Sie den Folgen Knopf in der Werkzeug-leiste.Das Analysefenster schaltet dadurch in den Autoscroll Mode und verschiebtseinen sichtbaren Datenausschnitt immer so, dass das letzte Ereignis sichtbarist.Beachten Sie, dass im Autoscroll Modus keine Synchronisierung mit anderenAnzeigetools stattfindet. Ein aktives Autoscrolling beschränkt sich einzig undallein auf das betreffende Fenster und hat keine Auswirkungen auf andere Ana-lysefenster.

GesperrtFür den Fall, dass die geöffneten Fenster unterschiedliche Ausschnitte der Da-ten repräsentieren sollen, ist eine Synchronisation oder ein Folgen der Ansichtunerwünscht. Schließlich wollen Sie ja gerade verschiedene Ausschnitte be-trachten, die eine Aktualisierung des Fensterinhalts zunichte machen würde.In diesem Fall stellen Sie den Anzeigemodus auf gesperrt.

VerschränktSobald Sie diesen Knopf betätigen folgt der Inhalt des Fensters den Cursorbe-wegungen des aktiven Fensters - synchronisiert sich mit dem Analysefenster,

42

Page 53: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

8.2. VIEWS (ANSICHTEN)

welches gerade den Eingabefokus hat, d.h. von Ihnen bedient wird (MasterWindow).Haben Sie mehrere Analysefenster geöffnet, ist automatisch das Fenster der’Master’, der den Eingabefokus hat, d.h. das aktive Fenster ist. Alle CursorBewegungen oder Verschiebungen mit der Maus werden automatisch auf dieoffenen Fenster übertragen, bei denen der Anzeigemodus auf verschränkt ein-gestellt ist.

8.2 Views (Ansichten)Views sind eigenständige Programme, die sich in eine aktuell laufende Auf-nahme oder gespeicherte Aufzeichnung einklinken und die Daten in einer be-stimmten Form visualisieren. Die MSB-RS232 Analyser Software verfolgt dabeidas Konzept, für jede Art der Betrachtung der Daten ein darauf optimiertesAnzeigetool zur Verfügung zu stellen. Jedes View stellt die Funktionen zur Ver-fügung, die seiner Interpretation der Daten entsprechen. Die Bedienung bleibtdadurch einfach und überschaubar, mehrzeilige Werkzeugleisten und überla-dene Menüs außen vor.So suchen Sie z.B. in einer Datendarstellung nach Datensequenzen, währendSie bei einer Ereignisdarstellung nach bestimmten Pegelveränderungen Aus-schau halten. Jedes View liefert Ihnen den Suchdialog, den Sie auf Grund derDarstellung erwarten.Datenansichten, die Sie nicht benötigen, schliessen Sie einfach - oder öffnenSie erst gar nicht. Da es sich um eigenständige Programme handelt, könnenSie diese in Größe und Position beliebig plazieren oder auf verschiedenen vir-tuellen Desktops verteilen.Das Session Management speichert dabei alle Einstellungen. Views werdenautomatisch mit den letzten Einstellungen angezeigt und können per einfa-chem Klick kopiert werden.Folgende Views sind verfügbar:

Virtueller LedtesterDen aktuellen Leitungspegel anzeigende LED Leitungstester gehören zum Stand-ardreportaire bei der Kontrolle serieller EIA-232 Verbindungen.Der virtuelle Ledtester zeigt den Pegel aller RS232 Leitungen mit stillisiertenroten und grünen LED’s an und gibt Ihnen einen ersten Eindruck über denZustand aller Signale.

DataView - DatenmonitorDer Datenmonitor repräsentiert die übertragenen Daten als eine Folge von Da-tenbytes in verschiedenen Formaten (ASCII, dezimal oder hex). Als besondereEigenschaft ermöglicht der Datenmonitor die Suche nach bestimmten Mus-tern mittels regulärer Ausdrücke, die weit über das Suchen nach Worten oderBuchstabenfolgen hinaus geht. Zusätzlich kann gezielt nach Pausen zwischenSendung/Antwort bzw. generell zwischen beliebigen Daten gesucht werden.

Mit der integrierten Scriptsprache Lua können die angezeigten Daten beliebigverrechnet und eingefärbt werden. Protokolle können visualisiert, Prüfsummenin Echtzeit überprüft und Daten in andere Formate umgewandelt werden.

43

Page 54: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 8. DAS MULTIVIEW KONZEPT

EventView - EreignismonitorJedes Leitungsänderung ist ein Ereignis und wird protokolliert. Sei es der Wech-sel einer Steuerleitung oder das einzelne Bit eines übertragenen Datenbytes.Der Ereignis Monitor erlaubt das einfache Navigieren zwischen allen oder be-stimmten Ereignistypen, das Messen der Zeiten zwischen den Ereignissenund das Suchen nach ganz bestimmten Zuständen bzw. Zustandsänderun-gen, z.B. der Wechsel von RTS logisch 1 auf 0 bei gleichzeitigem ungültigenRI Pegel etc.

ProtocolView - ProtokollmonitorDas Protokoll View versetzt Sie in die Lage, die aufgezeichneten Datensequen-zen nach bestimmten Regeln darzustellen.Definieren Sie Ihr eigenes Protokoll, so das jede Datensequenz in einer eige-nen Zeile dargestellt wird. Darüber hinaus sind beliebige Bereiche der Sequenzfarbig markierbar, um sie noch leichter lesbar zu machen.

SignalView - SignalmonitorDer MSB-RS232 Analyser tastet alle Signale mit bis zu 16MHz ab. Das Ergebnisliefert der Signalmonitor. Analog zu einem Digitalscope können Sie beliebigeAusschnitte anfahren und in unterschiedlicher Vergrößerung untersuchen.Durch die Synchronisierung beliebiger Views sehen Sie sofort, welches Signal-verhalten jedem einzelnem Datenbyte zu Grunde liegt und damit die reale WeltIhrer EIA-232 Verbindung.

RegionenRegionen sind beliebige Abschnitte der Aufzeichnung. Sie sind am besten mitBookmarks (Lesezeichen) zu vergleichen und definieren besondere zeitlicheBereiche in der Aufzeichnung. Regionen können einen Namen zugewiesen be-kommen, interessant sind sie aber insbesondere durch die Fähigkeit, SynchronAnforderungen aussenden zu können.Damit genügt ein Klick auf den Beginn oder das Ende einer Region, um diese inden Anzeigeprogrammen einblenden zu lassen und auf diese Weise zwischenverschiedenen Bereichen der Aufzeichnung hin- und herzuschalten.

8.3 Views kopieren

Fenster kopierenum Inhalt mit anderemBereich zu vergleichen

Das Clone Symbol in der Werkzeugleiste startet eine exakte Kopie des aktu-ellen Analysefensters mit all seinen Eigenschaften und Position innerhalb deraufgenommenen Daten.Damit können Sie eine aktuelle Ansicht festhalten, während Sie mit der Kopie(oder dem Original) weiter arbeiten. Sinnvoll vor allem dann, wenn Sie unter-schiedliche Datenbereiche vergleichen wollen.

8.4 Zustand der Views speichern

Speichert Einstellungenund schließt das Fenster

Um Ihnen als Anwender die Arbeit mit den einzelnen Views zu erleichtern, wer-den die aktuellen Einstellungen eines Views sowie Größe und Position beimSchliessen des Fensters durch Klick auf das Symbol in der Werkzeugleis-te als Vorgabe gespeichert und bei erneutem Öffnen wieder hergestellt. Diesvermeidet, daß Sie jedesmal aufwendig Einstellungen reproduzieren müssen,

44

Page 55: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

8.4. ZUSTAND DER VIEWS SPEICHERN

wenn Sie ein neues Analysetool starten.

Für den Fall, daß Sie genau dies nicht möchten, z.B. weil Sie mit den Ein-

Einstellungenverwerfenund Fenster schliessen

stellungen eines Views experimentiert haben und es einfach ohne ’Nachwir-kungen’ Schliessen möchten, klicken Sie statt des Beenden Symbols in derWerkzeugleiste einfach das Schliessen Symbol im Fensterrahmen.

Die gespeicherten Voreinstellung bleiben auch nach Ende einer Sitzung aktiv.Sind sind Teil der Sitzungseigenschaften und werden auch in den Projektdatei-en berücksichtigt.Projektdateien enthalten eine komplette Beschreibung der aktuellen Sitzung.Sie sind Thema des nächsten Kapitels.

45

Page 56: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 8. DAS MULTIVIEW KONZEPT

46

Page 57: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

9Session Management

Eine Programm Sitzung beinhaltet oftmals eine Vielzahlgeöffneter Fenster unterschiedlichster Darstellung. Das SessionManagement sorgt dafür, dass Sie bei erneutem Programmstartalles so wiederfinden, wie Sie es verlassen haben.

Der Session Manager der MSB-RS232 Software gewährleistet, daß alle füreine Programmsitzung relevanten Einstellungen wie Aufzeichnungsparameter,Fenstereigenschaften der offenen Views (Position, Größe), Inhalt (d.h. Farben,Schriftarten, Darstellungsformate) beim Schliessen des Kontrollprogrammesgespeichert und beim nächsten Start wieder hergestellt werden.Darüber hinaus sorgt das Session Management automatisch dafür, dass dieaktuellen Einstellungen eines Views oder Analysetools beim Schließen diesesFensters als Vorgabe vermerkt werden. Wenn Sie ein neues Analysefensterstarten, wird es mit den zuletzt aktiven Einstellungen geöffnet.Die Speicherung der aktuellen Programmeinstellungen erfolgt völlig transpa-rent und ohne das Sie etwas dazu tun müssen.Sie haben allerdings auch die Möglichkeit, die aktuelle Sitzung inklusive deraufgezeichneten Daten als Projekt abzuspeichern. In diesem Fall können Siezu einem späteren Zeitpunkt mit der Untersuchung der aufgenommenen Datenfortfahren, indem Sie einfach die Projektdatei erneut öffnen.

9.1 ProjekteProjekte dienen zur Speicherung Ihrer aktuellen Arbeit (Analyse) mit der MSB-RS232 Software, d.h. inklusive der aufgezeichneten Daten. Ein Projekt bestehtdeshalb immer aus zwei Dateien:

1 Projekt Datei: Beschreibt den Zustand und die Eigenschaften aller offenenViews. Projektdateien tragen immer die Endung *.msbprj.

2 Record Datei: Enthält die eigentlichen Daten und alle für die Datenaufzeich-nung relevanten Informationen wie: Datenrate, Protokoll, definierte Regionen,aufgezeichnete Ereignisse und Zeitpunkt der Aufzeichnung. Record Dateienwerden immer mit der Endung *.msblog abgelegt.

Warum diese Aufteilung in zwei Dateien?Gespeicherte Sitzungen (Projekte) entsprechen dem Wunsch des Anwenders,das Programm individuell für seine Bedürfnisse konfigurieren zu wollen. Die-se sind oftmals unabhängig von bestimmten Aufzeichnungen. Sei es, dass er

47

Page 58: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 9. SESSION MANAGEMENT

Platzierung und Darstellung der einzelnen Fenster seiner Bildschirmauflösunganpasst, oder einfach nur seine Farb/Schriftarten umsetzen möchte.Aufzeichnungsdateien wiederum enthalten Information, die unabhängig vonden Sitzungseinstellungen sind. D.h. genaue Angaben zum Protokoll, Zeit-marken, Regionen, verwendete Signalnamen sowie welche Ereignisarten/ty-pen aufgezeichnet wurden. Darüber hinaus sollten Aufzeichnungen von unter-schiedlichen Personen (mit unterschiedlichen Vorstellungen, was die Konfigu-rierung der Software anbelangt) analysiert werden können.

Durch die Unterteilung in Projekt und Record Dateien bieten sich zudem eineReihe von Vorteilen:

Die Speicherung der Aufzeichnung erfolgt unabhängig von der aktuellen Sitz-ung.Eine Aufzeichnung kann in eine bestehende Sitzung geladen werden ohne die-se zu verändern.Andere Anwender können eine Aufzeichnung mit Ihrer individuellen Konfigura-tion untersuchenProjektdateien können gezielt für bestimmte Analysen/Projekte definiert undweiter gegeben werden.

Durch die klare Trennung zwischen Projekt- und Aufzeichnungsdateien könnenSie jederzeit eine Aufzeichnung mit Ihrer individuellen Programmeinstellunguntersuchen, oder aber eine bestimmte Programm Konfiguration (Projekt) fürdie Analyse einer Aufzeichnung verwenden.Projekt- und Recorddateien haben jeweils ihr eigenes Icon um sie leichter zuunterscheiden. Sie werden bei der Installation mit der MSB-RS232 Softwareverknüpft und lassen sich dadurch einfach per Doppelklick (Windows) öffnen.

9.2 Projekte speichern/laden

Projekt Dateienspeichern alle Sitzungsrelevanten Eigenschaftenund besitzen die Endung*.msbprj

Speichern und Laden von Projekten erfolgt immer aus dem Kontrollprogrammheraus. Die Aufteilung in eine Projekt- und eine Record Datei geschieht dabeiautomatisch, wobei beide Dateien bis auf die Endung den gleichen, von Ihnenvorgegebenen Namen besitzen.Entsprechend wird beim Öffnen eines Projektes eine (falls existierende) Auf-zeichnungsdatei mit dem gleichen Namen geladen.Gleiches gilt, wenn Sie die MSB-RS232 Software per Doppelklick auf eine Pro-jektdatei *.msbprj aus dem Windows Dateiexplorer starten. Jedes Öffneneiner Projektdatei lädt automatisch die zugehörige Aufzeichnungsdatei. Beach-ten Sie, dass bestimmte Einstellungen, z.B. die Baudrate, sowohl als Vorgabe(in einer Projektdatei) wie auch als zwingender Bestandteil einer Aufzeichnunggespeichert werden.

Record Dateienenthalten die eigentlichenDaten sowie alle zurÜbertragung gehörendenParameter. Sie haben dieEndung *.msblog

Sobald eine Aufzeichnung von der Software geladen wird, werden deshalb diedazu nötigen Informationen aus der Aufzeichnungsdatei übernommen und dieSitzungsparameter in diesem Fall überschrieben. Dies gilt neben den ProtokollEinstellungen (Baudrate, Parity, Stopbit) auch für die Definition der Signalna-men sowie Einstellung der aufzuzeichnenden Ereignisse. Alle diese Einstellun-gen sind untrennbar mit den aufgezeichneten Daten verknüpft.

48

Page 59: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

9.3. AUTOMATISCHES SPEICHERN EINER SITZUNG

Reine Projektdatei ohne Datenaufzeichnung erzeugenUm eine aktuelle Sitzung als Konfiguration für spätere Untersuchungen zusichern, speichern Sie diese als Projekt ohne Daten aufzuzeichnen oder lö-schen die Record Datei anschliessend.

9.3 Automatisches Speichern einer SitzungDieser Vorgang findet völlig transparent im Hintergrund statt, wenn Sie die ak-tuelle Sitzung durch Schließen des Kontrollprogrammes beenden. Die MSB-RS232 Software speichert dazu alle nötigen Einstellungen in einer Konfigu-rationsdatei MSB#####.msbprj in Ihrem Anwender (oder Home) Verzeich-nis, wobei ##### der Seriennummer Ihres Gerätes entspricht. Unter MicrosoftWindows ist das i.a.:

C:\Dokumente und Einstellungen\Benutzername\MSB######.msbprj

Unter Linux:

/home/Benutzername/MSB#####.msbprj

Sollten Sie keinen Analyser angeschlossen haben, werden die Einstellungenin der Datei MSB00000.msbprj gesichert.

Aktuelle Einstellungen übertragenDie Datei MSB#####.msbprj in Ihrem Benutzerverzeichnis enthält alle aktu-ellen Einstellungen. Sie können diese Datei einfach kopieren, um diese füreinen anderen Analyser verfügbar zu machen, indem Sie die Kopie nachder Seriennummer des anderen Geräts benennen. Genauso können Sie dieDatei in ein anderes Benutzerverzeichnis oder auf einen anderen Computerübertragen.

49

Page 60: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 9. SESSION MANAGEMENT

50

Page 61: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

10Ein virtueller Ledtester

Den aktuellen Leitungspegel anzeigende LED Leitungstestergehören zum Standardreportaire bei der Kontrolle seriellerRS232 Verbindungen. Sein virtuelles Gegenstück kannallerdings noch ein bißchen mehr.

Die Ansicht des aktuellen Leitungsstatus wird durch ein einfaches, einem han-delsüblichen seriellen Leitungstester nachempfundenen virtuellem Ledtesterermöglicht. Der Ledtester (oder Leitungsmonitor) besitzt zur besseren Über-sichtlichkeit für beide Leitungszustände eine separate Diodenreihe aus jeweilsroten und grünen LED’s.Die roten LED’s auf der rechten Seite signalisieren einen positiven Leitungspe-gel, die grünen auf der linken Seite einen negativen Pegel. In Bereich ±0.3Vsind beide ’LED’s’ aus, dies entspricht einem undefinierten Signalzustand.Der virtuelle Ledtester zeigt den Status aller RS232 Leitungen an, unabhän-gig davon ob Sie eine Aufnahme gestartet haben oder nicht. Sie können denLeitungsstatus Monitor allerdings auch dazu verwenden, den Status zu einembestimmten Zeitpunkt innerhalb der Aufzeichnung anzuzeigen.Wählen Sie dazu den ’Sync’ Modus in der Werkzeugleiste. Damit wird der Lei-tungsstatus mit dem aktiven Anzeigefenster, z.B. einem Datenmonitor synchro-nisiert. Oder Sie ’frieren’ den aktuellen Status der Leitungen ein, indem Sie dieaktuelle Ansicht des Ledtesters verriegeln.

Der Pegel einer RS232 Leitung wird wahlweise mit logisch 0/1, als Space/-Mark oder aber als physikalische positive oder negative Spannung beschrie-ben. Dies ist oftmals eher verwirrend statt hilfreich. Um Ihnen das Leben einwenig einfacher zu machen blendet der virtuelle Ledtester deshalb zusätzliche

51

Page 62: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 10. EIN VIRTUELLER LEDTESTER

Informationen zu Zustand der Leitungen ein. Bewegen Sie einfach den Maus-zeiger über den Ledtester um diese Informationen sichtbar zu machen.

Pegel Bedeutung

1M logisch 1, Mark, entspricht physikalischem -12V Pegel (grüneLED mit Minus-Symbol) auf der Leitung

0S logisch 0, Space, entspricht physikalischem +12V Pegel (roteLED mit Plus-Symbol) auf der Leitung

Realer LedtesterLED Schaltbild

Wie alle anderen Views aktualisiert auch der virtuelle Ledtester die Signalna-men, sobald diese im Kontrollprogramm geändert wurden. Das gilt im übrigenauch, wenn Sie die Interpretation der RS232 Leitungen zwischen DCE zu DTEumschalten.

10.1 WerkzeugleisteDie Werkzeugleiste dient zum schnellen Zugriff der am meisten benötigtenFunktionen. Einige davon sind bei allen Views identisch, andere spezifisch fürden virtuellen LedTester.

A Ende: Speichert alle Einstellungen (Fensterposition) und schließt dasFenster

B Anzeigemodus: Je nach Anzeigemodus zeigt der Ledtester immer denaktuellen Zustand der Leitungen, ist verriegelt oder aktualisiert den In-halt mit anderen Fenstern. Die Voreinstellung ist der altuelle Leitungszu-stand.

52

Page 63: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

11Der Datenmonitor

Sie suchen nach bestimmten Datenfolgen? Nach Übertragungs-pausen bestimmter Länge? Der Datenmonitor zeigt Ihnen dieDaten in ihrem zeitlichen, realen Verlauf. Die Darstellung erfolgtwahlweise in dezimal, hex oder ASCII und enthält zusätzlicheParity, Framing oder Break Informationen. Reguläre Ausdrückeerlauben die Suche nach beliebigen Datenmustern und vielesmehr...

Der Datenmonitor zeigt alle übertragenen und vom Analyser aufgezeichnetenDatenbytes in der Reihenfolge ihres Auftretens. Änderungen der Steuerlei-tungen werden ausgeblendet, so daß nur die reinen Nutzdaten, die über dieserielle Verbindung transportiert wurden, dargestellt werden.Die Daten können dabei getrennt nach Eingang A/B oder zusammen ange-zeigt werden, (siehe Signalauswahl). Letzteres ist sinnvoll, wenn die Reaktionauf gesendete Daten untersucht werden soll.Wollen Sie sowohl die Daten von Eingang A als auch die Daten von EingangB gleichzeitig ansehen, allerdings ohne diese zu mischen, starten Sie einfachzwei Daten Monitore.Sie können auch verschiedene Ausschnitte des aufgezeichneten Datenstromsbetrachten. Genauer gesagt: Sie können soviele Daten Monitore öffnen wie Siewollen. Die Resourcen Ihres Rechners sind die einzige Einschränkung, der Sieunterliegen.

11.1 User InterfaceDer Datenmonitor stellt die übertragenen Datenbytes in Form eines Hexeditorsdar. Die Datenansicht ist auf 8 Zeichen oder Bytes1 pro Zeile voreingestellt,die in hexadezimaler Schreibweise sowie ihrem ASCII Gegenstück angezeigtwerden. Sie können dies allerdings jederzeit ändern. Jeder Datenzeile ist einelaufende Adresse oder Position vorgestellt, die die genaue Position innerhalbdes aufgezeichneten Datenstroms wieder gibt. Nicht druckbare Zeichen wiez.B. das Zeilenvorschub Zeichen werden in der ASCII Anzeige als Punkt dar-gestellt.Mit den Pfeil- und Bildtast können Sie den Cursor beliebig über die Daten steu-ern, wobei die Statuszeile zusätzliche Informationen zum genauen Zeitpunkt

1Genau genommen 9 Bit Werte, da der MSB-RS232 Analyser Übertragungen mit 9 Bit Da-tenlänge unterstützt.

53

Page 64: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 11. DER DATENMONITOR

des Auftretens, der Position und der Anzahl im Vergleich zur Gesamtzahl an-zeigt.

Im Falle eines Übertragungsfehlers (Frame oder Parity) blendet der Daten-monitor automatisch den Fehler in den zugehörigen Datenbytes ein. Dies giltauch für ein Break, welches im Datenstrom sonst leicht als Null Byte fehlinter-pretiert werden könnte.

Mit der integrierten Lua SkriptInterpreter können Sie die angezeigten Datenbeliebig verrechnen, in andere Datenformate umwandeln und das Ergebnis indem Watch Fenster (siehe Abschnitt 11.7 ausgeben lassen.

Integriertes Lua

Mehr noch - Sie können die Daten Skript-gesteuert farblich markieren und da-mit Protokolle oder besonders interessante Abschnitte hervorheben. Und wennSie zusätzlich eine Prüfsumme validieren wollen - auch das ist kein Problem.Ein kleines Lua Skript erledigt dies für Sie und hebt korrekte und/oder falsche

54

Page 65: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

11.1. USER INTERFACE

Prüfsummenwerte automatisch hervor.

Die Statuszeile liefert Ihnen zusätzliche Informationen über die aktuelle Cur-sorposition. In der Voreinstellung zeigt der linke Eintrag die aktuelle Positionoder Adresse des Cursors innerhalb der ausgewählten Daten an.Im rechten Feld wird der genaue Zeitpunkt, wann das Datenbyte aufgetretenist, eingeblendet.Sie können die Ausgabe der Statuszeile aber jederzeit durch eigene Skripteändern. Beispielsweise wenn Sie die Zeit in einem anderen Format ausgebenwollen, oder den zeitlichen Abstand zum nächsten/vorherigen Datenbyte an-zeigen lassen wollen. Wie das geht zeigt Ihnen das Kapitel 16.1.

Auswahl des DatenrichtungIm Datenmonitor können wahlweise die empfangen, die gesendeten Datenoder beide Richtungen auf einmal dargestellt werden. Voreingestellt ist die ge-meinsame Darstellung beider Richtungen. Sie können jederzeit zwischen deneinzelnen Richtungen wechseln, indem Sie die Signalauswahl in der Werk-zeugleiste verwenden.Die Signalauswahl entscheidet gleichzeitig darüber, welche Daten abgespeich-

Signalauswahlzur getrennten odergemeinsamenDarstellung

ert werden können. Wenn Sie beide Signaleingänge A+B ausgewählt haben,werden generell auch beide, Sende- und Empfangsdaten gesichert, ansons-ten nur die Daten des entsprechenden Signaleingangs. Auf diese Weise istes möglich, die aufgezeichneten Daten oder Teile davon, abhängig von ihrerDatenrichtung in einer Datei zu speichern.

Synchronisierung der AnsichtAllen MultiView Programm ist gemeinsam, daß Sie die Ansicht synchronisieren,sperren oder per Autoscroll die jeweils zuletzt aufgenommenen Daten anzei-gen lassen können. Dies gilt auch für den Datenmonitor. Ist der Datenmonitordas aktive Fenster, d.h. das Fenster, welches Ihre Eingaben entgegen nimmt,dann wird mit jeder Bewegung oder Plazierung des Cursors ein entsprechen-des Sync.-Signal an alle anderen geöffneten Analysefenster gesendet. Diesschließt auch die Bewegung des Cursors als Ergebnis einer Suche oder Posi-tionierung mit ein. Auf diese Weise können Sie sich z.B. im Signalmonitor denSignalverlauf bei Auftreten bestimmter Datensequenzen betrachten.Linksklicken Sie einfach das gewünschte Datenbyte, um dessen Ansicht beianderen Views einzublenden.Entsprechend reagiert der Datenmonitor auf eine Synchronisierung durch an-

Ansicht aktualisierendurch andere Views

dere Views und blendet den zugehörigen Datenausschnitt ein, wobei der Cur-sor auf das dem Ausgangsereignis folgende Datenbyte gesetzt wird.Wie sich der Datenmonitor beim Empfang eines Sync.-Signals (durch ein ande-res, die Eingabe besitzendes Analysefenster) verhält, bestimmen die bei jedemAnalysefenster identischen Sync. Knöpfe in der Werkzeugleiste.Per default ist die Ansicht des Datenmonitors verriegelt, d.h. es reagiert aufkeine Änderungen durch andere Analysetools. Beachten Sie, daß der Daten-monitor unabhängig von dieser Einstellung bei Cursorbewegungen immer einSync.-Signal generiert! Fenster, die nicht synchronisiert werden sollen, müs-sen explizit verriegelt werden.

55

Page 66: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 11. DER DATENMONITOR

Fensterinhalt positionierenNeben der Navigation mit dem Cursor oder der linken Scrolleiste bietet derDatenmonitor auch ein absolutes Positionieren sowie eine Verschiebung dermomentanen Ansicht relativ zur aktuellen Cursor Position.Klicken Sie das Symbol in der Werkzeugleiste oder im MenüAnsicht→Gehe zu Dialog um den Dialog zur absoluten/relativen Positionierungzu öffnen. Alternativ können Sie auch einfach Strg+G drücken.Geben Sie einfach die absolute Adresse oder den gewünschten Offset zur ak-tuellen Position ein und klicken Sie auf einen der folgenden Knöpfe.

Absolutes/relativesPositionieren mit Strg+G

Absolut: Bewegt den Datenausschnitt zur angegebenen Adresse, KurzbefehlAlt+A.Plus: Addiert den angegebenen Wert zur aktuellen Position und verschiebtden Datenausschnitt Richtung Datenende, Kurzbefehl Alt+PMinus: Subtrahiert den angegeben Wert von der aktuellen Position und ver-schiebt das Datenfenster entsprechend Richtung Datenanfang, Kurzbefehl Alt+N.

Die Eingabe kann wahlweise in dezimaler, hexadezimaler oder binärer Formerfolgen. Klicken Sie einfach auf das gewünschte Zahlenformat. Wie die meis-ten anderen Dialoge können Sie auch den Gehe zu Dialog solange geöffnetlassen, solange Sie ihn benötigen.

11.2 Bereich auswählenWenn Sie innerhalb des Datenbereichs, d.h. auf einem der angezeigten Da-ten, die rechte Maustaste drücken, öffnet sich ein Kontextmenü, mit welchemein beliebiger Ausschnitt der aufgezeichneten Daten ausgewählt oder selektiertwerden kann. Dabei ist es egal, ob Sie zunächst den Anfang des gewünschtenBereiches markieren oder das Ende.

Oder Sie Klicken auf das erste Byte des zu kopierenden Bereichs bei gleichzei-tig gedrückter Strg Taste. Anschließend verschieben Sie den sichtbaren Aus-schnitt bis zum Ende des zu Bereichs und markieren das Ende der Auswahlmit einem Linksklick bei gleichzeitig gedrückter Umschalt Taste. Der Bereichwird daraufhin hellblau hinterlegt.Alle Daten markiert die Tastenkombination Strg+A.

Die damit verbundene Datenauswahl kann separat gespeichert oder mit derTaste F4 einer Region zugewiesen werden. Durch das gezielte Abspeichernbestimmter Datensequenzen in einer Datei können Sie diese Daten z.B. aufÜbertragungsfehler untersuchen, indem Sie sie mit den Originaldaten vergleich-en.Mit der Export oder Copy And Paste Funktion können Sie einen beliebigenmarkierten Ausschnitt der Daten in anderen Anwendungen weiter verarbeiten.

Copy and PasteCopy And Paste kopiert den ausgewählten Bereich in die Zwischenablage undfügt ihn in einer anderen Anwendung wieder ein. Handelt es sich dabei umeine Textverarbeitung mit RTF Unterstützung wie z.B. WordPad R©, MicrosoftWord R©oder OpenOffice Writer R©erfolgt die Darstellung mit farbiger Anzeige der

56

Page 67: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

11.2. BEREICH AUSWÄHLEN

Datenrichtung2.Da reine Texteditioren (wie NotePad) keinen formatierten Text verarbeiten und

Copy and Pastein Textverarbeitung

deshalb keine Farbinformationen besitzen, muß die Datenrichtung der einzel-nen Daten anders visualisiert werden. Datenbytes empfangen an Port A wirddazu ein einzelner Punkt, den Daten von Port B ein Doppelpunkt vorangestellt.Die Textdarstellung der Daten erfolgt generell hexadezimal, um Probleme mitunterscheidlichen Zeichensätzen zu vermeiden.

00000000 | :73 :65 :6e :64 :20 :64 :61 :74 :61 :20 | send data00000010 | :77 :69 :74 :68 :6f :75 :74 :20 :65 :72 | without er00000020 | :72 :6f :72 :0a .73 .6f .6d .65 .20 .72 | ror.some r00000030 | .65 .73 .70 .6f .6e .73 .65 .0a :66 :72 | esponse.fr00000040 | :61 :6d :65 :21 :0a .66 .72 .61 .6d .65 | ame!.frame00000050 | .20 .72 .65 .73 .70 .6f .6e .73 .65 .0a | response.00000060 | :00 .00 :70 :61 :72 :69 :74 :79 :0a .70 | ..parity.p00000070 | .61 .72 .69 .74 .79 .20 .61 .6e .73 .77 | arity answ00000080 | .65 .72 .0a .00 .6e .6f .20 .6f .6f .70 | er..no oop00000090 | .73 .00 :31 :32 :33 :00 | s.123.

Datenauschnitt speichernDer Datenmonitor bietet Ihnen die Möglichkeit beliebige Bereiche als Binärda-ten in einer Datei zu speichern. Diese Datei enthalt damit eine exakte Folgeder Daten, die Sie markiert haben. Sie werden dies zu schätzen wissen, wennSie die vom Analyser aufgezeichneten Datensequenzen mit anderen, als Dateivorliegenden Daten vergleichen wollen.Beispielsweise, wenn Sie das Ergebnis der empfangenen Daten oder die ge-sendeten Originaldaten kennen, und einfach wissen möchten, ob diese auchso übertragen wurden.Selektieren Sie dazu einfach den gewünschten Bereich oder mit Strg+A alleDaten und klicken im Menü Datei den Eintrag Speichere Auswahl unter....Generell gilt: Sie müssen zuerst einen Bereich selektieren (auswählen), bevorSie ihn abspeichern können. Wenn Sie die Daten beider Eingänge aktivierthaben (A+B), werden auch beide gespeichert. Für einen Vergleich bietet sichdeshalb an, nur eine Datenrichtung auszuwählen.

Exportieren der DatenUm einen Ausschnitt oder alle aufgezeichneten Daten gesondert zu analysie-ren, z.B. mit einem Tabellenkalkulations Programm, können Sie diese als so-genannte CSV (Comma Separated Values) Datei exportieren. Tabellenkalkula-tions Programme bieten umfangreiche statistische Möglichkeiten um die Datenzu bearbeiten. Sei es eine Häufigkeitsverteilung der einzelnen Daten, minima-le und maximale Zeiten zwischen einzelnen Bytes etc. Die hier besprochenenExportmöglichkeiten beziehen sich vor allem auf die Daten. Wenn Sie an einerAnalyse aller anderen Ereignisse interessiert sind, werfen Sie einen Blick aufdas Kapitel Auswahl exportieren im Ereignismonitor.Selektieren Sie den gewünschten Bereich und Klicken Sie anschliessend imMenü Datei den Eintrag ’Exportiere als CVS’.

Datenexportals Komma separierteListe

In dem sich öffnenden Exportdialog können Sie aus der linken Liste der verfüg-baren Werte einen beliebigen Wert auswählen indem Sie ihn einfach anklicken

2Farbiges Copy and Paste unterstützt z.Z. nur die Analyser Software für Microsoft Windows.

57

Page 68: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 11. DER DATENMONITOR

und anschliessend mit dem ’Pfeil nach rechts’ Knopf in die Liste der zu expor-tierenden Werte verschieben. Wiederholen Sie dies einfach mit allen von Ihnenbenötigten Werten.Um die Reihenfolge der exportierenden Werte zu ändern klicken Sie auf denzu verschiebenden Wert (in der Liste der exportierenden Werte) und bewegenihn, mit dem ’Pfeil nach oben’ bzw. ’Pfeil nach unten’ Knopf in die gewünschteRichtung.Entsprechend können Sie einen in der Exportliste markierten Eintrag mit dem’Pfeil nach links’ Knopf wieder entfernen, d.h. er wird wieder in die Auswahllistezurück gelegt.Abschliessend geben Sie einen Dateinamen ein, unter welchem die Export-datei gespeichert werden soll und klicken den ’OK’ Knopf um den Export zustarten.Beim Export der Daten wird die aktuelle Ansicht des Datenmonitors berück-sichtigt. D.h. die Daten werden in hexadezimaler (mit voran gestelltem ’0x’, de-zimaler Schreibweise oder als ASCII Zeichen in eingeschlossenen Hochkom-mas in die Datei geschrieben. Entsprechendes gilt für das Format der Adresse.(Bei der Adresse handelt es sich um die Position des Datenbytes im Daten-strom). Ein Beispiel mit hexadezimalem Adress- und Datenformat:

"Zeitmarke(us)","Adresse","Eingang","Daten"3547,0x000050,A,0x203547,0x000051,B,0x203634,0x000052,A,0x213634,0x000053,B,0x213720,0x000054,A,0x223720,0x000055,B,0x22...

Der gleiche Ausschnitt, diesmal mit dezimaler Adressdarstellung und Anzeigeder Datenbytes in ASCII.

"Zeitmarke(us)","Adresse","Eingang","Daten"3547,00000080,A,’ ’3547,00000081,B,’ ’3634,00000082,A,’!’3634,00000083,B,’!’3720,00000084,A,’"’3720,00000085,B,’"’...

Beachten Sie, dass die Zeitmarken in Mikrosekunden (us) protokolliert werden.Durch die Verwendung eines Loopback Steckers treten in unserem Beispieljeweils immer zwei Ereignisse an beiden Datenkanälen A und B Zeit gleichauf.

11.3 Datenanzeige einstellenDie Darstellung der Daten läßt sich in weiten Bereichen an Ihre eigenen Anfor-derungen anpassen. Öffnen Sie dazu den Einstelldialog im Menü:Einstellungen→Datenmonitor einrichten.Jedes View bietet die für es relevanten Einstellmöglichkeiten. Im Falle des Da-tenmonitors sind es:

58

Page 69: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

11.3. DATENANZEIGE EINSTELLEN

Anzeige: Anzahl und Anzeigeformat der Spalten und Daten.

Farben: Farbregeln zur Darstellung bzw. Markierung bestimmter Daten.

Schrift: Schriftart und Schriftgröße.

Alle Einstellungen können zunächst per Anwenden Knopf ausprobiert werden,bevor Sie sie mit OK endgültig übernehmen.

Spaltenanzahl und DatenformatSie können sowohl die Anzahl der Spalten als auch die Darstellungsart (hexa-dezimal, dezimal und ASCII) getrennt nach Datenbytes und Adressanzeige in-dividuell vorgeben. Die Anzahl der Zeilen verändern Sie durch vergrößern bzw.verkleinern des Programmfensters.Zusätzlich können Sie für die ersten 32 Zeichen des ASCII Zeichensatzes(Kontrollzeichen) die allgemein definierten Namen einblenden. Z.B. statt demHexwert 0A des Linefeed ein ’LF’.Nicht druckbare Zeichen können in der ASCII Spalte wahlweise als Punkt oderals Originalzeichen entsprechend dem gewählten Zeichensatz angezeigt wer-den.

Daten einfärbenDer Datenmonitor erlaubt Ihnen beliebige Daten abhängig von der Datenquelle

Daten färbenmit Farbregeln...

einzufärben. Dies macht vor allem dann Sinn, wenn Sie bestimmte Datenbytesoder Sequenzen besonders hervorheben möchten. Beispielsweise EOS Zei-chen wie Carridge Return und/oder Linefeed. Oder Zeichen mit gesetztem 8oder 9ten Bit wie sie oft bei Bus-Protokollen zur Kennzeichnung von Adress-Kommandos verwendet werden.Im Einstellmenü Farben können Sie dazu eine freie Anzahl von sogenanntenFarbregeln definieren, die auf die Anzeige der übertragenen Daten angewen-det werden.Jede einzelne Regel beinhaltet die Datenquelle oder Datenkanal (Abzw. B), einen Bereich für den Datenwert und die Farbe, mit der dieseDatenbytes eingefärbt werden sollen. Sie können jede Regel einzelnein- oder ausschalten, indem Sie diese explizit aktivieren bzw. deakti-vieren.Die Eingabe der Datenwerte von/bis erfolgt dezimal, wobei der Zah-lenbereich 0...511 umfaßt. Werte über 255 machen allerdings nurSinn, wenn Sie eine Übertragung mit 9 Datenbits analysieren.

Die Regeln werden in Ihrer Reihenfolge von 1 bis n (oder von oben nach un-ten) abgearbeitet. Regeln können sich überschneiden. In diesem Fall kommtdie zuletzt gemachte Regel zur Anwendung. Damit ist es möglich einzelne Re-geln in Teilen zu überschreiben, z.B. einzelne Bytes einer zuvor definiertenRegel nochmals gezielt anders zu färben.Die Vorgabe umfaßt vier Regeln. Durch Klicken auf den + Knopf können Sieaber jederzeit neue Regeln hinzufügen bzw. durch − diese wieder entfernen.Neue Regeln werden entweder am Ende angehängt oder aber direkt über dergerade ausgewählten Regel eingefügt. Um eine Regel zu entfernen müssenSie diese zunächst auswählen indem Sie sie einfach anklicken.Alle von Ihnen eingegebenen Regeln werden automatisch gespeichert und

59

Page 70: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 11. DER DATENMONITOR

sind gleichzeitig für alle später geöffneten Datenmonitore vorhanden.

Farbregeln sind nur für einfache Anwendungsfälle gedacht. Wenn Sie die Da-ten nach komplexeren Regeln markieren wollen verwenden Sie den integrier-ten Lua Skripteditor im Watch Fenster, siehe Abschnitt 11.7.

Schriftart ändernNeben der Spaltenanzahl und Darstellung der Datenbytes können Sie auchdas Schriftbild ändern. Z.B. um statt der voreingestellten Proportionalschrifteine Schriftart mit gleicher Buchstabenbreite zu wählen, oder um einfach dieSchriftgröße bzw. Schriftstill anzupassen.Klicken Sie dazu Einstellungen→Datenmonitor einrichten um den

Schriftartwählen im Einstelldialog

Einstelldialog zu öffnen.Die eingestellte Schrift wird automatisch gespeichert.

11.4 Der DateninspektorDie über die serielle Leitung transportierten Daten sind die eine Sache. UmKommunikationsproblem auf die Schliche zu kommen, ist es aber oftmals er-forderlich, das genaue Zeitverhalten der transportierten Daten zu kennen. Odermit anderen Worten: Welche Zeitdifferenz besteht zwischen zwei Datenbytes?Wie lange dauert es, bis auf einen gesendeten String die Antwort eintrifft? Kli-cken Sie auf das Augen Symbol in der Werkzeugleiste oder drücken Sie Strg+Ium den Dateninspektor zu öffen. Der Dateninspektor gibt Ihnen eine Reihe von

Dateninspektorzeigt Abstände undkonvertiert Datenbytes

Informationen:

Position: Nummer des Bytes sowie seine Herkunft.Status: Fehlerstatus des Bytes, z.B. Parity, Framing oder Break.Absolute Zeit: Liefert die absolute Zeit im lokalen Zeitformat, an der das Da-tenbyte gesendet wurde.Zeitabstand: Zeigt den Abstand zum vorherigen und folgenden Byte an.Konvertierung: Konvertiert den Wert unter dem Cursor in andere Zahlenfor-mate.

Anzeige des LeitungsstatusUm gleichzeitig den aktuellen Leitungsstatus zu dem Datenbyte zu sehen,öffnen Sie einfach den ’Virtuellen Ledtester’ (Leitungsstatus) im Kontrollpro-gramm und schalten diesen auf synchronisierenden Betrieb.

Virtueller Ledtesterzeigt Pegelzustände 11.5 Aufzeichnung durchsuchen

Der Datenmonitor enthält eine Reihe von optimal auf die Datensuche abgestimm-te Suchmechanismen. Sei es die Suche nach einer ganz bestimmten Folge vonDatenbytes, eine zeitliche Unter- oder Überschreitung zwischen Anforderungund Antwort oder einfach nach Übertragungsfehlern wie Paritäts-, Rahmenfeh-ler oder Breaks.Da jede Suche von Beginn oder von der aktuellen Cursorposition gestartetwerden kann, können alle Suchmechanismen beliebig kombiniert werden.

60

Page 71: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

11.5. AUFZEICHNUNG DURCHSUCHEN

MustersucheEine der herausragenden Eigenschaften des Datenmonitors ist die Suche nachganz bestimmten Datensequenzen. Die Sucheingabe beschränkt sich hierbeinicht nur auf das einfache Vergleichen von Datenfolgen. Vielmehr erlaubt derSuchdialog auch die Eingabe sogenannter regulärer Ausdrücke.Reguläre Ausdrücke entsprechen einer stark erweiterten Form der Platzhalteroder ’wild card’ Zeichen, die Sie vom MSDOS DIR Kommando kennen. So lis-tet z.B. das Kommand DIR *.HTM alle Dateien auf, die die Endung HTM tragen.DIR DATEI?.TXT liefert die (falls vorhandenen) Dateien DATEI1.TXT, DATEI2.TXTetc. Ähnliche Mechanismen zur Suche bestimmter Datensequenzen bietet derSuchdialog des Datenmonitors. Geöffnet wird er wahlweise mit dem Suchsym-bol in der Werkzeugleiste oder einfach mit Strg+F.Die Suche startet per Voreinstellung mit dem Beginn der Datenaufzeichnung.Sie können eine Mustersuche aber auch ab einem beliebigen Zeit/Startpunktdurchführen. Positionieren Sie dazu einfach den Cursor des Datenmonitors ander gewünschten Startposition und aktivieren Sie das Feld Starte Suche vonCursor Position.Um eine ganz bestimmte Datensequenz innerhalb der Aufzeichnung zu finden,

Beliebige Sequenzensuchen mit regulärenAusdrücken

müssen Sie diese Sequenz zunächst in dem Texteingabefeld beschreiben. Daskann eine ganz einfache Zeichenfolge sein, z.B. LOGIN in einer Modemverbin-dung. Klicken Sie den Suche Knopf um den bis dahin aufgenommenen Daten-strom nach dieser Zeichenfolge durchsuchen zu lassen.Die Suche hängt von den angezeigten Eingangssignalen ab. D.h. bei A werdennur die an Port A aufgenommenen Datenbytes berücksichtigt, bei B die an PortB und bei A+B beide.Nun ist es aber oftmals so, daß das, was Sie suchen, nicht durch eine ein-fache Zeichenfolge beschrieben werden kann. Beispielsweise enthält die Da-tenaufzeichnung das Wort ’LOGIN’ in folgenden Kombinationen: LOGIN, Loginoder login. Die beiden letzten könnten Sie analog zu MSDOS mit der Eingabe?ogin suchen. Um alle drei Varianten zu finden, müssen Sie das Suchmusterbeschreiben als: Aneinanderreihung der Buchstaben L,O,G,I,N, wobei jedeseinzelne Zeichen wahlweise groß oder klein geschrieben werden darf.Die Umsetzung erfolgt mit einem regulären Ausdruck, dessen Ausdrucksmög-lichkeiten in der unten aufgeführten Tabelle aufgelistet sind.

[ L l ] [ Oo ] [ Gg ] [ I i ] [ Nn ]

Jedes einzelne Zeichen wird durch eine Menge beschrieben, die exakt demjeweiligen Klein- und Großbuchstaben entspricht.Angenommen, Sie untersuchen eine Datenverbindung, bei der hin und wiederstatt einem CRLF (Carridge Return, Linefeed) das CR unterdrückt wurde. D.h.Sie suchen ein einzelnes LF, welches KEIN vorangehendes CR enthält. Derdazu passende reguläre Ausdruck lautet

[ ! \ x0D ] \ x0A

und liest sich als: Alle Zeichen außer Hex 0D (entspricht dem CR), gefolgt vonHex 0A (LF).Ein regulärer Ausdruck ist eine Folge beliebiger Zeichen, wobei bestimmte Zei-chen eine Sonderfunktion inne haben. Sie sind in der folgenden Tabelle auf-geführt. Wollen Sie eines dieser Sonderzeichen als normales Zeichen verwen-den, z.B. weil Sie die Sequenz Passwort? suchen, und ’?’ hier NICHT für ein

61

Page 72: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 11. DER DATENMONITOR

beliebiges Zeichen sondern wirklich für das Fragezeichen steht, müssen Siees ’quoten’. Dies geschieht durch Voranstellen des \ Zeichens. Also

Passwort$ \ backslash$?

Mit dem ’*’ Zeichen in einem Suchmuster werden beliebige Datensequenzenbezeichnet. Es macht nur Sinn, wenn es von anderen ’Suchvorgaben’ einge-rahmt wird. Für sich alleine trifft es einfach auf alles zu, was sicherlich nichtdem Gedanken an eine Suche entspricht.Der folgende Ausdruck findet alle Namenseingaben, die zwischen einem ’LO-GIN’ und ’PASSWORT’ stehen, nicht aber allein stehende ’LOGIN’ Sequenzenohne folgende ’PASSWORT’ Sequenz:

LOGIN∗PASSWORT

Als besonderen Fall unterstützt der Suchmechanismus des Datenmonitors auchSuche nach 9-BitSequenzen 9-Bit Werte. Ein 9-Bit Wert kann nicht als normales Zeichen eingegeben wer-

den. Der Datenmonitor erweitert deshalb die oben beschriebene Angabe vonbeliebigen Hexzahlen um eine ’spezielle’ 3-stellige Hex Eingabe. Diese wirdimmer mit einem großen \X eingeleitet, gefolgt von dem 3-stelligen Hexwert.Das nachstehende Beispiel sucht nach einer Sequenz, die entweder mit einemHexwert 10B oder 133 startet, gefolgt von einem Byte Hex 33:

[ \ X10B \ X133 ] \ X033

Die folgende Tabelle gibt Ihnen einen Überblick über die im Suchdialog imple-mentierten Ausdrücke.

Ausdruck Bedeutung

? ein beliebiges Zeichen

* eine beliebige Zeichenkette

[abc] ein Zeichen aus der angegebenen Menge abc

[!abc] ein Zeichen das nicht der Menge abc angehört

\xHL ein Zeichen in hexadezimaler Schreibweise, H entspricht denoberen 4 Bit, L den unteren 4 Bit

\X1HL das gleiche wie zuvor, allerdings für 9-Bit Werte. Das erste Zei-chen muss immer entweder 0 oder 1 sein. Der gültige Bereichist von hex 000 bis 1FF. Beachten Sie das ein ’großes X’ immereinen 9-Bit Wert verlangt!

\? das Zeichen ?

\* das Zeichen *

\[ das Zeichen [

\] das Zeichen ]

\d eine beliebige Ziffer 0...9

\n das Zeichen für einen Zeilenumbruch (Linefeed hex 0x0A)

62

Page 73: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

11.5. AUFZEICHNUNG DURCHSUCHEN

\s ein beliebiges Whitespace Zeichen (Leerzeichen, Zeilenum-bruch, Zeilenrücklauf, Tabulator)

\\ das Zeichen \

Ungültige Eingaben werden zur einfachen Korrektur im Eingabefeld markiert.

Zeitabstände suchenNeben der Suche nach beliebigen Zeichenketten bietet der Datenmonitor auchdie Suche nach bestimmten Zeitabständen zwischen zwei Datenereignissen.Klicken Sie dazu auf das Suchsymbol in der Werkzeugleiste oder drücken SieStrg+F und wählen Sie den Reiter Verzögerung aus.Die Zeitangaben erfolgen immer in Sekunden, beispielsweise 0.0015 für 1.5ms.Die kleinste Zeiteinheit entspricht dabei der Auflösung des Analysers, d.h. Zeit-abstände von 0.000001 oder 1µs. können als Über- oder Unterschreitung ei-

Zeitabstände findenund Sendepausenermitteln

nes bestimmten Wertes oder aber als Bereich definiert werden. Der Knopf mitdem symbolisierten Verketten Symbol bestimmt, ob beide Zeitangaben für dasSuchergebnis gültig sein müssen (UND Verknüpfung), ODER nur eines vonbeiden (was der Voreinstellung entspricht).Betrachten Sie hierzu die folgende Tabelle:

Zeit(s) >= Logik Zeit(s) < Ergebnis

1.000000s ODER 0 Findet alle Abstände die größer als 1sODER kleiner als 0s sind. Negative Zei-ten gibt es nicht, so dass hier nach einemBereich größer als der angegebenen Zeitvon 1s gesucht wird.

1.000000s UND 2.000000s Findet alle Abstände die größer als 1sUND kleiner als 2s sind.

10000000s ODER 0.001s Findet alle Abstände die größer als1000000s ODER kleiner als 1ms sind. Dasolch große Abstände wie 1000000s ver-mutlich nicht vorkommen, werden nur alleZeiten kleiner als 1ms gefunden.

Neben den Zeitvorgaben spielt auch die Datenfolge eine wichtige Rolle. D.h.ob der zeitliche Abstand zwischen zwei Datenbytes einer Datenrichtung (z.B.Port A) gemessen wird. Oder aber zwischen einen Datenbyte an Port A gefolgtvon einem Datenbyte an Port B bzw. umgekehrt. Interessant z.B. wenn Sie An-frage/Antwort Verzögerungen untersuchen wollen.Die Reihenfolge, die beim Suchen berücksichtigt werden soll, können Sie ex-plizit vorgeben. Voreingestellt ist Jedes, d.h. die Reihenfolge ist unerheblich.Beachten Sie, dass eine Reihenfolge nur dann vorgegeben werden kann, wennSie im Datenmonitor auch beide, d.h. A und B ausgewählt haben. Andernfallsist diese Einstellung deaktiviert.

63

Page 74: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 11. DER DATENMONITOR

Übertragungsfehler suchenDie Fehlersuche des Datenmonitors bezieht sich auf Fehler in der Datenüber-tragung. Dabei handelt es sich um Rahmenfehler und Paritätsfehler. Breakssind im eigentlichen Sinne kein Fehler. Da sie aber nicht mit einem binären Null-byte verwechselt werden dürfen und in der seriellen Kommunikation oftmals zurInitialisierung bzw. zum Rücksetzen eines Teilnehmers verwendet werden, sindsie hier ebenfalls integriert.Die Suche nach Fehlern ist leicht. Markieren Sie einfach einen oder mehrere

Übertragungsfehlersuchen und finden

Fehlerzustände und starten Sie die Suche mit Klick auf den Startknopf.

11.6 Integrierte Skriptsprache LuaMit der integrierten Skriptsprache Lua werden die Darstellungs- und Analyse-fähigkeiten des Datenmonitors deutlich erweitert.Der Datenmonitor bietet Ihnen die Möglichkeit, bis zu acht unabhängige LuaSkripte einzugeben, die parallel und in Echtzeit während der Darstellung derDaten oder bei Cursorbewegungen ausgeführt werden.Jedes dieser Skripte kann als Ergebis einen beliebigen Text anzeigen, be-

stimmte Datensequenzen farblich markieren und zusätzliche Informationen inder Statuszeile einblenden.Beispielsweise die automatischen Berechnung von Prüfsummen, Umwandlungvon Datensequenzen in Fliesskomma-Werte, Anzeige, Aufsummierung von Zei-ten und vieles mehr.Wir haben Lua zwei eigene Kapitel gewidmet. Kapitel 16 gibt Ihnen einen ers-ten Überblick welche Möglichkeiten diese Skriptsprache in Verbindung mit demDatenmonitor bietet. Das zweite Kapitel 17 ist eine kurze Einführung in dieSkriptsprache Lua und beinhaltet die komplette Sprachsyntax sowie die vonder Analyser Software zur Verfügung gestellten Erweiterungen. Hier beschrän-ken wir und deshalb auf die Eingabe und Ausführung von Skripten innerhalbdes Datenmonitors.Klicken Sie nun auf den Ausklappknopf um das Watch Fenster zu öffnen.

11.7 Das Watch FensterDas Watch Fenster dient zur Eingabe von Lua Skripten sowie deren Programm-ausgabe. Wenn Sie das Watch Fenster das erste Mal aufklappen sehen Sieeine leere Liste von acht Zeilen oder Einträgen. Jedem dieser Einträge ist einLua Skript zugeordnet. Solange Sie kein Skript eingeben bzw. dieses keineAusgaben macht, bleibt der Eintrag leer.Sie können in diesen Zeilen beliebige Informationen ausgeben, Zahlen, Textesowie Kombinationen von beiden, allerdings keine Zeilenumbrüche. Jede Aus-gabe ist auf eine einzelne, wenn auch beliebig lange Zeile beschränkt.Doppelklicken Sie einen beliebigen Eintrag, für den Sie ein Skript schreibenoder ein vorhandenes ändern wollen. Oder klicken Sie einfach auf den LuaReiter. Beides öffnet den Skripteditor des ausgewählten Eintrages.

Der Skript EditorDer integrierte Script Editor bietet Ihnen alles was Sie von einem Benutzerfreundlichen Editor erwarten! Syntax-Highlighting, unbegrenztes Undo/Redo,Copy And Paste sowie das Importieren und Speichern der Scripte zum Aus-tausch mit anderen Usern.

64

Page 75: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

11.7. DAS WATCH FENSTER

Im Dateimenü werden die Einträge zum Speichern oder Laden von Skriptenaktiviert, sobald Sie den Skript Editor geöffnet haben. Die Dateioperationenbeziehen sich dann immer auf den aktiven Editor und somit auf den ausge-wählten Eintrag im Watch Fenster.Die MSB-RS232 Software kommt mit einer Reihe von Beispielen, die Sie imexamples/Lua Ordner des Installationsverzeichnisses finden.Sie können eines der Beispiele in den Editor laden (siehe Abschnitt 11.7 odereinfach folgende zwei Zeilen zur Einstimmung eingeben (ein paar aufgenom-mene Daten vorausgesetzt):

1 dv . watch ( " Cursor a t " , dv . cursor ( ) )2 dv . mark ( dv . cursor ( ) , 1 , # f f8080 )

Dieses kleine Skript gibt die aktuelle Cursorposition bezogen auf den aktuellenAusschnitt an und färbt die entsprechende Datenzelle in einem hellen rot.Um das Skript auszuführen klicken Sie auf den ’Los’ Knopf. Alternativ könnenSie auch einfach die Tastenkombination Alt+R betätigen.

Skript ausführenDie Ausgabe des Skripts wird Ihnen als Eintrag in der Watch Liste, die Siebei geöffnetem Editor allerdings nicht sehen, und deshalb auch unmittelbar inder Textzeile unter dem Skripteditor angezeigt. Im Falle einer falschen Eingabeoder eines Syntaxfehlers erscheint dort eine Fehlermeldung. In unserem Fal-le - und wenn Sie alles korrekt eingegeben haben - die aktuelle Cursorposition.

Mit dem Start des Skriptes wird dieses gleichzeitig in den internen Bytecodedes Lua Interpreters umgewandelt, der bei jeder Cursorbewegung oder Ände-rung des Fensterinhaltes erneut ausgeführt wird. Das gleiche passiert auch,wenn Sie den Editor einfach schliessen und zur Watch Liste zurück kehren.

Bewegen Sie nun den Cursor oder klicken Sie auf eine andere Datenzelle umdie Auswirkungen des Skriptes zu sehen.

Eine Speicherung des Editorinhaltes ist nicht nötig. Der Datenmonitor merktsich seinen aktuellen Status und stellt diesen beim nächsten Start automatischwieder her.Nicht desto trotz können Sie den Editorinhalt natürlich auch gesondert als Text-datei ablegen um ihn später erneut in den Editor zu laden.

Beispiel SkriptsLua Beispieleim InstallationsVerzeichnis

Im Ordner examples/DataView des Installationsverzeichnisses finden Sieeine Reihe von Beispielprojekten die die Möglichkeiten mit Lua verdeutlichen.Starten Sie die Analyser Software per Doppelklick (Windows) bzw. öffnen Siedie gewünschte Projektdatei *.msbprjmit dem Kontrollprogramm msb_serv.Alternativ können Sie das Projekt auch direkt aus dem Kontrollprogramm la-den.Jedes Beispielprojekt enthält eine Aufzeichnung und lädt den Datenmonitor mitdem entsprechenden Lua Skript als auch den dafür vorgesehenen Einstellun-gen, so dass Sie sofort beginnen können.

9bit.msbprjAnalyse eines 9Bit Datenprotokolls inklusive Prüfsummen Check.

65

Page 76: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 11. DER DATENMONITOR

In Lua kodierte LRC (Longitudinal Redundancy Check) Funktion prüft bei Set-zen des Cursors auf Start einer Protokollsequenz automatisch die Korrektheitder Prüfsumme.Gleichzeitig wird die Sequenz mit unterschiedlichen Farben für Start(Adress)-Byte, Länge, Daten und Checksum-Byte visualisiert.errors.msbprjEinfärben der Datenbytes bei Frame-, Parity-Fehler oder einem Break.Zeigt die Informationsausgabe per Statuszeile, die Iteration über die im Daten-monitor angezeigten Daten sowie Markierung abhängig vom Fehlerstatus.srecord.msbprjEinfärben aller Protokollsequenzen im Datenbereich.Anhand eines aufgenommenen Motorola S-Record Datentransfers wird diefarblich Darstellung über alle im Datenmonitor angezeigten Datenbytes gezeigt,wobei jeweils zwei aufeinander folgende Bytes als BCD Repräsentation in deneigentlichen 8 Bit Wert umgewandelt werden.

EinschränkungenSie können beliebige Operationen in Lua ausführen, komplexe Funktionen schrei-ben und aufwendige Verrechnungen durchführen. Allerdings erlaubt der Daten-monitor jedem Lua Script nur eine bestimmte Anzahl von Rechenoperationenbzw. Zeitdauer zur Ausführung. Sobald Ihr eingebenenes Script diese über-schreitet bekommen Sie eine entsprechende Fehlermeldung zu sehen. Unddas hat seinen guten Grund:Sollten Sie aus welchem Grund auch immer eine Endlosschleife programmie-ren wird Sie der Datenmonitor freundlich darauf hinweisen statt wortlos jeglicheweitere Zusammenarbeit aufzukündigen.

11.8 Die WerkzeugleisteDie Werkzeugleiste dient zum schnellen Zugriff der am meisten benötigtenFunktionen. Einige davon sind bei allen Monitoren indentisch, andere spezi-fisch für den Datenmonitor.

A Ende: Speichert alle Einstellungen und schließt das Fenster

B Anzeigemodus: Je nach Anzeigemodus zeigt der Fensterinhalt immerdas aktuelle (zuletzt aufgenommene) Ereignis, ist verriegelt oder aktua-lisiert den Inhalt mit anderen Fenstern.

C Datenrichtung: Der Datenmonitor kann beide Datenrichtungen (Port Aund Port B) gemeinsam oder einzeln anzeigen, z.B. um diese getrenntin zwei einzelnen Fenstern darzustellen.

66

Page 77: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

11.9. KURZBEFEHLE

D Neue Ansicht: Öffnet ein neues Fenster mit dem gleichen Ausschnittund identischen Einstellungen.

E Suchdialog: Öffnet den Suchdialog zur Mustersuche oder Suche nachÜbertragungspausen.

F Gehe zu...: Öffnet den Gehe zu Dialog zur Eingabe einer absoluten Po-sition oder relativem Offset.

G Dateninspektor: Startet den Dateninspektor.

11.9 Kurzbefehle

Tastenkommandosder wichtigstenFunktionen

Aktion Kurzbefehl

Führt das aktuelle Skript im Skripteditor aus Alt+R

Online Hilfe zum Datenmonitor F1

Auswahl als Region speichern F4

Markiere Startadresse der Auswahl Strg+Linke Maustaste

Markiere Endadresse der Auswahl Umschalt+LinkeMaustaste

Alles auswählen Strg+A

Auswahl aufheben Umschalt+Strg+A

Ausgewählter Datenbereich in Zwischenablage ko-pieren

Strg+C

Ausgewählter Datenbereich exportieren Strg+E

Suchdialog öffnen Strg+F

Gehe zu Adresse... Dialog öffnen Strg+G

Dateninspektor öffnen Strg+I

Öffne Ansicht in einem neuen Fenstr Umschalt+Strg+N

Einstellungen speichern und Monitor schliessen Strg+Q

Ausgewählte Daten als Binärdatei speichern Strg+S

67

Page 78: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 11. DER DATENMONITOR

68

Page 79: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

12Der Ereignismonitor

Wann ist welches Ereignis aufgetreten? Hat während derDatenübertragung ein bestimmter Pegelwechsel stattgefundenoder wurde ein Fehlerzustand (Break, Paritäts- bzw.Rahmenfehler) erkannt. Der Ereignismonitor listet Sie alle auf,sucht nach Ereignissequenzen oder Pegelzuständen undexportiert die Ereignisse als CSV Datei.

Im Gegensatz zum Datenmonitor stellt der Ereignismonitor alle aufgetretenenEreignisse (Daten und Pegelwechsel) in ihrem zeitlichen Ablauf dar. Währendder Datenmonitor umfangreiche Mechanismen zur Untersuchung von Daten-sequenzen bietet und die Datenansicht der Aufzeichnung repräsentiert, ist derEreignismonitor auf die Ansicht und Suche von Leitungsänderungen optimiert.Dies betrifft insbesondere Änderungen im Pegel der Steuersignale, aber auchasynchrone Ereignisse wie framing, parity Fehler oder breaks.Jedes Ereignis ist mit einer Zeitmarke versehen, die den genauen Zeitpunktseines Auftretens mit einer Auflösung von 1µs usec wiedergibt. Der zeitlicheAbstand zwischen den Ereignissen hat allerdings keine Einfluß auf die Darstel-lung. Leitungszustände bzw. Wechsel vor und nach einem bestimmten Zeit-punkt der Aufzeichnung sind deshalb leicht zu erkennen.

Die Suche nach bestimmten Datensequenzen ist Aufgabe des Datenmonitors.Sobald eine Suche allerdings einen Leitungszustand, einen Fehler oder eineÄnderung der Pegel beinhaltet, ist der Ereignismonitor das richtige Werkzeug.

Mit dem neuen Levelfinder sind nicht nur beliebige statische Pegelzuständeals Suchmuster definierbar sondern auch Abfolgen von Ereignissen und Pe-gelwechsel.Die einzelnen Suchparameter können wahlweise UND oder ODER verknüpftund zusätzlich mit einer Zeitspanne versehen werden um gezielt nach Ereignis-sen innerhalb eines definierten Zeitrahmens zu suchen oder auszuschliessen.Im Abschnitt Ereignissuche werden die Suchoptionen ausführlich beschrieben.

12.1 User InterfaceDas Fenster des Ereignismonitors liefert Ihnen zu jedem Zeitpunkt der Auf-zeichnung einen schnellen Überblick der Pegelzustände. Von hier starten Siedie Suche nach bestimmten Ereignissequenzen, den Export beliebiger Aus-schnitte oder vergleichen unterschiedliche Abschnitte miteinander.

69

Page 80: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 12. DER EREIGNISMONITOR

Jede Zeile ein EreignisDer Ereignismonitor stellt alle aufgenommenen Ereignisse in Form einer Listedar, wobei jede Zeile einem einzelnen Ereignis entspricht und die Änderungzum vorherigen Leitungszustand repräsentiert. Die Listenansicht der Ereignis-se ist frei konfigurierbar. Bis auf den ersten Eintrag (der Ereignistyp) könnensie jede Spalte ausblenden, in dem Sie Ihre Breite einfach per Maus auf Nullsetzen. (Im Ansicht Menü können sind die ausgeblendete Spalten jederzeit

Spalten ausblendenEinfach Spaltenbreitezusammenziehen

wieder aktivierbar).Die Bezeichnung der Signalspalten passt sich automatisch den von Ihnen ver-gebenen Signalnamen an. Signalnamen ändern Sie global im Einstelldialogdes Kontrollprogrammes.

Alle Ereignistypen auf einen BlickDer Ereignismonitor unterscheidet zwischen folgenden Ereignissen:

Symbol Ereignistyp Bedeutung

Datenbyte Datenbyte an Port A empfangen

Datenbyte Datenbyte an Port B empfangen

Pegelwechsel Eine Änderung des Pegels auf einer beliebigen Lei-tung. Schließt Pegelwechsel auf den Datenleitun-gen mit ein.

Framing Empfangenes Datenbyte mit Framing Fehler

70

Page 81: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

12.2. DURCH EREIGNISLISTE NAVIGIEREN

Parity Empfangenes Datenbyte mit Parity Fehler

Break Break erkannt

Die eingerückten Fehlersymbole treten nie einzeln sondern immer mit einemDatenbyte auf. Schließlich handelt es sich hierbei um Fehler bei der Daten-übertragung.Änderungen der Pegel auf einer Datenleitung (TxD oder RxD) lösen ebenfallsPegelereignisse aus, gefolgt von einem Datenereignis, sobald alle Datenbitsvollständig übertragen wurden.

Pegelwechsel der DatenleitungenSollten Sie keine Pegelwechsel der Leitungen TxD und RxD sehen, dannmüssen Sie diese im Kontrollprogramm noch aktivieren.

12.2 Durch Ereignisliste navigierenDer Ereignismonitor bietet neben den üblichen Scroll Möglichkeiten per Maus,

Gehe zu Ereignisabsolut, schrittweise odermit Zeitangabe

Mausrad, Scrollbalken oder den Pfeil und ’Bild auf/ab’ Tasten das gezielteSpringen von einem Ereignis zum nächsten bzw. vorherigen Ereignis gleichenTyps.Klicken Sie dazu auf das gewünschte Ereignis und drücken Sie dann die Strg-Taste in Verbindung mit den Pfeil nach unten bzw. Pfeil nach oben Tasten. Aufdiese Weise navigieren Sie z.B. einfach von Break zu Break oder von Daten-byte zu Datenbyte.Bei längeren Aufzeichnungen können Sie auch gezielt Bereiche ab einem be-stimmten Ereignis oder ab einer bestimmten Zeitmarke einblenden. Letztereerwartet die Eingabe eines Zeitoffsets in Sekunden seit Beginn der Aufzeich-nung.Die Angabe einer Ereignisnummer erlaubt Ihnen dagegen entweder absolutein ganz bestimmtes Ereignis anzuspringen, oder aber in definierten Schrittenzum aktuellen Ereignis durch die Aufzeichnung zu navigieren. Beispielsweisealle 1000 Ereignisse vor oder zurück.

12.3 Ereignissuche mit dem LevelfinderDas Finden von ganz bestimmten Ereignissequenzen ist eine der herausra-

Levelfindersucht Pegelwechsel,Fehler und Zeitabständezwischen Ereignissen

genden Eigenschaften des Ereignismonitors. Im Gegensatz zum Datenmoni-tor ist die Suche hier nicht auf bestimmte Datensequenzen beschränkt (für dieder Datenmonitor die bessere Alternative ist), sondern vielmehr gezielt auf diephysikalische Änderungen der einzelnen Leitungen abgestimmt. Was heißt dasgenau?Mit dem Ereignismonitor können Sie die Änderung und/oder den Zustand be-liebiger Leitungen vorgeben, nach welchem Sie die bis dahin aufgenommeneEreignisaufzeichnung durchsuchen wollen. Dabei können Sie die Suche mitdem Auftreffen eines bestimmten Datenbytes bzw. einer Reihe gesetzter Bitsin einem Datenbyte, oder einem asynchronen Ereignis (break, framing oderparity Fehler), verknüpfen. Klicken Sie auf das ’Lupen Symbol’ in der Werk-zeugleiste oder drücken Sie Strg-F um den Suchdialog zu öffnen.

71

Page 82: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 12. DER EREIGNISMONITOR

Suchmuster eingebenDas Suchmuster kann beliebig kompliziert sein. Der integrierte LevelFindernimmt deshalb die Sucheingabe in Form logischer Ausdrücke entgegen, wo-bei jeder Ausdruck aus einer oder mehreren Bedingungen besteht, die AND(und) oder OR (oder) verknüpft sein können.

Verknüpfung: Bedingung1 Bedingung2 ... BedingungN

Bespielsweise:

AND: RTS=on CTS=off

Die Formulierung der einzelnen Bedingungen entspricht dabei der intuitivenFragestellung bei der Suche nach bestimmten Zuständen. Im vorangegangen-en Beispiel: Suche Stelle der Aufzeichnung, an der RTS ein UND CTS aus ist.Jede Bedingung besteht aus einem Ziel (auf welches die Bedingung ange-wandt werden soll) und einer Zustandsbeschreibung. Also:

Ziel=Zustand

Ziel ist entweder eine einzelne Signalleitung, angegeben durch ihren jeweiligen(auch Benutzer definierten) Namen, oder eine Datenquelle A bzw. B.Zustand definiert den Zustand, den das Ziel bei der Suche einnehmen muß.Im Falle einer Signalleitung sind das die drei möglichen Pegelzustände on, offund invalid. Ist das Ziel eine Datenquelle, sind mögliche Zustände ein exakterDatenwert, ein Bitmuster oder ein Fehler.

Korrektes Formulieren einer BedingungBedingungen dürfen keine Leerzeichen enthalten. Beachten Sie außerdem,daß die Bezeichnungen ’A’ und ’B’ reserviert sind und deshalb nicht als Si-gnalnamen verwendet werden dürfen.

Formulierung eines PegelzustandesPegelzustände können für jede der acht RS232 Leitungen definiert werden.Dies schließt die Datenleitungen RxD und TxD explizit mit ein. Nicht angege-bene Signale werden bei der Suche einfach ignoriert.

Eingabe Beschreibung1, on, high, mark, -V Signalpegel ist logisch eins, was einem physika-

lischen Spannungspegel von < -5V (gemessen ander RS232 Leitung) entspricht. Alle aufgeführtenZustandsbeschreibungen sind dabei absolut gleich-wertig, d.h. RTS=on ist gleichbedeutend mit RTS=1oder RTS=high.

0, off, low, space, +V Signalpegel ist logisch null, was einem physikali-schen Spannungspegel von >+5V (gemessen ander RS232 Leitung) entspricht. Alle aufgeführtenZustandsbeschreibungen sind dabei absolut gleich-wertig, d.h. RTS=off ist gleichbedeutend mit RTS=0oder RTS=low.

72

Page 83: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

12.3. EREIGNISSUCHE MIT DEM LEVELFINDER

none, invalid, 0V Signalpegel ist ungültig. Dies entspricht einem phy-sikalischen Spannungspegel von -3V...+3V (gemäßder RS232 Definition) gemessen an der RS232 Lei-tung. Die Formulierung eines ungültigen Pegels er-folgt damit als: RTS=none oder RTS=invalid bzw.RTS=0V.

Formulierung eines Datenfehlers

Datenfehler treten nur in Verbindung mit einer Datenquelle auf. Als Ziel mußdeshalb A oder B eingesetzt werden.

Eingabe Beschreibungbreak, frame, parity Datum an Datenleitung A oder B ist ein Break oder

weist einen Frame bzw. Parity Fehler auf. ParityFehler werden mit A=parity oder B=parity gefunden.

Formulierung eines Datenwerts

Jede der Datenquellen A und B (d.h. die an Port A bzw. an Port B aufgezeich-neten Daten) können wahlweise auf Gleichheit oder auf gesetzte Bits geprüftwerden. Letzteres ist sinnvoll, wenn bestimmte Bitkombinationen in den Datennicht vorkommen dürfen bzw. einen durch das Protokoll definierten Zweck er-füllen.Beliebige Daten werden mit dem * Symbol gekennzeichnet.Der LevelFinder stellt vier Arten von Eingabemöglichkeiten zur Verfügung.

Eingabe BeschreibungA=*, B=* Jedes Datenereignis (A oder B) liefert einen Treffer,

der Datenwert ist unerheblich. Sinnvoll, wenn nacheinem beliebigen Datum gesucht wird.

A=’x’, B=’x’ Prüft das Ziel (A oder B) auf Gleichheit mit dem inHochkommas gesetzten Zeichen. Eine Suche nacheinem an Port A empfangenen Fragezeichen wirdformuliert mit: A=’?’.

A=$xx, B=$xx Prüft das Ziel (A oder B) auf Gleichheit mit demhexadezimal angegebenen Zeichen. Eine Suchenach einem an Port A empfangenen Fragezeichenwird hier formuliert mit: A=$3f bzw. A=$3F

A=~xxxxxxxx,B=~xxxxxxxx

Prüft das Ziel (A oder B) auf die in xxxxxxxx ange-benen gesetzten Bits. Dabei wird das Bitmuster mitden Datum UND verknüpft und anschliessend aufGleichheit geprüft. Um ein Zeichen mit einem ge-setzten Bit 7 (gezählt von 0) an Port B zu finden,geben Sie B=~10000000 ein.

73

Page 84: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 12. DER EREIGNISMONITOR

Sucheingabe und Suche

Beispielprojektim Verzeichnisexamples/EventView

Bevor Sie beginnen, öffnen Sie im Kontrollprogramm das Beispielprojektlevelfinder232.msbprj im Verzeichnis examples/EventView. Sie ent-hält eine Reihe von Datenfehlern sowie diverse Kombinationen von Pegelwech-sel, nach denen wir im Anschluß suchen werden.

Suche nach einem Parity Fehler an Port A

Levelfinder Dialog öffnen per Strg + FTextfeld anklicken und » A=parity « eingebenStartknopf des Dialogs klickenDen Knopf Mehr klicken um das nächsten Break zu suchenDen Knopf Zurück klicken um zum letzten Treffer zurückzukehren

Der sichtbare Ausschnitt des Ereignismonitors wechselt bei jedem Treffer diePosition und zeigt das gefundene Ereignis als grau hinterlegte Zeile an.

Suche nach einem Parity Fehler an Port A oder Port B

Textfeld anklicken und » OR: A=parity B=parity « eingeben

Suche Parity Fehler an Port B mit DTR high

Textfeld anklicken und » AND: B=parity DTR=high « eingeben

Das war einfach. Verkomplizieren wir die Suche ein wenig und suchen nach:

Suche nach RxD und TxD low sowie DTR, RTS, CTS alle high

Textfeld anklicken und » AND: RxD=0 TxD=0 DTR=1 RTS=1 CTS=1 « ein-gebenDen Knopf Mehr klicken um die nächsten Treffer zu finden

Sie können alle Pegelzustände, Daten und/oder Datenfehler beliebig kombi-nieren. Nicht möglich ist die Kombination verschiedener Verknüpfungsarten in-nerhalb eines Suchausdruckes. D.h. das Mischen von AND und OR Verknüp-fungen. Wir werden jedoch sehen, daß AND und OR in aufeinander folgendenAusdrücken durchaus erlaubt sind. Sequenzen von verschiedenen Suchaus-drücken werden bei der Suche nach Signaländerungen verwendet. Z.B. dieSuche nach einem Wechsel der CTS Leitung bei gleichzeitig aktiver RTS Lei-tung.

Suche nach SignaländerungenÄnderungen werden beschrieben durch zwei (oder mehrere) aufeinander fol-

Pegelwechsel gesucht?Kein Problem mit demintegrierten LevelFinder.

gende Suchausdrücke, die jeweils den Leitungsstatus vor und nach dem Si-gnalwechsel definieren. Insofern erweitern wir die bisherigen Sucheingabenum die Möglichkeit, mehrere in jeweils getrennten Zeilen einzugeben. Dabei istes auch möglich, die logische Verknüpfung zu variieren.Betrachten Sie dazu neben stehendes Bild. Von Interesse sind die SignaleDTR, RTS und CTS, wobei wir den in der idealisierten Zoomansicht dargestell-te Signalwechsel suchen wollen.Insgesamt handelt es sich um drei Zustände, die nacheinander eintreffen müs-sen.

74

Page 85: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

12.3. EREIGNISSUCHE MIT DEM LEVELFINDER

1 DTR=off RTS=off CTS=off2 DTR=on RTS=off CTS=off3 DTR=on RTS=on CTS=on

Der LevelFinderFindet Datenbytes, Fehlerund Pegelwechsel inkl.Zeitmessung.

In jedem Zustand müssen alle drei Signalpegel erfüllt sein, d.h. für jeden ein-zelnen Suchausdruck gilt die AND (und) Verknüpfung.Geben Sie jeden Ausdruck in einer eigenen Zeile im Textfeld des LevelFindersein. Da die AND Verknüpfung die Voreinstellung ist, können Sie diese auchweglassen und die Zeilen exakt wie oben übernehmen. (Statt DTR=off könnenSie auch DTR=0 schreiben).

Falsche Eingabe, was dann?Sollten Sie bei der Eingabe einen syntaktischen Fehler machen, z.B. einenfalschen Signalnamen oder ein ungültiges Zeichen, quittiert dies der Level-Finder mit einem leicht gelb hinterlegten Textfeld, sobald Sie die Suche star-ten.

Sie können die Suchbedingungen beliebig kombinieren. Z.B. Suchen nach ei-nem bestimmten Datenbyte bei gleichzeitig aktiver DTR Leitung, oder belie-biges Datenbyte an Port A gefolgt von einem Wechsel der CTS Leitung. DerAnzahl von Suchausdrücken sind prinzipiell keine Grenzen gesetzt. Nicht destotrotz kostet jede einzelne Bedingung und jeder einzelne Ausdruck zusätzlicheRechenzeit und verlangsamt dadurch die Suche.Der Suchmechanismus läuft parallel zur Anwendung und kann jederzeit durchKlicken auf den Abbruch Knopf beendet werden. Auch während einer evtl. län-ger dauernden Suche können Sie den Ereignismonitor normal bedienen.Der LevelFinder speichert den aktuellen Suchausdruck automatisch. Dies giltauch, wenn Sie den Ereignismonitor schliessen oder die komplette Sitzung be-enden.

Suche ab bestimmter Position startenKlicken Sie mit der Maus auf die Zeile, ab der die Suche beginnen soll undaktivieren Sie im LevelFinder Starte Suche von Cursor Position.

Suchen mit ZeitvorgabenAls besonderes Feature bietet der LevelFinder eine integrierte Stopuhr, diein jedem Suchausdruck gestartet und in den folgenden Ausdrücken abgefragtwerden kann. Damit ist es möglich, gezielt nach Pegelzuständen zu suchen,die nur eine bestimmte Zeit existieren. Beispielsweise ein Low Pegel des RTSSignals mit einer Dauer kleiner als 0.3s.

Pegeldauer?Suche mit der Stopuhr1 RTS=on

2 RTS=off watch.start3 RTS=on watch.time<0.3

Beachten Sie, das alle Bedingungen innerhalb eines Ausdruckes per Vorein-stellung AND (und) verknüpft sind. In Zeile 2 wird der Wechsel des RTS Signalsvon einem High Pegel auf Low definiert und gleichzeitig eine Stopuhr (watch)

75

Page 86: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 12. DER EREIGNISMONITOR

gestartet. (Genau genommen wird die Startzeit der Uhr mit der Zeit des aufge-tretenen Ereignisses, dem Wechsel von RTS auf Low, initiiert.)In der dritten Zeile wird nun der Wechsel des RTS Signals zurück auf einenHigh Pegel mit einer Zeitdauer kleiner als 0.3s AND verknüpft. Positive RTSSignalflanken, die später als 0.3s erfolgen, werden dadurch ignoriert.

12.4 Eine Auswahl markieren und speichernBestimmte Funktionen des Ereignismonitors wie z.B. die Speicherung von Er-eignissen als eigenständige Aufzeichnungsdatei, der Export im CSV Formatzur späteren Bearbeitung durch externe Programme oder aber als Region be-ziehen sich immer auf eine zuvor definierte Auswahl.Die Auswahl beliebiger Ereignissequenzen entspricht dem üblichen Vorgehenanderer Programm. Links-Klicken Sie die erste zur Auswahl gehörende Zeilein der Listendarstellung. Anschliessend scrollen Sie per Mausrad oder Scroll-balken durch die Aufzeichnung bis zum gewünschten letzten Ereignis der Aus-wahl. Dieses Links-Klicken Sie bei gleichzeitiger gedrückter Umschalt-Taste.Um zum letzten Ereignis Ihrer Auswahl zu gelangen können Sie auch denLevelFinder oder Gehe-zu Dialog verwenden. Wichtig ist nur, daß Sie das letz-te Ereignis mit gleichzeitig gedrückter Umschalt-Taste anklicken.Beachten Sie, daß immer nur zusammenhängende Bereiche ausgewählt wer-den können, nicht beliebige einzelne Ereignisse.Mit Date→Speichere Auswahl unter... können Sie eine Auswahl alseigene Aufzeichnungsdatei *.msblog sichern um diese später gezielt mit derSoftware zu analysieren. Auf diese Weise lassen sich gerade bei sehr großenDatenmengen die von eigentlichem Interesse befindlichen Abschnitte extra-hieren.

Eine Auswahl als Region speichernEine Region dient zur Kennzeichnung bestimmter Abschnitte in der Aufzeich-nung, die von besonderem Interesse sind. Im Gegensatz zu einer Auswahlgelten Regionen für alle aktiven Analysetools. Sobald eine Auswahl als Regionhinzugefügt wird, ist diese für alle Analysefenster sichtbar.Regionen werden im Ereignismonitor als verschieden farbige Bereiche darge-stellt und bleiben unabhängig vom Ereignismonitor bestehen solange sie nichtexplizit gelöscht werden.Um eine Auswahl als Region zu speichern drücken Sie einfach die F4 Taste,

Farbige Regionenheben besondereAbschnitte hervor

oder klicken Sie unter Bearbeiten→Auswahl in Region kopieren. Esstehen maximal acht Regionen zur Verfügung. Unter Ansicht→RegionenDialog anzeigen können Sie jederzeit vorhandene Regionen ein/ausge-blenden oder wieder entfernen.Regionen sind Teil der Aufzeichnung und werden als solche beim Speichern inder Aufzeichnungsdatei *.msblog mit gesichert.

Eine Auswahl als CSV Datei exportierenDer Ereignismonitor erlaubt Ihnen, eine beliebige Auswahl der aufgezeichne-ten Ereignisse als Komma getrennte Liste (CSV - Comma Separate Values)abzuspeichern. Sie werden von dieser Möglichkeit Gebrauch machen, wennSie Ereignisse in ein Tabellenkalkulations Programm wie z.B. Microsoft Excel,Gnumeric oder Open Office Calc importieren wollen.

76

Page 87: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

12.4. EINE AUSWAHL MARKIEREN UND SPEICHERN

An dieser Stelle werden Sie vielleicht die Frage einwerfen: Warum sollte ich

DatenexportSpeichern als CSV fürexterne Bearbeitung

die aufgezeichneten Ereignisse in Excel (oder andere Programme) importierenwollen?Angenommen, Sie wollen die Ereignisse nach den größten Pausen zwischenzwei gesendeten Datenbytes sortieren. Oder aber, Sie wollen einfach eine Sta-tistik der Ereignisse (oder Daten) erstellen. Anforderungen dieser Art sind dieDomäne der Tabellenkalkulations Programme. Der Ereignismonitor gibt Ihnendie Möglichkeit, diese auch zu nutzen.Markieren Sie zunächst eine Auswahl der von Ihnen zu exportierenden Ereig-nisse. Mit Strg + A können Sie auch alle bis dato aufgezeichneten Ereignisseauswählen.Klicken Sie anschliessend im Menü Datei den Eintrag ’Exportiere als CVS’.

In dem sich öffnenden Exportdialog können Sie aus der linken Liste der verfüg-baren Werte einen beliebigen Wert auswählen indem Sie ihn einfach anklickenund anschliessend mit dem ’Pfeil nach rechts’ Knopf in die Liste der zu expor-tierenden Werte verschieben. Wiederholen Sie dies einfach mit allen von Ihnenbenötigten Werten.Um die Reihenfolge der exportierenden Werte zu ändern klicken Sie auf denzu verschiebenden Wert (in der Liste der exportierenden Werte) und bewegenihn, mit dem ’Pfeil nach oben’ bzw. ’Pfeil nach unten’ Knopf in die gewünschteRichtung.Entsprechend können Sie einen in der Exportliste markierten Eintrag mit dem’Pfeil nach links’ Knopf wieder entfernen, d.h. er wird wieder in die Auswahllistezurück gelegt.Abschliessend geben Sie einen Dateinamen ein, unter welchem die Export-datei gespeichert werden soll und klicken den ’OK’ Knopf um den Export zustarten.

Die Liste der exportierbaren Ereignisse umfaßt folgende Werte:

Bezeichnung BeschreibungNummer Ereignisnummer, beginnend bei 0

Ereignistyp Die folgenden Typen sind definiert: A=Daten an Port A,B=Daten an Port B, L=Leitungsänderung.

Zeit(s) Zeitpunkt des Ereignisses als Offset zum Aufzeich-nungsbeginn in Sekunden mit Mikrosekunden Genau-igkeit.

Daten Der Dezimalwert eines Datenereignisses (9bit) im Be-reich (0...511).

Daten/Status Enthält entweder das Datenbyte (9 Bit) oder den Tri-State Zustand jeder einzelnen Leitung⇒1

Fehler Datenübertragungsfehler, enthält im Fehlerfall ein B(Break), F (Frame) oder P (Parity).

dt gleichen Typs Zeitdifferenz zum vorherigen Ereignis des gleichenTyps in Sekunden, z.B. 0.251518.

77

Page 88: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 12. DER EREIGNISMONITOR

dt zuletzt Zeitdifferenz in Sekunden zum letzten aufgetretenenEreignis, d.h. zur letzten aufgezeichneten Änderung inder Leitung, z.B. 0.000217.

Datum Zeit Absolutes Datum, Zeit und Mikrosekunden des Ereig-nisses, z.B.: 2014-08-20 09:49:31+148762s.

Änderung Ausgabe der Veränderungen verglichen zum letztenEreignis, wie in der Splate Veränderung dargestellt..

Signalpegel Ausgabe der Veränderungen/Zustände aller Leitungenwie im Ereignismonitor angezeigt. Die grafische Dar-stellung der Pegelwechsel wird dabei in einer ent-sprechende Textsymbolik dargestellt.⇒2

*DCD,*RxD,*TxD,... Exportiert den Tri-State Pegel des entsprechenden Si-gnals als eine nummer -1, 0, +1. Das führende ’*’ dientzur Unterscheidung eines Signalnamens von anderenFeldnamen.-1 entspricht -12V bzw. mark oder ’logisch 1’0 ist ein ungültiger bzw. inaktiver Leitungszustand+1 entspricht +12V bzw. space oder ’logisch 0’⇒3

[1] DatenstatusDer Inhalt dieses Feldes ist abhängig vom Datentyp. Handelt es sich um einübertragenes Datenbyte enthält es in den unteren 9 Bit den Wert des aufge-zeichneten Datenbytes. Die oberen 7 Bits sind 0.

Bit Unused Data Byte Bit

15 8 7 0

Im Falle einer aufgezeichneten Leitungsänderung enthalten die oberen 8 Bitden ’logischen’ Zustand der jeweiligen Leitung. Die unteren 8 Bit repräsentie-ren den Gültigkeitszustand der einzelnen Leitungen. Ist er ’0’, befindet sich dieLeitung in einem ’ungültigen’ Zustand, dies entspricht einem Pegel zwischen-0.3V...+0.3V.

Bit15

Line State Bit8

Bit7

Valid State Bit0

RI RTS CTS DTR DSR RxD TxD DCD RI RTS CTS DTR DSR RxD TxD DCD

Pin9 Pin8 Pin7 Pin6 Pin4 Pin3 Pin2 Pin1 Pin9 Pin8 Pin7 Pin6 Pin4 Pin3 Pin2 Pin1

[2] Textsymbolik der PegelzuständeGesendete Daten und Leitungsstatus sind zwei verschiedene Informationenund bestehen aus einer unterschiedlichen Anzahl von Feldern. Daten werdenals Hexwert und mit entsprechender ASCII bzw. Kontrolbezeichnung darge-stellt, während die Leitungen aus acht einzelnen Status bzw. Übergangsse-quenzen gelistet sind.Um die für einen CSV Export gleiche Anzahl von Spalten zu erreichen, sind so-wohl die Daten als auch die Zustände aller Leitungen innerhalb zweier "..." zu-sammengefasst. Der Zustand bzw. Zustandswechsel einer Leitung wird durch

78

Page 89: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

12.5. ZEITABSTÄNDE MESSEN

folgende Zeichen beschrieben.

^ : High Pegel- : Ungültiger Pegelv : Low Pegel

Eine Abfolge von -v beschreibt einen Wechsel von invalid zu low level, wäh-rend ein Pegelwechsel von high auf low mit ^v signalisiert wird. NachfolgenderAuszug soll dies verdeutlichen:

"Nummer","Ereignistyp","Zeit(s)","Signalpegel"0,L,17.359117,"-vCH1,-^CH2,-^CH3,-vCH4,-vBDIR,-^BSIG,-^IO1,--IO2",1,L,18.408774,"vvCH1,^^CH2,^^CH3,vvCH4,vvBDIR,^vBSIG,^^IO1,--IO2",2,L,18.408911,"vvCH1,^^CH2,^vCH3,vvCH4,vvBDIR,vvBSIG,^^IO1,--IO2",3,L,18.409014,"vvCH1,^^CH2,v^CH3,vvCH4,vvBDIR,vvBSIG,^^IO1,--IO2",4,L,18.409118,"vvCH1,^^CH2,^vCH3,vvCH4,vvBDIR,vvBSIG,^^IO1,--IO2",5,L,18.409845,"vvCH1,^^CH2,v^CH3,vvCH4,vvBDIR,vvBSIG,^^IO1,--IO2",6,A,18.410003,"-vCH1,-^CH2,-^CH3,-vCH4,-vBDIR,-vBSIG,-^IO1,--IO2",

[3] Signalnamen bei ExportBeachten Sie, daß die Leitungen nicht unbedingt die Standardbezeichnung ei-ner RS232 Verbindung haben müssen, da Sie jeder Leitung einen indviduellenNamen geben können, der dann an Stelle der hier verwendeten Vorgabe er-scheint. Siehe auch Signalnamen im Kontrollprogram.

12.5 Zeitabstände messenJedes Ereignis kann per Rechtsklick als Startzeit markiert werden. Rechts ne-ben dem Ereignistyp wird in diesem Fall ein Uhrensymbol eingeblendet undin der Statuszeile erscheint zu jeweiligen Cursorposition die Zeitdifferenz zumgegebenen Startereignis.Ein nochmaliger Rechtsklick auf das Startereignis entfernt die Markierung wie-der.

12.6 Die WerkzeugleisteDie Werkzeugleiste dient zum schnellen Zugriff der am meisten benötigtenFunktionen. Einige davon sind bei allen Views indentisch, andere spezifischfür den Ereignismonitor.

79

Page 90: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 12. DER EREIGNISMONITOR

A Ende: Speichert alle Einstellungen und schließt das Fenster

B Anzeigemodus: Je nach Anzeigemodus zeigt der Fensterinhalt immerdas aktuelle (zuletzt aufgenommene) Ereignis, ist verriegelt oder aktua-lisiert den Inhalt mit anderen Fenstern.

C Neue Ansicht: Öffnet ein neues Fenster mit dem gleichen Ausschnittund identischen Einstellungen.

D Ereignis abhängiges blättern: Springt zum vorherigen oder nächstenEreignis des gleichen Typs wie an der aktuellen Cursor Position.

E Ereignis Suche Öffnet den LevelFinder Dialog zur Ereignissuche.

F Gehe zu... Öffnet den Gehe zu... Dialog um sichtbaren Ausschnitt perEreignisnummer oder Zeitvorgabe zu wählen.

12.7 Kurzbefehle

Tastenkommandosder wichtigstenFunktionen

Aktion Kurzbefehl

Online Hilfe zum Ereignismonitor F1

Öffnet den Suchdialog des Levelfinders Strg + F

Gehe zu... Dialog öffnen Strg + G

Springe zu gesetztem Zeitmarker Strg + T

Alle Einträge (Ereignisse) auswählen Strg + A

Auswahl ausheben Strg + Umschalt + A

Auswahl als Region speichern F4

Springe zu vorherigem Ereignis gleichen Typs Strg + Pfeil nach oben

Springe zu nächstem Ereignis gleichen Typs Strg + Pfeil nach un-ten

80

Page 91: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13Der Protokollmonitor

Mit der Analyse von Protokollen betreten Sie die nächste Ebeneder Kommunikation. Die scheinbar willkürlich auftretenden Datenwerden nach Ihren Regeln geordnet und gruppiert.Ausgabefunktionen erlauben Ihnen dabei, die einzelnen Daten-sequenzen individuell zu formatieren und farblich darzustellen.

Neue Template API

ACHTUNG - Die Template Sprache wurde geändert!Der Protokollmonitor verwendet nun die Skriptsprache Lua zur Definition vonProtokoll-Templates und ist nicht länger kompatibel mit Templates der Version3.2 oder älter.

Sofern Sie noch eine ältere Version der Analyser Software (3.2.x) verwenden:Vergessen Sie alles über in={...}, aout={...} und bout={}. Der neueTemplate Mechanismus scheint auf den ersten Blick komplizierter im Vergleichzum bisherigen. Aber sobald Sie die Vorteile und Möglichkeiten, die Ihnen Luabietet, einmal kennen gelernt haben, werden Sie diese nicht mehr missen wol-len. Insbesondere wenn Ihre Telegramme die Korrektheit von Prüfsummen an-zeigen, Funktionsnamen anstelle von reinen Nummern darstellen und Gerä-tenamen statt nichtssagende Geräteadressen verwenden.

Der Austausch von Daten zwischen zwei oder mehreren Kommunikationspart-ner erfolgt i.a. nach einem definiertem Protokoll, welches das Format der über-tragenen Daten sowie deren Inhalt und Bedeutung festlegt. Die kleinste in sichgeschlossene Dateneinheit wird dabei als Telegramm oder Datagramm Data-gramm bezeichnet.Während der Datenmonitor die übertragenen Daten in der Reihenfolge ihresAuftretens und ohne jegliche Interpretation ihres Inhaltes anzeigt (was je nachUntersuchung seine Vorteile besitzt), betritt man mit der Analyse von Protokol-len und Datagrammen quasi die nächste Ebene der Kommunikation.

Der vom Analysator aufgenommene Datenstrom muss in einzelne Datense-quenzen oder Datagramme unterteilt und diese dann angezeigt werden. Daes keine festen Regeln zur Definition eines Datagrammes gibt, kommen in derPraxis die unterschiedlichsten Realisierungen vor. Sie reichen von einem ein-fachen End of String (EOS) Zeichen, Start (STX) und Ende (ETX) Markierun-gen, bis zur Verwendung von zeitlichen Pausen (Modbus-RTU, Profibus), Lauf-

81

Page 92: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

längenkodierung (RTL) und anderem.

Um die Interpretation oder Analyse der Kommunikation zu vereinfachen solltejedes Telegramm die in ihm übermittelten Informationen möglichst lesbar dar-stellen. Dies gilt u.a. für die Adresse (Bus Teilnehmer), Funktions-Code, dieDaten in den verschiedensten Formaten, Prüfsumme, Telegramm Begrenzerund anderes.

Es ist offensichtlich, das selbst eine breite Palette an vordefinierten ProtokollTemplates nicht alle Anforderungen erfüllen kann. Besonders dann, wenn dieAnalyser Software mit individuellen Protokolldefinitionen oder Vorgaben kon-frontiert wird. Der Protokollmonitor delegiert deshalb beides, die Auftrennungdes Datenstromes in einzelne Telegramme sowie die Benutzer spezifische Dar-stellung der Telegramme an eine integrierte Skriptsprache.Lua hat bereits im Datenmonitor seine herausragenden Fähigkeiten unter Be-weis gestellt. So ist es nur konsequent, diese Skriptsprache auch in den Dienstdes Protokollmonitors zu stellen.

Die bisherige Implementierung des Protokollmonitors (bis einschließlich Ver-sion 3.2.x) verwendete einen komplett anderen Ansatz der allerdings Bedin-gungen als Sprachmerkmal vermissen ließ. Diese sind aber essentiell wenndie einzelnen Daten eines Telegrammes in Abhängigkeit von Position, Tele-grammlänge oder dem Inhalt anderer Bytes behandelt werden müssen. Und:Dem bisherige Mechanismus mangelte es an der Möglichkeit eine Sequenzvon Bytes in andere Zahlenformate zu überführen. Zum Beispiel um zwei auf-einander folgende Datenbytes als Dezimalzahl zu interpretieren oder um einePrüfsumme zu validieren.

Lua bietet Ihnen die Möglichkeit, Protokoll Templates mit dem vollen Lua Sprach-umfang zu realisieren. Sie können eigene Prüfsummenfunktionen schreiben,(neben dem bereits vorhandenen Checksum Modul, welches die gängigstenAlgorithmen abdeckt), Funktionsnummern mit entsprechenden Namen erset-zen und Telegramme ausblenden die Sie nicht interessieren.Und all dies ist interaktiv während einer laufenden Aufzeichnung möglich. DieAufnahme selbst wird davon nicht beeinflusst. Ihre Modifikationen am Templatewerden direkt auf die Daten angewandt, das Resultat unmittelbar dargestellt.Wir werden das Schreiben von Templates später im Detail diskutieren. Zu-nächst wenden wir uns dem Protokollmonitor in Aktion zu.

13.1 User InterfaceUm Ihnen die Auswahl und Anpassung eines Protokolls an Ihre Anwendung soeinfach wie möglich zu machen, besitzt der Protokollmonitor neben der eigent-lichen Darstellung der Protokollsequenzen einen ein/ausklappbaren TemplateEditor mit Lua Syntax Highlighting und allem Komfort den Sie von einem gutenEditor erwarten. Die Eingabe der Templates erfolgt dabei interaktiv und wirktsich sofort auf die Darstellung der Aufzeichnung aus - auch während einer lau-fenden Aufnahme.

Diese Fähigkeit des Protokollmonitors, Sequenzen mittels der Skriptsprache

82

Page 93: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.1. USER INTERFACE

Lua zu definieren geht weit über eine fest vorgegebene Auswahlliste hinaus.Sie erfordert allerdings auch einen gewissen Lernprozess bezüglich der Sprach-syntax und ist bei trivialen Problem manchmal hinderlich.

Das User Interface des Protokollmonitors bieten Ihnen deshalb eine Kombi-nation aus beidem. Oft verwendete Templates, z.B. für Standardprotokolle wieModbus RTU, Modbus ASCII, Telegramme mit 9 Bit Adressen sowie verschie-dene Kombinationen von Carriage Return und Linefeed Zeichen oder Wechselder Datenrichtung, sind einfach per Liste abrufbar. Diese Templates sind un-veränderbar können aber mit einem einfachen Klick als Kopie zur Liste hinzu-gefügt und von Ihnen editiert werden. Das folgende Bild zeigt einen typischenAnwendungsfall.

Im oberen Teil des Protokollmonitors werden die vom Analyser aufgenomme-nen Daten gemäß der Definition des gewählten Templates dargestellt, in die-sem Fall eine Modbus-RTU Kommunikation. Jedem Telegramm ist optional dieTelegramm-Nummer sowie Zeitmarke (hier relativ zum Beginn der Aufzeich-nung) vorangestellt. Sie können allerdings jederzeit Ihr eigenes Datum- oderZeitformat definieren und die vorangestellten Informationen im Einstelldialog

83

Page 94: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

deaktivieren.

Der untere, hier aufgeklappte Teil beherbergt den Template Editor mit dem ak-tuell verwendeten Protokoll Template als Lua Skript. Wie bereits erwähnt ent-hält der Protokollmonitor eine Reihe von vordefinierten Templates für den allge-meinen Gebrauch. Die Auswahl oder der Wechsel eines Templates ist jederzeitmöglich, auch während der Aufnahme.

Durch einen einfachen Klick können Sie dieses Template übernehmen undnach Ihren Vorstellungen modifizieren ohne das Original zu verlieren.Anfänglich werden Sie vermutlich nur kleine Dinge verändern: Die Farbe derDaten, oder die Definition des Zeilenendes. Mit F5 oder einem Klick auf dasZahnradsymbol in der Werkzeugleiste wenden Sie ihre Änderungen direkt aufdie Daten an.Die vorgegebenen Templates bieten Ihnen einen einfachen Einstieg für eigeneEntwürfe. Dabei werden alle von Ihnen definierten Templates automatisch derListe hinzugefügt und gespeichert. (Siehe Abschnitt 13.3 ).

13.2 Protokoll DarstellungDer Protokollmonitor stellt jede Sequenz (oder jedes Datagramm) in einer ein-zelnen Zeile dar. Jedem Telegramm kann optional eine der folgenden Informa-tionen voran gestellt werden: Die Telegrammnummer, die Telegrammzeit (ab-solut und relativ zum Aufnahmestart), die Zeitlänge des Telegramms sowie derzeitliche Abstand zum vorherigen Telegramm. All dies kann jederzeit im Ein-stelldialog individuell geändert werden.

Datum/Zeitformat und IndexSie können jedem Telegramm zusätzliche Informationen voranstellen. DieAuswahl erfolgt unter Einstellungen→Protokollmonitor einrichten und ist un-abhängig vom verwendeten Template

Die vorangestellten Informationen geben gleichzeitig Auskunft über die Her-kunft des Telegramms, d.h. ob ein Telegramm an Port A (roter Text) oder Port B(blauer Text) empfangen wurde. In einer typischen Bus Applikation finden Sieüblicherweise die Telegramme mehrerer Teilnehmer an Port A, andere emp-fangen an Port B. Da Sequenzen nicht immer abwechselnd auftreten, wird je-de Sequenz getrennt nach der Datenrichtung nummeriert. Unvollständige Se-quenzen, d.h. Datagramme, deren Endebedingung noch nicht erfüllt ist, z.B.weil noch kein Endezeichen empfangen wurde, werden mit einer Interpunktion... hinter der Telegramm Nummer gekennzeichnet.Beachten Sie dass diese nur bei Anzeige der Telegramm Nummer angezeigtwird.

Synchronisierung der AnsichtAllen MultiView Programmen ist gemeinsam, dass Sie die Ansicht synchroni-sieren, sperren oder per Autoscroll die jeweils zuletzt aufgenommenen Datenanzeigen lassen können. Dies gilt auch für den Protokollmonitor. LinksklickenSie einfach das gewünschte Datagramm, um deren Ansicht bei anderen Viewseinzublenden. Das aktuelle Datagramm wird dabei hervorgehoben.

84

Page 95: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.3. PROTOKOLL TEMPLATES

Entsprechend reagiert die Protokollansicht auf eine Synchronisierung durchandere Views. Die Sequenz, die Teil der Synchronisierung ist, wird mit der ak-tuellen Zeilenauswahl versehen.

Bereich auswählenMit der Export oder Copy And Paste Funktion können Sie einen beliebigenAusschnitt des Protokolls in anderen Anwendungen weiter verarbeiten. Dazumüssen Sie lediglich den gewünschten Bereich markieren.Die Auswahl erfolgt analog der Dateiauswahl in Ihrem Betriebssystem. Platzie-ren Sie den Cursor per Linksklick auf der ersten Zeile des auszuwählendenAbschnittes. Anschließend verschieben Sie den sichtbaren Ausschnitt bis zumEnde des gewünschten Bereichs und markieren das Ende der Auswahl miteinem Linksklick bei gleichzeitig gedrückter Umschalt Taste. Der Bereich wirddaraufhin grau hinterlegt.Alle Zeilen markiert die Tastenkombination Strg+A.

13.3 Protokoll TemplatesDer Protokollmonitor enthält eine Liste vordefinierter Templates zur Darstel-lung einfacher Protokolle. Durch Klicken auf den Auswahlknopf der TemplateToolbar können Sie jederzeit ein anderes Template wählen.

Template ToolbarEditor inaktiv

Die sich öffnende Liste enthält alle verfügbaren Templates. Die Anpassung derProtokoll Darstellung erfolgt unmittelbar nach Auswahl eines Listeneintrages.Zu Beginn zeigt die Liste nur die bereits vordefinierten Templates die mit derSoftware ausgeliefert werden. Da sie gleichzeitig als Vorlage für Ihre eigenenTemplate Definitionen dienen, können sie weder gelöscht noch verändert wer-den.

Eigene Templates definierenBei der Handhabung der Templates verfolgt der Protokollmonitor eine doppelteStrategie. Zum einen bietet er eine Liste vorgefertigter Templates, zum ande-ren soll die Anpassung an eigene Anwendungen so einfach wie möglich sein.Um ein Template zu verändern oder ein neues zu erstellen müssen Sie zuerstdas Template aus der Liste auswählen, welches Ihnen als Vorlage für Ihre ei-genen Modifikationen dienen soll.Anschließend öffnen Sie den Template Editor durch Klick auf den Button ’ÖffneTemplate Editor’ oder drücken Sie einfach Strg+T.

Neues Templateeinfach durch Copy oderÄnderung eines bereitsvorhandenen Templates.

Template anwendenMit Taste F5.

Im nächsten Schritt kopieren Sie das Template per Klick auf den nun aktiven[+] Knopf in der Template Toolbar. Der Protokollmonitor fordert Sie auf, einensinnvollen Namen für das neue Template einzugeben. Unter diesem wird dasTemplate später in der Auswahlliste erscheinen. Bei einem bereits vorhande-nen Namen bekommen Sie eine Warnung, dass Sie gerade dabei sind, einexistierendes Template zu überschreiben.

85

Page 96: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

Das so erzeugte Template kann nun im Editor Fenster beliebig modifiziert wer-den. Mit F5 oder Klick auf das Zahnrad Symbol der Toolbar wird die TemplateDefinition auf die Daten angewendet.Sollte das Template einen Fehler aufweisen, wird eine entsprechende Meldungin der Statuszeile eingeblendet.

Vorhandenes Template modifizierenWie bereits erwähnt sind die mitgelieferten Templates gegen Änderung undLöschen geschützt. Deshalb ist dies nur für Ihre eigenen Templates erlaubt.Wählen Sie einfach das gewünschte (eigene) Template aus der Liste aus undführen Sie die gewünschten Modifikationen durch. Die Änderungen werden au-tomatisch gespeichert und gehen nicht verloren, auch wenn Sie zwischendurchein anderes Template aus der Liste auswählen.

Template anwendenBeachten Sie, das eine Änderung der ’Aufteilungs-Regel’ eine kompletteNeuinterpretation der aufgenommenen Daten erfordert und in Abhängigkeitvon der Größe der Aufzeichnung etwas länger dauern kann. Eine Verände-rung der eigentlichen Telegramm Darstellung wirkt sich dagegen nur auf diegerade angezeigten Telegramme aus und ist unmittelbar sichtbar.

Template Dateien und wo sie abgelegt werdenDer Protokollmonitor verwendet zwei vorgegebene Verzeichnisse unter wel-chen er die Template Dateien speichert. Alle mit der Software kommendenvordefinierten Templates stehen im Ordner Scripts/ProtocolView des In-stallationsverzeichnis und sind schreibgeschützt.Die eigenen Templates werden (wie alle anderen Programm- und Sitzungsein-stellungen) individuell für jeden Benutzer in einem speziellen Applikationsver-zeichnis abgelegt. Linux Anwender finden dies wie üblich in Ihrem home/usernameVerzeichnis unter:

/home/username/.IFTOOLS/SerialAnalyzer/Scripts/ProtocolView

Unter Windows ist es das Verzeichnis:

C:\Users\username\AppData\Local\IFTOOLS\SerialAnalyzer\Scripts\ProtocolView

Jedesmal wenn Sie einen Protokollmonitor starten durchsucht dieser als erstesden Skript Ordner im Installationsverzeichnis. Danach erfolgt die Durchmuste-rung von *.msbtml Dateien im Benutzer spezifischen IFTOOLS Anwendungs-verzeichnis. Alle gefundenen Templates werden anschließend alphabetisch imAuswahlmenü aufgelistet.Sie können natürlich Templatedateien manuell (bzw. mit dem Dateibrowser) indem zweiten Verzeichnis entfernen oder hinzufügen. Wir empfehlen aber dafürdie [+] und [-] Knöpfe in der Template Toolbar zu verwenden.Nichtsdestotrotz ist es manchmal sinnvoll Template Dateien direkt zu verwal-ten. Z.B. wenn Sie ein oder mehrere Templates mit anderen Anwendern teilenoder diese auf einen anderen Computer übertragen möchten.

86

Page 97: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

Der Template DateimanagerDer Protokollmonitor enthält einen einfachen Dateidialog um Ihre Templates zuverwalten. Mit diesem können Sie Templates importieren, exportieren, umbe-nennen und löschen. Der Template Manager erlaubt diese Operationen nur mitTemplate Dateien (*.msbtml) und schützt Sie so vor unerlaubten anderen Din-gen.Sie können den Dateimanager aus dem Dateimenü heraus öffnen oder einfachdurch Drücken der Tastenkombination Strg+M.

Import und Export von TemplatesEin neues Template importieren Sie, indem Sie es per Drag and Drop in dengeöffneten Template Manager ziehen. Genauso einfach können Sie ein vor-handenes Template exportieren oder speichern, indem Sie es aus dem Ma-nagerdialog zu einem anderen Ort ’ziehen’. Importierte Templates erscheinenanschließend automatisch in der Auswahlliste.

Template umbenennen oder löschenUm eine im Template Manager angezeigte Datei neu zu benennen wählen Siediese zunächst mit einem einfachen Linksklick aus. Anschließend linksklickenSie den Dateinamen. Ändern Sie den Namen und beenden Sie die Eingabemit Enter bzw. einem Linksklick außerhalb des Eingabefeldes. Der Dateimana-ger zeigt Ihnen eine Warnung wenn der Name bereits verwendet wird. Er sorgtzudem dafür, dass der neue Dateiname eine korrekte Endung enthält.Um ein Template zu löschen wählen Sie es zuerst aus und drücken dann dieEntf Taste Ihrer Tastatur.Beachten Sie! Das Umbenennen oder Löschen des aktuell verwendeten Tem-plates ist aus naheliegenden Gründen nicht möglich. Der Template Managerweist Sie jedesmal mit einer kleinen Meldung darauf hin, wenn Sie es trotzdemversuchen.Sobald Sie den Dateimanager schließen wird die Auswahlliste gemäß allenÄnderungen in Ihrem Template Portfolie aktualisiert.

Template direkt öffnenSie können ein Template auch direkt öffnen ohne es erst zu importieren unddanach aus der Liste auszuwählen. Ziehen Sie das Template einfach (z.B. vonIhrem Desktop) in den geöffneten Template Editor. Der Protokollmonitor ersetztdas aktuelle Template mit dem neuen und wendet es automatisch auf die auf-genommenen Daten an. Er warnt Sie zudem wenn ein Template mit gleichemNamen bereits existiert.

13.4 Template SprachsyntaxJedes Protokoll Template (Datei bzw. Skript) muss mindestens zwei Funktionenbereitstellen. Die Erste extrahiert aus den eintreffenden oder aufgenommenenDaten die einzelnen Datagramme bzw. Telegramme. Diese enthält den Codeder nötig ist, um zu entscheiden wann ein Telegramm beginnt und wann esendet.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

87

Page 98: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

in andere Zahlenformate umwandeln, die Prüfsumme validieren oder einzelneBereiche 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 Telegramme2 Individuelle Anzeige der Telegramme

Aufsplitten des Datenstroms in einzelne TelegrammeBei 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 Returnund/oder einem Linefeed, oder wenn ein Wechsel in der Datenrichtung auftrat.Aber oftmals ist die reale Welt komplizierter. Denken Sie an binäre Protokollemit definierten Zeitpausen zwischen den einzelnen Telegrammen wie ModbusRTU, Profibus oder ähnliche.

Der Protokollmonitor behandelt die komplette Auftrennung in der Funktion splitwie 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 ta tes3 return STATE4 end

Diese Funktion wird jedesmal aufgerufen wenn ein neues Datenbyte aufge-nommen oder aus einer vorhandenen Aufzeichnung gelesen wird und musseinen der folgenden Zustände zurückgeben:

1 STARTED→ Ein neues Telegramm beginnt2 MODIFIED→ Das neue Byte ändert nichts außer die Telegrammlänge3 COMPLETED→ Das Telegram ist komplett4 REMOVED→ Entfernt das aktuelle Telegramm zu Filterzwecken5 MARKED→ Vormerken des aktuellen Bytes für späteren Telegrammstart

Es wird schnell klar, das die Auswertung nur des aktuellen Datenbytes nichtausreicht 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 einemZeichen. Oder: Ein Telegramm spezifiziert durch ein bestimmtes Start- UNDEndezeichen.Dies ist der Grund, warum die split mit zusätzlichen Parametern aufgerufenwird. Diese sind:

1 data→ Das aktuelle Datenbyte (bis zu 9 Bits)2 interval → (kurz intval), die Zeitdifferenz zum letzten Byte in Sekunden (mit

Mikrosekunden Auflösung)3 alternation→ (kurz alter), wahr wenn sich die Datenrichtung geändert hat

88

Page 99: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

4 string→ (kurz str), alle bisher im aktuellen Telegramm empfangenen Bytes alsString

5 filter→ Die aktuelle Auswahl in der Toolbar Filtereingabe

Sie können die einzelnen Parameter umbenennen sofern eine andere Bezeich-nung für Sie mehr Sinn ergibt. Sie dürfen allerdings nicht die Reihenfolge än-dern. Erlaubt ist, unnötige Parameter vom der rechten Seite ab wegfallen zulassen ohne das dabei Lücken entstehen.

Kompliziert? Sehen wir uns einige Beispiele an. Stellen Sie sich ein einfachesProtokoll vor, in welchem jedes Telegramm durch ein Linefeed abgeschlossenwird.

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f # s t r == 1 then return STARTED end3 i f data == 10 then return COMPLETED end4 return MODIFIED5 end

Der Filter-Parameter wird nicht benötigt und wir können ihn deshalb weglassen(Zeile 1).Unser Beispiel verwendet kein spezielles Startkriterium. Mit anderen Worten:Ein neues Telegramm beginnt sobald das vorherige mit einem Linefeed been-det wurde und ein beliebiges anderes Zeichen empfangen wird.Der Parameter str ist ein Lua String und enthält alle Zeichen des aktuellen(wenn auch unvollständigen) Telegramms. Im Falle des ersten Bytes ist dieLänge des Telegramms 1 und wir geben STARTED zurück. Lua verwendeteinen speziellen Längen-Operator ’#’ um die Anzahl von Zeichen innerhalbeines String (einer Zeichenkette) zu ermitteln (Zeile 2). Alternativ können Siedie Abfrage der Länge auch wie folgt formulieren:

i f s t r : len ( ) == 1 then . . .

Zeile 3 definiert die Ende Bedingung. Das Telegramm ist komplett, wenn einLinefeed empfangen wird (das aktuelle Zeichen wird in data übergeben). Wirvergleichen deshalb den Parameter data mit Linefeed (der Zeichenwert ist de-zimal 10) und liefern COMPLETED zurück, wenn dies zutrifft.In allen anderen Fällen (wenn es sich um ein beliebiges anderes Zeichen han-delt und bereits mindestens ein Zeichen empfangen wurde, d.h. die aktuelleTelegrammlänge ist größer als 1) kehrt die Funktion mit MODIFIED zurück.

Im nächsten Schritt passen wir das Beispiel an ein Protokoll an, welches für je-des Telegramm ein Startzeichen sowie ein Endestring spezifiziert, wie es u.a.bei Modbus ASCII üblich ist.

STX’:’

DataASCII coded data as 0-9 and A-F

EOSCR LF

Jedes Telegramm wird mit einem Doppelpunkt ’:’ eingeleitet (der ASCII Wert istdezimal 58), gefolgt von den eigentlichen Daten, wobei das Datenfeld nur dieZeichen 0-9 und A-F erlaubt). Das Ende des Telegramms wird mit einem Car-riage Return und Linefeed (CRLF) markiert. Die entsprechende split Funkti-on ist dann:

89

Page 100: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f data == 58 then return STARTED end3 i f s t r : f i n d ( " \ r \ n " ) then return COMPLETED end4 return MODIFIED5 end

Zeile 2 vergleicht alle neuen Datenbytes mit dem Wert des ’:’ und liefert STARTEDsobald ein Doppelpunkt erkannt wurde.Zeile 3 durchsucht die bis dato im Telegramm befindlichen Zeichen nach derZeichenkette CRLF ("\r\n" ist das Lua Äquivalent zu CRLF). Ein gefundenesCRLF bedeutet das Telegramm ist vollständig und liefert den RückgabewertCOMPLETED.Alle anderen Zeichen werden als Telegrammdaten behandelt und modifizierenlediglich das Telegramm (Resultat ist MODIFIED).

Soweit zur Verwendung der Parameter data und str. Was aber ist mit denübrigen Funktionsargumenten intval und alter?Stellen Sie sich vor, Sie haben ein Protokoll mit abwechselnd gesendeten Tele-grammen. Jeder Telegrammstart (und Ende) ist dadurch gekennzeichnet, dassich die Datenrichtung geändert hat. Hier ist die passende split Funktion:

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f a l t e r then return STARTED end3 return MODIFIED4 end

Der Parameter alter ist immer wahr (true) wenn die Quelle des aktuellen Da-tenbytes (die Datenrichtung) gewechselt hat. Alles was wir tun müssen ist indiesem Fall STARTED zurückzugeben.

Einige Protokolle geben eine definierte Pause (spezifiziert als inaktive Zeit, inder keine Daten übertragen werden) als Telegramm-Begrenzer vor, z.B. dasModbus RTU Protokoll. Der Vorteil eines solchen Ansatzes ist: Ein Telegrammbenötigt keine ’speziellen’ Start- und/oder Endezeichen und kann deshalb al-le binäre Zeichen zur Übertragung verwenden. (Es gibt keine Datenbytes diegesondert interpretiert werden müssen.

Telegramme definiert durch SendepausenModbus RTU spezifiziert eine Sendepause von 3.5 Byte. Dies ist die Zeit, diezur Sendung von 3.5 Bytes mit der verwendeten Baudrate benötigt wird.Und hier kommt der letzte Parameter intval ins Spiel. intval ist die Zeit-distanz zwischen dem aktuell und zuletzt empfangenen Byte in Sekunden. DieAuflösung ist - wie immer - 1µs.Die Übertragungszeit für ein Byte oder Zeichen hängt von der eingestelltenBaudrate ab. Glücklicher Weise bietet der Protokollmonitor entsprechende Funk-tionen zur Umrechnung. Aber zunächst der split Funktionscode:

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f i n t v a l > p ro toco l . bytepause ( 3.5 ) then return STARTED end3 return MODIFIED4 end

Der Code sollte klar genug sein - mit Ausnahme von protocol.bytepause.Der Protokollmonitor erweitert den Lua Sprachstandard um eigene Funktions-

90

Page 101: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

module. bytepause liefert die benötigte Zeit zur Sendung der übergebenenAnzahl von Datenbytes für die aktuelle Baudrate in Sekunden. Damit reicht esdie verstrichene Zeit seit dem letzten empfangenen Zeichen mit der berech-neten Pause zu vergleichen um eine gültige Startbedingung zu erkennen. Siefinden eine detaillierte Beschreibung des protocol Moduls auf Seite 141.

Aber halt! Was ist mit dem COMPLETED Status?Das aktuelle Telegramm ist komplett (COMPLETED) sobald eine entsprech-ende Pause erkannt wurde. Gleichzeitig wird ein neues Telegramm eingeleitet(STARTED). In diesem Fall kennzeichnet der Protokollmonitor die bisherigenTelegrammdaten automatisch als fertig (COMPLETED) sobald er ein Neuesstartet.Unvollständige Telegramme werden als eine Reihe von Punkten (Interpunkti-on) im vorangestellten Index oder Nummer Feld angezeigt. Sie können dieseim Einstelldialog ein- oder ausblenden.

Spezialfall: Telegramme mit nur einem ByteTelegramme bestehend aus nur einem einzelnen Zeichen sind insofern einspezieller Fall, da sie beide Zustände repräsentieren: Ein STARTED wie auchein COMPLETED Status. Ausnahmen hiervon sind lediglich Protokolle mit ei-ner Sendepause als Telegramm-Begrenzung wie Modbus RTU oder ProfiBus1,da dort die Telegramm-Begrenzer unabhängig von einem bestimmten Zeichensind.Alle anderen Protokolle mit einem definierten EOS (End of String) müssender besonderen Bedeutung solcher Einzelbyte Nachricht Rechnung tragen. EinBeispiel:In Ihrem Protokoll wird jedes Telegramm mit einem Linefeed abgeschlossen.Daneben sind aber auch einzelne Linefeeds als Kurzbestätigung (Acknowled-ge) erlaubt.Ohne die besondere Berücksichtigung einzelner Linefeeds wird der Protokoll-monitor das erste auftretende Linefeed (LF) solange als unvollständiges Tele-gramm werten bis ein weiteres LF empfangen wird. Hier die entsprechendesplit Funktion aus dem EOSwithLF Template:

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f # s t r == 1 then return STARTED end3 i f data == 10 then return COMPLETED end4 return MODIFIED5 end

Da das erste eintreffende Zeichen als der Beginn eines neuen Telegrammsgewertet wird, wird ein LF in diesem Fall genauso behandelt (und nicht alsEndezeichen). Eventuell schlagen Sie jetzt einfach vor, die Zeilen 2 und 3 zutauschen - das löst das Problem aber nicht. Dann wird ein LF nur angezeigtwerden, wenn es am Ende von davon unterschiedlichen Zeichen empfangenwurde, aber kein einzelnes LF wie es als Kurzbestätigung vorkommt.Die split Funktion kann immer nur ein Byte nach dem anderen verarbeiten. ImFalle eines Einbyte-Telegramms müsste die Funktion aber gleichzeitig STARTEDund COMPLETED zurückgeben. Zum Glück ist dieses Problem einfach zu lö-sen indem Sie genau dies tun:

1ProfiBus verwendet eine Einzelbyte Nachrichten (SC) als Kurzbestätigung. SC Nachrichtenbestehen lediglich aus dem Zeichen e5h.

91

Page 102: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f # s t r == 1 then3 i f data == 10 then4 return STARTED + COMPLETED5 else6 return STARTED7 end8 else9 i f data == 10 then

10 return COMPLETED11 end12 end13 return MODIFIED14 end

Zeile 4 liefert ein STARTED und COMPLETED wenn ein Linefeed empfangenwurde (Zeile 3) und wenn es das erste Zeichen des Telegramms (Zeile 2) ist.Nur wenn beide Bedingungen erfüllt sind handelt es sich um ein einzelnes LF.

Telegramme mit einer Startsequence bestehend aus mehreren BytesEs existieren Protokolle die statt einem einzelnen Zeichen eine Zeichenket-te oder Bytefolge als Telegrammstart spezifizieren. So verwendet z.B. DNP3die Datenbytes 0x05 und 0x64 (in hexadezimaler Schreibweise) als Start- undSynchronisation-Header. Ein einfaches DNP3 Telegramm sieht wie folgt aus:

Start0x05

Start0x64

Length Control Destination Source CRC

Von der Tatsache einmal abgesehen, dass ein solches Protokoll natürlich jed-wede Verwendung der Startsequenz im restlichen Telegramm unterbinden muss,steht die split Funktion hier vor einem Problem.

Betrachten Sie dazu folgendes Szenario: Die split Funktion wird mit demByte 0x05 aufgerufen, welches - eventuell - den Beginn eines neuen Tele-gramms markiert. In diesem Fall liefert die Funktion als Rückgabewert STARTED,aber Vorsicht!Was wenn das nachfolgende Zeichen nicht 0x64 entspricht? In diesem Fallist das zuvor zurück gegebene STARTED schlicht falsch. Sie können natürlicherst auf das zweite Zeichen warten und dann beide mit der Sequenz 0x05 0x64vergleichen. Aber auch hier liefert ein STARTED nicht das gewünschte Ergeb-nis. Vielmehr wird das 0x05 an das letzte Telegramm angehängt während dasneue Telegramm mit 0x64 beginnt.Was wir benötigen ist ein Mechanismus um ein beliebiges Byte als möglichenStart (eines neuen Telegramms) zu ’markieren’ um dann später zu entschei-den, ob und wann dieses Byte als Telegrammstart gewertet wird.

Hier kommt der Rückgabestatus MARKED ins Spiel. Ein zurück gegebenesMARKED startet kein neues Telegramm. Vielmehr wird eine Analyse der fol-genden Bytes fortgeführt als wäre nichts passiert. Erst wenn die split Funk-tion STARTED liefert (und nur STARTED) wird das zuvor per MARKED gekenn-zeichnete Byte (bzw. die Byte Position im Datenstrom) als neuer Telegramm-start verwendet. Ein Beispiel:

1 function s p l i t ( data )2 i f data == 100 and l a s t == 5 then

92

Page 103: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

3 return STARTED4 end5 l a s t = data6 i f data == 5 then7 return MARKED8 end9 return MODIFIED

10 end

Sieht trivial aus, aber wie funktioniert es im Detail?Der Trick liegt in der Verwendung einer globalen Variable last die immer daszuvor empfangene Datenbyte enthält. Per Vorgabe sind Variablen in Lua immerglobal und werden mit nil initiiert (siehe auch 13.4). Unter normalen Umstän-den empfehlen wir deshalb alle Variablen mit dem Zusatz local zu definierenum eine ungewollte Mehrfachverwendung zu vermeiden. In diesem Fall machtdie Verwendung einer globalen Variable das Handling aber deutlich einfacher.

In der ersten Funktionszeile (Zeile 2) prüfen wir ob das gerade empfangeneDatenbyte (übergeben via Parameter data) 0x64 entspricht UND gleichzeitigdas vorherige Byte ein 0x05 war.Beim ersten Aufruf der split Funktion ist last nicht definiert. Lua erzeugtdie Variable deshalb on-the-fly und weist ihr den Wert nil zu. Da die Variablenicht local ist bleibt sie und ihr Inhalt danach bestehen. Ist die Bedingungwahr, bedeutet das ein neues Telegramm und Zeile 3 liefert STARTED zurück.Anschließend wird das aktuelle Datenbyte in der globalen Variable last fürden nächsten Aufruf von split gespeichert (Zeile 5).Die folgende Bedingung in Zeile 6 sorgt dafür, das ein neuer Telegramm Start(ausgelöst durch die Rückgabe von STARTED in Zeile 3) immer dem ent-sprechenden 0x05 zugewiesen wird.Ist data weder 0x64 noch 0x05 liefert split am Ende MODIFIED um dasaktuelle Datenbyte an die interne Telegramm Sequenz anzufügen.

Es gibt nur eine interne MARKED Position!Ein per split zurück gegebenes MARKED überschreibt eine eventuell vorhan-dene frühere MARKED Position und STARTED liefert deshalb als Telegramm-start immer das letzte MARKED Byte im Datenstrom.

Globale und lokale VariablenVariablen in Lua sind per default global und nach ihrer ersten Deklaration vonüberall im Skript sichtbar bzw. zugänglich. Dies kann bei vermeintlich unab-hängigen Variablen gleichen Namens zu merkwürdigen Resultaten führen. Be-trachten Sie dazu folgende Zeilen:

1 function chksum ( data )2 n = 03 for i =1 ,# data do4 n = n + data : byte ( i )5 end6 return n % 2557 end

8 function out ( )9 −− the cu r ren t te legram

93

Page 104: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

10 tg = telegrams . t h i s ( )11 −− query the cu r ren t te legram leng th12 n = tg . s ize ( )13 −− a simple checksum14 sum = chksum ( tg : s t r i n g ( ) )15 −− te legrams less than 8 byte need a spec ia l handl ing16 i f ( n < 8 ) then17 −− do something wi th smal l te legrams18 end19 end

In Zeile 12 weisen wir die aktuelle Telegrammlänge der Variable n zu und be-rechnen anschließend die Prüfsumme des Telegramms, indem wir der Funktionchksum das Telegramm als Lua String übergeben. Und hier lauert das eigent-liche Problem!Die chksum Funktion verwendet intern ebenfalls eine Variable n zur Aufsum-mierung der einzelnen Bytewerte. Aus der Sicht des Lua Interpreters existiertdiese ABER bereits (deklariert durch die vorherige Zuweisung der Telegramm-länge). n wird deshalb in Zeile 2 (in der chksum Funktion) zuerst auf 0 gesetztund danach mit den Bytes des Strings data aufaddiert.Bei der Abfrage in Zeile 16 enthält n nicht mehr die Telegrammlänge sonderndie Summe der Telegrammbytes! Nicht gerade das was wir beabsichtigten!Sie können natürlich die Variable n in der chksum Funktion einfach umbenen-nen. Dies ist aber vor allem bei umfangreicheren Templates nicht immer soleicht möglich und bedeutet einen nicht zu unterschätzender Pflegeaufwand.Eine bedeutend einfachere Lösung ist: Variablen, die nur innerhalb einer Funk-tion benötigt werden, als ’lokal’ zu deklarieren. Lua reserviert hierfür das Schlüs-selwort local. Auf unser Beispiel angewandt reicht die Änderung von Zeile 2:

1 function chksum ( data )2 local n = 03 for i =1 ,# data do4 n = n + data : byte ( i )5 end6 return n % 2557 end

Die lokale Variable n existiert jetzt nur noch innerhalb der Funktion chksumund hat mit der Telegrammlänge n in Zeile 12 nichts mehr gemeinsam.Aber was ist mit der Variable i?Die Laufvariable innerhalb einer for Schleife hält Lua generell lokal. Sie ist nurinnerhalb der Schleife sichtbar und wird anschließend gelöscht.

Sie sehen: Es ist generell immer eine gute Idee ALLE Variablen als local zudeklarieren und nicht lokale Variablen, die Sie über mehrere Funktionen hin-weg verwenden mit einer entsprechenden Kennzeichnung zu versehen. Z.B.g_n (globale n).

Mehr Informationen über das aktuelle DatenereignisDie an split übergebenen Parameter sollten für die meisten Anwendungs-fälle völlig ausreichen. In ganz speziellen Situation werden Sie aber eventuellzusätzliche Informationen über das aktuelle Datenereignis benötigen, ohne dieSie die Telegramme nicht korrekt aus dem Datenstrom extrahieren zu können.Z.B. die Richtung oder Quelle (und nicht nur einen Wechsel derselben), den

94

Page 105: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

genauen Zeitstempel (und nicht nur die Distanz zum vorherigen Datenereig-nis).Da das Hinzufügen weiterer Parameter u.U. die Kompatibilität zu älteren Tem-plates einschränkt, werden diese zusätzlichen Informationen durch das eventModul zur Verfügung gestellt. Das Modul wird ausführlich in Lua Modul Ab-schnitt 13.7 beschrieben.Hier ein Beispiel wie Sie die Quelle des aktuellen Datenbytes innerhalb splitermitteln können. Vorausgesetzt wird ein Protokoll mit unterschiedlichen EOSZeichen abhängig von der Datenrichtung. Alle Telegramme an Port A (CH1)verwenden ein CR als EOS, während Telegramme an Port B (CH2) mit einemLF beendet werden.

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 local eos = 133 i f event . d i r ( ) == 2 then eos = 10 end4 i f # s t r == 1 then return STARTED end5 i f data == eos then return COMPLETED end6 return MODIFIED7 end

Split - ZusammenfassungDie split Funktion verspricht eine Anpassung an fasst alle möglichen Proto-kolle. Obgleich sie i.a. nur aus einigen wenigen Zeilen besteht ist ein besseresVerständnis der Skriptsprache Lua von Vorteil wenn Sie Ihre eigenen Templa-tes schreiben. In Kapitel 16.1 finden Sie eine komplette Einführung in diesefaszinierende Sprache.

Das Auftrennen des Datenstromes in einzelne Telegramme ist die eine Sache.Im nächsten Abschnitt lernen Sie wie Sie die Ausgabe der Telegramme ganzindividuell nach Ihren Vorgaben steuern.

Individuelle Darstellung der TelegrammeDie komplette Formatierung, d.h. wie die Telegramme im einzelnen dargestelltwerden, erfolgt in der Funktion out. Diese Funktion wird jedesmal aufgeru-fen, wenn der Protokollmonitor ein Telegramm im Telegrammfenster ausgibt.Gleichzeitig reduziert dies den Rechenaufwand, da der Code nur für die gera-de sichtbaren Telegramme ausgeführt wird.

1 function out ( )2 −− your fo rmat ing i n s t r u c t i o n s3 end

Das Prinzip des neuen Ausgabe-Mechanismus basiert auf einer Menge vonindividuellen rechteckigen Boxen angeordnet in einer Zeile, wobei jede Zeileein Telegramm repräsentiert.Jede dieser Boxen enthält einen Titel (caption) und einen Textinhalt (content),beides spezifiziert durch den Anwender. Text- und Hintergrundfarbe sind freidefinierbar. Titel und Text sind Lua Strings und können das Ergebnis einerbeliebigen Operation mit den Daten des zugehörigen Telegrammes sein. Dasgleiche gilt für die Farben. Ein Beispiel:Das folgende Bild zeigt ein einzelnes Modbus RTU Telegramm realisiert mitdem neuen Mechanismus. Die verschiedenen Elemente des Telegramms wieGeräteadresse, Funktionsnummer etc. werden in einzelnen Boxen dargestellt.

95

Page 106: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

Die letzte Box enthält die validierte CRC16 Prüfsumme, wobei grün hier füreinen korrekten CRC16 Wert steht.

Die Größe (Breite) einer Box berechnet sich aus dem Inhalt. Jede neue Boxwird automatisch rechts neben der vorherigen Box angefügt. Das bedeutet:Die Position der Boxen in einer Zeile ergibt sich aus der Reihenfolge, in welcherdiese in der Lua out() Funktion aufgerufen werden. Der erste Aufruf einer Boxzeichnet die Box ganz links (am Anfang der Zeile), der zweite Aufruf die Boxrechts neben der ersten und so weiter...Eine einfache Box ist wie folgt definiert:

Time0.137345

Eine einfache Box

1 function out ( )2 local te legram = telegrams . t h i s ( )3 box . t e x t { cap t ion ="Time " , t e x t =telegram : t ime ( ) }4 end

Beachten Sie! Wir verzichten hier darauf, die zugehörige Split Funktion zu zei-gen und konzentrieren uns ausschließlich auf die Telegrammausgabe. Späterwerden wir das Box Modell an einem Beispiel inklusive der Split Funktion dis-kutieren.Der obige Code liefert eine einfache Box wie am Rand gezeigt. Der Titel oderdie Überschrift ist ’Time’ (wir wollen die Zeitmarke des Telegramms anzeigen).Der Inhalt ist das Resultat des telegram:time() Aufrufs den wir später nocherläutern. So lange wir keine Farben spezifizieren wird die Box mit schwarzemText/Rahmen und weißem Hintergrund ausgegeben.

Wir wollen nun die Ausgaben mit den eigentlichen Daten des Telegramms er-gänzen.

1 function out ( )2 local te legram = telegrams . t h i s ( )3 box . t e x t { cap t ion ="Time " , t e x t =telegram : t ime ( ) }4 box . t e x t { cap t ion =" Data ( hex ) " , t e x t =telegram : dump { } }5 end

Dazu fügen wir in Zeile 4 eine zweite Box hinzu. Anstelle die einzelnen Daten-bytes einzeln zu extrahieren ’bitten’ wir das Telegramm seine Daten in Formeines Hexdumps auszugeben. Die Telegramm Funktion dump liefert einen be-liebigen Datenausschnitt des zugehörigen Telegramms als Hexdaten String.Per Voreinstellung (ohne Parameter) wird die vollständige Datensequenz desTelegramms verwendet.Die geschweiften Klammern des dump Aufrufs weisen, wie bei box.text, dar-auf hin, das die Funktion benannte Parameter erwartet.

Time2.339189

Data (hex)03a 030 032 030 032 043 034 00d 00a

Time2.351468

Data (hex)03a 030 032 030 032 030 046 031 035 036 041 034 032 037 044 00d 00a

Die Box mit den Hexdaten erscheint hinter der Time Box da sie NACH der TimeBox aufgerufen wird. Alle Datenbytes werden per Voreinstellung als 3-stelligeHexwerte angezeigt (wohlgemerkt, der MSB-Analyser unterstützt 9 Bit Daten).

96

Page 107: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

Sie werden dump mit Sicherheit sehr häufig verwenden, da sie die einfachsteMöglichkeit darstellt, die Telegrammdaten auszugeben ohne sich Gedankenüber die Telegrammlänge bzw. den Inhalt machen zu müssen.

Zugriff auf die TelegrammdatenDie out() Funktion wird für jedes einzelne im Telegrammfenster darzustellen-de Telegram ausgeführt. Zeigt das Telegrammfenster z.B. die ersten zehn vonsplit generierten Telegramme, wird out() zehnmal ausgerufen, beginnendmit dem Telegramm Nr.1 und endend mit Telegramm Nr.10.Wenn Sie anschließend durch die Aufzeichnung scrollen und das Telegramm-fenster einen beliebigen Abschnitt innerhalb der Aufnahme einblendet, sagenwir einmal die Telegramme von 1201 bis 1217, so erfolgt der out() Aufruf fürdie Telegramme 1201, 1202, ... bis das letzte sichtbare Telegramm 1217 er-reicht ist.Das Modul telegrams liefert dazu die zur aktuellen Zeile oder zum aktuellenout() Aufruf zugehörigen Telegrammdaten mit:loca l te legram = telegrams . t h i s ( )

So zeigen die folgenden Programmzeilenlocal te legram = telegrams . t h i s ( )box . t e x t { cap t ion ="Number " , t e x t =telegram : number ( ) }

die Telegrammnumber eines jeden Telegramms welches gerade sichtbar istund in der Funktion out verarbeitet wird. Das telegrams Modul bietet aller-dings mehr als nur den Zugriff auf das aktuelle Telegramm.Stellen Sie sich vor, die Darstellung eines Telegramms hängt von Informationenin zuvor empfangenen Telegrammen ab. Oder Sie benötigen die ’Antwortzeit’zwischen dem aktuellen und vorherigen Telegramm, um zu entscheiden ob essich um eine Anforderung oder eine Antwort handelt2.

Das telegrams Modul bietet einen wahlfreien Zugriff auf alle Telegramme,von der allerersten aufgenommenen Sequenz bis zu dem gerade in out Funk-tion verwendeten Telegramm3.Der Zugriff auf ein beliebiges Telegramm erfolgt einfach mit:loca l te legram = telegrams . a t ( index )

Dabei adressiert der Parameter index ein Telegramm auf zweierlei Weise.Ein positiver Index (absolute Adresse oder Position innerhalb der Aufzeich-nung) gibt das Telegramm mit dem angebenen Index bzw. Nummer zurück.So liefert ein Index von 1 das allererste Telegramm , ein Index von 100 dasHunderste. Sollte kein Telegramm an dem angegebenen Position existieren er-halten Sie ein klassisches Lua nil.

Weit interessanter sind allerdings ’negative’ Indexe. Ein negativer Indexwertsteht für ’relative Adressierung’ und zählt rückwärts vom aktuell in out() be-handelten Telegramm.So bedeutet ein Index von -1 das aktuelle Telegramm in out() und telegrams.this()ist lediglich ein etwas eingängigerer Alias dafür. Ein Index von -2 greift auf das

2Das Modbus RTU Template verwendet eine solche Vorgehensweise3Der Telegramm Zugriff ist damit nicht länger auf das aktuelle und vorherige Telegramm be-

grenzt wie in früheren Programmversionen.

97

Page 108: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

vorherige Telegramm zu. Auch hier existiert mit telegrams.prev() ein Alias.Anwender mit Lua Background dürften negative Indexe bereits aus mehrerenLua String Funktionen geläufig sein.Die folgenden Code Zeilen demonstrieren wie Sie die Antwortzeit zwischendem vorherigen und aktuellen Telegramm ermitteln können:

1 function out ( )2 local t c u r r = telegrams . t h i s ( )3 local t p rev = telegrams . prev ( )4 i f not t p rev then5 tp rev = t c u r r6 end7 local dt = t c u r r : t ime ( ) − t p rev : t ime ( )8 end

Während telegrams.this() immer ein gültiges Ergebnis liefert, ist diesbeim Zugriff auf den Vorläufer des allerersten Telegramms nicht gegeben. tprevbekommt einen nil Wert zugewiesen, sobald Sie zum Anfang der Aufzeich-nung scrollen. Da nil keine gültigen Telegrammdaten darstellt, belohnt SieLua ohne die Abfrage in Zeile 4 hier mit einem leeren Telegramm Fenster.

In den allermeisten Fällen werden Sie in out() nur auf das entsprechendzugehörige Telegramm per telegrams.this() zugreifen. Es gibt allerdingsauch Protokolle bei denen die Reaktion eines Busteilnehmers von einem zuvorempfangenen Telegramm abhängt. Um ein solches Verhalten korrekt nachzu-bilden müssen Sie durch die davor liegenden Telegramme iterieren und dieseentsprechend auswerten.Die Zugriffszeit von telegrams.at(index) ist linear, nicht desto trotz istes keine gute Idee über eine unbegrenzte Anzahl von Telegrammen zu iterie-ren, da dies leicht zu Endlosschleifen führt die der Lua Interpreter mit einem’Overrun of allowed executions’ bestraft. Vermeiden Sie dies indem Sie z.B. dieAnzahl der telegrams.at(index) Zugriffe innerhalb einer Schleife auf einevon vorn herein bestimmte Anzahl begrenzen.

Wie Sie auf das aktuelle oder auch beliebig andere Telegramm in out() zu-greifen haben wir nun im Detail erörtert. Wenden wir uns jetzt dem eigentlichenErgebnis zu, dem Rückgabewert telegram.

Der Protokollmonitor spezifische Lua Typ telegram repräsentiert ein einzel-nes Telegramm. Dieser ist am besten mit einem Container (oder einem Objekt)zu vergleichen welches alle zu diesem Telegramm relevanten Information ent-hält. D.h. Zeit, Länge, Richtung usw.Die Variablen tcurr und tprev im vorherigen Beispiel sind vom Typ telegram.Verwechseln Sie den Typ telegram nicht mit einem Modul. telegram ent-spricht eher einen normalen Lua Datentyp wie z.B. einem String oder einerZahl und ist immer das Ergebnis eines zuvor erfolgten telegrams Modul Auf-rufes. Sie können das Ergebnis (den Typ telegram) einer Variablen zuweisen- wie in unserem Beispiel - oder direkt verwenden.Die folgenden beiden Beispiele liefern die gleiche Ausgabe. Als erstes ein An-satz ohne Variable.

1 box . t e x t { cap t ion ="Number " , t e x t =telegrams . t h i s ( ) : number ( ) }2 box . t e x t { cap t ion ="Time " , t e x t =telegrams . t h i s ( ) : t ime ( ) }3 box . t e x t { cap t ion =" Length " , t e x t =telegrams . t h i s ( ) : s i ze ( ) }

98

Page 109: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

Das ist leicht machbar, führt aber zu drei identischen und daher unnötigenAufrufen von telegrams.this(). Ein besser Ansatz ist:

1 loca l tg = telegrams . t h i s ( )2 box . t e x t { cap t ion ="Number " , t e x t = tg : number ( ) }3 box . t e x t { cap t ion ="Time " , t e x t = tg : t ime ( ) }4 box . t e x t { cap t ion =" Length " , t e x t = tg : s ize ( ) }

Der Unterschied zwischen . und : in LuaIn den Beispielen haben wir eine Menge Punkte ’.’ und Doppelpunkte ’:’ ver-wendet und Sie haben sich eventuell bereits gefragt wo der Unterschied in derSyntax zwischen beiden liegt.Ein Punkt in telegrams.this() greift auf die Funktion at des telegramsModuls zu. Ein Modul ist - einfach gesprochen - organisiert als eine Tabelleund die Funktion at ist einer von mehreren Tabelleneinträgen. Der Punkt hierverweist auf den Eintrag at in der Tabelle telegrams. Insofern können Sieein Modul auch als ein Kollektion zusammengehöriger Funktionen betrachten.

Was ist aber mit tg:number()? Der Ausdruck erscheint ähnlich, und zwar derAufruf einer Funktion number() des tg ’Objekts’.Der Begriff ’Objekt’ ist hier ganz bewußt gewählt. tg ist eine Variable oderein Objekt vom Typ telegram aber es ist KEIN Modul! Mit dem Doppelpunkt’:’ weisen Sie Lua an die Funktion (hinter dem Doppelpunkt) der zugehöri-gen Variable oder des Objekts (benannt vor dem Doppelpunkt) auszuführen.tg:number() liefert deshalb die Nummer eines ganz bestimmten mit tg as-sozierten Telegramms.

1 loca l tg = telegrams . t h i s ( )2 −− the number o f the cu r ren t te legram3 tg : number ( )4 tg = telegrams . prev ( )5 −− now i t ’ s the number o f the prev ious telegram6 tg : number ( )

In obigem Beispiel wird die Variable tg zunächst mit dem aktuellen Telegramminitialisiert und danach ’seine’ Telegrammnummer erfragt. Anschließend wirdtg das vorherige Telegramm zugewiesen. tg ist nun identisch mit diesem Te-legramm und eine erneute Abfrage ’seiner’ Nummer liefert nun eine andere umeins niedriger Telegrammnummer.

Die folgende Regel möge als kleine Eselsbrücke dienen:

Verwenden Sie ’:’ wenn Sie sagen können: �Variable, bitte tue dies für mich�

Einen Telegramminhalt untersuchenSie können verschiedenste Telegramm Informationen abfragen indem Sie dieentsprechende Funktion aufrufen. Alle verfügbaren Telegramm Funktionen sindim Abschnitt 13.7 aufgelistet. Eine dieser Funktionen sei hier explizit genannt,da sie gerade bei der Analyse unbekannter Telegramminhalte einen sehr schnel-len Überblick auf die im Telegramm enthaltenen Daten liefert. Es handelt sichum die Funktion dump{}. Sie haben sie bereits früher in diesem Kapitel ken-nengelernt.dump gibt den Inhalt ’seines’ Telegramms als Lua String aus. In diesem sind

99

Page 110: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

alle Datenbytes entweder in hexadezimaler oder dezimaler Schreibweise unddurch ein Leerzeichen getrennt aufgelistet (Hexdump). Ein dump{} Aufruf ak-zeptiert folgende benannte Parameter, hier mit ihren entsprechend Defaultwer-ten:te legram : dump{ f i r s t =1 , l a s t =−1, sep = ’ ’ , base=16 , width =3 , max=s ize / 2 }

Ohne Parameter liefert dump den kompletten Inhalt (first=1, last=-1) als 3-stellige (width=3) Hexwerte (base=16), getrennt durch ein Separator Leerzei-chen (sep=’ ’).Der Parameter max begrenzt die maximal Anzahl Datenbytes und gibt lediglichdie erste und letzte Hälfte von den in max spezifizierten Bytes aus.Nehmen wir ein Telegramm mit der Bytefolge:

3A 30 32 30 32 30 46 31 35 36 41 34 32 37 44 0D 0A

Und eine einfache out() Funktion:1 function out ( )2 local tg = telegrams . t h i s ( )3 box . t e x t { cap t ion ="Time " , t e x t = tg : t ime ( ) }4 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = tg : dump { } }5 end

Die Ausgabe ist dann:

Time2.351468

Data (hex)03A 030 032 030 032 030 046 031 035 036 041 034 032 037 044 00D 00A

Mit dem Parameter base können Sie die Zahlenbasis von hexadezimal aufdezimal ändern indem Sie base=10 übergeben.

4 box . t e x t { cap t ion =" Data ( dec ) " , t e x t = tg : dump{ base=10 } }

Time2.351468

Data (dec)058 048 050 048 050 048 070 049 053 054 065 052 050 055 068 013 010

Da das Telegramm nur 8-Bit Werte enthält, begrenzen wir als nächstes dieStellenanzahl bei der hexadezimalen Darstellung auf 2 Digits.

4 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = tg : dump{ width=2 } }

Time2.351468

Data (hex)3A 30 32 30 32 30 46 31 35 36 41 34 32 37 44 0D 0A

Soweit so gut. Stellen Sie sich nun vor Sie wollen die letzten beiden Bytes(das CRLF) als individuelle End-Of-String Box anzeigen. dump hält dazu diezwei Positionsparameter first und last bereit, mit welchen Sie einen beliebigenAusschnitt auswählen können. Sie können eine Byte Position als absolutenWert angegeben, z.B. first=1 für das allererste Byte im Telegramm. Oder Siezählen rückwärts mit einem negativen Positionswert.

1 function out ( )2 local tg = telegrams . t h i s ( )3 box . t e x t { cap t ion ="Time " , t e x t = tg : t ime ( ) }4 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = tg : dump{ f i r s t =1 , l a s t =−3,

width=2 } }5 box . t e x t { cap t ion ="EOS" , t e x t = tg : dump{ f i r s t =−2, l a s t =−1, width=2 }

}6 end

100

Page 111: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

Das letzte Byte wird mit -1 adressiert. Um die beiden letzten Bytes auszu-wählen übergeben wir einen Bereich von first=-2 und last=-1. Entsprechendbeenden wir die Datenausgabe in Zeile 4 mit dem letzten Byte vor dem CRLF,d.h. Position -3 (drei von hinten gezählt).

Time2.351468

Data (hex)3A 30 32 30 32 30 46 31 35 36 41 34 32 37 44

EOS0D 0A

Wie Sie sehen bieten negative Indexe einen sehr konfortablen Weg um Datenrelativ zum Telegrammende auszugeben ohne sich dabei mit der Telegramm-länge abmühen zu müssen.

Der Parameter sep ist leicht verständlich. Mit seiner Hilfe können Sie das Leer-zeichen zwischen den Zahlenwerten durch jedes andere Zeichen oder Stringersetzen. Und - natürlich - auch komplett entfernen mit:

4 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = tg : dump{ width =2 , sep = ’ ’ } }

Time2.351468

Data (hex)3A30323032304631353641343237440D0A

Der Protokollmonitor behandelt Telegramme ohne Längenbegrenzung. Gleich-wohl ist es manchmal ziemlich lästig horizontal durch eine Riesenmenge vondump{} produzierten Daten zu scrollen. Hier kommt der letzte Parameter maxins Spiel.max definiert die maximale Anzahl der von dump{} ausgegebenen Daten, dieerste Hälfte von max am Anfang, die zweite Hälfte am Ende. Die übrigen Datenwerden als Anzahl zwischen zwei Aufzählungspunkten angezeigt. Ein Beispiel:

4 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = tg : dump{ width =2 , max=4 } }

Data (hex)3A 30 ...[13]... 0D 0A

Ihr eigenes Template Schritt für Schritt

TutorialTutorial.msbprj

Für ein besseres Verständnis der nächsten Schritte empfehlen wir Ihnen dieProjektdatei Tutorial.msbprj im Examples\ProtocolView Verzeichniszu laden bzw. per Doppelklick zu starten. Das Beispiel funktioniert auch ohneangeschlossenen MSB-Analyser und bietet Ihnen die Möglichkeit, die folgendenTemplate Veränderung direkt im Protokollmonitor anzusehen.

Das Beispielprojekt enthält die Aufzeichnung eines einfachen Protokolls wobeijedes Telegramm mit einem Doppelpunkt ’:’ eingeleitet und mit der SequenzCRLF (Carriage Return und Linefeed) beendet wird. Eventuell haben Sie esbereits in den oben abgebildeten EOS Box gesehen (die Daten 013 010).Wir haben ein solches Protokoll bereits bei der Erklärung der split Funktionbeschrieben und können es hier einfach übernehmen. Zur Erinnerung:

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f data == 58 then return STARTED end3 i f s t r : f i n d ( " \ r \ n " ) then return COMPLETED end4 return MODIFIED5 end

Unser einfaches Protokoll spezifiziert zudem eine Geräteadresse des Tele-gramm Empfängers, eine Funktionsnummer sowie die eigentlichen Daten und

101

Page 112: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

eine einfache Prüfsumme. Alles in allem erinnert es ein wenig an Modbus AS-CII.Das Projekt Template ist schreibgeschützt. Sie müssen deshalb zunächst eineKopie des Templates erstellen indem Sie bei aufgeklapptem Template Editorauf den + Knopf klicken und einen neuen Template Namen eingeben. Z.B.’MyTutorial’ oder ähnliches.

Als ersten werden wir jedes Telegramm entsprechend seiner Herkunft farblichunterschiedlich kennzeichnen um die Datenrichtung leichter erkennen zu kön-nen. Wie üblich wählen wir rot für Telegramme empfangen an Port A (CH1)sowie blau für alle Daten von Port B (CH2).

Wie bereits erwähnt kann jede Box eine individuelle Text/Rahmen- sowie Hin-tergrundfarbe erhalten. Die Farbwerte werden als RGB (Red Blue Green) Wer-te übergeben, z.B. 0xAABBCC. Das erste Byte (AA) definiert den Rotanteil (inSchritten von 0...255), das zweite den Grünanteil (BB) und das letzte Byte denAnteil der blauen Farbe (hier CC). Schwarz ist in dieser Definition 0x000000,weiß 0xFFFFFF.Alle Telegramme empfangen an Port A sollen mit rotem Text auf hellrotem Hin-tergrund dargestellt werden. Die Telegramme an Port B entsprechend in blauerSchritt auf hellblauem Hintergrund. Ok, los geht’s:

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f data == 58 then return STARTED end3 i f s t r : f i n d ( " \ r \ n " ) then return COMPLETED end4 return MODIFIED5 end67 function out ( )8 −− te legram co lo rs9 local t e x t c o l o r s = { 0xFF0000 , 0x0000FF }

10 local backcolors = { 0xFFEEDD, 0xDDEEFF }1112 −− access the cu r ren t te legram13 local tg = telegrams . t h i s ( )1415 −− s e l e c t the t e x t and background co lo r depending on the data

source16 local f c = t e x t c o l o r s [ tg : d i r ( ) ]17 local bc = backcolors [ tg : d i r ( ) ]1819 −− d i sp lay t ime20 box . t e x t { cap t ion ="Time " , t e x t = tg : t ime ( ) , fg=fc , bg=bc }

2122 −− d i sp lay a l l data as hex23 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = tg . dump { } , fg=fc , bg=bc }24 end

Zur Vollständigkeit haben wir die split Funktion ebenfalls mit aufgelistet.Zeile 9 ist eine typische Lua Tabelle (oder Array) mit zwei Einträgen für dieTextfarbe (je nach Richtung). Zeile 10 definiert entsprechend zwei Farben fürden Hintergrund.In Zeile 13 holen wir das zuständige Telegramm und weisen es der Variable tgzu. Die Funktion tg:dir() liefert die Quelle oder Richtung des Telegrammsals Wert 1 (Port A/Ch1) oder 2 (Port B/CH2). Das Resultat wird in den Zeilen

102

Page 113: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

16 und 17 genutzt um für das aktuelle Telegramm Text- und Hintergrundfarbeauszuwählen. Zu guter Letzt übergeben wir diese Farben als zusätzliche Para-meter fg und bg an die beiden Box Aufrufe (Zeile 20 und 23).Drücken Sie jetzt die Taste F5 - voila - die bislang schwarz/weiße Telegramm-Anzeige wechselt in eine bunte Darstellung.

Time2.339189

Data (hex)03a 030 032 030 032 043 034 00d 00a

Time2.351468

Data (hex)03a 030 032 030 032 030 046 031 035 036 041 034 032 037 044 00d 00a

Übrigens: Jede Änderung an dem Template wird automatisch bei Ausführungmittels F5 gespeichert.Als nächstes wollen wir die beiden Telegramm Begrenzer ’:’ (3Ah) und die End-Of-Frame Sequenz CRLF gesondert hervorheben um etwaige Abweichungenim Telegramm durch Übertragungsfehler besser erkennen zu können.

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f data == 58 then return STARTED end3 i f s t r : f i n d ( " \ r \ n " ) then return COMPLETED end4 return MODIFIED5 end67 function out ( )8 −− te legram co lo rs9 local t e x t c o l o r s = {0xFF0000 ,0 x0000FF }

10 local backcolors = {0xFFEEDD,0xDDEEFF}1112 −− access the cu r ren t te legram13 local tg = telegrams . t h i s ( )1415 −− s e l e c t the t e x t and background co lo r depending on the data

source16 local f c = t e x t c o l o r s [ tg : d i r ( ) ]17 local bc = backcolors [ tg : d i r ( ) ]1819 −− d i sp lay t ime20 box . t e x t { cap t ion ="Time " , t e x t = tg : t ime ( ) , fg=fc , bg=bc }2122 −− s t a r t colon23 box . t e x t { cap t ion ="SOF" , t e x t = s t r i n g . char ( tg : data ( 1 ) ) , bg=fc , fg=bc }

2425 −− d i sp lay a l l data as hex26 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = tg : dump{ f i r s t =2 , l a s t =−3}, fg=fc ,

bg=bc }2728 −− end of frame CRLF29 box . t e x t { cap t ion ="EOF" , t e x t = tg : dump{ f i r s t =−2}, fg=bc , bg= f c }30 end

Zur Anzeige des Startzeichens ’:’ verwendet Zeile 23 eine normale Text Box.Der Titel (caption) der Box ist SOF (Start Of Frame). Als Boxinhalt wird daserste Byte des Telegramms mit tg:data(1) abgefragt. Dies liefert bei einemkorrekten Telegramm den Dezimalwert 58.Besser wäre hier die direkte Darstellung als Doppelpunkt. Wir wandeln deshalbden Bytewert mit: string.char(tg:data(1)) in seine Zeichenrepräsenta-

103

Page 114: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

tion (ASCII) um4.Das Ende der Telegramm Sequenz benötigt keine Konvertierung. Zur besse-reb Lesbarkeit geben wir beide Zeichen einfach als Box mit invertierten Farbenaus (Zeile 29).Zum Schluss müssen wir nur noch bei der Darstellung der eigentlichen Datendie Länge anpassen (Zeile 26). Die anzuzeigenden Daten beginnen jetzt anPosition 2 (die erste ist das SOF) und enden mit dem letzten Byte vor demCRLF bzw. Position -3. Das Resultat unserer Modifikationen sehen Sie im fol-genden Bild:

Time2.339189

SOF:

Data (hex)030 032 030 032 043 034

EOS00d 00a

Time2.351468

SOF:

Data (hex)030 032 030 032 030 046 031 035 036 041 034 032 037 044

EOS00d 00a

Die Daten werden als 3-stellige Hexwerte angezeigt. Dies ist die Voreinstellungda der MSB-Analyser 9 Bit Daten unterstützt.Unser Beispiel enthält keine 9 Bit Datenwörter, wir können deshalb die Darstel-lung auf 2 Stellen begrenzen. Der Parameter width erlaubt die Angabe voneiner abweichenden Stellenzahl.Hier die angepasste Zeile 26:

26 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = tg : dump{ f i r s t =2 , l a s t =−3,width =2} , fg=fc , bg=bc }

...und das Resultat für das ’rote’ Telegramm:

Time2.339189

SOF:

Data (hex)30 32 30 32 43 34

EOS00d 00a

Handhabung von Daten im base16 FormatIm weiteren Verlauf werden wir uns nun einige Fähigkeiten des Protokollmoni-tors ansehen, die weit über das hinaus gehen, was in den früheren Versionenmöglich war.Unser Beispiel simuliert die Bus Kommunikation zwischen einem Sender undzwei Geräten (Sensoren) die kontinuierlich die Temperatur, den Luftdruck unddie Luftfeuchtigkeit messen.Stellen Sie sich vor, jedes dieser beiden Geräte steht an einem unterschied-lichen Standort. Der Sender (oder Bus Master) erfragt bei jeden Teilnehmer inwahlloser Reihenfolge eine dieser Informationen. Die Antwort ist eine Fliess-kommazahl. Mit Ausnahme des Startzeichens ’:’ sowie dem CRLF am Endewerden alle Datenbytes des Telegramms als zwei ASCII Zeichen kodiert (hexFormat oder Base16). Ein Beispiel:Das Byte 5Bh wird als zwei Zeichen 35h und 42h übertragen (35h = ’5’, 42h =’B’ in ASCII).Zu guter Letzt sorgt eine einfache Prüfsumme für die Integrität der übertrage-nen Daten. Ein einzelnes Telegramm sieht damit wie folgt aus:

Start Address Function Data Checksum End

: 2 chars 2 chars 0 or 8 chars 2 chars CRLF

4Das string Modul ist Teil der Lua Sprache.

104

Page 115: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

Beachten Sie das die Anfragen des Master ein leeres Datenfeld besitzen!

In einem ersten Schritt wandeln wir die im Base16 (oder Hex-ASCII) Formatvorliegenden Daten zurück in ihre binäre Represenatation. Dies erleichert unsdie nachfolgende Bearbeitung der im Telegramm enthaltenen Informationen.Sie können - natürlich - eine kleine Lua Funktion schreiben, die dies über-nimmt. Allerdings bietet der Protokollmonitor für solche Zwecke ein eigenesbase16 Modul um solche Daten flexibel zu handhaben. Das Module ist aufSeite 124 detailiert beschrieben.Zur Rückgewinnung der Originaldaten in einem base16 kodierten String über-geben Sie diesen einfach der Funktion base16.decode(string).

1 loca l tg = telegrams . t h i s ( )2 loca l bindata = base16 . decode ( tg : s t r i n g ( ) : sub ( 2 , −3 ) )

tg:string() liefert alle in einem Telegramm enthaltenen Bytes als Lua string.Der Doppelpunkt ’:’ und die End-Of-String Sequenz CRLF sind allerdings nichtTeil der in Base16 kodierten Daten. Dekodiert werden muss der Teilstring vomzweiten Byte (Position 2) bis zum dritt-letzten Byte (Position -3). Die Extraktioneines Teilstrings ist in Lua eine häufig benötigte Anwendung und Lua’s stringModul offeriert hierzu eine geeignete Funktion: sub(first,last).Das einzige was wir tun müssen ist die sub Funktion direkt vom Ergebnis viatg:string():sub(2,-3) aufzurufen.

Beachten Sie bitte! Da Lua Strings nur normale Bytes enthalten können, wer-den alle 9-Bit Daten im Telegramm auf normale Bytes reduziert. Wenn Ihr Pro-tokoll explizit 9-Bit Werte verwendet, müssen Sie auf die einzelnen Daten pertelegram:data(index) zugreifen.

Das Resultat der Umwandlung wird in Zeile 2 der Variable bindata zuge-wiesen, welche wir für alle weiteren Schritte verwenden wollen. Der Inhalt derbinären Sequenz ist:

Address Function Data Checksum

1 byte 1 byte 0 or 4 bytes 1 byte

Sie können die einzelnen Bytes eines Lua Srings mit string:byte(index)erfragen. Diese Funktion arbeitet ähnlich der telegram:data(index) undliefert das Byte an der angegebenen String Position. Eine Anzeige von Adres-se und Funktion ist damit einfach zu realisieren:

1 box . t e x t { cap t ion =" Address " , t e x t =b indata : byte ( 1 ) , fg=fc , bg=bc }2 box . t e x t { cap t ion =" Function " , t e x t =b indata : byte ( 2 ) , fg=fc , bg=bc }

Die Prüfsumme ist das letzte Byte in der Binärsequenz und es wäre schön die-se in hexadezimaler Notation zu sehen. Dazu übergeben wir das ChecksumByte der string format Funktion:

box . t e x t { cap t ion ="Chksum" ,t e x t = s t r i n g . format ("%02X" , b indata : byte (−1) ) , fg=fc , bg=bc }

105

Page 116: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

Wie bereits erwähnt unterscheidet unser Protokoll zwischen Anfragen (Re-quests) und Antworten (Responses). Nur die Antwort Telegramme enthaltenein zusätzliches Datenfeld mit einem 4-Byte umfassenden Fliesskommawert.Antwort-Telegramme sind durch ihre Länge von 17 Byte (Originaltelegrammin Base16 Kodierung) bzw. durch eine Binärsequenz von 7 Bytes (Adresse=1Byte, Funktion=1 Byte, Daten=4 Bytes, Checksum=1 Byte) gekennzeichnet.Um sie von einer Anfrage zu unterscheiden reicht eine Prüfung der Telegramm-oder bindata Länge aus.

1 i f tg : s i ze ( ) == 17 then . . . end2 i f #bindata == 7 then . . . end

Es macht keinen Unterschied welche davon Sie wählen. Da wir aber im weite-ren Verlauf auf die bindata Sequenz zugreifen wählen wir die zweite Variante.

1 function out ( )2 −− te legram co lo rs3 local t e x t c o l o r s = { 0xFF0000 , 0x0000FF }4 local backcolors = { 0xFFEEDD, 0xDDEEFF }56 −− access the cu r ren t te legram7 local tg = telegrams . t h i s ( )8 local bindata = base16 . decode ( tg : s t r i n g ( ) : sub ( 2 , −3 ) )9

10 −− s e l e c t the t e x t and background co lo r depending on the datasource

11 local f c = t e x t c o l o r s [ tg : d i r ( ) ]12 local bc = backcolors [ tg : d i r ( ) ]1314 −− d i sp lay t ime15 box . t e x t { cap t ion ="Time " , t e x t = tg : t ime ( ) , fg=fc , bg=bc }1617 −− s t a r t colon18 box . t e x t { cap t ion ="SOF" , t e x t = s t r i n g . char ( tg : data ( 1 ) ) , bg=fc ,

fg=bc }1920 −− the address f i e l d21 box . t e x t { cap t ion =" Address " , t e x t =b indata : byte ( 1 ) , fg=fc , bg=bc }2223 −− the f u n c t i o n number f i e l d24 box . t e x t { cap t ion =" Function " , t e x t =b indata : byte ( 2 ) , fg=fc , bg=bc }2526 −− i s i t a response?27 i f #bindata >= 7 then2829 −− d i sp lay the response data as hex30 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = tg : dump{ f i r s t =3 , l a s t =6 ,

width =2} , fg=fc , bg=bc }3132 end3334 −− the checksum byte i s always the l a s t byte i n b indata35 box . t e x t { cap t ion ="Chksum" , t e x t = s t r i n g . format ("%02X" , b indata : byte

(−1) ) , fg=fc , bg=bc }3637 −− end of frame CRLF38 box . t e x t { cap t ion ="EOF" , t e x t = tg : dump{ f i r s t =−2, width=2 } , fg=bc ,

bg= f c }3940 end

106

Page 117: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

Zeile 27 prüft die Länge und damit den Typ. Im Falle einer Antwort (bindataenthält mindestens 7 Zeichen) wird in Zeile 30 eine zusätzlicher Datenbox aus-gegeben. Das Ergebnis:

Time2.339189

SOF:

Address2

Function2

ChecksumC4

EOS0D 0A

Time2.351468

SOF:

Address2

Function2

Data (hex)0F 15 6A 42

Checksum7D

EOS0D 0A

Die Anzeige der Funktion als Nummer ist in den meisten Fällen ausreichend.Aber wäre es nicht bequemer die Funktionsnummer mit einer eingängigerenBeschreibung oder einem Namen zu versehen, so dass die Bedeutung einesTelegramms sofort ersichtlich ist? In unserem Beispiel sind die Funktionen wiefolgt nummeriert:

1 Temperature

2 Moisture

3 Pressure

Eine Lua Funktion, die einen Text abhängig von einem Eingabeparameter zu-rück liefert, könnte so aussehen5.

1 function GetFunctionName ( number )2 local names = { " Moisture " , " Humidi ty " , " Pressure " }3 return names [ number ]4 end

Zeile 2 erzeugt eine Lua Tabelle (oder Array) mit drei Texteinträgen (Funktions-beschreibungen). Da names als local deklariert ist kann auf diese Tabelle vonaußerhalb nicht zugegriffen werden. Dies vermeidet Konflikte wenn Ihr Templa-te noch an anderer Stelle eine Variable names verwendet und ist deshalb dieempfohlene Vorgehensweise!Lua indiziert Tabellen beginnend mit 1. Zeile 3 liefert den Eintrag entsprechenddes übergebenen Parameters number.

In Lua ist das verschachtelte Anlegen von Funktionen erlaubt. D.h. die Funk-tion GetFunctionName kann sowohl innerhalb von out() stehen als auchaußerhalb definiert werden. Zur besseren Lesbarkeit des Skripts sollten Sieaber nur relativ kleine Funktion in out() platzieren und bei umfangreicherenFunktionen (oder mehreren) diese z.B. am Ende des Skriptes anlegen.

1 function out ( )2 function i n s i d e ( )3 −− do something4 end5 −− c a l l the f u n c t i o n6 i n s i d e ( )7 end

Lassen Sie uns die einzelne Code Schnipsel zusammentragen. Das folgendeListing zeigt die signifikanten Modifikationen. Wir fügen die Funktion GetFunctionName()innerhalb out() hinzu und rufen diese mit der Funktionsnummer des Tele-gramms in Zeile 24 auf.

5Wir gehen davon aus, das die übergebene Funktionsnummer gültig ist.

107

Page 118: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

1 function out ( )23 function GetFunctionName ( number )4 loca l names = { " Moisture " , " Humidi ty " , " Pressure " }5 return names [ number ]6 end78 −− access the cu r ren t te legram9 local tg = telegrams . t h i s ( )

10 local bindata = base16 . decode ( tg : s t r i n g ( ) : sub ( 2 , −3 ) )11 . . .

23 −− the f u n c t i o n number f i e l d24 box . t e x t { cap t ion =" Function " , t e x t =GetFunctionName ( b indata : byte ( 2 ) ) ,

fg=fc , bg=bc }25 . . .26 end

Und hier das Ergebnis für die ersten beiden Telegramme:

Time2.339189

SOF:

Address2

FunctionMoisture

ChecksumC4

EOS0D 0A

Time2.351468

SOF:

Address2

FunctionMoisture

Data (hex)0F 15 6A 42

Checksum7D

EOS0D 0A

Die Anzeige der Funktionsnamen ist lediglich ein Beispiel wie bestimmte Ab-schnitte eines Telegramms in ein von Menschen lesbares Format umgewandeltwerden können. Genauso einfach ließe sich noch statt der Geräteadresse derGerätename ausgegeben.Wir werden uns aber im Folgenden ganz auf die Daten selbst konzentrieren.

In unserem Protokoll beantworten die Geräte den per Funktionsnummer er-fragten Wert als Fliesskommazahl. Die Zahl entspricht dabei der Temperatur,der Feuchtigkeit oder dem Luftdruck.Das Fliesskommaformat besteht aus vier Bytes im bindata String (bzw. achtBytes in der ursprünglichen Telegramm Sequenz). Das obige Bild zeigt die 4Bytes in der Data (hex) Box des Antwort Telegramms.Unsere nächste Aufgabe besteht darin, eine bestimmte Anzahl von Bytes ineine Zahl umzuwandeln.

Bytefolgen in Zahlen umwandelnBei der Analyse von Protokollen ist es oftmals erforderlich eine bestimmteBytesequenz in eine Zahl zu konvertieren. Die verwendeten Zahlwerte kön-nen dabei in den unterschiedlichsten Formaten vorliegen: Integer (Ganzzahl)Werte werden als zwei oder vier Bytes übertragen, Fließkommazahlen in Fol-gen von vier (einfache Genauigkeit) oder acht Bytes (doppelte Genauigkeit).Und: Selbst die Reihenfolge ist relevant. Manche Protokolle übertragen dashöcherwertigste Byte zuerst (Big Endian), andere senden als erstes das nie-derwertigste Byte (Low Endian).Glücklicher Weise enthält der Lua Interpreter eine mächtige Funktion um alldiese verschiedenen Typen zu verarbeiten.

Die Funktion bunpack erwartet zwei obligatorische Parameter: Die Bytesequenzals Lua String, und wie diese umzuwandeln ist als zweiten Formatstring. Ein

108

Page 119: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

optionaler dritter Parameter spezifiziert die Position innerhalb der Bytefolge abder die Konvertierung starten soll, falls diese vom Stringanfang abweicht.pos , val1 , . . . = bunpack ( sequence , format , p o s i t i o n )

Die Funktion liefert immer mindestens zwei Werte zurück. Der erste (hier pos)gibt die Stringposition an, ab der die nächste Umwandlung erfolgt. Danachfolgen abhängig vom Format Parameter mindestens ein oder mehrere Werte.Bevor wir zu unserem Tutorial zurückkehren, hier einige Beispiele die Ihneneine Vorstellung der Arbeitsweise von bunpack vermitteln.

1 seq = " \248\036\001\000\154\153\045\065"2 pos , i = bunpack ( seq , "< I " )3 pos , f = bunpack ( seq , "< f " , pos )

In Zeile 1 generieren wir eine Zeichenfolge mit den einzelnen Zeichen in dezi-maler Notation. So erzeugt ein "\255" ein einzelnes hex FF Byte und die Einga-be "\104\101\108\108\111" ist gleichbedeutend mit dem String "hello". Die de-zimale Notation erlaubt uns Sequenzen mit Bytewerten zu erzeugen die nichtunbedingt Teil der normalen Tastatur sind.

Die obige Sequenz ist nicht zufällig gewählt.Die ersten vier Bytes repräsentieren eine 32-Bit Integerzahl mit dem Wert75000 in Little-Endian Ordnung (also das niederwertigste Byte zuerst). DieBytes 5...8 sind das binäre Äquivalent der Zahl 10.85, ebenfalls im Little-EndianFormat (LE). Die folgende Tabelle zeigt die Bytefolge in hexadezimaler Schreib-weise:

LE Integer 75000 LE Float 10.85

F8 24 01 00 9A 99 2D 41

1 Byte position 8

Und nun lassen Sie uns sehen wie bunpack aus dieser Aneinanderreihungvon Bytes echte Zahlen reproduziert. Wir beginnen mit dem 32-Bit Integerwert.

2 pos , i = bunpack ( seq , "< i " )

Das erste Argument eines bunpack Aufrufes ist immer der zu konvertierendeString. Der zweite (Format) Parameter "<i" gibt den Datentyp an, den wir aneiner bestimmten Position - übergeben als dritter Parameter - erwarten. Da dieVorgabe gleichbedeutend mit dem Stringanfang ist können wir hier auf die Po-sition verzichten.Die eigentliche ’Magie’ oder Vielfalt von bunpack liegt in seinem Formatstring.Jeweils ein einzelnes Zeichen ist einem ganz bestimmten Datentyp zugeord-net. Ein ’<’ oder ’>’ davor definiert die Byteordnung. Ein ’<’ steht für Little Endi-an, ein ’>’ bedeutet eine Interpretation als Big Endian.Der Formatparamter versteht eine ganze Reihe unterschiedlichster Typen. Siesind alle detailiert im Abschnitt 13.7 aufgelistet.In unserem Beispiel interpretiert bunpack die ersten vier Bytes als Vorzeichenbehaftete 32 Bit Zahl in Little-Endian, d.h. niedriges Byte zuerst ("<i"). DieFunktion liefert als ersten Wert die Position nach erfolgter Dekodierung. Hierist pos 5 da der nächste Wert (die Fließkommazahl) an Position 5 beginnt. Daszweite Resultat i ist die Longwert selbst, also 75000.

109

Page 120: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

Die Umwandlung in Zeile 3 startet an der Position die wir im vorherigen Auf-ruf zurück erhalten haben. Da es sich bei dem erwarteten Zahlentyp um eine32-Bit Fließkommazahl in Little-Endian Ordnung handelt, übergeben wir alsFormatstring "<f".

3 pos , f = bunpack ( seq , "< f " , pos )

Das Resultat ist erneut ein Wertepaar. pos zeigt auf das neunte Byte (das aufdie Fließkommazahl folgende Byte) und f enthält den Fließkommawert 10.85.In unserem Beispiel folgen beide Zahlenwerte (long integer und float) direktaufeinander. In einem solchen Fall können wir die Extraktion auch in einemRutsch durchführen und auf die ’Mitnahme’ des Positionsparamters ganz ver-zichten.

pos , i , f = bunpack ( seq , "< i < f " )

Fantastisch - nicht wahr!Und da Ihnen der Protokollmonitor erlaubt, mit diversen Formatparametern zu’spielen’ und gleichzeitig die Auswirkung auf die Telegrammdarstellung zu se-hen, ist es besonders einfach Telegrammabschnitte auf bestimmte Datentypenhin zu prüfen. Handelt es sich um ein Ganz- oder Fließkommazahl, um Bigoder Little-Endian? Die Antwort ist immer nur eine kurze Änderung des For-matparameters entfernt - ein gewaltiger Vorteil gerade bei unbekannten Proto-kollspezifikationen.

Ok, lassen Sie uns nach diesem kleinen Exkurs zu unserem Tutorial zurückkehren. Wir hatten bereits die Hex ASCII Daten in ihre binäre Repräsentationumgewandelt. Sie erinnern sich, daß ein Antwort Telegramm den angeforder-ten Wert (übergeben als Funktionsnummer) als Fließkommazahl enthält. Hiernoch einmal die Struktur des Antwort Telegramms:

Address Function Float Number Checksum

1 byte 1 byte 4 bytes 1 byte

Die folgenden Zeilen fassen alle bisherigen Modifikationen in der out() Funk-tion zusammen:

1 function out ( )23 function GetFunctionName ( number )4 loca l names = { " Moisture " , " Humidi ty " , " Pressure " }5 return names [ number ]6 end78 −− te legram co lo rs9 local t e x t c o l o r s = { 0xFF0000 , 0x0000FF }

10 local backcolors = { 0xFFEEDD, 0xDDEEFF }1112 −− access the cu r ren t te legram13 local tg = telegrams . t h i s ( )14 local bindata = base16 . decode ( tg : s t r i n g ( ) : sub ( 2 , −3 ) )1516 −− s e l e c t the t e x t and background co lo r depending on the data

source17 local f c = t e x t c o l o r s [ tg : d i r ( ) ]18 local bc = backcolors [ tg : d i r ( ) ]19

110

Page 121: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.4. TEMPLATE SPRACHSYNTAX

20 −− d i sp lay t ime21 box . t e x t { cap t ion ="Time " , t e x t = tg : t ime ( ) , fg=fc , bg=bc }2223 −− s t a r t colon24 box . t e x t { cap t ion ="SOF" , t e x t = s t r i n g . char ( tg : data ( 1 ) ) , bg=fc ,

fg=bc }2526 −− the device address27 box . t e x t { cap t ion =" Address " , t e x t =b indata : byte ( 1 ) , fg=fc , bg=bc }2829 −− the f u n c t i o n number30 box . t e x t { cap t ion =" Function " , t e x t =GetFunctionName ( b indata : byte ( 2 ) ) ,

fg=fc , bg=bc }3132 i f #bindata >= 7 then33 −− i t i s a response34 loca l next , value = bunpack ( bindata , "< f " , 3 )35 box . t e x t { cap t ion =" Value " , t e x t =value , fg=fc , bg=bc }36 end

3738 −− the checksum byte i s always the l a s t byte i n b indata39 box . t e x t { cap t ion ="Chksum" , t e x t = s t r i n g . format ("%02X" , b indata : byte

(−1) ) ,40 fg=fc , bg=bc }4142 −− end of frame CRLF43 box . t e x t { cap t ion ="EOF" , t e x t = tg : dump{ f i r s t =−2 } , fg=bc , bg= f c }44 end

Die entsprechende Zeile 34 sollte jetzt leicht verständlich sein. Im Falle einesReponse Telegramms extrahieren wir die Fließkommazahl (an Position 3) undzeigen den Wert in einer zusätzlichen Box an.Die Überprüfung der Checksum heben wir uns für später auf. Sie werden viel-leicht bemerkt haben, daß wir die Ausgabe der End-Of-String Sequenz perrelativer (negativer) Indexierung gelöst haben. Dadurch müssen wir uns nichtum die unterschiedlichen Längen von Anfrage und Antwort Telegrammen küm-mern. Die EOS Zeichen CRLF sind immer an der ’vorletzten’ Position (-2) zufinden. Das Resultat für die allerersten beiden Telegramme ist damit:

Time2.339189

SOF:

Address2

FunctionMoisture

ChecksumC4

EOS0D 0A

Time2.351468

SOF:

Address2

FunctionMoisture

Value58.520565032959

Checksum7D

EOS0D 0A

Verglichen mit der ersten Anzeige ist das deutlich informativer und verständ-licher. Wir sind damit aber noch nicht am Ende. Unser Template enthält nocheinigen Spielraum für weitere Verbesserungen. Zum Beispiel: Die Fließkomma-zahl wird mit zu vielen Nachkommastellen dargestellt. Und es wäre natürlichschön die Prüfsumme zu validieren.Lua enthält ein integriertes string Modul welches neben den üblichen String-Operationen wie suchen, ersetzen und regulären Ausdrücken auch eine C ähn-liche Formatfunktion bietet.

35 box . t e x t { cap t ion =" Data " , t e x t = s t r i n g . format ("%.2 f " , value ) , bg=bc , fg= f c }

string.format unterstützt eine ganze Reihe von Variablentypen und Optio-nen. Detaillierte Informationen dazu finden Sie in einem der Online Manuals die

111

Page 122: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

am Ende des Kapitels aufgelistet sind. Hier verwenden wir die Format(ierungs)-Anweisung "%.2f", die eine gegebene Fliesskommazahl (’f’) mit 2 Nachkom-mastellen ausgibt.Als kleine Übung können Sie eine Funktion erstellen, die abhängig von derFunktionsnummer einen entsprechenden Formatstring inklusive physikalischerEinheit zurückgibt. Eine mögliche Lösung sehen Sie hier:

1 function GetFunctionFormat ( number )2 local formats = { "%.2 f Deg" , "%.2 f %%", "%imBar " }3 return formats [ number ]4 end56 i f #bindata >= 7 then7 −− i t i s a response8 local next , value = bunpack ( bindata , "< f " , 3 )9 box . t e x t { cap t ion =" Value " ,

10 t e x t = s t r i n g . format ( GetFunctionFormat ( b indata : byte ( 2 ) ) ,value ) ,

11 bg=bc , fg= f c }12 end

Mit Ausnahme des "%.2%%" sollte der Code eigentlich selbsterklärend sein.Das Prozentzeichen wird bei Formatanweisungen als Platzhalter für die über-gebene Variable benutzt. Wenn Sie das Prozentzeichen mit ausgeben möchten(hier im Falle der Luftfeuchtigkeit) müssen Sie die Platzhalterbedeutung durchein weiteres Prozentzeichen ausschalten, d.h. einfach gesprochen zwei Pro-zentzeichen im Formatstring angeben.

Prüfsumme validierenUnsere Einführung in den neuen Template Mechanismus ist damit fast am En-de. Zu guter Letzt wollen wir noch die Prüfsumme der einzelnen Telegrammevalidieren. Dabei sollen korrekte Prüfsummen grün (für OK) und fehlerhafte ineinem hellen Orange ausgegeben werden.Die Prüfsumme in unserem Protokoll wird einfach gebildet durch Addieren alleBytes beginnend mit dem ersten Adressbyte und mit dem letzten Datenbyteendend. Der Doppelpunkt sowie das CRLF werden nicht berücksichtigt. DiePrüfsumme ist auf 8 Bit beschränkt, Überläufe bei der Addition werden des-halb ignoriert.Die Funktion zur Bildung der Prüfsumme sieht wie folgt aus:

1 function Checksum ( data )2 local sum = 03 for i =1 ,# data do sum = sum + data : byte ( i ) end4 −− d iscard the c a r r i e s5 return sum % 2566 end

Die Checksum Funktion wird aufgerufen mit der zu prüfenden Bytefolge undliefert den niederwertigen 8 Bit Wert der Summe zurück.

1 loca l chksum = Checksum ( tg : s t r i n g ( ) : sub ( 2 , −5 ) )

Der startende Doppelpunkt ist nicht Teil der Prüfsumme. Wir übergeben des-halb die Position 2 als Substring Startwert. Zudem müssen die Prüfsummeselbst (2 Bytes) und das CRLF (ebenfalls 2 Bytes) ausgeschlossen werden.D.h. die Substring Endposition ist 4 Byte weniger als die Telegrammlänge bzw.das fünfte Byte gezählt von hinten.

112

Page 123: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.5. FILTERUNG

Abschließend vergleichen wir die kalkulierte Prüfsumme mit der im Telegrammenthaltenen und geben entweder eine ’gute’ Checksum Box oder eine ’schlech-te’ Checksum Box aus.

1 loca l chksum = Checksum ( tg : s t r i n g ( ) : sub ( 2 , − 5 ) )23 i f chksum == bindata : byte ( −1 ) then4 box . t e x t { cap t ion ="Chksum" , t e x t = s t r i n g . format ("%02X" , chksum ) ,5 fg =0xEEEEEE, bg=0x00aa00 }6 else7 box . t e x t { cap t ion ="Chksum f a i l e d ! " , t e x t = s t r i n g . format ("%02X" ,

chksum ) ,8 fg =0xcc0000 , bg=0 x f f cc00 }9 end

Das komplette Beispiel mit allen hier gemachten Ergänzungen finden Sie alscomplete-sample.msbtml im examples\ProtocolView Verzeichnis. DieBeispielaufzeichnung enthält zudem zur Demonstration unserer Checksum Va-lidierung eine falsche Prüfsumme im dritten Antworttelegramm.

Benannte ParameterHier noch ein paar ergänzende Worte zu der Übergabe von Parametern inLua. Sie werden sicher bemerkt haben, dass einige Funktionen mit folgenderParameter Konvention aufgerufen wurden:

parametername = value

Dies ist nicht Lua-typisch, aber in vielerlei Hinsicht mehr als hilfreich. Gera-de bei Funktionen mit einer ganzen Reihe von Parametern trägt dieser Ansatzdeutlich zur besseren Lesbarkeit bei. Und: Sie müssen sich keine Gedankenüber eine etwaige Aufrufreihenfolge der Funktionsargumente machen. Ein Bei-spiel:

1 box . b lock ( " Func " , "Command" , 0xFFAAAA, 0x0000FF )

Ohne eine Blick ins Handbuch ist die Bedeutung der einzelnen Parameter nichtso ohne weiteres ersichtlich. Was ist die Überschrift, was der Text oder die Text-farbe?Hier der gleiche Aufruf allerdings mit benannten Parametern:

1 box . b lock { cap t ion ="Func " , t e x t ="Command" , fg =0xFFAAAA, bg=0x0000FF }

Die Bedeutung ist offensichtlich, auch wenn Sie sich merken müssen, das fg fürdie Vordergrund/Textfarbe (foreground) und bg für die Hintergrundfarbe (back-ground) steht.Beachten Sie, dass benannte Parameter im Gegensatz zu normalen Funktion-sargumenten immer in geschweiften Klammern {...} stehen müssen, da Luadiese als übergebene Tabelle auswertet. Der korrekte Aufruf lautet eigentlichfunction({...}), aber die äußeren Klammern sind in diesem Fall optionalund Sie können Sie weglassen.

13.5 FilterungDie Filterung der angezeigten Telegramme ist ein oft verlangtes Feature. Aberwie sollen Telegramme mit unbekanntem Protokoll gefiltert werden? Aus der

113

Page 124: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

Sicht des Protokollmonitors macht eine vordefinierte Liste von Filtern keinengroßen Sinn, da jeder Protokolltyp eigene Bedingungen daran stellt, was an-gezeigt (gefiltert) und was in der Ausgabe unterdrückt werden soll.Um ein Beispiel zu geben: Sie haben einen Feldbus und wollen nur die Tele-gramme eines bestimmten Teilnehmers (mit einer spezifischen Geräteadresse)sehen. Oder es interessieren Sie nur bestimmte Telegrammtypen (Funktions-nummern etc.). In beiden Fällen muss der Filtermechanismus in der Lage sein,die Adresse oder Funktionsnummer aus den Telegrammen zu extrahieren undmit den vorgegebenen Filterparametern vergleichen.Auf Grund der Protokollvielfalt wird schnell klar, das der Filtermechanismus Teildes Templates sein muss.

Anzeigen und verbergen kompletter TelegrammeDamit kommen wir zum letzten Parameter in der split Funktion. Als Erinne-rung hier noch einmal der Aufruf der Funktion:

1 function s p l i t ( data , i nva l , a l t e r , s t r , f i l t e r )2 −− you s p l i t code3 return STATE4 end

Der filter Parameter ist einfach ein Textstring der dem aktuell ausgewähltenEintrag der Filtereingabe in der Werkzeugleiste entspricht. Er ermöglicht damitbeliebige Eingaben als Text an die split Funktion zu übergeben.Warum die Filterung in der split() Funktion und nicht einfach in der Ausga-be?Das Telegramm Ausgabefenster behandelt NUR die Telegramme die gerade imFenster sichtbar sind. Es kann keine Telegramme entfernen (ausfiltern) ohnedabei eine Diskrepanz zwischen wirklich vorhandenen und angezeigten Tele-grammen zu erzeugen. So können Sie z.B. alle Telegramme ausfiltern, nichtsdesto trotz sind diese ’intern’ vorhanden und die vertikale Bildlaufleiste (Scroll-bar) macht Ihnen das mehr als deutlich indem Sie dann durch eine vermeintlichleere Telegrammliste scrollen können.Es gibt Anwendungsfälle für die Filter Eingabe, die die Darstellung der Tele-gramme und damit die out() Funktion betrifft. Diese sind nicht zu verwech-seln mit der ’Filterung’ bestimmter Telegramme aus dem Datenstrom, da siesich nur auf die aktuell sichtbaren Telegramme im Fenster bezieht. Wir kom-men im nächsten Abschnitt darauf zurück.

Der Filtermechanismus ist am besten - wie üblich - an einem Beispiel erklärt.Laden Sie das Tutorial Projekt erneut und wählen Sie im Protokollmonitor dasTemplate ’Tutorial-Complete’. Kopieren Sie das Template mit dem + Knopf,damit Sie es als neues Template editieren können.

Die Tutorialaufzeichnung enthält die Kommunikation eines Masters mit zweiGeräten. Die Geräte haben die Adressen 1 und 2 (nur als Erinnerung).Und nun stellen Sie sich vor, Sie könnten einfach nur die Kommunikation zwisch-en dem Master und dem ersten Gerät sehen oder nur alle Telegramme die einebestimmte Anfrage, z.B. nach der Temperatur betreffen.Bestimmte Telegramme zu filtern heißt, die unerwünschten Telegramme ausder internen Liste des Protokollmonitors zu entfernen. Dafür bietet die splitFunktion den besonderen Rückgabestatus REMOVED. Zunächst wollen wir nur

114

Page 125: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.5. FILTERUNG

die Telegramme darstellen, die an das erste Gerät bzw. von diesem gesendetwerden (Geräteadresse 1). Um dies zu gewährleisten müssen wir alle Tele-gramme mit einer abweichenden Adresse unterdrücken. In unserem Fall reichtes, alle Telegramme mit der Adresse 2 zu entfernen. Die Adresse ist als zweiHex ASCII Zeichen im zweiten und dritten Byte des Telegramms kodiert. Imfolgenden das allererste Telegramm wie es im Datenmonitor dargestellt wird.

3A 30 32 30 32 43 43 0D 0A :0202C4..

Wir erreichen dies, indem wir einfach nach der Zeichenkette "02" an der 2tenPosition im Telegramm suchen. Oder in Lua formuliert:

1 i f s t r : f i n d ( " 0 2 " ) == 2 then . . .

Der Parameter str repräsentiert alle bis dato empfangenen Zeichen des Te-legramms als String und ist damit ein idealer Kandidat für Lua’s string Modul.Diese Abfrage ist damit jedesmal wahr, wenn es sich um ein Telegramm anbzw. vom 2ten Gerät handelt. Da wir diese nicht sehen wollen, geben wir RE-MOVED zurück (siehe Zeile 3 im folgenden Listing).

1 function s p l i t ( data , i n t v a l , a l t e r , s t r , f i l t e r )2 i f data == 58 then return STARTED end3 i f s t r : f i n d ( " 0 2 " ) == 2 then return REMOVED end4 i f s t r : f i n d ( " \ r \ n " ) then return COMPLETED end5 return MODIFIED6 end

Wenn Sie die split Funktion angepasst haben drücken Sie F5 (oder klickenSie auf den Ausführungsknopf in der Werkzeugleiste) und - voila - alle nun an-gezeigten Telegramme betreffen nur noch die Kommunikation zwischen Masterund dem ersten Gerät.Wenn Sie jetzt in Zeile 3 den String "02" mit "01" ersetzen werden nur noch dieTelegramme des zweiten Gerätes gezeigt.Allerdings ist es ziemlich mühselig, jedesmal das Template zu editieren umzwischen den verschiedenen Telegrammansichten hin- und herzuwechseln.Hier kommt das Filtereingabefeld in der Werkzeugleiste ins Spiel.

Weiter oben haben wir bereits die Verbindung zwischen dem Filtereingabefeldund der split Funktion angedeutet. Die aktuelle Eingabe im Filter Controlwird der split Funktion per Parameter filter zur Verfügung gestellt. Wir müs-sen nur den Suchstring "02" in Zeile 3 durch den filter Parameter ersetzen wieim nachfolgenden Code gezeigt.

1 function s p l i t ( data , i n t v a l , a l t e r , s t r , f i l t e r )2 i f data == 58 then return STARTED end3 i f s t r : f i n d ( f i l t e r ) == 2 then return REMOVED end4 i f s t r : f i n d ( " \ r \ n " ) then return COMPLETED end5 return MODIFIED6 end

Ohne eine gültige Filtereingabe (z.B. einem leeren Eintrag) oder einer nichtpassenden Geräteadresse wird die REMOVED Bedingung immer ignoriert unddas Telegramm in der Anzeige dargestellt. Sobald aber der im Filter Controleingegebene Text im Telegramm an Position 2 gefunden wird, kehrt die splitFunktion mit REMOVED zurück und das Telegramm mit der entsprechendenAdresse wird unterdrückt.

115

Page 126: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

Sie können das leicht prüfen sobald Sie die Änderungen in Ihrem Templateübernommen haben. Geben Sie im Filter Control 01 ein und drücken Sie En-ter. Alle Telegramme mit Adresse 1 verschwinden aus dem Telegrammfenster.Ändern Sie nun die Eingabe auf 02 und schließen Sie die Eingabe mit Enterab. Alle nun angezeigten Telegramme haben die Adresse 1.

Lassen Sie uns unser Beispiel noch ein wenig ausbauen und einen Filterme-chanismus für die drei verschiedenen Funktionsnummern implementieren.

1 Temperature2 Moisture3 Pressure

Die Funktionsnummer wird als Hex ASCII in den Bytes 4 und 5 des Telegrammsübertragen.Der Anwender sollte im Filter Control die Funktion auswählen können, die ersehen möchte. (Im Beispiel mit den Geräteadressen war das genau umge-kehrt). D.h. im Falle einer Eingabe von 1 (Temperatur) sollen alle Telegrammebezüglich Feuchtigkeit oder Druck per REMOVED aus der Anzeige verschwin-den.

1 function s p l i t ( data , i n t v a l , a l t e r , s t r , f i l t e r )2 i f data == 0x3A then return STARTED end3 i f f i l t e r == "1 " then4 i f s t r : sub ( 4 , 5 ) == "02" or s t r : sub ( 4 , 5 ) == "03" then5 return REMOVED6 end7 e l s e i f f i l t e r == "2 " then8 i f s t r : sub ( 4 , 5 ) == "01" or s t r : sub ( 4 , 5 ) == "03" then9 return REMOVED

10 end11 e l s e i f f i l t e r == "3 " then12 i f s t r : sub ( 4 , 5 ) == "01" or s t r : sub ( 4 , 5 ) == "02" then13 return REMOVED14 end15 end16 i f s t r : f i n d ( " \ r \ n " ) then return COMPLETED end17 return MODIFIED18 end

Der obige Code filtert alle Telegramme mit Ausnahme der im Filter Control ein-gegebenen Nummer aus. Aber manchmal ist es schwer sich an die richtigeNummer zu erinnern. Vor allem dann, wenn das Protokoll eine weitaus größe-re Zahl von Funktionsnummern unterstützt.

Wir werden deshalb im nächsten (und letzten Schritt) das Filtern noch etwasvereinfachen, indem wir das Filter Control mit einer Liste von Auswahlmöglich-keiten vorbesetzen. Dazu werden wir eine weitere Funktion neben split undout einführen. Diese spezielle filters Funktion erlaubt Ihnen die Filterein-gabe in der Werkzeugleiste mit beliebigen Einträgen zu füllen. Die Definitiondieser Funktion ist simpel:

1 function f i l t e r s ( )2 return " Temperature , Moisture , Pressure "3 end

116

Page 127: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.5. FILTERUNG

Die filters Funktion muss immer einen einzelnen Textstring zurückgeben,wobei jeder auszuwählende Eintrag durch ein Komma getrennt ist. Der ersteEintrag erscheint als ganz oben, der letzte ganz unten in der Auswahlliste desFilter Controls.

Sie können die filters Funktion an beliebiger Stelle des Skripts platzieren,nicht aber innerhalb einer anderen Funktion. Wir empfehlen diese am Anfangdes Templates einzugeben.Die Einträge in dem zurückgelieferten String erscheinen in dem Filter Controlsobald der interne Lua Interpreter das Skript ausgeführt hat. In unserem Fallsind es die Einträge: Temperatur, Moisture und Pressure.

Jetzt müssen wir nur noch die REMOVED Bedingungen dahingehend ändern,dass wir an Stelle der Funktionsnummern die in filters definierten Einträgeverwenden. (Sie finden das komplette Template im Examples Verzeichnis alstutorial-complete-with-filtering.msbtml).

1 function s p l i t ( data , i n t v a l , a l t e r , s t r , f i l t e r )2 i f data == 0x3A then return STARTED end3 i f f i l t e r == " Temperature " then4 i f s t r : sub ( 4 , 5 ) == "02" or s t r : sub ( 4 , 5 ) == "03" then5 return REMOVED6 end7 e l s e i f f i l t e r == " Moisture " then8 i f s t r : sub ( 4 , 5 ) == "01" or s t r : sub ( 4 , 5 ) == "03" then9 return REMOVED

10 end11 e l s e i f f i l t e r == " Pressure " then12 i f s t r : sub ( 4 , 5 ) == "01" or s t r : sub ( 4 , 5 ) == "02" then13 return REMOVED14 end15 end16 i f s t r : f i n d ( " \ r \ n " ) then return COMPLETED end17 return MODIFIED18 end

Mit den entsprechenden Anpassungen in den Zeilen 3, 7 und 11 im obigen Lis-ting ist der Anwender nun in der Lage, die von ihm gewünschten Telegramm-typen einfach per Mausklick aus der Filtereingabe auszuwählen. Und da derFiltermechanismus immer Teil eines Protokoll-Templates ist kann jedes Proto-koll mit exakt den Filtermöglichkeiten ausgestattet werden, die es erfordert.

Zwischen verschiedenen Telegramm Darstellungen wählenWie bereits zuvor erwähnt. Es macht keinen Sinn, die Ausgabe bestimmterTelegramm Typen in der out() Funktion zu unterdrücken. Die Telegrammewerden - im Gegensatz zur Filterung innerhalb der split() Funktion - nichtaus der internen Liste entfernt, sondern als ’leere’ Zeile repräsentiert.Allerdings kann hier das Filter Control verwendet werden, um den Anwen-der abhängig von der Filtereingabe zwischen verschiedenen Darstellungsar-ten wählen lassen zu können. Z.B. könnte bei Protokollen, die wiederum in einanderes Protokoll eingebettet sind, der äußere Protokollrahmen ein- oder aus-geblendet werden. Oder eine etwas einfachere Anwendung, die uns zurück zuunserem Beispiel führt.Angenommen, Sie wollen bei der Anzeige der der Sensorwerte (Temperatur,

117

Page 128: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

Feuchtigkeit und Druck) zwischen metrischen und Angloamerikanischen Maß-einheiten wählen können. D.h je nach Auswahl im Filter Control: Die Anzeigedes Druckes wahlweise in psi oder bar und die Temperatur entweder in ◦Coder ◦F. (Die Feuchtigkeit bleibt für beide Maßsysteme in Prozent).

Beginnen wir damit, die beiden Auswahl Varianten für die Filtereingabe zu de-finieren. Dies erfolgt analog zu unserem bisherigen Filter Beispiel mit:

1 function f i l t e r s ( )2 return " Metr ic , Anglo−American "3 end

Die Filtereingabe wird - wie bereits bei der split() Funktion als neuer Pa-rameter filter an die out() Funktion übergeben. In der out() Funktionkönnen Sie die Eingabe entsprechend vergleichen und je nach Resultat unter-schiedliche Ausgabevarianten zur Verfügung stellen. In unserem Fall die Aus-gabe der Werte in einem metrischen Maßsystem oder umrechnen in das An-gloamerikanische System.

Das folgende Code Beispiel soll Ihnen eine Vorstellung davon vermitteln, wiedas Ganze funktioniert. Alle im Tutorial verwendeten Werte (Temperatur, Druck,Feuchtigkeit) werden in der Funktion GetFunctionValue() formatiert, d.h.Anzahl der Dezimal- und Nachommastellen sowie physikalischen Einheiten.GetFunctionValue() wird mit zwei Parametern aufgerufen, einer Nummer,die den Typ definiert und der Wert selbst.In Zeile 4 prüfen wir die Filtereingabe (’Metric’ oder ’Anglo-American’). Diemetrische Auswahl erfordert keine zusätzlichen Schritte da die übertragenenWerte bereits im metrischen System vorliegen. Dies entspricht dem Code imTutorial. Die neuen Änderungen beginnen im folgenden else Block ab Zeile 8.

Zuerst ändern wir die physikalischen Einheiten und fügen zwei Nachkommas-tellen für den Druck in psi hinzu. Zeile 10 ist ein besonders schönes Beispiel,wie einfach und elegant in Lua auch kompliziertere Sachverhalte gelöst werdenkönnen. Hier müssen wir je nach Typ (Temperatur, Druck oder Feuchtigkeit)den Wert in das angloamerikanische Maßsystem umrechnen.Zeile 10 definiert dazu eine sogenannte Hash-Tabelle oder assoziatives Arraymit drei anonymen Funktion (Funktionen ohne Namen). Jede dieser Funktio-nen wird über den Typ Index aufgerufen. Dies geschieht automatisch in Zei-le 18,19 und analog zur Typ anhängigen Auswahl der Formatierung. (Beideskönnte man innerhalb der convs zusammen fassen). Vergleichen Sie dazuden Aufruf in Zeile 6 ohne Umrechnung.

1 function out ( f i l t e r )2 −− sk ip unchanged code here3 function GetFunct ionValue ( number , value )4 i f f i l t e r == " Met r i c " then5 local formats = { "%.2 fC " , "%.2 f %%", "%imBar " }6 return s t r i n g . format ( formats [ number ] , value )7 else8 −− convers ion f a c t o r f o r Temparature , Moisture and Pressure9 local formats = { "%.2 fF " , "%.2 f %%", "%.2 f p s i " }

10 convs = {11 −− f u n c t i o n to conver t c e l s i u s to f a h r e n h e i t12 [ 1 ] = function ( c ) return c ∗ 1.8 + 32 end ,13 −− the mosi ture i s always i n percent

118

Page 129: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.6. TELEGRAMM EXPORT

14 [ 2 ] = function (m) return m end ,15 −− f u n c t i o n to conver t mbar to ps i16 [ 3 ] = function ( p ) return p ∗ 0.01450377 end17 }18 return s t r i n g . format ( formats [ number ] ,19 convs [ number ] ( value ) )20 end21 end

Ersetzen Sie die im Tutorial Template vorhandene GetFunctionValue()durch die modifizierte Version, fügen Sie die neue filters() Funktion hin-zu und ändern Sie out() zu out(filter). Nach Ausführen des geändertenTemplates können Sie nun zwischen den beiden Maßsystem hin- und herschal-ten.

13.6 Telegramm ExportDie MSB-RS232 Software ist für die meisten Anwendungsfälle sehr gut gerüs-tet. Ungeachtet dessen gibt es aber immer wieder Situationen in denen Siedie durch den Analyser aufgenommenen Daten - hier die Telegramme - mitanderen Tools oder in externen Applikationen verarbeiten müssen. Z.B. in Pro-grammen die spezialisiert sind auf spezielle Dinge die die Analyser Softwarenaturgemäß nicht leisten kann.Der Protokollmonitor unterstützt dank der Möglichkeit eigener, Anwender defi-nierter Templates quasi eine unbegrenzte Anzahl von Protokollen. Jedes dieserProtokolle kommt mit ganz unterschiedlichen Daten und Telegrammstrukturendie beim Export zu berücksichtigen sind.Gelöst wird dieser Spagat zwischen unbegrenzten Templates auf der einen undeinem fest integrierten Exportdialog auf der anderen Seite durch einen intelli-genten Mechanismus, der es Ihnen erlaubt IHRE Telegrammdaten in anderenApplikationen zu nutzen. In den meisten Fällen arbeitet dieser Mechanismus’out of the box’. Nichtsdestotrotz ist es manchmal sinnvoll zu wissen, wie derProtokollmonitor die zu exportierenden Daten aus den Templates ermittelt. Vorallem dann, wenn Sie die Daten in einem Tabellenkalkulationsprogramm wiez.B. Excel oder Open Office Calc verarbeiten möchten.

Welche Daten werden exportiert?In den vorangegangenen Abschnitten haben Sie alles über das zugrunde lie-gende Box Modell erfahren. Jede Box besteht demnach aus einer Bezeichnung(caption) und den zugehörigen Informationen bzw. Daten. Durch die Benen-nung einer bestimmten Information haben Sie den damit verbundenen Datenbereits einen Namen gegeben. Ein Beispiel:Sie haben ein Telegrammfeld (d.h. eine Box) die die Geräteadresse anzeigt.Vermutlich haben Sie das Feld mit ’Address’ benannt oder ähnlich. Und es istnur logisch, das Sie diese Information (die Geräteadressen) unter dem glei-chen Namen exportieren wollen.Die Zuweisung caption="Feldname" im Template wird damit zum elemen-taren Bestandteil des Exportmechanismus. Jedesmal wenn Sie den Exportdia-log öffnen extrahiert das Programm alle Boxbezeichner (caption) und speichertdiese in einer internen Liste. Die im Einstelldialog aktivierten Präfix Informatio-nen stehen dabei am Anfang der Liste. Diese Liste wird Ihnen im Exportdialog

119

Page 130: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

präsentiert und Sie können aus dieser alle oder einen Teil für den Export aus-wählen.Mit Ausnahme der Präfixe sind alle Exportfelder alphabetisch geordnet. Diesliegt daran, das die Reihenfolge der caption="..." Zuweisungen im Tem-plate nichts über die spätere Feldposition in der Telegrammdarstellung aus-sagt.Der eigentliche Exportprozess verläuft ähnlich der Telegrammdarstellung undist nur abhängig vom gewählten Exportformat.

1 Export as CSV

2 Export as HTML

3 Export as Text

4 Export as Latex

Alle im Telegrammfenster ausgewählten Telegramme werden dem Lua Inter-preter zugeführt. Die Skript Engine schreibt die Daten gemäß den Feldbezeich-nungen in die richtige Spalte einer CSV (Comma Separated Values) Datei odergeneriert einen HTML Tabelleneintrag mit exakt den gleichen Text- und Hinter-grundfarben wie sie in der Telegrammanzeige verwendet werden. Nicht ausge-wählte Telegramme werden im Export nicht berücksichtigt.Beachten Sie: Jedes der Exportformate dient einem unterschiedlichen Zweck.In einer CSV Datei repräsentiert jedes definierte Telegrammfeld (jede Box) eineeigene Spalte, wobei nicht jedes Telegramm auch alle Felder besitzt. Beispiels-weise können bestimmte Telegramme zusätzliche Datenfelder enthalten, wäh-rend andere - kurze Telegramme - nicht mehr als ein Acknowledge darstellen.Deshalb werden alle Felder (Spalteneinträge) die nicht im aktuellen Telegrammenthalten sind mit einem leeren String "" versehen.Der HTML Export dient hauptsächlich zu Dokumentationszwecken. Jedes Te-legramm sollte genau so dargestellt werden, wie es im Protokollmonitor ange-zeigt wird. Dabei wird für jedes ausgewählte Telegramm eine HTML Tabelleerzeugt die alle Felder des Telegramms umfasst - sofern diese im Exportdialogzuvor ausgewählt wurden.

Der ExportdialogBevor Sie einen Export starten müssen Sie zuerst die gewünschten Telegram-me auswählen. Ohne einen ausgewählten Bereich von Telegrammen wird dasTelegramm unter der aktiven Cursorposition verwendet. Den Exportdialog öff-nen Sie mit Strg+E oder mit Klick auf den Exporteintrag im Dateimenü.Das Exportdialog Fenster präsentiert Ihnen eine Liste aller verfügbaren Tele-grammfelder sowie der eingeschalteten Präfixe. Jeder Eintrag ist per Defaultaktiviert. Sie können jeden Eintrag in der Liste individuell für den Export ausbzw. einschalten. Oder aber sie (de)selektieren alle Einträge in einem Rutschmit Klick auf den entsprechenden Knopf unter der Liste.Das vorgegebene Exportformat ist CSV (Comma Separated Values). Sie kön-nen aber genauso gut HTML als Exportformat wählen.Der Export startet sobald Sie einen gültigen Dateinamen eingegeben bzw. denVorschlag des Dialog (telegrams mit der entsprechenden Endung csv oderhtml) übernommen haben. Sie können den Export jederzeit beenden indemSie den ’Abbruch’ Knopf links neben der Fortschrittsanzeige in der Statuszeile

120

Page 131: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.6. TELEGRAMM EXPORT

klicken. Da der Export ’parallel’ zum Programm verläuft müssen Sie auch wäh-rend eines längeren Exports die Arbeit mit der Analyse der Telegramme nichtunterbrechen.

Export als CSV DateiStellen Sie sich vor Sie müssten die maximale Zeit zwischen einer Anfrageund einer Antwort herausfinden. Oder Sie benötigen eine Statistik der Häufig-keit ganz bestimmter Telegramm Typen. Diese und ähnliche Fragestellungenkann Ihnen ein Tabellenkalkulationsprogramm wie z.B. Microsoft Excel R© oderOpen Office Calc weitaus besser beantworten.Der Protokollmonitor bietet deshalb einen einfachen Weg um alle angezeigtenTelegramm Informationen als CSV Datei mit Komma getrennten Werten zu ex-portieren.Alle Spalteneinträge sind dabei in Anführungszeichen eingeschlossen und kön-nen durch die meisten Tabellenkalkulationsprogramme gelesen werden. DieKopfzeile der CSV Datei enthält die Spaltennamen wie sie aus den caption="..."Zuweisungen in dem Template extrahiert wurden.Wenn Sie nur an wenigen Telegrammdaten interessiert sind deaktivieren Siealle unnötigen Felder im Exportdialog. Die erzeugte CSV Datei wird dadurchkleiner, übersichtlicher und die Dauer des Exportprozesses reduziert.

Export als HTML

Open Office Writermit HTML TelegrammExport

Der HTML Export ist hauptsächlich für Dokumentationszwecke gedacht. DerProtokollmonitor exportiert alle ausgewählten Telegramme als ein gültiges HTMLDokument wobei jedes einzelne Telegramm durch eine HTML Tabelle reprä-sentiert wird. Die Darstellung der Tabelle entspricht exakt der Telegramman-sicht, d.h. einschließlich der Text- und Boxfarben.Die meisten Textverarbeitungsprogramme sind in der Lage HTML Dateien zuimportieren. Open Office Anwender können die exportierte HTML Datei einfachper Drag And Drop in Ihrem Dokument einfügen (siehe Bild).

Export als TextDie Ausgabe der ausgewählten Telegramme als Text unterscheidet sich inso-fern von einem CSV Export, als das nur die im jeweiligen Telegramm vorhan-denen Felder (Boxen) berücksichtigt werden. Die einzelnen Telegrammfelderwerden dabei als Label(VALUE) Ausdrücke in die Exportdatei geschrieben.Diese Art von Export ist - je nach weiter führender Applikation - leichter zu ver-arbeiten und empfiehlt sich vor allem bei Dokumentation/Report Tools die nurreine Texteingaben erlauben. Hier ein beispielhafter Auszug eines Textexportaus einer Modbus RTU Aufzeichnung:

Src(Master) Dest(1) Fnc(Read Coils) Desc(Addr=0, Quantity=10) Cks(0DBC)Src(1) Dest(Master) Fnc(Read Coils) Desc(Byte count=2) Data(00 00) Cks(FCB9)

Export als LatexDiese Exportart ist hauptsächlich für Anwender gedacht, die LATEX als Text-verarbeitung bzw. zur Dokumentation verwenden. Jedes ausgewählte Tele-gramm wird dabei als tabular Umgebung ausgegeben. Die einzelnen Tele-grammfelder entsprechen einer Tabellenspalte (Zelle) und sind in den aktuellenTelegrammfarben gefärbt. Dazu müssen die folgenden LATEX Pakete color,

121

Page 132: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

colortbl and xcolor am Anfang des LATEX Dokuments eingebunden wer-den. Diese Pakete sollten in jeder LATEX Distribution vorhanden sein bzw. leichtnachinstallierbar sein. Folgendes Kommando bindet die erforderlichen Paketeein:\ usepackage { co lo r , c o l o r t b l , xco lo r }

Einzelne Telegrammfelder können vor dem eigentlichen Export einzeln ein/aus-geschaltet werden. Sie können allerdings ebenso leicht später in der eigentlich-en LATEX Tabelle noch editiert werden.

Ein paar besondere Hinweise zur Feld- oder BoxbezeichnungWir erwähnten bereits: Die Exportfelder (Spalten in CSV) werden durch diecaption="..." Zuweisungen benannt. Solange Sie reinen Text und eindeu-tige Bezeichnungen verwenden wird das Resultat dem entsprechen was Sieerwarten.Aber betrachten Sie einmal folgende Box mit einem zusammengesetztem Feldbzw. Boxnamen aus Text und Funktionsnummer. (Die genaue Beschreibungder Funktion wird dabei als Box-Textvariable übergeben).

1 box . t e x t { cap t ion ="Fnc ( " . . tg : data ( 2 ) . . " ) " , t e x t =GetFuncDesc ( tg : data ( 2 ) )}

Die Anzeige des Telegramms könnte wie folgt aussehen:

Func (8)This is function 8

Leider kann der Exportmechanismus nicht die komplette Feldüberschrift (cap-tion) zusammenbauen. Dafür müsste er das Template auf alle vorhandenenTelegramme anwenden BEVOR der eigentliche Export starten kann.Hinzu kommt: Ein solche Bezeichnung mag für die Darstellung im Protokollmo-nitor ideal sein, führt aber beim CSV Export zu einer verwirrenden Anzahl vonSpalten (eine Spalte für jede unterschiedliche Funktionsnummer). Hier hättenSie vermutlich gerne nur eine Spalte ’Funktionsnummer’ - richtig?Zur Erinnerung: Der Exportmechanismus durchsucht das Template nach Zu-weisungen der Form caption="NAME". Im obigen Beispiel wird der Feldname(caption) als "Fnc (" extrahiert und der restliche Ausdruck verworfen. Wennder rechte Teil der Zuweisung (der NAME) bereits mit einem ausführbaren Aus-druck beginnt, z.B. caption=tg:data(1).."-Typ" schlägt die Suche kom-plett fehl und die Box-Bezeichnung bzw. der Feldname wird weder in der Listeder zu exportierenden Werten auftreten noch in der Exportdatei selbst.Das Gleiche gilt wenn Sie Variablen für den Box/Feld-Titel verwenden.

1 l a b e l = "Chksum OK"2 i f ChecksumTest ( ) == fa lse then3 l a b e l = "Chksum f a i l s "4 end5 box . t e x t { cap t ion= labe l , t e x t =GetChecksumByte ( ) }

Auch hier wird die Suche nach einem Muster der Form caption="..." fehl-schlagen und keins von beiden möglichen Felder in der Exportliste hinzugefügtwerden.

122

Page 133: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

Andere Effekte sind vielleicht weniger offensichtlich. Nichtsdestotrotz ist eswichtig, auch diese im Hinterkopf zu behalten. Der Exportmechanismus kannnaturgemäß nicht unterscheiden ob eine caption Zuweisung innerhalb einerauskommentierten Funktion auftritt oder Teil eines niemals ausgeführten Co-des ist. In beiden Fällen wird der Exportdialog die entsprechenden Felder zurAuswahl anbieten. Aber dies führt im schlimmsten Fall lediglich zu einer Spaltemit leeren Strings in einer CSV Datei.Fazit: Vermeiden Sie zusammengesetzte Ausdrücke als Boxbezeichnung undverwenden Sie stattdessen nur reinen Text!

13.7 Protokollmonitor spezifische Lua ErweiterungenDer folgende Abschnitt beschreibt alle im Protokollmonitor verfügbaren Modu-le, Funktionen, Erweiterungen und Datentypen die nicht Bestandteil des allge-meinen Lua Sprachumfangs sind. Diese sind ausschließlich im Protokollmoni-tor implementiert bzw. hinzugefügt wurden. Lua bietet - natürlich - eine Mengeweiterer Module und Funktionen die wir hier aus Platzgründen nicht behandelnkönnen.

base16 Modul : Funktionen zur Codierung und Dekodierung von base16 Se-quenzen (i.a. verwendet in Modbus ASCII und Intel SRecord) Telegrammen.

box Modul : Das box Modul ist für die Anzeige der Telegrammdaten verant-wortlich.

bunpack Funktion : Wandelt eine Bytefolge in einen nummerischen Wert bzw.Zahl. Die bunpack Funktion ist Teil der offiziellen Lua lpack Bibliothek und festerBestandteil des Lua Interpreters im Protokollmonitor.

checksum Modul : Das Checksum Modul enthält fertige Berechnungsalgo-rithmen für Modbus RTU (CRC16), Modbus ASCII (LRC), BACNet (CRC8 undCRC16), DNP3 sowie CRC16 CCITT (Kermit).

datetime Modul : Das datetime Modul bietet Ihnen verschiedenste Funktionenum die Telegrammzeit in dem von Ihnen gewünschten Format anzuzeigen.

debug Modul : Mit den Funktionen des Debug Moduls können Sie speziel-le Debug Informationen im Debug Fenster ausgegeben. Insbesonders bei derFehlersuche ist dies u.U. von großem Nutzen.

event Modul : Das event Modul ist nur innerhalb der split Funktion verfügbarund liefert zusätzliche Informationen zum aktuell empfangenen Datenereignis.

linestates module : Das linestates Modul liefert Informationen über einen vor-herigen Pegelwechsel sowie Anzahl der Pegeländerungen.

protocol Modul : Liefert Informationen zur aktuell verwendeten Baudrate, An-zahl der Daten-, Stopbits und Parity.

record Modul : Liefert Information rund um die aktuelle Aufzeichnung. Mo-mentan ist nur die Abfrage der Startzeit sowie des aktuellen Bus-Wirings (BusAnschluss) implementiert.

123

Page 134: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

shared module : Der Protokollmonitor verwendet zwei unabhängige Lua In-terpreter zur Aufsplittung der Telegramme, getrennt nach Datenrichtung. Dasshared Modul erlaubt Ihnen, Daten zwischen diesen beiden Interpretern aus-zutauschen.

string.dump : Erweitert das Lua string Modul um eine Hex/Dez Ausgabefunk-tion ähnlich der telegram spezifischen dump Funktion.

telegram Typ : Ein Protokollmonitor spezifischer Datentyp der alle Informatio-nen zu einem ganz bestimmten Telegramm enthält.

telegrams Modul : Das telegrams Module erlaubt Ihnen den wahlfreien Zugriffauf alle bis dato empfangenen Telegramme. Das Ergebnis ist immer eine Varia-ble vom Typ telegram. Es ersetzt die Module tg und tgprev, die auf den Zugriffdes aktuellen und vorherigen Telegramms begrenzt waren. Das telegramsModul ist nur in out() verfügbar.

Die einzelnen Typen, Funktionen und Module in alphabetischer Reihenfolge:

Das base16 ModulDas base16 Modul erlaubt die Umwandlung beliebiger im base16 (Hex ASCII)vorliegender Telegramminhalte in ihre originale Binärdaten. Dies betrifft insbe-sondere das Modbus ASCII Protokoll oder SRecord Übertragungen.

Funktion Beschreibungdecode Dekodiert eine im base16 Format vorliegende Datensequenz

und liefert dessen binären (Original)Inhalt als Lua String zurück.encode Wandelt einen gegebenen Lua String in seine base16 Reprä-

sentation und liefert das Ergebnis als neuen String zurück.

base16.decodeDekodiert eine Datenreihe im base16 Format in seine ursprüngliche Binärse-quenz und gibt diese als String zurück. Die Umwandlung/Dekodierung stopptautomatisch wenn das Ende des übergebenen Strings erreicht wurde oder einungültiges Zeichen auftrat.

base16.decode( string )

• string: Eine im Base16 Format vorliegende Datensequenz.

Example

1 function out ( )2 −− e x t r a c t the b inary data o f a Modbus−ASCII te legram3 local tg = telegrams . t h i s ( )4 −− A Modbus ASCII te legram s t a r t s w i th a colon ’ : ’ and ends wi th

CRLF.5 −− The data i n between ( byte 2 . . . t h i r d l a s t ) i s coded i n base166 local bindata = base16 . decode ( tg : s t r i n g ( ) : sub ( 2 , −3 ) )7 end

124

Page 135: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

base16.encodeI.a. werden Sie diese Funktion nicht benötigen, da sie einen Lua String in ba-se16 kodiert. Sie ist allerdings dann von Nutzen wenn Sie eine bestimmte Byte-folge im base16 Format sehen möchten, z.B. um diese mit den empfangenenTelegrammdaten vergleichen zu können.

base16.encode( string )

• string: Ein Lua String der ins Base16 Format überführt werden soll.

Example

1 function out ( )2 local seq = " h e l l o wor ld "3 box . t e x t { cap t ion ="Base16 " , t e x t =base16 . encode ( seq ) }4 end

Die bunpack FunktionDie Funktion bunpack ist der Lua lpack Bibliothek entliehen und integralerBestandteil des Lua Interpreters im Protokollmonitor. Sie gibt Ihnen die Mög-lichkeit beliebige Bytefolgen in ganz bestimmte Zahlentypen und Werte umzu-wandeln.Die Arbeitsweise von bunpack ähnelt der scanf Funktion in C. Entsprechendeines Formatstrings wird dabei aus einer übergebene Bytefolge (Lua String)ein oder mehrere Zahlen extrahiert. Lua ist bei der Rückgabe von Funktions-aufrufen nicht auf einen einzelnen Wert beschränkt. bunpack kann deshalbbeliebig viele Zahlenwerte in einem Aufruf zurück geben.Mittels eines optionalen dritten Parameters können Sie den Start der Konver-tierung unabhängig vom Beginn der Bytefolge festlegen.

pos , val1 , . . . = bunpack ( sequence , format , p o s i t i o n )

Im folgenden sind die meist verwendeten und von bunpack verstandenenFormat/Umwandlungs-Zeichen aufgelistet.

Format Beschreibung

b Interpretiert das nächste Byte als einzelnen nicht Vorzeichen be-hafteten Byte (8-Bit) Wert.

c Wandelt das nächste Byte in einen Vorzeichen behafteten (8-Bit)Wert um.

d Wandelt die nächsten 8 Bytes in eine Fließkommazahl mit dop-pelter Genauigkeit (64 bit).

f Interpret eine Folge von 4 Bytes als Fließkommanzahl, einfacheGenauigkeit, 32 bit.

H Transformiert die nächsten 2 Bytes in eine vorzeichenlose 16-BitZahl (unsigned short).

125

Page 136: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

h Transformiert die nächsten 2 Bytes in eine Vorzeichen behaftete16-Bit Zahl (short).

I Wandelt eine Reihe von 4 Bytes in eine vorzeichenlose 32-Bit(unsigned long) Zahl.

i Wandelt eine Reihe von 4 Bytes in einer Vorzeichen behaftetete32-Bit Zahl (long)

> Interpretiert die Bytefolge mit dem höchstwertigen Byte zuerst(big-endian order).

< Interpret die Bytefolge mit dem niederwertigsten Byte zuerst(little-endian order).

bunpack( sequence, format, position=1 )

• sequence: Eine Bytesequenz als Lua String mit den zu extrahierenden(unpack) Zahlen.

• format: Formatanweisung, enthält die Art und Reihenfolge, in der dieZahlen extrahiert werden sollen.

• position: Eine vom ersten Byte in der Sequenz abweichende Position,ab der die Umwandlung erfolgen soll.

Beispiel

Gegeben sei das Kommando ’Write Single Register’ in einer Modbus RTUÜbertragung. Der Aufbau des Telegramms ist wie folgt:

Dev Fnc Reg HI Reg LO Value HI Value LO CRC HI CRC LO

Dieses Modbus Telegramm instruiert einen Busteilnehmer eine 16-Bit Zahl indas angegebene Register zu schreiben. Das Register ist adressiert mit einer16-Bit Nummer. Die Registeradresse ist in dem 3ten und 4ten Byte, der Regis-terwert im 5ten und 6ten Byte. Die letzten beiden Bytes enthalten eine CRC16Prüfsumme. Alle Bytefolgen sind im Big-Endian Format abgelegt.Mit bunpack können Sie alle nötigen Informationen (u.a. Registeradresse, -Wert und Prüfsumme) in einem einzigen Schritt extrahieren.

1 function out ( )2 −− e x t r a c t the b inary data o f a Modbus−ASCII te legram3 local tg = telegrams . t h i s ( )4 −− assume i t s a Wri te S ing le Reg is te r te legram5 local pos , dev , fnc , reg , val , c rc = bunpack ( tg : s t r i n g ( ) , " bb>H>H>H" , 1 )6 end7 end

Die Umwandlung (oder Extraktion) startet mit dem ersten Byte der Sequenz(Position 1) und interpretiert die folgenden Bytes gemäß der Instruktionen imFormatstring. Am Ende liefert die Funktion die Position für nachfolgende bunpackAufrufe (pos) und füllt alle übrigen Varaiblen auf der linken Seite des Ausdrucksmit den einzelnen Umwandlungsergebnissen.

126

Page 137: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

Dev Fnc Reg HI Reg LO Value HI Value LO CRC HI CRC LO

B B >H >H >H

Die Anzahl der Variablen auf der linken Seite muss nicht exakt der vom For-matstring geforderten Ergebnisse entsprechen. Lua sorgt dafür, das nur dievorhandenen Variablen ’gefüllt’ werden. Der folgende Code ist deshalb völligkorrekt, läßt aber das Ergebnis der CRC16 Umwandlung unberücksichtigt.

loca l pos , dev , fnc , reg , va l = bunpack ( tg : s t r i n g ( ) , " bb>H>H>H" , 1 )

Das box ModulDas box Modul enthält alle für die Ausgaben im Telegrammfenster nötigenen’Boxen’. Eine allgemeine Textbox erlaubt die Darstellung beliebiger Informatio-nen wie z.B. Text, Zahlen, Datensequenzen in einem farbigen Rechteck inklu-sive Überschrift.Jede Box besitzt eine individuelle Text- und Hintergrundfarbe, übergeben alsbenannte Parameter fg und bg. Die Voreinstellung ist schwarzer Text (undUmriß) auf weißem Hintergrund.Die ’space’ Box ist eine in der Weite frei definierbare leere Box (Lücke) um auf-einanderfolgende Boxen gezielt zu separieren.

Funktion Beschreibungbox.space Fügt einen leeren Zwischenraum mit einer Weite definiert als

Pixel oder Anzahl von Zeichen an.box.text Eine allgemeine Box mit frei definierbarem Label (Bezeich-

nung), Textinhalt, Vordergrund- (Text und Rahmen) und Hin-tergrundfarbe.

box.spaceFügt eine leere Box mit definierter Weite an. Ohne Angabe wird eine Breite von10 Pixel verwendet. Die Weite (oder Breite) der Box kann als Anzahl von Pixelnoder Zeichen spezifiziert werden. Letzteres berücksichtigt die aktuelle Schrift-größe. D.h. der leere Zwischenraum ’wächst’ mit der Schriftgröße (Zooming).

box.space{ em=0, px=10 }

• em: Die Breite definiert als Anzahl von Leerzeichen. Die maximale An-zahl ist 100.

• px: Die Breite definiert in Pixel. Die maximale Pixelanzahl ist 100.

Example

1 function out ( )2 −− i n s e r t a smal l space wi th the width o f two space ( blank )

charac te rs3 box . space { em=2 }4 −− i n s e r t an empty space wi th the width o f 50 p i x e l5 box . space { px=50 }6 end

127

Page 138: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

box.textZeichnet eine allgemeine Box mit individuellen Farben, Boxbezeichnung undBoxinhalt.

box.text{ caption=STRING, text=STRING [, fg=RGB, bg=RGB] }

• caption: Ein Textstring als Boxbezeichnung.

• text: Die Boxdaten als beliebiger Textstring.

• fg: Optionale RGB Farbe für die Text- und Rahmenfarbe, default ist schwarz.

• bg: Optionale RGB Farbe für den Box Hintergrund, default ist weiß.

Beispiel

1 function out ( )2 box . t e x t { cap t ion =" Caption " , t e x t ="Some t e x t " , fg =0xFF0000 , bg=0

xAADDFF }3 end

Das cfg ModulDas cfg oder config Modul ist hauptsächlich dafür gedacht die internen Ein-stellungen des Lua Interpreters zu ändern. Beachten Sie: Diese Vorgaben sindmit bedacht gewählt, eine Änderung kann deshalb zu unerwünschtem Verhal-ten führen.Ein Parameter - und bislang der einzige - ist die maximale Anzahl von erlaubtenAusführungseinheiten für ein Skript. Ohne eine solche Begrenzung könnte derInterpreter in eine Endlosschleife laufen und den Protokollmonitor unbedienbarmachen. Folgendes Beispiel:

1 function out ( )2 while true do3 end4 end

In diesem Fall kehrt die out() Funktion niemals zurück und blockiert das zuge-hörige Protokollmonitor Fenster komplett. Auf Grund des MultiView Konzeptssind die aktive Aufzeichnung sowie alle anderen offenen Views davon nicht be-troffen. Trotzdem ist es ärgerlich, da Sie den Protokollmonitor per Taskmanagerbeenden müssen.Um dies zu vermeiden beendet der Lua Interpretor die Ausführung eines Skrip-tes nach einer voreingestellten Anzahl von Ausführungseinheiten. Diese An-zahl hängt von der verfügbaren Rechenleistung des PCs ab, weshalb wir eineneher konservativen Wert voreingestellt haben.Es passiert selten, aber sollte Ihr Skript CPU intensiven Code enthalten, z.B.bei verschlüsselten Telegrammen und/oder aufwendigen Checksum Berech-nungen, könnte die folgende Fehlermeldung erscheinen:

Overrun of allowed executions!Sie können dies reproduzieren durch Eingabe genannter Endlosschleife!

128

Page 139: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

Die maximal erlaubte Anzahl der Ausführungseinheiten ist mit 10000 vorbe-setzt und ausreichend selbst für kompliziertere Skripte. Wenn Sie mehr benö-tigen, fügen Sie folgende Zeile am Beginn Ihrers Template Skripts ein:

1 cfg . setmaxop (1000000)

Der erlaubte Zahlenbereich liegt zwischen 10000...1000000.

Das checksum ModulDer Protokollmonitor unterstützt z.Z. die folgenden Prüfsummenalgorithmen,weitere werden in nächster Zukunft folgen. Wie Sie Ihren eigenen Prüfsum-menalgorithmus erstellen beschreibt Abschnitt 13.4.Alle Funktionen des checksum Moduls erwarten einen Lua String als Para-meter und liefern die Prüfsumme über alle in diesem String enthaltenen Da-tenbytes entsprechend dem ausgewählten Algorithmus. Das Ergebnis ist eineIntegerzahl.Beachten Sie, das die Reihenfolge bei 16 Bit Werten von der Applikation ab-hängig ist. So überträgt Modbus RTU (crc16) das niederwertige vor dem hö-herwertigen Byte.

Funktion Beschreibungchecksum.crc8_bacnet 8 Bit Prüfsumme wie sie in BACNet (Header)

Telegrammen verwendet wird.checksum.crc16_bacnet 16 Bit Prüfsumme wie sie in BACNet Übertra-

gungen verwendet wird.checksum.crc16_ccitt_kermit Berechnet die crc16 Prüfsumme der gegebe-

nen Datensequenz, allerding mit einem an-deren Startwert (Initialisierung) wie in CCITTKermit üblich.

checksum.crc16_df1 Berechnet die crc16 Prüfsumme wie sie imAllen-Bradley DF1 Protokoll verwendet wird.Zurück gegeben wird ein 16 Bit Wert.

checksum.crc16_dnp3 Berechnet die crc16 Prüfsumme wie sie imDNP3 Protokoll verwendet wird. Zurück ge-geben wird ein 16 Bit Wert.

checksum.lrc Liefert die Prüfsumme der gegebenen Daten-sequenz als Longitudinal Redundancy Check(LRC), wie bei Modbus ASCII verwendet.

checksum.crc16_modbus Berechnet die Modbus RTU (CRC16) Prüf-summe der übergebenen Datensequenz undgibt sie als 16 Bit Integerzahl zurück.

checksum.crc8_bacnetEin in BACNet (Header) Telegrammen verwendeter Prüfsummenalgorithmus.Das Resultat ist ein einzelnes Byte (8 Bit Wert).

checksum.crc8_bacnet(String )

• String: Die Daten als Lua String

129

Page 140: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

Beispiel

1 function out ( )2 local tg = telegrams . t h i s ( )3 −− checksum header crc4 local header_crc = checksum . crc8_bacnet ( tg : s t r i n g ( ) : sub (3 ,8 ) )5 . . .6 −− checksum data crc7 local data length = tg : data ( 6 ) ∗ 256 + tg : data ( 7 )8 local data_crc = checksum . crc16_bacnet ( tg : s t r i n g ( ) : sub (9 , 9+

data length +1) )9 end

checksum.crc16_bacnet16 Bit CRC BACNet Prüfsummenalgorithmus. Das Resultat ist ein 16 Bit Inte-ger Wert.

checksum.crc16_bacnet(String )

• String: Die Daten als Lua String

Beispiel

1 function out ( )2 local tg = telegrams . t h i s ( )3 −− checksum header crc4 local header_crc = checksum . crc8_bacnet ( tg : s t r i n g ( ) : sub (3 ,8 ) )5 . . .6 −− checksum data crc7 local data length = tg : data ( 6 ) ∗ 256 + tg : data ( 7 )8 local data_crc = checksum . crc16_bacnet ( tg : s t r i n g ( ) : sub (9 , 9+

data length +1) )9 end

checksum.crc16_ccitt_kermitLiefert die CRC16 CCITT (Kermit) Prüfsumme des gegebenen Datenstringsals 16 Bit Integer.

checksum.crc16_ccitt_kermit(String )

• String: Die Datensequenz als Lua String

Beispiel

1 function out ( )2 −− the f o l l o w i n g code checks the content o f the e n t i r e message

except3 −− f o r the l a s t two byte ( which are the checksum i t s e l f )

130

Page 141: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

4 local cks = checksum . c r c 1 6 _ c c i t t _ k e r m i t ( te legrams . t h i s ( ) : s t r i n g ( ) :sub(1 ,−3) )

5 box . t e x t { cap t ion ="Checksum " , cks }6 end

checksum.crc16_df1CRC Allen-Bradley DF1 Prüfsummenalgorithmus. Das Resultat ist ein 16 BitInteger Wert.

checksum.crc16_df1(String )

• String: the data as a string

Example

1 function out ( )2 local tg = telegrams . t h i s ( )3 −− e x t r a c t the a p p l i c a t i o n data and s u b s t i t u t e DLE DLE4 local data = tg : s t r i n g ( ) : sub(6 ,−5) : gsub ( ‘ ‘ \ 0 1 6 \ 0 1 6 ’ ’ , ’ ’ \ 0 1 6 ’ ’ )5 −− checksum v a l i d a t i o n , the CRC16 i s ca l cu la ted from the STN (3 th

byte ) ,6 −− STX (5 th byte ) , the a p p l i c a t i o n data AND the f i n a l ETX7 local data = tg : s t r i n g ( ) : sub (3 ,3 ) . . tg : s t r i n g ( ) : sub (5 ,5 ) . . data . .8 tg : s t r i n g ( ) : sub(−3,−3)9 local cks = checksum . crc16_df1 ( data )

10 box . t e x t { cap t ion ="Checksum " , cks }11 end

checksum.crc16_dnp3Liefert die CRC16 Prüfsumme des gegebenen Datenstrings als 16 Bit Integerwie im DNP3 Protokoll spezifiziert.

checksum.crc16_dnp3(String )

• String: Die Datensequenz als Lua String

Beispiel

1 function out ( )2 −− the f o l l o w i n g code checks the content o f the e n t i r e message

except3 −− f o r the l a s t two byte ( which are the checksum i t s e l f )4 local cks = checksum . crc16_dnp3 ( telegrams . t h i s ( ) : s t r i n g ( ) : sub(1 ,−3)

)5 box . t e x t { cap t ion ="Checksum " , cks }6 end

131

Page 142: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

checksum.lrcEin Prüfsummenalgorithmus basierend auf dem Longitudinal Redundancy Checkingwie er z.B. in Modbus ASCII Übertragungen verwendet wird. Das Resultat istein einzelnes Byte (8 Bit Wert).

checksum.lrc(String )

• String: Die Daten als Lua String

Beispiel

1 function out ( )2 −− i n Modbus ASCII each byte i s sent as a two ASCII charac te rs but3 −− the checksum i s ca l cu la ted before encoding the message . So we4 −− must decode i t f i r s t w i th base16 . decode5 local bindata = base16 . decode ( telegrams . t h i s ( ) : s t r i n g ( ) : sub(2 ,−3)

)6 local cks = checksum . l r c ( b indata )7 box . t e x t { cap t ion ="Checksum " , cks }8 end

checksum.crc16_modbusLiefert die Modbus RTU Prüfsumme der Datensequenz als 16 Bit Integer.

checksum.crc16_modbus(String )

• String: Die Datensequenz als Lua String

Beispiel

1 function out ( )2 −− c a l c u l a t e s the checksum over the whole telegram except f o r the3 −− f o r the l a s t two byte ( which are the checksum i t s e l f )4 local cks = checksum . crc16_modbus ( telegrams . t h i s ( ) : s t r i n g ( ) : sub

(1 ,−3) )5 box . t e x t { cap t ion ="Checksum " , cks }6 end

Das datetime ModulDas datetime Modul erlaubt Ihnen den Zeitstempel eines Telegramms in Ih-rem eigenen, ganz individuellen Format auszugeben.

datetime Modul Funktion

datetime.dateFormatparameter

Anzeige von Datum und Uhrzeit des Telegramms ent-sprechend dem übergebenen Formatstring. Die folgen-den Formatspezifizierer sind definiert (jeder eingeleitet miteinem ’%’ Zeichen):

%a abgekürzter Wochentag (z.B. Mi)

132

Page 143: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

%A vollständiger Wochentag (z.B. Mittwoch)%b abgekürzter Monatsname (z.B. Sep)%B vollständiger Monatsname (z.B. September)%c Datum und Uhrzeit (z.B. Mo 23 Sep 2013 14:51:49)%d Monatstag (01-31)%H Uhrzeit im 24-Stunden Format (00-23)%I Uhrzeit im 12-Stunden Format (01-12)%M Minute (00-59)%m Monat (01-12)%p Entweder ’am’ oder ’pm’%S Sekunde (00-61, Schaltsekunde wird berücksichtigt)%w Wochentag (0-6 = Sonntag-Samstag)%x Datum (z.B. 18.04.2013)%X Zeit (z.B. 11:05:22)%Y volles Jahr (z.B. 2013)%y 2-stelliges Jahr (00-99)%% das Zeichen ’%’

Die date Funktion basiert auf der Lua os.time Funktion und verwendet die glei-chen Formatspezifizierer.

datetime.dateLiefert Datum und Uhrzeit einer gegebenen (Telegramm-)Zeit in einem Anwen-der spezifischen Format.

datetime.date(format, time )

• format: der Formatstring

• time: die Zeit in Sekunden die seit der Epoche (00:00:00 UTC, 1. Januar,1970), verstrichen sind.

Beispiel

1 function out ( )2 local tg = telegrams . t h i s ( )3 box . t e x t { cap t ion =" Date " ,4 t e x t =datet ime . date ("%X %x " , record . s t a r t t i m e ( ) + tg : t ime ( )

) }5 −− r e tu rns something l i k e 08:50:44 16.04.20136 end

Das debug ModulDer Protokollmonitor besitzt ein eingebautes Debug Fenster um spezielle Zu-stände in Ihrem Skript anzuzeigen. Dies kann der Inhalt einer bestimmten Va-riable sein, oder das Resultat einer Operation. Das Debug Modul enthält hierzu

133

Page 144: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

alle nötigen Funktionen um beliebige Werte oder Texte auszugeben. Zusätz-lich können Sie die Debug-Ausgabe per Skript anhalten, zu einem geeignetenZeitpunkt wieder aufnehmen und Ausgaben zusammenfassen. Z.B. bei wieder-holenden Debug Meldungen. Um das Ausgabefenster für Debug Meldungen zu

Debug Fenstermit Alt + D

öffnen drücken Sie einfach Alt + D.

Function Descriptiondebug.clear Löscht den aktuellen Inhalt im Debug Fenster.debug.print Gibt die übergebenen Argumente im Debug Fenster aus.

Sie können beliebig viele Argumente (Text oder Wert) perKomma getrennt im Funktionsaufruf angeben.

debug.resume Setzt eine zuvor unterbrochene Debug Ausgabe wiederfort.

debug.summarize Wenn aktiviert sammelt die Debug Ausgabe alle identi-schen Meldungen und gibt diese mit Angabe einer ent-sprechenden Wiederholungszahl aus.

debug.suspend Stoppt (suspendiert) die Debug Ausgabe. Alle weite-ren Ausgaben werden unterdrückt bis die Ausgabe perdebug.resume fortgesetzt wird.

debug.timeprompt Zeigt die aktuelle Zeit (hh:mm:ss) am Anfang jeder De-bug Ausgabe. Sie können dies ein- bzw. ausschalten, in-dem Sie dieser Funktion true oder false übergeben.

debug.clearLöscht den aktuellen Inhalt des Debug Ausgabefensters.

debug.clear()

Beispiel

1 −− a g loba l counter ho ld ing the number o f e r r o r responses2 er rorCounter = 034 function s p l i t ( data , i n t v a l , a l t e r , s t r , f i l t e r )5 i f a l t e r or i n t v a l > p ro toco l . bytepause ( 3 . 5 ) then6 −− a f u n c t i o n byte > 0x80 means an e r r o r response i n Modbus7 i f # s t r > 1 and s t r : byte ( 2 ) >= 0x80 then8 er rorCounter = er rorCounter + 19 debug . c l ea r ( )

10 debug . p r i n t ( " E r ro r Counter : " . . e r rorCounter )11 end12 return STARTED13 end14 −− a l l o ther bytes extend the cu r ren t te legram15 return MODIFIED16 end

Das gezeigte Beispiel zählt alle Fehlermeldungen in einer Modbus Übertra-gung. Fehlermeldungen sind durch ein gesetztes MSB (höchstwertiges Bit) imFunktionswert (2tes Byte) gekennzeichnet.

134

Page 145: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

Da nur die split() Funktion ’alle’ übertragenen Datenbytes sieht, muss derCode für den Fehlerzähler in der split Funktion eingefügt werden.

debug.printGibt die per Komma separierten Argumente in dem Protokollmonitor internenDebugfenster aus.

debug.print(param1,param2,...)

• param: Durch Komma getrennte Liste der Parameter.

Beispiel

1 function out ( )2 local tg = telegrams . t h i s ( )3 i f tg : s i ze ( ) > 10 then4 −− output the t ime and s ize o f the cu r ren t te legram5 debug . p r i n t ( " Time : " . . tg : t ime ( ) , " Size : " . . tg : s i ze ( ) )6 end7 end

Vermeiden Sie die intensive Nutzung von debug.printJede Ausgabe im Debug Fenster benötigt eine gewisse Zeit und verlangsamtdeshalb die Ausführung des Template Skripts.

debug.resumeSetzt eine zuvor ausgesetzte Debugausgabe wieder fort. Im Beispiel wurde dieAusgabe nach Empfang eines Telegramms mit einem ersten Byte ungleich hex10 gestoppt und erst mit Empfang eines Telegramms mit hex 10 als Startbytewieder aufgenommen.

debug.resume()

Beispiel

1 function out ( )2 local tg = telegrams . t h i s ( )3 i f tg : data ( 1 ) == 0x10 then4 −− f i r s t ou tput the debug message5 debug . p r i n t ( " Data : " . . tg : data ( 1 ) , " Size : " . . tg : s i ze ( ) )6 −− then suppress any other output7 debug . resume ( )8 else9 −− enable the debug output again

10 debug . suspense ( )11 end12 end

135

Page 146: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

debug.summarizeFasst identische Debug Meldungen zusammen und gibt sie erst aus, wenn einedavon unterschiedliche Meldung auftritt. Die wiederholten Meldungen werdenwie folgt dargestellt:

THE DEBUG MESSAGEThe previous message repeated n times.

n bezeichnet die Anzahl der aufgetretenen Wiederholungen.Gewöhnlich reicht es eine Anweisung wie debug.summarize(true) am An-fang des Templates zu setzen. D.h. außerhalb von split() und out(), dadiese Funktion nur einmal aufgerufen werden muss (siehe Zeile 1).

debug.summarize()

Beispiel

1 debug . summarize ( true )2 debug . t imeprompt ( true )34 function s p l i t ( data , i n t v a l )5 i f i n t v a l > p ro toco l . b i tpause ( 33 ) then return STARTED end6 return MODIFIED7 end89 function out ( )

10 −− your output code . . .11 end

debug.suspendUnterdrückt alle weiteren Debugausgaben via debug.print bis ein Aufruf vondebug.resume diese wieder freigibt. Siehe das vorherige Beispiel (resume).

debug.timepromptAktiviert oder deaktiviert die zusätzliche Zeitangabe wann die Debugausgabeerfolgte. Voreingestellt ist eine Ausgabe ohne Zeit.Wenn eingeschaltet wird jeder Ausgabe die aktuelle Zeit im Format hh:mm:ssvorangestellt. Ein Beispiel:

12:24:48: My debug message

Siehe auch Zeile 2 im vorherigen Beispiel.

Das event ModulDas event Modul bietet innerhalb der split Funktion Zugriff auf zusätzlicheInformationen die nicht als Parameter übergeben werden.Bitte beachten Sie! Eine Verwendung außerhalb der split Funktion ist nichterlaubt und erzeugt einen Fehler.

Funktion Beschreibungevent.data liefert das 9 Bit Datenbyte.

136

Page 147: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

event.dir liefert die Quelle oder Richtung des aktuellen Datenereig-nisses.

event.isbreak liefert true wenn es sich bei dem aktuellen Datenerereig-nis um ein break handelt.

event.level liefert den aktuellen Pegel des übergebenen Signals zumZeitpunkt des Datenereignisses.

event.number gibt die aktuelle Ereignisposition oder Nummer zurück.Gezählt wird am 0.

event.time gibt den Zeitstempel des Datenereignisses in Sekundenseit Beginn der Aufnahme zurück.

event.dataLiefert den Datenwert des aktuellen Datenereignisses als 9 Bit Wert. Entsprichtdem Parameter data und ist hier nur der Vollständigkeit halber aufgeführt.

event.data()

Example

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 −− t e s t f o r LF3 i f event . data ( ) == 0x0A then4 return COMPLETED5 end6 return MODIFIED7 end

event.dirLiefert die Richtung bzw. Quelle des aktuellen Datenereignisses als eine Inte-gerzahl mit dem folgenden möglichen Werten: 1: Port A (CH1), 2: Port B (CH2).

event.dir()

Beispiel

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 local eos = 133 i f event . d i r ( ) == 2 then eos = 10 end4 i f # s t r == 1 then return STARTED end5 i f data == eos then return COMPLETED end6 return MODIFIED7 end

event.isbreakLiefert true wenn es sich bei dem aktuellen Datenereignis um ein Break han-delt. Breaks werden vom Analyzer als NULL Bytes empfangen. Mit event.isbreak()

137

Page 148: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

können Sie zwischen normalen NULL Bytes und echten Breaks unterscheiden.Dies ist insbesondere bei Protokollen interessant, die ein Break als TelegrammTrenner verwenden.

event.isbreak()

Example

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f event . i sb reak ( ) then return STARTED end3 return MODIFIED4 end

event.levelDient zur Abfrage eines beliebigen Signalpegel, der während des Auftretensdes Datenereignisses vorlag. Das zugehörige Signal wird als Nummer 1...8(entsprechend der Anzeige im Kontroll-Programm) übergeben. Das Resultat isteiner der folgenden Werte: 1: High Pegel, -1: Low Pegel, 0: ungültiger (invalid)Pegel

event.level(signal=NUMBER )

• signal: Signal- oder Leitungsnummer (1...8)

Beispiel

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 −− the RI s i g n a l marks a spec ia l one byte broadcast te legram3 i f event . l e v e l ( 8 ) == 1 then return STARTED+COMPLETED end4 i f # s t r == 1 then return STARTED end5 i f data == eos then return COMPLETED end6 return MODIFIED7 end

event.numberGibt die Position des aktuellen Ereignisses in der Aufzeichnung/Aufnahme zu-rück, beginnend mit 0 für das erste Ereignis. Diese Funktion wird nützlich, wennSie wissen möchten, ob z.B. seit dem letzten Ereignis bestimmte Pegelwech-sel aufgetreten sind. Letzteres hängt davon ab, welche Ereignisse Sie für dieAufzeichnung aktiviert haben.

event.number()

Example

1 lastNumber = 02 function s p l i t ( data , i n t v a l , a l t e r , s t r )

138

Page 149: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

3 i f event . number ( ) ~= lastNumber + 1 then4 lastNumber = event . number ( )5 −− a l i n e s ta te event has occurred s ince the l a s t c a l l6 return COMPLETED7 end8 lastNumber = event . number ( )9 return MODIFIED

10 end

event.timeLiefert die Zeit in Sekunden wann das Datenereignis relativ zum Start der Auf-zeichnung aufgetreten ist. Das Resultat ist eine Fliesskommazahl mit Mikrose-kunden Genauigkeit.

event.time()

Beispiel

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 −− remove a l l te legrams i n the f i r s t 5s o f the record3 i f event . t ime ( ) < 5.0 then return REMOVED end4 i f # s t r == 1 then return STARTED end5 i f data == eos then return COMPLETED end6 return MODIFIED7 end

Das linestates ModulAufgrund ihres Designs ’sieht’ die split Funktion keine Ereignisse außer denübertragenen Daten. Bei Protokollen die den Start bzw. das Ende eines Tele-gramms mit einem Pegelwechsel einer anderen Leitung markieren ist aber dieInformation über vorherige Pegeländerungen unabdingbar. Dies wird z.B. beisogenannten Radio RTU (Remote Terminal Units) verwendet um per RTS oderCTS das Trägersignal für die Datenübertragung ein- bzw. wieder auszuschal-ten. Das linestates Modul füllt diese Lücke.Bitte beachten Sie! Wie bereits beim event Modul ist eine Verwendung außer-halb der split Funktion ist nicht erlaubt und erzeugt einen Fehler.

Function Descriptionlinestates.changed(signo) liefert true wenn sich der Pegel der angegeben-

en Leitung (Signalnummer 1...8) seit der letztenAnfrage geändert hat.

linestates.count(signo) gibt die Anzahl aller Pegeländerungen der an-gegeben Leitung (Signalnummer (1...8) seit Auf-zeichnungsbeginn zurück.

linestates.changedLiefert true wenn sich der Pegel der angegebenen Leitung (Signals) seit demletzten Aufruf dieser Funktion geändert hat. Die Leitungen oder Signalnum-

139

Page 150: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

mern werden von 1 bis 8 gezählt und entsprechen der Signalreihenfolge wiesie im Display des Kontrollprogrammes angezeigt werden.Ein Signalwechsel wird immer dann erkannt, wenn das Signal seinen Tri-StateZustand ändert. Das schließt einen logischen Signalwechsel (high, low) alsauch einen Wechsel von oder zu einem inaktiven Signalpegel ein.

linestates.changed(signo)

• signo Leitungs- bzw. Signalnummer.

Example

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 local RTS = 63 local CTS = 74 i f event . d i r ( ) == 1 then5 i f event . l e v e l ( RTS ) == 1 and l i n e s t a t e s . changed ( RTS ) then6 return STARTED7 end8 else9 i f event . l e v e l ( CTS ) == 1 and l i n e s t a t e s . changed ( CTS ) then

10 return STARTED11 end12 end13 return MODIFIED14 end

linestates.countLiefert die Anzahl der Pegelwechsel der angegebenen Leitung (Signals) seitStart der Aufzeichnung. Die Leitungen oder Signalnummern werden von 1 bis8 gezählt und entsprechen der Signalreihenfolge wie sie im Display des Kon-trollprogrammes angezeigt werden.Ein Signalwechsel wird immer dann erkannt, wenn das Signal seinen Tri-StateZustand ändert. Das schließt einen logischen Signalwechsel (high, low) alsauch einen Wechsel von oder zu einem inaktiven Signalpegel ein.

linestates.count(signo)

• signo Leitungs- bzw. Signalnummer.

Example

1 rtsChanges = 02 function s p l i t ( data , i n t v a l , a l t e r , s t r )3 local RTS = 64 i f l i n e s t a t e s . count ( RTS ) > 5 then5 rtsChanges = 06 return STARTED7 end8 return MODIFIED9 end

140

Page 151: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

Das protocol ModulDas Protokoll Modul erlaubt die Abfrage aller Protokoll relevanter Informatio-nen in der aktuellen Aufzeichnung. D.h. die verwendete Baudrate, Anzahl derDatenbits und Parity Einstellungen.

Funktion Beschreibungprotocol.baudrate Liefert die baudrate der aktuellen Aufzeichnung.protocol.bitpause(bits) Diese Funktion berechnet die benötigte Zeit um

die angegebene Anzahl von Bits zu senden undberücksichtigt dabei die aktuelle Baudrate. Pro-fibus z.b. definiert eine Sendepause von 33 Bitsals Telegramm Trennung. Das Resultat ist in Se-kunden(bruchteilen).

protocol.bytepause(bytes) Ähnlich der vorhwerigen Funktion. Hier wird al-lerdings die benötigte Zeit zur Sendung für dieangegebenen Bytes berechnet, wobei nebender aktuellen Baudrate auch Start-, Parity undStopbit mit berücksichtigt werden. Modbus RTUverwendet eine Sendepause von 3.5 Byte alsTelegramm Trennung. Das Resultat ist in Sekun-den(bruchteilen).

protocol.databits Liefert die Anzahl der verwendeten Datenbits.Das Resultat ist ein Wert im Bereich 5...9.

protocol.parity Der Rückgabewert ist die aktuell verwendeteParity Einstellung, kodiert wie folgt: None = 0,Odd = 1, Even = 2, Mark = 3, Space = 4.

protocol.baudrateLiefert die in der aktuellen Aufzeichnung verwendete Baudrate.

protocol.baudrate()

Beispiel

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 −− s t a r t a new telegram a f t e r a pause of 33 b i t s3 i f i n t v a l > 33 / p ro toco l . baudrate ( ) then4 return STARTED5 end6 return MODIFIED7 end

protocol.bitpauseBerechnet die notwendige Zeit um die angegebene Anzahl von Bits zu senden.

protocol.bitpause(bits)

141

Page 152: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

• bits Anzahl der Bits.

Beispiel

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 −− Pro f ibus s p e c i f i e s a pause of 33 b i t s as a telegram d e l i m i t e r3 i f i n t v a l > p ro toco l . b i tpause ( 33 ) then4 return STARTED5 end6 return MODIFIED7 end

protocol.bytepauseBerechnet die nötige Zeit um die gegebene Anzahl von Bytes zu senden.

protocol.bytepause(bytes)

• bytes Byte Anzahl.

Beispiel

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 −− Modbus RTU s p e c i f i e s a pause of 3.5 bytes as a telegram

d e l i m i t e r3 i f i n t v a l > p ro toco l . bytepause ( 3.5 ) then4 return STARTED5 end6 return MODIFIED7 end

protocol.databitsLiefert die eingestellte Anzahl von Datenbits (Wortlänge) der aktuellen Auf-zeichnung.

protocol.databits()

Beispiel

1 function output ( )2 local tg = telegrams . t h i s ( )3 i f p ro toco l . d a t a b i t s ( ) > 8 then4 −− d iscards the 9 th b i t and and uses a warning red background5 box . t e x t { cap t ion ="9 B i t " , t e x t = tg : data % 256 , bg=0xFF0000 , fg =0

}6 else7 box . t e x t { cap t ion ="8 B i t " , t e x t = tg : data }8 end9 end

142

Page 153: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

protocol.parityAchtung! Diese Funktion liefert die in der aktuellen Aufzeichnung verwendeteParity Einstellung NICHT das Parity-Bit eines einzelnen Bytes.

protocol.parity()

Beispiel

1 function out ( )2 i f p ro toco l . p a r i t y ( ) ~= 2 then3 −− do something when p a r i t y i s not even4 box . t e x t { cap t ion =" Warning " , t e x t ="We need an even p a r i t y " }5 return6 end7 end

Das record ModulMit dem record Modul können Sie bestimmte Informationen zur aktuellen Auf-zeichnung abfragen. Aktuell wird die Abfrage des Beginns der Aufzeichnungsowie des Bus Anschlusses (Bus Wiring) unterstützt.

Funktion Beschreibungrecord.buswiring Zurück gegeben wird der eingestellte Bus Anschluss:

0 : 2-Draht-Abgriff, 1 : 2-Draht-Segment,2 : 4-Draht-Abgriff, 3 : 4-Draht-Segment

record.starttime liefert den Beginn der Aufzeichnung in Sekunden seitdem 1. Januar 1970 00:00:00 (wie bereits im datetimeModul verwendet).

record.buswiringLiefert den aktuell eingestellten (nur MSB-RS485) bzw. in einer geladenen Auf-zeichnung gespeicherten Bus Anschluss.

record.buswiring()

Example

1 function out ( )2 local tg = telegrams . t h i s ( )3 i f record . buswi r ing ( ) == 1 or record . buswi r ing ( ) == 3 then4 −− we can use the tg : d i r ( ) to d i s t i n g u i s h between request and

response5 end6 end

record.starttimeLiefert die Sekunden die seit der Epoche (00:00:00 UTC, 1. Januar, 1970) ver-strichen sind.

143

Page 154: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

record.starttime()

Example

1 function out ( )2 local tg = telegrams . t h i s ( )3 local datet ime=datet ime . date ("%X %x " , record . s t a r t t i m e ( ) + tg : t ime ( )

) }4 −− r e tu rns something l i k e 08:50:44 16.04.20135 end

Das shared moduleDer Protokollmechanismus verwendet für jede Datenrichtung einen eigenen,unabhängigen Lua Interpreter. Dadurch müssen Sie sich in der split Funk-tion keine Gedanken über die Datenquelle des übergebenen Datenbytes ma-chen. Und auch die interne Telegramm Repräsentation (alle bislang empfange-nen Zeichen, übergeben als str) beziehen sich immer auf eine Datenrichtung.Die Verwendung zweier Interpreter macht zudem die Arbeitsweise der TemplateFunktionen um einiges einfacher. Dies hat allerdings auch seinen Preis:Obwohl globale Variablen auch außerhalb der split Funktion existieren (ent-weder außerhalb deklariert bzw. nicht als local definiert), können Sie diesedennoch nicht dazu verwenden um Informationen zwischen den beiden Inter-pretern auszutauschen. Oder anders gesagt:Wenn beide split Funktionen, die eine aufgerufen durch Daten an Port A(CH1), die andere durch Daten an Port B (CH2), auf eine gemeinsame Varia-ble zugreifen sollen, kommt das Modul shared ins Spiel.Alle im Modul shared abgelegten Variablen sind von beiden Interpretern zu-gänglich. So können Sie z.B. dort eine Variable anlegen wenn ein bestimmtesDatenbyte an Port A empfangen wurde und den Wert dieser Variable bei derVerarbeitung von Port B Daten verwenden.

Funktion Beschreibungshared.get Liefert den Wert der Variable mit dem angegebenen Na-

men.shared.set Speichert den Wert unter dem angegebenen Name.

shared.getLiefert den Wert/Inhalt der Variable mit dem übergebenen Namen oder nil fallskeine Variable dieses Namens existiert.

shared.get(name)

• name: Der Name der Variable als ein Lua String.

shared.setLegt eine neue Variable mit dem angegebenen Namen an und weist ihr denübergebenen Wert zu. Sollte bereits eine Variable dieses Namens existieren,wird deren Inhalt mit dem neuen Wert überschrieben.

144

Page 155: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

shared.set(name, value)

• name: Der Name der Variable als Lua String.

• value: Ein beliebiger Lua Wert (Zahl, Boolean, String).

Das folgende Beispiel verwendet ein imaginäres Protokoll. Dabei wird jedesTelegramm mit einem Doppelpunkt ’:’ eingeleitet und mit einem LF (Linefeed)beendet.Stellen Sie sich nun ein spezielles ’Life Ping’ Telegramm vor welches lediglicheine Antwort als ’Lebenszeichen’ anfordert. In unserem Beispiel wollen wir so-wohl die ’Life Ping’ Anforderung als auch die zugehörige Antwort aus der Tele-gramm Darstellung entfernen (REMOVED). Und um das ganze noch etwas zuverkomplizieren sollen die ’Life Ping’ Antworten von anderen Antworten nichtzu unterscheiden sein.Ein ’Life Ping’ Telegramm sei als leeres Telegramm spezifiziert. D.h. Das Tele-gramm besteht lediglich aus dem Doppelpunkt ’:’ gefolgt von einem LF.

Um eine ’Life Ping’ Antwort von einer identischen Antwort auseinander haltenzu können, müssen wir den Empfang eines ’Life Ping’ in einer Variable ver-merken. Im Falle der späteren Antwort können wir anhand der gespeichertenVariable den Anfragetyp unterscheiden.Da Anfrage (Life Ping) und Antwort aus verschiedenen Datenquellen erfolgenkönnen, ist die Verwendung des shared Moduls unabdingbar. Hier der ent-sprechende Code:

Example

1 function s p l i t ( data , i n t v a l , a l t e r , s t r )2 i f data == 58 then return STARTED end3 i f data == 10 then4 i f shared . get ( " L i f eP ing " ) then5 return REMOVED6 end7 i f # s t r == 2 then8 shared . set ( " L i f eP ing " , true )9 return REMOVED

10 else11 shared . set ( " L i f eP ing " , fa lse )12 end13 return COMPLETED14 end15 return MODIFIED16 end

Das Beispiel erscheint auf den ersten Blick ein wenig konstruiert. Es verdeut-licht aber sehr schön den Einsatz des shared Moduls zum Austausch vonInformationen zwischen beiden unabhängig arbeitenden Lua Interpretern.Zeile 2 löst ein neues Telegramm aus sobald ein Doppelpunkt (ASCII Wert ist58 dezimal) empfangen wurde. Und zwar unabhängig von der Datenrichtung.Zeile 3 prüft auf das Ende eines Telegramms indem es das aktuelle Datenbytemit LF (dezimal 10) vergleicht. Sobald ein vollständiges Telegramm vorliegt(data ist 10) prüfen wir, ob es die Antwort auf ein vorheriges ’Life Ping’ ist. Indiesem Fall ist die gemeinsam genutzte Variable LifePing wahr (true) und

145

Page 156: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

wir können das Telegramm in Zeile 5 entfernen (REMOVED).

In Zeile 7 merken wir uns den Erhalt eines ’Life Ping’ Telegrammes indem wirdie Telegrammlänge mit 2 vergleichen (’:’ und LF). Handelt es sich um ein ’LifePing’ Telegramm wird die shared Variable LifePing auf wahr gesetzt (Zeile8) und mit REMOVED wird das Telegramm aus der Anzeige entfernt (Zeile 9).Bei allen anderen Telegrammlängen wird der Variable LifePing false zuge-wiesen. Da das Telegramm mit Erhalt von LF komplett ist, erfolgt in Zeile 13 dieRückgabe COMPLETED.Alle empfangenen Datenbytes mit Ausnahme von ’:’ und LF werden an die in-terne Telegramm Repräsentation angehängt und deshalb in Zeile 15 die Funk-tion mit MODIFIED beendet.

Beachten Sie bitte! Der obige Code wird nicht mit normalen globalen Variablenarbeiten, da jeder der beiden Interpreter seine ’eigenen’ globalen Variablenverwendet und ein Zugriff darauf durch den jeweils anderen Interpreter nichtmöglich ist. Die Verwendung des shared Moduls ist die einzige Möglichkeitum Daten zwischen beiden Interpretern auszutauschen.

Die string dump ErweiterungDiese Funktion liefert einen ’Hex dump’ aller im String enthaltenen Bytes. DieArbeitsweise ist vergleichbar mit telegram:dump, aber nicht auf den Tele-gramm Typ beschränkt und ermöglicht damit z.B. auch ’Hex dumps’ von ba-se16 Konvertierungen.

string.dumpErzeugt einen neuen Lua String der alle im String enthaltenen Datenbytes als2-stellige Hexadezimal- oder 3-stellige Dezimalwerte getrennt durch ein Sepa-ratorzeichen auflistet. Die Vorgabe ist Hex (base=16), der Default Separator istein Leerzeichen.Beachten Sie bitte! string.dump ist nicht Teil des allgemeinen Lua Sprach-umfangs und arbeitet nur innerhalb des Protokollmonitors.

string.dump(str, base, sep)

• str: Der Lua String der als Hex dump ausgegeben werden soll.

• base: Die verwendete Zahlenbasis, Vorgabe ist hex (base 16).

• sep: Ersetzt das vorgegebene Trennungsleerzeichen durch ein belie-big anderes Zeichen bzw. Zeichenfolge. Ein leerer String unterbindet dieAusgabe eines Trennungszeichens komplett.

Example

1 function out ( )2 −− access the cu r ren t te legram ( a Modbus ASCII te legram )3 local tg = telegrams . t h i s ( )4 −− conver t the telegram content i n i t s b ina ry rep resen ta t i on5 local bindata = base16 . decode ( tg : s t r i n g ( ) : sub(2 ,−3) )6 −− show the complete telegram content as hex dump

146

Page 157: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

7 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = s t r i n g . dump( b indata ) }8 −− or i n a more ob jec t o r i e n t a t e d manner , dec output and ’ : ’

separa tor9 box . t e x t { cap t ion =" Data ( hex ) " , t e x t =b indata : dump( bindata , 10 , " : "

) }10 end

Der telegram TypDer Lua Datentyp telegram ist eine Art Behälter der die Eigenschaften einesbeliebigen Telegramms in der Aufzeichnung enthält. telegram ist immer dasResultat einer Telegrammabfrage durch das telegrams Modul (beachten Sieden Plural im Modulnamen).Sie können jede Telegramm spezifische Information durch Aufruf der zugehö-rigen Telegrammfunktion ermitteln. Dies entspricht einem Objekt orientiertenAnsatz. Eine zusätzliche dump Funktion bietet eine sehr einfache und eleganteMöglichkeit, den kompletten Inhalt des Telegramms zu erfassen und darzustel-len.

Funktion Beschreibungdata Liefert das Datenbyte an der angegebenen Position (bis zu 9

Bit). Positive Werte indizieren das Datenbyte gezählt vom Tele-grammstart (Position=1 bedeutet das erste Byte im Telegramm).Negative Indexe zählen von hinten (-1 greift auf den letzten Da-tenwert im Telegramm zu).

datatime Liefert den Zeitstempel des angegebenen Telegramm Bytes inSekunden mit Mikrosekunden Genauigkeit. Die Indizierung desDatenbytes erfolgt wie in obiger Funktion data.

dir Abfrage der Datenrichtung des Telegramms. Ein Resultat von1 bedeutet, das das Telegramm an Port A (CH1) empfangenwurde, eine 2 Port B (CH2).

dump Liefert einen Lua String mit einer Datenauflistung des ange-gebenen Telegrammbereichs in hexadezimaler oder dezimalerNotation. dump ist besonders hilfreich wenn ein schneller Über-blick über den Telegramminhalt erforderlich ist oder ein definier-ter Telegrammbereich als ’Rohdaten’ angezeigt werden soll.

duration Liefert die Zeitlänge bzw. Dauer des Telegramms in Sekunden.Dies entspricht der Zeit zwischen erstem Startbit und letztemStopbit.

isbreak Liefert true wenn es sich bei dem indizierten Datenbyte um einechtes Break handelt.

number Abfrage der Telegramm Nummer gezählt ab 1.size Liefert die Länge des Telegramms in Datenbytes. Beachten Sie,

das ein Telegramm auch 9-Bit Werte enthalten kann die eben-falls als ein Datenbyte gezählt werden.

string Liefert den Telegramminhalt als Lua String. Da Lua Strings nur8-Bit Werte enthalten können, werden etwaige 9-Bit Werte auf8 Bit reduziert.

147

Page 158: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

time Liefert die Zeit wann das Telegramm relativ zum Beginn der Auf-zeichnung empfangen wurde. Das Resultat ist in Sekunden miteiner Genauigkeit von 6 Nachkommastellen (Auflösung in Mi-krosekunden). Beispiel: Ein Wert von 25.034198 bedeutet, dasdas Telegramm exakt 25.034198 Sekunden nach Start der Auf-nahme aufgetreten ist.

telegram:dataLiefert den Datenwert des Telegramms an der angegebenen Position. Wie üb-lich zählt der Positionswert von 1 an. Negative Positionen adressieren die Da-ten vom Telegrammende. Da die MSB-RS232 9 Bit Datenprotokolle unterstütztist der Rückgabewert im Bereich 0...511.

telegram:data(INDEX)

• INDEX Index des angeforderten Datenwertes.

Beispiel

1 function out ( )2 −− access the cu r ren t te legram3 local tg = telegrams . t h i s ( )4 −− shows the f i r s t byte i n the telegram as decimal value5 box . t e x t { cap t ion =" F i r s t " , t e x t = tg : data ( 1 ) }6 −− shows the l a s t byte i n the telegram as decimal value7 box . t e x t { cap t ion =" Last " , t e x t = tg : data ( −1 ) }8 end

telegram:datatimeLiefert den Zeitstempel des angegebenen Telegramm Bytes. Die Indizierungstartet wie üblich mit 1. Negative Indexe adressieren die Daten vom Tele-grammende.

telegram:datatime(INDEX)

• INDEX Index des angeforderten Datenbytes

Example

1 function out ( )2 −− access the cu r ren t te legram3 local tg = telegrams . t h i s ( )4 −− shows the pause between the stop b i t o f the f i r s t byte and the5 −− s t a r t b i t o f the second byte ( subs t rac t sending t ime )6 local delay = tg : datat ime ( 2 ) − tg : datat ime ( 1 ) − p ro toco l .

bytepause ( 1 )7 box . t e x t { cap t ion ="Pause 1−2", delay }8 end

148

Page 159: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

telegram:dirLiefert die Quelle oder Richtung des Telegramms. Ein Wert von 1 gibt Port A(oder CH1) als Datenquelle an, ein Wert von 2 bedeutet, das das Telegramman Port B (CH2) empfangen wurde.

telegram:dir

Beispiel

1 function out ( )2 −− access the cu r ren t te legram3 local tg = telegrams . t h i s ( )45 i f tg : d i r ( ) == 1 then6 −− do something wi th data form por t A7 else8 −− te legram received at po r t B9 end

10 end

telegram:dumpErzeugt einen Lua String mit einer Datenauflistung des angegebenen Tele-grammbereichs in 3-stelliger hexadezimaler oder dezimaler Notation, getrenntjeweils durch ein vorgegebenes Zeichen oder String. Ohne Argumente wirdder komplette Telegramminhalt verwendet. Die vorgegebene Zahlenbasis isthex (16), des Default Trennzeichen ein Leerzeichen.

telegram:dump{ first=1, last=-1, base=16, width=3, sep=’ ’, max=LEN }

• first: Spezifiziert den ersten Datenwert in der hex dump Ausgabe, Defaultist der allererste Datenwert im Telegramm (1).

• last: Definiert den letzten im hex dump zu verwendeten Datenwert, vor-gegeben ist der letzte im Telegramm (-1 oder telegram:size()).

• base: Die zu verwendende Zahlenbasis, Vorgabe ist hex (base=16).

• width: Die Anzahl der Stellen bei der Ausgabe der Daten, Default ist 3Stellen (nötig für 9-Bit Werte). In den meisten Fällen werden Sie aber inVerbindung mit der Hex Darstellung width=2 übergeben.

• sep: Ersetzt das vorgegebene Trennungsleerzeichen durch einen belie-bigen anderen Charakter oder String. Ein leerer String unterdrückt dieAusgabe eines Trennungszeichens komplett.

• max: Limitiert die maximale Anzahl der angezeigten Daten im hex dump.Ein Wert von max=4 gibt lediglich die ersten und letzten beiden Daten-werte aus. Die übrigen (nicht angezeigten Datenwerte) werden als An-zahl zusammengefaßt. Die Vorgabe von max entspricht der Telegramm-länge.

Example

149

Page 160: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

1 function out ( )2 −− access the cu r ren t te legram3 local tg = telegrams . t h i s ( )4 −− show the complete telegram content as hex dump5 box . t e x t { cap t ion =" Data ( hex ) " , t e x t = tg : dump { } }6 −− shows the l a s t two bytes as hex w i thou t separa tor and 2 d i g i t7 box . t e x t { cap t ion ="EOS" , t e x t = tg : dump{ f i r s t =−2, width =2 , sep = ’ ’ }8 −− shows the second byte as a decimal value9 box . t e x t { cap t ion ="Second " , t e x t = tg : dump{ f i r s t =2 , l a s t =2 , base=10

}10 end

telegram:durationDie Telegrammdauer oder Länge in Sekunden. Das Resultat ist eine doppeltgenaue Fließkommazahl mit der üblichen Genauigkeit in Mikrosekunden.

telegram:duration()

Beispiel

1 function out ( )2 −− access the cu r ren t te legram3 local tg = telegrams . t h i s ( )4 −− d i sp lay the du ra t i on o f the telegram5 box . t e x t { cap t ion =" Length ( s ) " , t e x t = tg : du ra t i on ( ) }6 end

telegram:isbreakGibt true zurück, wenn es sich bei dem Daten (NULL) Byte an der indiziertenPosition um ein echtes Break handelt. Ansonsten false.

telegram:isbreak(INDEX)

• INDEX Index des angeforderten Bytes.

Beispiel

1 function out ( )2 −− access the cu r ren t te legram3 local tg = telegrams . t h i s ( )4 −− d i s t i n g u i s h between a normal n u l l byte and a break5 i f tg : data ( 1 ) == 0 then6 i f tg : i sb reak ( 1 ) then7 box . t e x t { cap t ion ="BREAK" , t e x t = tg : data ( 1 ) }8 else9 box . t e x t { cap t ion ="NULL" , t e x t = tg : data ( 1 ) }

10 end11 end12 end

150

Page 161: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

telegram:numberDie aktuelle Telegramm Nummer, d.h. um welches Telegramm es sich in deraktuellen Aufzeichnung handelt.

telegram:number()

Beispiel

1 function out ( )2 −− access the cu r ren t te legram3 local tg = telegrams . t h i s ( )4 −− show the cu r ren t te legram number5 box . t e x t { cap t ion ="Number " , t e x t = tg : number ( ) }6 end

telegram:sizeDient zur Abfrage der Telegrammlänge. Beachten Sie, das auch 9-Bit Werteals ein Datenwert gezählt werden.

telegram:size()

Beispiel

1 function out ( )2 −− access the cu r ren t te legram3 local tg = telegrams . t h i s ( )4 −− show the s ize o f a telegram5 box . t e x t { cap t ion =" Length " , t e x t = tg : s ize ( ) }6 end

telegram:stringLiefert den Inhalt des Telegramms als Lua String zurück.Beachten Sie: Ein Lua String kann zwar beliebige Bytes im Bereich 0...255enthalten, aber keine 9 Bit Werte. Eventuell vorhandene 9-Bit Werte werdendeshalb auf ’normale Bytes’ reduziert.Im Gegensatz zu den früheren Modulen tg und tgprev akzeptiert die ’neue’string Methode keine Bereichsparameter und gibt immer den ganzen Tele-gramminhalt als String zurück.Da das Lua String Modul bereits leistungsfähige Funktionen zur String Extrak-tion bietet, besteht auch keine Notwendigkeit diese erneut zu implementieren.Und: Lua erlaubt das Indizieren von Teilstringen auch vom ’Stringende’, wasein zusätzlicher Vorteil ist.

telegram:string()

Beispiel

151

Page 162: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

1 function out ( )2 −− access the cu r ren t te legram3 local tg = telegrams . t h i s ( )4 −− e x t r a c t the bytes 2 . . . 5 as a Lua s t r i n g5 local data = tg : s t r i n g ( ) : sub (2 ,5 )6 −− query the l a s t two EOS bytes7 local eos = tg : s t r i n g ( ) : sub(−2,−1)8 end

telegram:timeLiefert den Zeitstempel des Telegramms. Der Zeitstempel ist definiert als dieZeit in Sekunden, die seit Start der Aufnahme vergangen ist, wenn das ersteByte des Telegramms empfangen wurde. Das Resultat ist ein Fliesskommawertmit doppelter Genauigkeit und der üblichen Auflösung von 1 Mikrosekunde.

telegram:time()

Beispiel

1 function out ( )2 −− show the response t ime to the former telegram3 local t c = telegrams . t h i s ( )4 local tp = telegrams . prev ( )5 −− handle not e x i s t i n g prev ious telegram ( a t very f i r s t p o s i t i o n )6 i f not tp then tp = t c end7 box . t e x t { cap t ion ="Response t ime " , t e x t = t c : t ime ( ) − tp : t ime ( ) }8 end

Das telegrams ModulDas telegrams Modul bietet einen einfachen und vor allem wahlfreien Zugriffauf alle bis dato aufgenommenen Telegramme.Der große Vorteil: Im Gegensatz zu den bisherigen (und nun obsoleten) Modu-len tg und tgprev ist der Telegrammzugriff nun nicht länger nur auf das ak-tuelle und vorherige Telegramm beschränkt. Vielmehr ermöglicht telegramsIhnen jetzt auch Telegramme zu behandeln, deren Verarbeitung von einem zueinem früheren Zeitpunkt empfangenen Telegramm abhängig ist6.

Ein Beispiel: Sie müssen ein Telegramm differenziert interpretieren falls ein zu-vor empfangenes Telegramm von Typ XYZ vorliegt. In einem Bussystem mitmehreren Teilnehmern ist dies nicht zwangsläufig das vorherige Telegramm.D.h. Sie brauchen eine Möglichkeit über die zuvor empfangenen Telegrammezu ’iterieren’ um das passende Telegramm zu finden.

Der Zugriff auf ein beliebiges Telegramm erfolgt einfach per Aufruf der ModulFunktion telegrams.at(index) wobei index die Nummer des gewünschtenTelegramms ist.Der Rückgabewert (oder das Rückgabeobjekt) ist immer vom Typ telegram(siehe 13.7). Dieser spezielle Typ agiert als ein Interface und stellt Ihnen diegleichen Funktionen zur Verfügung, die Sie bereits von dem Modulen tg und

6Bisher konnten Sie in out() nur auf das aktuelle und vorherige Telegramm zugreifen.

152

Page 163: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.7. PROTOKOLLMONITOR SPEZIFISCHE LUA ERWEITERUNGEN

tgprev gewöhnt sind.telegrams.at ist die einzige Funktion die Sie für den Zugriff auf ein bestimm-tes Telegramm benötigen. Da es sich beim Abruf des aktuellen oder vorherigenTelegramms aber um die am meisten benötigten Operationen handelt, bietetdas Modul zwei entsprechende Alias Funktion. Die folgende Tabelle listet alleModul Funktionen auf:

Funktion Beschreibungtelegrams.at liefert das Telegramm mit der angegebenen Nummer

bzw. Position.telegrams.this liefert das aktuell in out() behandelte Telegramm. Dies

ist ein Alias und gleichbedeutend mit dem Aufruf fürtelegrams.at(-1).

telegrams.prev liefert das vorherige in out() behandelte Telegramm.Entspricht dem Aufruf telegrams.at(-2).

telegrams.atDie Funktion telegrams.at(index) akzeptiert absolute und relative Indexeund liefert das zugehörige Telegramm - oder nil, wenn Sie einen ungültigenIndex übergeben. Der (Zeit)Aufwand für den Telegrammzugriff ist immer linear.Es macht keinen Unterschied ob Sie das zuletzt empfangene oder allerersteTelegramm abfragen.Absolute Telegrammnummern sind immer positiv. Sie starten mit einem Indexvon 1 (erstes Telegramm) und enden mit der Nummer des letzten aufgenom-menen Telegramms.Relative Index hingegen zählen vom aktuell in der out() Funktion bearbeitenTelegramm und werden als negative Werte übergeben. Ein Index von -1 liefertdas aktuelle Telegramm (und macht das tg Modul obsolete), ein Index -2 dasvorherige (bisher per tgprev realisiert), ein Index von -3 das vorvorletzte (im-mer bezogen auf das in out() behandelte Telegramm), usw.Da in der out() Funktion immer nur das EINE Telegramm bezogen auf dieentsprechende Zeile im Ausgabefenster bearbeitet wird, ist eine relative Inde-xierung viel praktischer, da Sie nicht über die zugehörige absolute Telegramm-nummer nachdenken müssen.

telegrams:at( index )

• index: Der Index oder die Nummer des angeforderten Telegramms. Einpositiver Index zählt vom Beginn der Aufnahme, ein negativer Index zähltrückwärts vom aktuell in out() behandelten Telegramm.

Beispiele

1 function out ( )2 −− query the cu r ren t te legram3 local te legram = telegrams . a t ( −1 )4 −− show the telegram time5 box . t e x t { cap t ion ="Time " , t e x t =telegram . t ime ( ) }6 end

153

Page 164: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

Die folgenden Programmzeilen berechnen den Zeitabstand zwischen dem ak-tuellen (Index -1) und zuvor empfangenen (Index -2) Telegramms. Statt beideTelegramme separat als lokale telegram Variablen zu speichern, erfolgt der Zu-griff auf die Zeitinformationen direkt:

1 function out ( )2 −− show the t ime d i f f e r e n c e between the cu r ren t and prev ious

telegram3 box . t e x t { cap t ion =" d t " ,4 t e x t =telegrams . a t (−1) : t ime ( ) − te legrams . a t (−2) : t ime ( ) }5 end1

13.8 EinstellungenIm Einstelldialog finden Sie zusätzliche Möglichkeiten, um die Darstellung derTelegramme an Ihre persönlichen Anforderungen anzupassen. So können Siejedem Telegramm aus einer Liste von sogenannten Präfixen bestimmte Zusatz-informationen voranstellen (Telegrammnummer, Datum/Uhrzeit, etc.), die ver-wendete Schrift ändern und eine andere Hintergrundfarbe für das Telegramm-fenster auswählen. Der Einstelldialog wird per Klick auf:Einstellungen→Protokollmonitor einrichten...geöffnet.

Anzeige zusätzlicher TelegramminformationenDer Protokollmonitor bietet eine Reihe von Zusatzinformationen die Sie denTelegrammen voranstellen können. Selbstverständlich könnten Sie dies auchdurch ein paar Zeilen Lua Code realisieren, aber manchmal ist einfacher - undauch gewollt - bestimmte Informationen zu den Telegrammen kurz mal einzu-schalten und später wieder aus der Telegrammanzeige zu entfernen.Folgende Zusatzinformationen sind im Präfix Reiter des Einstelldialogs aus-wählbar:

1 Telegramm NumberDie aktuelle Telegramm beginnend mit 1 und unabhängig von der Telegramm-richtung.

2 Telegramm ZeitDie Empfangszeit des ersten Telegrammbytes relativ zum Aufnahmestart inSekunden.

3 Telegramm Datum und UhrzeitDie absolute Zeit und Datum des Telegramms. Zeit und Datum werden in demjeweils lokalen Format (abhängig von Ihrer PC Einstellung) und mit zusätzli-chem Mikrosekundenanteil angezeigt.

4 Telegramm DauerEntspricht der zeitlichen Länge des Telegramms in Sekunden, gemessen vomersten Startbit bis zum letzten Stopbit.

5 Zeitdistanz zum vorherigen TelegrammDie ’Pausezeit’ zwischen dem aktuellen und vorherigen Telegramm. Gemessenals die Zeit zwischen dem letzten Stopbit des vorherigen und dem Startbit desaktuellen Telegramms.

Jede Änderung der Auswahl wird unmittelbar im Telegrammfenster angezeigt.

154

Page 165: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.9. DIE WERKZEUGLEISTE

Änderung der SchriftartDie Änderung der aktuellen Schrift wirkt sich direkt auf die Box-Darstellungaus. Sie können eine kleinere Schrift wählen, wenn Sie mehr Informationen ineiner Zeile angezeigt bekommen möchten. Oder Sie favorisieren eine größereSchriftart wegen der besseren Lesbarkeit.Der Schriftauswahl Dialog erlaubt Ihnen Schriftart, Still und Größe getrenntauszuwählen. Alle Änderungen wirken sich unmittelbar auf die Darstellung ausund werden automatisch gespeichert.

Telegramm SchriftartÄnderung der Schrift per Maus und TastaturNeben dem Schriftdialog existiert eine noch weitaus einfachere Möglichkeit,die Schrift anzupassen. Halten Sie die Strg Taste gedrückt während Sie dasMausrad drehen. Oder drücken Sie die Tastenkombination Strg+ + bzw.

Strg+ − um die Darstellung zu vergrößern oder zu verkleinern. Strg+ 0schaltet auf die voreingestellte Größe zurück.

Eine andere HintergrundfarbePer Templateskript können Sie die Farbe der Telegramme via Box-Modell vor-geben. Wenn Sie zusätzlich die Farbe des Telegrammfensters (den Hinter-grund) ändern wollen, öffnen Sie den Farbdialog und klicken Sie auf den Farb-knopf. Anschließend können Sie eine beliebige Farbe auswählen die dann alsneue Hintergrundfarbe übernommen wird.

Background colorLua KompatibilitätUm immer die bestmögliche Protokollverarbeitung zu ermöglichen ist es manch-mal unausweichlich die Lua Funktionalität auch auf Kosten der Abwärtskom-patibilität zu ändern. Wir tun dies nicht leichtfertig und brechen mit bisherigenVersionen nur dann wenn der Vorteil außer Frage steht. In solchen Fällen ge-ben wir Ihnen die Gelegenheit Ihre eigenen Templates möglichst ohne großenAufwand an die Änderungen anzupassen.Per Voreinstellung akzeptiert der Lua Interpreter auch obsolete Funktionen zu-

Lua Kompatibilitätmindest für einen gewissen Zeitraum (oder Folgeversionen). Um Ihre eigenenTemplates auf den neuesten Stand zu bringen, deaktivieren Sie einfach denKompatibilitätsschalter in diesem Dialog. Der Protokollmonitor zeigt Ihnen dannalle relevanten Programmzeilen an, die er in einer der nächsten Versionen nichtmehr akzeptieren wird. Weitere Details über die abgekündigten Funktionen undModule finden Sie im Abschnitt 13.11.

13.9 Die WerkzeugleisteDie Werkzeugleiste dient zum schnellen Zugriff der am meisten benötigtenFunktionen. Einige davon sind bei allen Monitoren identisch, andere spezifischfür den Protokollmonitor.

155

Page 166: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

A Ende: Speichert alle Einstellungen und schließt das Fenster

B Anzeigemodus: Je nach Anzeigemodus zeigt der Fensterinhalt immerdas aktuelle (zuletzt aufgenommene) Ereignis, ist verriegelt oder aktua-lisiert den Inhalt mit anderen Fenstern.

C Datenrichtung: Der Protokollmonitor kann beide Datenrichtungen (PortA und Port B) gemeinsam oder einzeln anzeigen, z.B. um diese getrenntin zwei einzelnen Fenstern darzustellen.

D Neue Ansicht: Öffnet ein neues Fenster mit dem gleichen Ausschnittund identischen Einstellungen.

E Gehe zu Dialog: Öffnet den Gehe zu Telegramm Nummer Dialog.

F Template anwenden: Wenn das aktuelle Template auf die vorhandenenDaten an.

G Filter Control: Erlaubt die Auswahl und Übergabe beliebigen Texts anden split filter Parameter.

156

Page 167: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.11. OBSOLETE FUNKTIONEN UND MODULE

13.10 Kurzbefehle

Tastenkommandosder wichtigstenFunktionen

Aktion Kurzbefehl

Online Hilfe zum Protokollmonitor F1

Template anwenden F5

Öffnet den Template Manager Strg + M

Zeigt die Telegramme in einem neuen Fenster Strg + N

Aktuelles Template in Datei speichern Strg + S

Template aus Datei laden und anwenden Strg + O

Template Editor ein- oder ausklappen Strg+T

Alle Protokoll- oder Editorzeilen auswählen Strg + A

Auswahl aufheben Umschalt + Strg + A

Ausgewählte Zeilen exportieren Strg + E

Editgor Textsuche Dialog anzeigen Ctrl + F

Gehe zu Telegramm-Nummer Dialog anzeigen Ctrl + G

Editor Textsuche und Ersetzen Dialog anzeigen Ctrl + H

Funktionen im Editor ein/ausklappen Ctrl + L

Vergrößert die aktuelle Telegrammdarstellung Strg + +

Verkleinert die aktuelle Telegrammdarstellung Strg + −

Kehrt zur normalen Telegrammvergrößerung zurück Strg + 0

Öffnet den Farbauswahldialog Strg + Alt + C

Öffnet das interne Debug Ausgabefenster Strg + Alt + O

Einstellungen speichern und Protokollmonitor schlie-ßen

Strg + Q

13.11 Obsolete Funktionen und ModuleMit Veröffentlichung des Beta-Release 4.1.9 wurden einige Funktionen undModule als ’veraltet’ deklariert. Diese werden in der nächsten offiziellen Ver-sion 4.2.0 endgültig entfernt und nicht mehr unterstützt.Im folgenden Abschnitt erfahren Sie, wie Sie Ihre eigenen Templates updatenund obsoleten Programmcode durch die neuen und weitaus leistungsfähigerenModule und Funktionen ersetzen7.Zunächst eine Übersicht der obsoleten Module:

tg - Zugriff auf das aktuelle Telegramm in der Funktion out()

tgprev - Zugriff auf das vorherige Telegramm in der Funktion out()

7Die aktuellen Protokolltemplates und Beispiele sind bereits angepaßt und können als Vorlageverwendet werden.

157

Page 168: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

hex - Konvertiert die Hex ASCII Daten des aktuellen Telegramms in Binärdatenbox.hexdata - Gibt einen Abschnitt der Daten im aktuellen Telegramm alsHex Dump aus

Vermutlich fragen Sie sich jetzt, was daran schlecht ist?Die Schwäche liegt im Design. Hier werden reine Ausgabe- oder Konvertie-rungsmodule mit einem festgelegten Telegrammzugriff vermischt, hier als ak-tuell blau hervorgehoben.So verarbeiten sowohl das hex Modul als auch die box.hexdata FunktionNUR das gerade aktuelle Telegramm. Sie können keinen Hexdump des vor-herigen Telegramms erzeugen. Genauso wenig können Sie Hex ASCII Datenanderer Telegramme außer dem aktuellen konvertieren. In beiden Fällen müs-sen Sie dies durch eigene Lua Funktionen realisieren.Mehr noch: tg und tgprev begrenzen die Telegramm Verarbeitung innerhalbout() auf das aktuelle und vorherige Telegramm. Sobald Sie auf ein früheresTelegramm zugreifen wollen haben Sie verloren.

Das neue telegrams Modul macht dem ein Ende und bietet Ihnen einenwahlfreien Zugriff auf ALLE Telegramme, die bislang empfangen wurden wennout() ausgeführt wird. Es ist daher nur ein konsequenter Schritt, das dieNachfolger von box.hexdata und hex ihre Abhängigkeit von tg abstreifenund mit beliebigen Telegrammen zusammenarbeiten.

Im folgenden soll uns das Modbus ASCII Telegramm ’Write Single Register’als Beispiel dienen. Wir werden dabei den Ausgabecode Schritt für Schritt andie neuen Lua Komponenten anpassen. Das Telegramm hat die nachstehendeStruktur:

: Addr Func RegHi RegLo ValHi ValLo LRC CR LF

1 char 2 chars 2 chars 2 chars 2 chars 2 chars 2 chars 2 chars 1 char 1 char

Mit Ausnahme des Startzeichens ’:’ und der Endesequenz CRLF werden al-le Telegrammdaten in den hexadezimalen Zeichen 0-9, A-F (Hex ASCII bzw.base16 codiert) übertragen. Hier eine exemplarische Bytefolge wie sie z.B. imDatenmonitor angezeigt wird:

3A 30 31 30 36 30 30 31 39 30 33 33 45 39 46 0D 0A

Eine frühere Lösung mit den obsoleten Modulen sah ungefähr so aus:

1 box . t e x t { cap t ion =" S t a r t " , t e x t = s t r i n g . char ( tg . data ( 1 ) ) }2 box . t e x t { cap t ion =" Addr " , t e x t =hex . byte { pos=2 } }3 box . t e x t { cap t ion ="Func " , t e x t =hex . byte { pos=4 } }4 box . t e x t { cap t ion =" Reg is te r " , t e x t =hex . i n t 16 { pos=6 , order ="BE " } }5 box . t e x t { cap t ion =" Value " , t e x t =hex . i n t 16 { pos=8 , order ="BE " } }6 box . t e x t { cap t ion = ’ ’LRC’ ’ , t e x t = s t r i n g . format ("%02X" , hex . byte { pos= tg . s i ze

( ) −3}) }7 box . hexdata { cap t ion ="End " , pos= tg . s i ze ( ) −1, len =2 , width =2}

Im ersten Schritt ersetzen wir das tg Modul und wandeln alle hex ASCII Zei-chen (die grünen und gelben Abschnitte) in eine rein binäre Sequenz zurück.

1 loca l t e l e = telegrams . t h i s ( )2 loca l bindata = base16 . decode ( t e l e : s t r i n g ( ) : sub(2 ,−3) )

158

Page 169: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

13.11. OBSOLETE FUNKTIONEN UND MODULE

Zeile 1 erfragt das aktuelle Telegramm und weist es der Variable tele zu. Die-se Variable enthält damit alle Informationen, die zuvor per tg Modul verfügbarwaren. Im Gegensatz zu tg kann sich die Variable aber auch auf beliebige an-dere Telegramme beziehen.In Zeile 2 extrahieren wir den gelb/grünen Abschnitt aus dem Telegramm Stringper Lua’s (sub)string Funktion und übergeben ihn an die base16 decode Funk-tion. Der gelb/grüne Abschnitt beginnt mit dem 2ten Byte (Index 2) und endetmit dem drittletzten (Index -3). Das Result ist eine Binärsequenz der gelbenund grünen Bytes.Bitte beachten Sie! Sie können nicht das komplette Telegramm zurückwandeln,da der Doppelpunkt des Startzeichens als auch das CRLF keine gültigen HexASCII (oder Base16) Zeichen sind!

Mit den originalen Binärdaten zur Hand gibt es keine Notwendigkeit die ver-schiedenen Telegrammbestandteile wie z.B. Adresse, Funktion, Register, Wertoder LRC Prüfsumme einzeln aus dem Hex ASCII Format zu konvertieren.Die Funktion bunpack in Zeile 3 erledigt dies weitaus eleganter und in einemRutsch.

1 loca l t e l e = telegrams . t h i s ( )2 loca l bindata = base16 . decode ( t e l e : s t r i n g ( ) : sub(2 ,−3) )3 loca l pos , adr , fnc , reg , val , l r c = bunpack ( bindata , " bb>H>Hb " )

bunpack entpackt (unpack) die ihm übergebene Datensequenz gemäß demzweiten Formatstring Parameter "bb>H>Hb". Übersetzt heißt das sinngemäß:

1 gebe IMMER das Ende der Umwandlung im String zurück (pos)2 liefere das erste Zeichen als Byte (b) (adr)3 liefere das zweite Zeichen als Byte (b) (fnc)4 fasse das 3te und 4te Byte als vorzeichenlosen 16 Bit Wert (H) mit dem höher-

wertigen Byte zuerst (>) zusammen und gebe ihn zurück (reg)5 fasse das 5te und 6te Byte als vorzeichenlosen 16 Bit Wert (H) mit dem höher-

wertigen Byte zuerst (>) zusammen und gebe ihn zurück (val)6 liefere das 7te Zeichen als Byte (b) (lrc)

Insgesamt liefert der Aufruf 6 Resultate. Das erste Resultat ist immer die Posi-tion an der die Extrahierung endete. Dies ist gleichbedeutend mit der Positionab der ein eventuell folgender bunpack Aufruf weiter machen soll.Zeile 3 fasst alle Resultate in den entsprechenden Variablen zusammen undwir können diese dann ohne weitere Bearbeitung einfach ausgeben.

1 loca l t e l e = telegrams . t h i s ( )2 loca l bindata = base16 . decode ( t e l e : s t r i n g ( ) : sub(2 ,−3) )3 loca l pos , adr , fnc , reg , val , l r c = bunpack ( bindata , " bb>H>Hb " )4 box . t e x t { cap t ion =" Addr " , t e x t =adr }5 box . t e x t { cap t ion ="Func " , t e x t = fnc }6 box . t e x t { cap t ion =" Reg is te r " , t e x t =reg }7 box . t e x t { cap t ion =" Value " , t e x t =va l }8 box . t e x t { cap t ion ="LRC" , t e x t = s t r i n g . format ("%02X" , l r c ) }

Übrig bleiben jetzt noch das Start ’:’ Zeichen und die CRLF Endesequenz. DerDoppelpunkt ist das erste Zeichen im Originaltelegramm und wir können esähnlich wie im obsoleten Code handhaben. Sehen Sie dazu Zeile 4 im folgen-den Listing.

159

Page 170: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 13. DER PROTOKOLLMONITOR

Die neue telegram:dump Funktion ersetzt den restriktiven box.hexdataAufruf in Zeile 10. Die dump Funktion ’gehört’ immer zu einer zuvor zugewie-senen telegram Variable und greift nicht mehr intern auf tg zu.

1 loca l t e l e = telegrams . t h i s ( )2 loca l bindata = base16 . decode ( t e l e : s t r i n g ( ) : sub(2 ,−3) )3 loca l pos , adr , fnc , reg , val , l r c = bunpack ( bindata , " bb>H>Hb " )4 box . t e x t | cap t ion ) " S t a r t " , t e x t = s t r i n g . char ( t e l e : data ( 1 ) )5 box . t e x t { cap t ion =" Addr " , t e x t =adr }6 box . t e x t { cap t ion ="Func " , t e x t = fnc }7 box . t e x t { cap t ion =" Reg is te r " , t e x t =reg }8 box . t e x t { cap t ion =" Value " , t e x t =va l }9 box . t e x t { cap t ion ="LRC" , t e x t = s t r i n g . format ("%02X" , l r c ) }

10 box . t e x t { cap t ion ="End " , t e x t = t e l e : dump{ f i r s t =−2, width=2 } }

13.12 Lua ReferenzenDie Skriptsprache Lua ist frei verfügbar und sehr gut dokumentiert. Im Internetfinden Sie eine Vielzahl von Programmcode, Beispielen und Anleitungen. Einesehr gute (wenn nicht die beste!) Quelle ist die Lua Website:

http://www.lua.org

Ein direkter Link zur Lua Anleitung für Version 5.1 (einschließlich der C-API)finden Sie hier:

http://www.lua.org/manual/5.1/

160

Page 171: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

14Der Signalmonitor

Der MSB-RS232 Analyser tastet alle Signale mit bis zu 16 MHz ab.Das Ergebnis liefert der Signalmonitor. Analog zu einemDigitalscope können Sie beliebige Ausschnitte anfahren und inunterschiedlicher Vergrößerung untersuchen.

Zur Analyse von seriellen Datenverbindungen reicht es oftmals nicht aus, nurdie übertragenen Datenbytes zu betrachten. Die Daten könnten falsch sein,z.B. durch eine Fehlfunktion des Sende-Hardware (in den mit gelieferten Bei-spielen befindet sich die Aufzeichnung eines Embedded Systems bei der derfür die korrekte Baudrate zuständige Taktgeber durch Festplatten Interruptsleichten Schwankungen (Baudrate Jitter) unterworfen war und dadurch falscheDatenbytes erzeugte).

Neben dem EIA-232 Standard gibt es noch eine Vielzahl weiterer Möglichkeit-en, Daten auszutauschen, die nicht auf den typischen Sende- und Empfangs-leitungen RxD und TxD basieren. Übertragungsprotokolle, die einen definiertenWechsel bestimmter Leitungen voraussetzen.Um ein (Fehl)Verhalten solcher Verbindungen beurteilen zu können, trägt derSignalmonitor die Pegel aller Leitungen über die Zeit auf. Die Zeitauflösung be-trägt dabei 1µs.Alle von der MSB-RS232 aufgezeichneten Leitungen werden dabei parallel dar-gestellt, wobei jedes Leitungssignal einzeln ein-/ausgeschaltet und die Reihen-folge der Darstellung individuell variiert werden kann. Die Arbeitsweise desSignalmonitors kann am besten mit einem digitalen, 8 kanaligem Speicheros-zilloskop verglichen werden. Im Gegensatz zu einem Oszilloskop ist die Auf-zeichnungstiefe, d.h. die Zeitdauer der Aufzeichnungstiefe , d.h. die Zeitdaueraufgenommenen Signale nur durch den Festplattenplatz (und die Rechenleis-tung Ihres Computers) beschränkt.Durch den Aufruf mehrerer Signalmonitore können Sie die aufgezeichnetenSignale (Pegelveränderungen der einzelnen Leitungen) an unterschiedlichenStellen und mit unterschiedlicher Zeitauflösung untersuchen bzw. vergleich-en. Daneben eignet sich der Signalmonitor besonders bei der Beurteilung desZeitverhaltens von gesendeten Datenbytes oder bei Fragen nach der Konti-nuität der gesendeten Daten. Im einfachsten Fall zeigt der Signalmonitor diePegeländerungen einer gerade aktiven Datenverbindung und liefert damit be-reits entscheidende Hinweise auf das Funktionieren bzw. nicht funktioniereneiner laufenden Datenübertragung.

161

Page 172: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 14. DER SIGNALMONITOR

14.1 Die SignaldarstellungDie Signalanzeige ist unterteilt in drei Abschnitte. Direkt unter der Werkzeug-leiste befinden sich die Cursor-Leiste (siehe Cursor) sowie die Zeitachse. DieZeitachse liefert Ihnen die genaue Position und Auflösung des gerade sichtba-ren Signalausschnittes. Um die Ablesung zu erleichtern werden bei allen Zeit-angaben überflüssige Stellen durch Prefixe ersetzt. Aus 0.012570s wird z.B.12.57ms.Im Anschluß an die Zeitachse erfolgt die Signaldarstellung. Für alle Signale giltder gleiche Ausschnitt sowie die gleiche Auflösung (Zeitbasis). Um ein Signalan mehreren Positionen zu untersuchen, starten Sie einfach einen weiteren Si-gnalmonitor. Sie können die aktuelle Ansicht duplizieren, indem Sie den CloneKnopf in der Werkzeugleiste anklicken. Dadurch wird eine neue Instanz desSignalmonitors gestartet, der exakt die gleichen Einstellungen wie der aktuellebesitzt. Oder Sie starten einen neuen Signal Monitor mit den zuletzt verwen-deten Einstellungen aus dem Kontrollprogramm.

Vergleichen von SignalabschnittenSie können beliebig viele Signalausschnitte gleichzeitig betrachten, auch be-reits während einer laufenden Aufzeichnen. Öffnen Sie dazu einfach neueSignalmonitor Fenster mit dem gewünschten Abschnitt.

162

Page 173: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

14.2. NAVIGATION

Jedes sichtbare Signal wird durch seinen Namen am linken Rand beschrie-ben. Den Signalnamen können Sie jederzeit im Einstelldialog des Kontrollpro-gramms ändern. Die Reihenfolge, in welcher die Signale dargestellt werden, istindividuell einstellbar. Das ermöglicht wichtige Signalleitungen direkt überein-ander anzuzeigen. Zusätzlich können unwichtige Signale ausgeblendet wer-den. Alle Signal spezifischen Einstellungen erfolgen im Einstelldialog, den Sieaus der Menüleiste unter Optionen→Einstellungen erreichen.

Individuelle SignalanzeigeSignalreihenfolge, Sichtbarkeit, Raster und Farbe werden im Signaldialog ein-gestellt!

Der sichtbare Signalbereich wird durch seine Position als Zeitdifferenz vomAnfang der Aufzeichnung und seinen sichtbaren Ausschnitt definiert. Der sicht-bare Ausschnitt errechnet sich aus der Größe des Signalfensters in BildschirmPixel und der Zeitbasis, d.h. wieviele usec (Millionstel Sekunden) pro Pixel dar-gestellt werden. Je größer die Zeitbasis, desto größer ist die Anzahl von Mikro-sekunden, die innerhalb des sichtbaren Fensters angezeigt werden.Um einen kompletten Überblick über die bis dato aufgenommenen Ereignissezu haben, wählen Sie im Ansicht Menü den Menüpunkt ’Volle Ansicht’ aus oderdrücken Sie die Tastenkombination Strg+Pos1. Die Zeitbasis wird dann auto-matisch so gewählt, daß möglichst alle Ereignisse in ein Signalfenster passen.Je nach gewählter Zeitbasis können mehrere Ereignisse, Pegelwechsel inner-halb eines Bildschirm Pixels aufgetreten sein. Der Signalclient zeichnet danneine senkrechte Linie oder ein senkrechtes Band anstelle eines einzelnen Pe-gels. Folgende Bildausschnitte sollen das verdeutlichen:

Zeitbasis 0.5ms

Zeitbasis 50µs

Zeitbasis 10µs

Alle drei Darstellungen betreffen den gleichen Signalausschnitt, allerdings miteiner von oben nach unten kleiner werdenden Zeitbasis, bzw. höheren Auflö-sung.

14.2 NavigationDie Scrolleiste unter den Signalen gibt Ihnen einen Überblick über die Positionund Größe des dargestellten Signalausschnittes im Vergleich zum Gesamtsi-gnal. Der ’Anfasser’ der Scrolleiste repräsentiert dabei die Größe, seine Positi-on den Offset des angezeigten Ausschnitts.

163

Page 174: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 14. DER SIGNALMONITOR

Daneben ermöglicht Ihnen die Scrolleiste ein Navigieren durch das Gesamtsi-gnal. Die Pfeilknöpfe am linken und rechten Ende der Scrolleiste scrollen denSignalausschnitt in Raster- bzw. 10 Raster Schritten, oder sie verschieben dasSignal mit dem Anfasser. Mit den Pfeiltasten läßt sich das Signal ebenfalls ver-schieben, siehe Kurzbefehle.Position und Vergrößerung (Zeitbasis) werden in den beiden linken Statusfel-dern angezeigt. Unterhalb der Scrolleiste sehen Sie einen Schieberegler (Sli-der), mit dem Sie die Signalhöhe aller Signale verringern können. Im allgemei-ner werden Sie diese Funktion nicht benötigen. Sie ist sinnvoll, wenn Sie denNamen einer eingeblendeten Region nicht lesen können, weil er vom Signalverdeckt wird. In diesem Fall verringern Sie einfach die Signalhöhe.

Navigation mit dem MausradDie Navigation mit dem Mausrad bietet sozusagen einen ’mittleren’ Gang umdas Signal zu verschieben. Halten Sie dazu die Strg Taste gedrückt, währendSie am Mausrad drehen. Das Signal wandert je nach Drehrichtung um jeweils10 Raster nach links oder rechts. Bei nicht gedrückter Strg Taste wird das Si-gnal vergrößert bzw. verkleinert.

Verschieben mit dem Hand-WerkzeugDas Hand Werkzeug erlaubt das pixelweise Verschieben des Signals. KlickenSie dazu auf das Hand Icon in der Toolbar. Der Cursor wechselt zu einemHandsymbol. Um das Signal nach rechts oder links zu bewegen, fassen Siedas Signal, indem Sie die linke Maustaste gedrückt halten und das Signal (beigedrückter) Taste in die gewünschte Richtung ziehen. Der Mauscursor hat da-bei die Form einer zupackenden Hand.

14.3 Die ZeitbasisDie Zeitbasis entspricht dem Vergrößerungsgrad, mit welchem das Signal dar-gestellt wird. Die kleinste Zeitbasis ist 10µs, d.h. 10 Mikrosekunden pro Ras-ter und bedeutet 1µs pro angezeigtem Pixel (1 Raster ist 10 Pixel breit). DasSignal ist stark vergrößert, bei einer Bildschirmauflösung von 1024 sind dasungefähr 1ms des Signals (sofern Sie das Signalmonitor Fenster maximierthaben). Sind die Pegeländerungen im Millisekunden oder Sekundenbereichwerden Sie eher eine größere Zeitbasis wählen um einen zeitlich größerenAusschnitt überschauen zu können. Durch Anklicken der beiden Lupen Sym-bole in der Werkzeugleiste wird die Zeitbasis jeweils auf den nächst größerenbzw. kleineren Wert gesetzt. Dasselbe erreichen Sie durch die Tastenkombi-nation Strg + Pfeil nach oben und Strg + Pfeil nach unten bzw. durch Drehendes Mausrades.Sie können auch einen bestimmten Ausschnitt des Signals vergrößern, indemSie den Ausschnitt mit der gedrückter linker Maustaste auswählen. BewegenSie dazu den Mauszeiger an den Anfang des gewünschten Bereiches unddrücken Sie die linke Maustaste. Halten Sie die Taste gedrückt und bewegenSie den Mauszeiger an das Ende des Ausschnitts. Ein Rechteck zeigt Ihnendabei mit jeder Bewegung die aktuelle Auswahl. Sobald Sie die linke Maustas-te loslassen, wird dieser Bereich vergrößert dargestellt.

164

Page 175: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

14.4. UNDO UND REDO

14.4 Undo und RedoAlle Ausschnittsvergrößerungen können beliebig zurückgenommen (undo) odernach einem Zurücknehmen wieder hergestellt (redo) werden.Auf diese Weise können Sie einen interessanten Signalabschnitt beliebig ver-größern, z.B. um einen Cursor möglichst genau zu plazieren und anschlies-send wieder zu einer der vorherigen Ansichten zurückkehren, indem Sie aufdas Rückg. Symbol in der Werkzeugleiste klicken oder einfach Strg + Z einge-ben.Die ursprüngliche vor einem Rückgängig machen vorhandene Ansicht wirdwieder hergestellt, wenn auf das Wiederh. Symbol geklickt wird. Beide Sym-bole sind als inaktiv (grau) gekennzeichnet, wenn keine weiteren Undo/RedoSchritte mehr möglich sind. Undo und Redo sind nur bei der Ausschnittsver-größerung relevant. Ein normales Vergrößern oder Verkleinern des Signals istjederzeit möglich, sodaß hier ein Undo/Redo unnötig ist.

14.5 EinstelldialogIm Einstelldialog können Sie die Darstellung der Signale in einem weiten Be-reich an Ihre eigenen Bedürfnisse anpassen. Dies umfaßt sowohl die Anzahlder darzustellenden Signale, wie auch Ihre Reihenfolge und Farbe. Danebeneinige speziellen Vorgaben, mit denen die Performance der Darstellung beein-flußt werden kann.Mit Erscheinen der Version 2.1.1 können Sie zusätzlich die aufgezeichnetenDatenbytes (Sende- und Empfangsdaten) in beliebige Signale einblenden undsie direkt mit dem physikalischen Signal vergleichen.

SignaldarstellungIm Signaldialog werden alle verfügbaren Signale aufgelistet und ihre aktuellenEinstellungen angezeigt. Das blau hinterlegte Signal ist das aktuell selektierteSignal. Sie müssen erst ein Signal mit der Maus auswählen (indem Sie es an-klicken). Anschliessend können Sie die Eigenschaften des Signals verändern.

Sichtbarkeit und Raster können durch Anklicken des entsprechenden Symbolsein- und ausgeschaltet werden. Um die Farbgebung eines Signals zu verän-dern, klicken Sie einfach das Signalsymbol rechts neben dem Gitter. Dadurchöffnet sich ein Farbdialog, in dem Sie die Signalfarbe, den Hintergrund und dieRasterfarbe aus insgesamt 72 Farben auswählen können.

165

Page 176: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 14. DER SIGNALMONITOR

Wählen Sie die von Ihnen gewünschte Farbe und klicken Sie auf den ent-sprechenden Hintergrund-, Signal- oder Rasterknopf, um die Farbe zu über-nehmen. Die Änderungen werden augenblicklich übernommen, sodaß Sie je-derzeit sehen können, wie sich unterschiedliche Farbeinstellungen auf die Ab-lesbarkeit auswirken.Der Knopf ’Voreinstellung’ verwirft Ihre Änderungen und stellt die voreingestell-ten Farben wieder her.

Speichern der FarbeinstellungDie aktuellen Farbeinstellungen werden bei Schliessen des Einstelldialogsautomatisch gespeichert und sind auch nach Beenden der Sitzung nicht ver-loren.

SignalinvertierungJedes Signal kann individuell invertiert werden . Per Voreinstellung erfolgt dieDarstellung so, wie das Signal vom Analyser aufgezeichnet wird, symbolisiertdurch ein ’Ausgangstreiber’ Symbol. Klicken Sie mit der Maus auf dieses Sym-bol, um die Signaldarstellung zu invertieren. Das Signal wird damit quasi hori-zontal gespiegelt. In der Liste erscheint stattdessen nun ein ’invertiertes Trei-bersymbol’.Beachten Sie, daß diese Invertierung lediglich die Darstellung betrifft. Um dasSignal physikalisch zu invertieren, können Sie die Schaltoption verwenden.

SignalreihenfolgeDie Signalreihenfolge ist frei definierbar. Zunächst wählen Sie das Signal aus,dessen Position Sie verändern möchten. Anschliessend können Sie über die’Nach oben’ und ’Nach unten’ Knöpfe des Signaldialogs das Signal in der Listenach oben bzw. nach unten verschieben. Auch hier wirken sich Ihre Einstellun-gen sofort auf die Signaldarstellung aus, sodaß Sie Ihre Änderungen jederzeitkontrollieren können.

DateneinblendungUnabhängig von der Aufzeichnung der physikalischen Signale der Datenlei-tungen können Sie die übertragenen Datenbytes in jedes gewünschte Signaleinblenden. (Sie müssen dazu lediglich die Datenaufzeichnung RxData undTxData im Kontrollprogramm aktiviert haben). Die Darstellung erfolgt als Da-tenblock mit angegebenem Wert des Datenbytes.

EingeblendetesDatenbyte an Port B mitParity Fehler

GrafikeffekteDie Darstellung des per Maus ausgewählten Bereiches sowie der eingeblen-deten Region erfolgte bislang als Hintergrundfarbe. Dies hatte einige entschei-dende Nachteile.Je nach individueller Farbeinstellung war der ausgewählte Bereich bzw. dieRegionen nur schwer zu erkennen. Zusätzlich konnte bei überlappenden Re-gionen der Start- bzw. Endpunkt der ’unten’ liegenden Region nicht gesehenwerden. Mit der Einführung transparenter Bereiche für Auswahl und Regionenist die Darstellung nun unabhängig von Signal-, Raster- und Hintergrundfarbe.

166

Page 177: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

14.6. CURSOR STEUERUNG

Auswahl und überlappende Regionen erscheinen jetzt durchsichtig und erlau-ben eine noch Benutzer freundliche Untersuchung bzw. Markierung des Si-gnals.

Abbildung 14.1: Bereich mit überlap-penden Regionen, (a) liegt ganz unter,gefolgt von (b) und (c) ganz oben. Sie-he auch den Abschnitt Regionen ohneTransparenz.

Transparente Bereiche haben al-lerdings auch einen Nachteil. Siesind nicht völlig umsonst und kos-ten zusätzliche Performance. Aller-dings sollte dies auf aktuellen Rech-ner nicht sonderlich ins Gewicht fal-len und ist auch nur auf die Darstel-lung der Regionen beschränkt. Beideutlicher Performance Verluste kön-nen Sie die transparenten Bereicheauch getrennt nach Auswahl und Re-gionen im Einstelldialog unter Effekteausschalten. Zusätzlich können Siein diesem Dialog auch die Durchläs-sigkeit transparenter Bereiche ein-stellen.

14.6 Cursor SteuerungJeder Signalmonitor besitzt zweiCursor I und II die beliebig innerhalb des sichtbaren Bereichs über das Si-gnal bewegt werden können. Um einen Cursor zu verschieben klicken Sie aufdas entsprechende Cursor Symbol, ein auf dem Kopf stehendes Dreieck überder Signal Zeitachse und bewegen die Cursorlinie bei gedrückter Maustasteauf die von Ihnen gewünschte Position. Wenn beide Cursor auf der selben Po-sition stehen, können Sie nur den zuletzt aktiven sehen, da er den darunterliegenden verdeckt. Allerdings wird in diesem Fall immer Cursor I aktiviert. Umden zweiten Cursor zu verschieben, halten Sie die Umschalt Taste gedrücktwährend Sie auf die übereinander liegenden Cursor drücken. Jetzt können SieCursor II verschieben und Cursor I bleibt an Ort und Stelle.

CursorauswahlMit gedrückter Umschalt Taste wird bei übereinander liegenden Cursor derZweite aktiviert.

Plazierte Cursor behalten ihre Signal spezifische Position, auch wenn Sie einenanderen Signalausschnitt auswählen. Cursor außerhalb des sichtbaren Be-reichs werden dabei am linken oder rechten Rand dargestellt, je nachdem,in welcher Signalrichtung sie sich befinden. Ihre aktuelle Position können Siein der Statuszeile ablesen. c1 bedeutet Cursor I, c2 Cursor II. Zusätzlich zurPosition der einzelnen Cursor wird auch ihre Zeitdifferenz in der Statuszeileeingeblendet.Damit ist es möglich beliebige Signalbereiche ausmessen, z.B. die Dauer eineraktiven Leitung etc.Um mehrere Signalausschnitte zu vergleichen, können Sie den durch die bei-den Cursor markierten Signalbereich einer sogenannten Region zuweisen. Kli-

167

Page 178: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 14. DER SIGNALMONITOR

cken Sie dazu den ’+Region’ Knopf in der Werkzeugleiste oder drücken Sie F4.Maximal können 8 Regionen definiert werden. Der Bereich zwischen den Cur-sor wird dabei farblich hinterlegt. Mehr über Regionen erfahren Sie im KapitelRegionen. Sie können auch beide Cursor gleichzeitig an eine andere Signal-stelle bewegen, z.B. um die Zeitdauer zweier Signaländerungen zu vergleich-en. Die Cursor werden verschränkt, indem Sie den ’c1+c2’ Knopf in der Toolbarbetätigen. Solange dieser Knopf gedrückt bleibt, werden immer beide Cursorbewegt, egal welchen von beiden Sie verschieben.

AuswahlDer Signalabschnitt zwischen beiden Cursorn stellt zu jedem Zeitpunkt die ak-tuelle Auswahl dar. Sie müssen also nicht erst explizit eine Auswahl treffen. Dadie Cursor ihre Signal relevante Position nicht verändern, bleibt ihre Positionund ihr Abstand untereinander auch bei Veränderung der Signalansicht beste-hen. Beides wird in der Statuszeile angezeigt.Alle Operationen, die sich auf die aktuelle Auswahl beziehen, betreffen damitimmer den Signalbereich zwischen den Cursorn.Um eine Auswahl als Region zu definieren klicken Sie auf das ’+Region’ Sym-bol in der Werkzeugleiste oder drücken Sie die Taste F4.

RegionenAnalog zum Datenmonitor bzw. Ereignismonitor werden Regionen in der Sig-naldarstellung farbig hinterlegt.Das folgende Bild zeigt zwei Regionen, wobei die hellblaue durch die beiden

Signal Regionenmarkieren besondereAusschnitte

Cursor eingerahmt wird und vermutlich von diesen ausgewählt wurde. Da Re-gionen übergeordnete Bereiche sind und immer für alle Analysefenster gleich-zeitig gelten, lassen sich auf diese Weise gezielt Signalausschnitte markierenund in den unterschiedlichen Betrachtungsarten, die die einzelnen Analyse-fenster bieten, untersuchen.Bei dem rot-gelben Dreieck in der Cursor Leiste handelt es sich im übrigenum das aktuelle Synchronisierungs Ereignis, empfangen von einem anderenAnalysefenster. Weitere Informationen zum Thema Regionen finden Sie unterRegionen von Interesse.

14.7 Datenrahmen mit Rahmenlineal ausmessenBei der Analyse asynchroner Übertragungen ist es manchmal hilfreich, einzel-ne Datenrahmen einer genaueren Überprüfung zu unterziehen. Z.B. um zu se-hen, das das Parity Bit gemäß den Vorgaben gesetzt ist, die Daten zwischenStart- und Stopbit korrekt übertragen wurden - oder evtl. sogar eine Abwei-chung des Bit Taktes (Bit Weite oder Jitter) vorliegt.In einer asynchronen Übertragung synchronisieren die Bus Teilnehmer ihre in-terne Takterzeugung für Signalabtastung mit der fallenden Flanke des Startbits.Der maximale Taktunterschied zwischen Sender und Empfänger darf dabei 2%nicht überschreiten, ungültige Daten wären sonst die Folge. Abhängig vom ver-wendeten Datenformat (Datenbits, Parity) muss eine solche Abweichung nichtunbedingt zu einem Parity oder Rahmenfehler führen und ist ohne genaue Be-trachtung des Datensignals nur schwer zu finden.

168

Page 179: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

14.7. DATENRAHMEN MIT RAHMENLINEAL AUSMESSEN

Genau für diese Zwecke enthält der Signalmonitor ein sogenanntes Rahmenli-neal, siehe auch folgendes Bild. Sie können sich das Lineal als eine Art Mass-band vorstellen, welches einzelne Markierungen für das Startbit, die eigent-lichen Datenbits (wie spezifiziert), das Parity Bit (falls verwendet) und Stopbitenthält.Per Voreinstellung übernimmt das Lineal die bei der Aufzeichnung gemachtenBaudrate und Datenformat Einstellungen.

Das Bildbeispiel zeigt ein Rahmenlineal für das Datenformat 8NE. Die Mar-kierungen oder Felder sind: 1 Startbit (grün), 8 Datenbits (abwechselnd gelb,dunkelgrau), das Parity Bit (gerade Parität) in blau und das Stopbit (rot). Zu-sätzlich zeigt das Lineal die Abtastposition als vertikale Linie in der Mitte dereinzelnen Felder an.

Sie können das Rahmenlineal einem beliebigen Signal zuweisen, indem Siedas entsprechende Signal in der Auswahlliste des Rahmenlineals (unterhalbdes horizontalen Scrollbalkens) anklicken.

Anschließend können Sie das Lineal durch Ziehen von Cursor 1 (siehe vorhe-riger Abschnitt) genau mit der fallenden Flanke des Startbits positionieren. Diefallende Startbitflanke ist durch den eingeblendeten Datenwert (hier C5) bzw.dem linken Rand des angedeuteten Datenrahmens (hellroter Hintergrund imBild) markiert.Das niedrigste Bit wird immer zuerst übertragen und folgt unmittelbar auf dasStartbit. Hier sehen wir eine Bitsequenz von 10100011 was hexadezimal C5entspricht. Die Anzahl der Bits mit logisch 1 ist 4 und gerade, das Parity Bitdeshalb logisch 0 (gerade Parität). Das Stopbit muss immer logisch 1 sein undist ebenfalls korrekt. Auch der Bittakt bzw. die Bitbreite entspricht exakt denVorgaben..

Im Falle einer abweichenden Bitrate z.B. seitens des Senders, startet jedesauf das Startbit folgende Bit im Datenrahmen entweder etwas früher oder spä-ter. Dabei addieren sich die einzelnen Abweichungen zu einer evtl. nicht mehrtolerierbaren Verschiebung. Das Resultat ist eine falsche Bitzuweisung durch

169

Page 180: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 14. DER SIGNALMONITOR

den Empfänger beim Abtasten und damit ein letztendlich ein falscher Daten-wert. Im folgenden Bild wird ein als hexadezimal 20 übertragenes Datenbyteals hexadezimal A0 mit falschen Stopbit erkannt.

Rahmenlineal anpassenSie können die Darstellung des Rahmenlineals jederzeit an eine abweichendeBaudrate oder an ein anderes Datenformat anpassen. Klicken Sie dazu einfachauf den Set Knopf rechts neben der Rahmenlineal Auswahl um den Rahmen-dialog zu öffnen. Per Vorgabe verwendet der Dialog das Datenformat und dieBaudrate aus den Aufnahme Einstellungen.Im Rahmendialog (siehe Randbild) können Sie eine beliebige andere Baudra-te vorgeben oder einfach den Rahmen auf das Minimum bzw. Maximum destolerierten Bereichs setzen. Zudem können Sie die Anzahl der Datenbits sowiedie Parität (Parity Bit) verändern. Alle Einstellung wirken sich unmittelbar aufdie Anzeige des Lineals aus und erlauben so eine einfache Überprüfung derSignalübertragung ausgewählter Datenbytes.Per Rahmenlineal ist es einfach zu prüfen ob das Signal des ausgewähltenDatenbytes den Vorgaben entspricht und welche Bitrate verwendet wird - unddass ohne umständliches Ausmessen und Umrechnen der Bitbreite mit Hilfeder Cursor.

Rahmenlineal Dialogzur Lineal Anpassung 14.8 Synchronisierung

Jedes Analysefenster kann seine Ansicht mit anderen synchronisieren (Siehehierzu Synchronisierung der Datenansicht).Wie sich der Signalmonitor beim Empfang eines Sync.-Signals (durch ein an-deres, die Eingabe besitzendes Analysefenster) verhält, bestimmen die bei je-dem Analysefenster identischen Sync. Knöpfe in der Cursor Steuerung.Per default ist die Ansicht des Signalmonitors verriegelt, d.h. es reagiert auf kei-ne Änderungen durch andere Analysetools. Klicken Sie auf das ’Sync’ Symbol,und in der Cursorleiste erscheint ein rot-gelbes Dreieck, welches die Positiondes aktuellen Synchronisierungs Ereignis anzeigt. Bei Einschalten des ’Scroll’Symbols wird der Signalmonitor immer auf das zuletzt aufgetretene Ereignissynchronieren, d.h. die Signalansicht so wählen, daß immer das letzte Ereig-nis bzw. Pegelwechsel sichtbar ist.Der Signalmonitor kann aber nicht nur auf eine Synchronisierung reagieren, erkann auch selbst eine Synchronisierung erzwingen.Klicken Sie dazu im Signalbereich die rechte Maustaste um das Sync. Menüzu öffnen. Die Einträge sind mehr oder weniger selbst erklärend:

170

Page 181: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

14.9. DIE WERKZEUGLEISTE

1 Synchronisierung mit Cursor 1Synchronisiert wird auf das erste auf Cursor 1 folgende Ereignis

2 Synchronisierung mit Cursor 2Synchronisiert wird auf das erste auf Cursor 2 folgende Ereignis

3 Ansicht synchronisierenAls Synchron Ereignis wird der aktuelle Signalausschnitt genommen (genaugenommen der erste Pegelwechsel vom linken Rand an gesehen)Warum wird auf das nächstfolgende Ereignis und nicht auf die aktuelle CursorPosition synchronisiert?Synchronisiert wird immer auf Ereignisse, nicht auf eine bestimmte Zeitmar-ke im Signal bzw. in der Aufzeichnung. Da der Cursor im Gegensatz zu denanderen Analysefenstern auch zwischen zwei Ereignissen stehen kann (z.B.zwischen einem Signalpegelwechsel innerhalb von wenigen Mikrosekunden)muß der auf den Cursor nächst folgende Pegelwechsel als Ereignis verwendetwerden.

14.9 Die WerkzeugleisteDie Werkzeugleiste dient zum schnellen Zugriff der am meisten benötigtenFunktionen. Einige davon sind bei allen Views indentisch, andere spezifischfür den Signalmonitor.

A Ende: Speichert alle Einstellungen und schließt das Fenster

B Anzeigemodus: Je nach Anzeigemodus zeigt der Fensterinhalt immerdas aktuelle (zuletzt aufgenommene) Ereignis, ist verriegelt oder aktua-lisiert den Inhalt mit anderen Fenstern.

C Neue Ansicht: Öffnet ein neues Fenster mit dem gleichen Ausschnittund identischen Einstellungen.

D Maussteuerung: Die Maus kann wahlweise zur Auswahlvergrößerungoder zur Verschiebung des Signals (Handsymbol) verwendet werden.

E Signal vergrößern: Vergrößert oder verkleinert den gerade sichtbarenAusschnitt in 1, 2, 5 Faktoren, indem es die nächste jeweils kleinere odergrößere Zeitbasis wählt.

F Undo/Redo: Nimmt die letzte Ausschnittsveränderung (Zooming, Aus-schnittvergrößerung) zurück bzw. stellt diese wieder her.

G Region hinzufügen: Speichert Bereich zwischen beiden Cursor alsneue Region.

171

Page 182: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 14. DER SIGNALMONITOR

H Cursor verschränken: Die Cursor können wahlweise einzeln oder zu-sammen (verschränkt) bewegt werden.

I Region Dialog: Öffnet den Regiondialog um z.B. Regionen ein/auszu-schalten, zu löschen oder ihnen einen Namen zu geben.

14.10 Kurzbefehle

Tastenkommandosder wichtigstenFunktionen

Aktion Kurzbefehl

Online Hilfe zu Signalmonitor F1

Auswahl/Vergrößerung rückgängig machen Strg + Z

Letzte Auswahl/Vergrößerung wieder herstellen Strg + Y

Bereich zwischen Cursor als Region hinzufügen F4

Bewegt Ausschnitt 1 Raster Richtung Signalende Pfeil nach rechts

Bewegt Ausschnitt 1 Raster Richtung Signalanfang Pfeil nach links

Bewegt Ausschnitt 10 Raster Richtung Signalanfang Umschalt + Pfeil nach links

Bewegt Ausschnitt 10 Raster Richtung Signalende Umschalt + Pfeil nach rechts

Bewegt Signalausschnitt horiontal Umschalt + Mausrad

Ansicht vergrößern Strg + +

Ansicht verkleinern Strg + −

Verkleinern/Vergrößern um Mausposition Strg + Mausrad

Komplette Ansicht Strg + Pos1

Springe zu erstem Ereignis Pos1

Springe zu letztem Ereignis End

In einem neuen Fenster anzeigen Strg + Umschalt + N

Einstellungen speichern und Fenster schliessen Strg + Q

172

Page 183: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

15Regionen

Um besonders interessante Bereiche der Aufzeichnung schnellwieder zu finden, können diese als Region markiert werden.Regionen sind in allen Ansichten präsent, so dass eine imDatenmonitor markierte Region ebenfalls in der Signaldarstel-lung berücksichtigt wird. Regionen können gezielt angesprungenwerden.

Regionen sind ausgewählte Bereiche, die in allen Analysefenstern angezeigtwerden. Dabei kann jedes Analysefenster einen ausgewählten Bereich als Re-gion definieren und diesen Bereich damit gleichzeitig in anderen Fenstern sicht-bar machen. Da die verschiedenen Analysetools unterschiedliche Sichtweisender aufgezeichneten Daten repräsentieren, kann eine Region auch völlig unter-schiedlich definiert werden. Sei es im Signalmonitor durch die Auswahl einesbestimmten Signalabschnittes, im Datenmonitor durch eine bestimmte Daten-sequenz oder das Auftreten einzelner Zeichen.Interessant wird diese Wechselwirkung, wenn Sie einen in einem Analysefens-ter definierten Abschnitt in einer anderen Ansicht betrachten wollen, z.B. denphysikalischen Signalverlauf (Signalmonitor) einer Datensequenz (Datenmoni-tor).Sobald Sie in einem Analysefenster einen ausgewählten Bereich als Regionhinzufügen wird diese an die Liste der vorhandenen Regionen angehängt.Regionen sind Teil einer Aufzeichnung und werden beim Sichern der Aufzeich-nung automatisch berücksichtigt.

Die Analyser Software erlaubt die Definition von 8 Regionen. Jede Region kannindividuell bezeichnet und wahlweise ein/ausgeblendet werden. Mit Ausnahmedes Leitungsstatus Monitors öffnen Sie den Regiondialog unter:Ansicht→Regionendialog anzeigen aus jedem Analysefenster heraus.Ein bereits geöffneter Regiondialog wird dabei automatisch in den Vordergrundgeholt.Die folgende Abbildung zeigt den Regiondialog mit insgesamt 6 Regionen, wo-bei die Regionen 2 (two) und 3 (three) ausgeblendet wurden und dadurch vonden einzelnen Analysetools nicht angezeigt werden (symbolisiert durch ein ge-schlossenes Auge).

173

Page 184: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 15. REGIONEN

15.1 Region ein/ausschaltenJede Region kann individuell ein- oder ausgeblendet werden. Dies ist vor allemsinnvoll, wenn sich mehrere Regionen in der Ansicht eines Fensters überlap-pen und trotz Transparenz eine Zuordnung erschweren. Um den Sichtbarkeits-zustand einer Region umzuschalten klicken Sie einfach auf das Augensymbolganz links. Ein offenes Auge symbolisiert dabei eine sichtbare Region, ein ge-schlossenes Auge entsprechend eine ausgeblendete Region.

15.2 Eine Region löschenWählen Sie die entsprechende Region aus und klicken Sie das Löschensymbolin der Toolbar (das Minuszeichen). Die Region wird darauf hin aus der Listeentfernt. Das Löschen einzelner oder auch mehrerer Regionen kann jederzeitrückgängig gemacht werden, solange der Regiondialog geöffnet ist. KlickenSie dazu einfach das Undo Symbol in der Toolbar.

15.3 Namensgebung für RegionenRegionen haben per Voreinstellung keinen Namen. Wählen Sie einfach die ge-Region Namen

Bessere Zuordnung derRegionen durch eigeneNamen

wünschte Region per linkem Mausklick aus und Linksklicken Sie anschliessenddas Namensfeld in der Werkzeugleiste (Toolbar).Der Name darf aus beliebigen Zeichen außer dem Doppelpunkt ’:’ bestehenund bis zu 64 Zeichen lang sein. Mit Enter wird der eingegebene Name für dieselektierte Region übernommen.

15.4 Regionen anspringenBestimmte Bereiche der Aufzeichnung werden als Regionen ausgewählt, weiles sich um wichtige Abschnitte handelt. Und diese wollen Sie natürlich schnell

174

Page 185: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

15.4. REGIONEN ANSPRINGEN

in den sichtbaren Ausschnitt eines Analysefensters z.B. des Signal- oder Da-tenmonitors holen.Eventuell wollen Sie auch einfach zwei Regionen vergleichen.Der Regiondialog unterstützt deshalb den gleichen Mechanismus zur Synchro-nisierung wie die einzelnen Analysefenster. Allerdings kann er eine Synchro-nisierung nur initiieren. Wählen Sie dazu einfach die gewünschte Region imDialog aus und klicken Sie mit der linken Maustaste auf den Startwert um denAnfang der Region in die Analysefenster zu holen, bzw. den Endwert, wennSie das Ende der Region betrachten wollen.Beachten Sie, daß auch hier nur die Analysefenster auf dieses ’Synchronsi-gnal’ reagieren, deren Synchronisierung aktiviert ist.

Region in View einblendenRegionen können blitzschnell in den Anzeigebereich eines Analysefenstersgeholt werden, indem mit der linken Maustaste auf den Start- oder Endwertder Region geklickt wird.

175

Page 186: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 15. REGIONEN

176

Page 187: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

16Schnelleinstieg in Lua

Lua ist eine der schnellsten Skriptsprachen und auf Grund seineseinfachen und klaren Designs sehr einfach zu lernen. Lua enthälteinige wenige aber um so mächtigere Konzepte die es zur erstenWahl bei der Erweiterung der Analyser Software machen.Dieses Kapitel gibt Ihnen einen ersten Überblick über dieSprache und die Möglichkeiten, die sich dadurch bei der Analysevon Datenaufzeichnungen und Protokollen ergeben.

16.1 Erste SchritteDie meisten Beschreibungen von Programmiersprachen beginnen mit dem tra-ditionellen "Hello World". Wir wollen diese Gepfogenheit beibehalten und unsererstes Skript ein freundliches ’Hello World’ ausgeben lassen

Starten Sie dazu eine Instanz des Datenmonitors und klappen Sie das WatchFenster im unteren Programmabschnitt aus. Das Watch oder Beobachtungs-fenster enthält acht zu Anfang leere Einträge. Jeder Eintrag ist das Ergebnisdes zugeordneten Lua Skripts.Für unser kleines "Hello World" Beispiel doppelklicken Sie den ersten Eintragum den integrierten Lua Skript Editor zu öffnen.Alles was Sie nun tun müssen, ist die folgenden beiden Zeilen einzugeben:

1 requ i re " dv "2 dv . watch ( " He l lo World " )

Der integrierte Lua Interpreter übersetzt die eingebenen Zeilen (Ausdrücke) ineinen internen Bytecode und führt ihn aus sobald Sie zur Beobachtungslistedurch Klick auf den Watch Reiter zurückkehren.Wir werden später noch sehen, daß die eingegebenen Skripte nicht nur beider Rückkehr in die Listenansicht ausgeführt werden, sondern bei jeder CursorBewegung, Synchronisierung der Ansicht durch andere Views oder nach einererfolgreichen Suche. Aber zunächst halten wir es einfach.Wenn Sie keinen Fehler bei der Eingabe gemacht haben, sollten Sie im erstenWatch Eintrag ein:

--> Hello World

177

Page 188: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 16. SCHNELLEINSTIEG IN LUA

sehen. Enthält das Skript einen Fehler, wird stattdessen eine entsprechendeFehlermeldung ausgegeben.

Was passiert hier?Die Original Lua Sprachkern weiß natürlich nichts über den Analyser oder dasWatch Fenster des Datenmonitors. Daher benötigen wir eine Art ’Kleber’ derbeide Dinge verbindet. Einer dieser Kleber ist das dv (Data View) Modul. Die-ses Modul enthält alle nötigen Funktionen um die Resultate unserer Skripte imWatch Fenster auszugeben, oder ausgewählte Daten in der Anzeige farblichzu markieren.

Um ein Modul zu laden reicht ein einfaches require"modname".Anschliessend kann auf jede von dem Modul zur Verfügung gestellte Funktiondurch Voranstellen des Modulnamens mit einem Punkt wie z.B. dv.watch zu-gegriffen werden.

Normallerweise muß ein Modul immer geladen werden, bevor es verwendetwerden kann. Um das Handling zu vereinfachen, werden allerdings alle Analy-ser spezifischen Module sowie eine Reihe von Lua Grundmodulen vorab ’gela-den’. Die Zeile require"dv" ist damit obsolete. Sie diente nur zum besserenVerständnis und wird in den folgenden Beispielen nicht mehr verwendet.

Sie können die watch Funktion mit beliebig vielen Parametern aufrufen. DieAusgabe der einzelnen Parameter erfolgt direkt hintereinander. Um dies zuvermeiden, können Sie zusätzlich ein oder mehrere Trennungszeichen als Pa-rameter angeben. Modifizieren wir unser obiges Beispiel wie folgt:

1 dv . watch ( 1+1 , " i s less than " , 10/3 )

--> 2 is less than 3.3333333333333

Wie Sie sehen wird die watch Funktion mit drei völlig unterschiedlichen Para-metern aufgerufen, jeweils getrennt durch ein Komma. Bei dem ersten handeltes sich um das Ergebnis einer Addition zweier ganzer Zahlen. Das zweite Ar-gument ist eine Zeichensequenz eingeschlossen in doppelten Anführungsstri-chen. Das dritte Argument letztendlich ist die Fließkommazahl 3.333...Einer der Vorteile von Lua ist, daß Sie sich über den ’Typ’ einer Variable keineGedanken machen müssen. Als Sprache mit dynamischer Typ-Bindung behan-delt Lua jeden Variablentyp automatisch1.Das ist alles sehr interessant - aber falls Sie sich fragen, was dies mit demDatenmonitor zu tun hat - lesen Sie weiter!

16.2 Lua und der DatenmonitorMit Lua können Sie jeden jeden im Datenmonitor dargestellten Wert abfra-gen und verrechnen. Darüber hinaus erlaubt Ihnen das Datenmonitor Moduldv die aktuelle Cursorposition zu ermitteln und zusätzliche Informationen überjede Datenzelle zu erfragen, beispielsweise Zeitpunkt oder Datenquelle. Dasnächste Skript zeigt die aktuelle Cursorposition:

1Lua unterstützt Zahlen (Fließkommezahlen mit doppelter Genauigkeit), Zeichensequenzen(Strings) wie unser "Hello World" und Datenfelder (tables), die auch die Realisierung komplexerDatentypen wie Arrays, Sets, Listen etc. erlauben. Wir diskuttieren die Datenfelder später.

178

Page 189: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

16.3. SEQUENZEN IM DATENMONITOR MARKIEREN

1 n = dv . cursor ( )2 dv . watch ( n )

Die Funktion dv.cursor() liefert die aktuelle Cursorposition als Index wobeiab 1 gezählt wird (Zelle links oben). Der maximale Werte entspricht der letztendargestellten Zelle rechts unten. Wechseln Sie in die Listenansicht des WatchFensters und bewegen Sie den Cursor mit den Pfeiltasten. Bei jeder Änderungder Cursorposition wird der Eintrag im Watch Fenster mit dem neuen Indexwertaktualisiert.

Nach dieser kleine Einführung ist es nun an der Zeit für eine wirklich wichtigeFunktion:dv.cell(index) liefert alle nötigen Informationen über einen bestimmtenEintrag des Datenmonitors als Tabelle oder Datenfeld. Dies umfaßt das auf-genommene Datenbyte, der Zeitpunkt, die Richtung oder Quelle und einigesmehr. Das folgende Beispiel verdeutlicht was gemeint ist:

1 c = dv . cursor ( )2 dv . watch ( " Data : " , dv . c e l l ( c ) . Data , " Time : " , dv . c e l l ( c ) . Time )

Um die Ausgabe etwas lesbarer zu gestalten geben wir vor jeder Informationeine entsprechende Beschreibung aus.Bewegen Sie nun den Cursor mit den Pfeiltasten oder klicken Sie auf einebeliebige Zelle in der Anzeige. Wenn Sie das Watch Fenster nicht gerade ge-schlossen haben werden Sie feststellen, das mit jeder Cursor Bewegung ein-schließlich der Maus die entsprechenden Information passend zum Datenbytean der Cursorposition aktualisiert werden.Zeilenumbrüche spielen in Lua keine Rolle. Um obiges Skript übersichtlicherzu gestalten arrangieren wie die Argumente der dv.watch Funktion in zweiZeilen:

1 c = dv . cursor ( )2 dv . watch (3 " Data : " , dv . c e l l ( c ) . Data ,4 " Time : " , dv . c e l l ( c ) . Time5 )

Wie bereits erwähnt liefert die dv.cell Funktion alle Informationen in einerTabelle bzw. in einem Datenfeld. Der Eintrag ’Data’ enthält das zugehörige Da-tenbyte an der übergebenen Cursorposition, der Eintrag ’Time’ den Zeitpunktdes Auftretens dieses Datenereignisses in Sekunden.Die Syntax für die einzelnen Tabelleneinträge ist ähnlich dem der Module, d.h.ein Punkt gefolgt von dem Namen des Eintrages.Eine detailierte Beschreibung über diese Datentabelle und ihre einzelnen Fel-der finden Sie im nächsten Kapitel unter 17.11. Fürs erste konzentrieren wiruns auf eine weitere nützliche Funktion des dv Moduls.Nehmen Sie Ihre Buntstifte zur Hand, wie beginnen mit dem Einfärben derAnzeige des Datenmonitors.

16.3 Sequenzen im Datenmonitor markierenStellen Sie sich vor, Sie könnten bestimmte Datenfolgen besonders visualisie-ren. Zum Beispiel einen Protokollrahmen oder einen Bereich beginnend ab derCursorposition farblich hervorheben. Alles was Sie dafür wissen müssen ist die

179

Page 190: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 16. SCHNELLEINSTIEG IN LUA

Funktion: dv.mark(index,length,colour)

Als erstes wollen wir die nächsten 4 Datenbytes beginnend mit der Cursor-position als 32 Bit Integer (Big Endian) ausgeben und sie gleichzeitig in derDarstellung hervorheben.

1 c = dv . cursor ( )2 v = 03 for i =0 ,3 do4 v = v ∗ 2565 v = v + dv . c e l l ( c + i ) . Data6 end7 dv . watch ( "32 b i t : " , v )8 −− mark the g r i d9 dv . mark ( c , 4 , 0xCCFFCC )

Voila - das war’s bereits. Die vier Datenzellen, Cursor eingeschlossen, werdenfarblich markiert und das Resultat unseres kleinen Skriptes im Watch Fensterangezeigt.

Die dv.mark Funktion ist unabhängig von der Cursorposition. Wir müssendiese Funktion deshalb explizit mit der aktuellen Position des Cursors aufru-fen. Dies hat allerdings den großen Vorteil, daß Sie unabhängig vom Cursoroder Cursorbewegung beliebige Datenzellen markieren können. Zur Verdeutli-chung färben wir alle Datenbytes mit einem Übertragungsfehler abhängig vonder Fehlerart (Parity, Frame, Break) in warnenden Rottönen.

1 for i =1 ,dv . s ize ( ) do2 e r r = dv . c e l l ( i ) . E r ro r3 i f e r r == 1 then4 mark ( i , 1 , 0xFF0000 )5 e l s e i f e r r == 2 then6 mark ( i , 1 , 0xFF4040 )7 e l s e i f e r r == 3 then8 mark ( i , 1 , 0xFF8080 )9 end

10 end

180

Page 191: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

17Einleitung in Lua

Im letzten Kapitel bekamen wir einen ersten Eindruck derMöglichkeiten von Lua ohne tiefer in die Sprache einzutauchen.Lua ist eine Programmiersprache mit einer Reihebeeindruckender Eigenschaften und dabei gleichzeitig sehrschnell, kompakt und mit einfacher Syntax. Jetzt ist an der Zeitein wenig mehr über diese außergewöhnliche Sprache zu lernen.

Jede Programmiersprache besteht aus einem Satz von Zutaten wie Operato-ren, Schlüsselwörter (keywords), Funktionen und einigen Regeln, wie dieseanzuwenden sind. Alles zusammen nennt man die Sprachsyntax. Sie definiert,wie korrekte (aber nicht unbedingt fehlerlose oder sinnvolle) Programme zuschreiben sind.In diesem Kapitel geben wir einen Überblick über die Skriptsprache Lua, dievon ihr unterstützten Operatoren, Schlüsselwörter und einige hilfreichen Mo-dule die wir in der Analyser Software integriert haben.

Beachten Sie! Für die Programmausgaben der Lua Skript Beispiele verwendenwir den Datenmonitor sowie sein dv Modul.Wenn Sie die Programmbeispiele nachvollziehen wollen starten Sie einfach dieMSB-RS232 Software, öffnen Sie einen Datenmonitor und geben Sie das Skriptim Watch Fenster ein.

17.1 Groß-/Kleinschreibung in LuaLua ist eine Sprache die zwischen Groß- und Kleinschreibung unterscheidet.So ist while ein reserviertes Wort (ein sogenanntes Schlüsselwort), währendWHILE oder While zwei unterschiedliche Bezeichnungen einer Variable oderFunktion sein können. Dies ist bei modernen Sprachen allgemein üblich undsollte Sie deshalb nicht sonderlich verwirren.

17.2 Leerzeichen und ZeilenendeLua ignoriert jegliche Leerzeichen (einschließlich Tabulatorzeichen) sofern sienicht Teil einer Zeichenkette (siehe 17.4) sind. Lua schreibt auch keine beson-dere Einrückung vor (wie z.B. Python). Sie können Ihren Programmcode ganznach belieben formatieren (oder zur besseren Lesbarkeit strukturieren).Lua verwendet kein spezielles Zeilenende, Zeilenumbrüche spielen deshalb in

181

Page 192: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 17. EINLEITUNG IN LUA

der Lua Syntax keine Rolle. Der Lua Interpreter erkennt das Ende einer Anwei-sung unabhängig von einem Zeilenende. D.h. eine Zeile kann mehrere Anwei-sungen enthalten bzw. eine Anweisung über mehrere Zeilen verteilt sein.Wenn Sie mehrere Anweisungen in einer Zeile optisch trennen wollen, könnenSie dazu das Semikolon ’;’ verwenden. Es spielt aber - wie gesagt - keine Rolle.

1 x = 1 y = 2 −−> n i c h t sehr l e s e r l i c h aber ok2 x = 1; y = 2 −−> besser3 z = x4 +5 Y −−> z = 3

17.3 KommentareKommentare werden in Lua mit einem doppelten Bindestrich -- eingeleitet undreichen bis zum Ende der Zeile. Verwenden Sie Kommentare um Ihre Skriptezu dokumentieren oder um einzelne Zeilen beim Erstellen und Testen vorüber-gehend auszukommentieren.Mehr noch: Lua unterstützt zusätzlich blockweises auskommentieren wobei einKommentarblock mit --[[ beginnt und mit --]] endet. Dies machte es be-sonders einfach, mehrere Zeilen ein/auszukommentieren, wie wir im folgendenzeigen:

1 x = 12 −− [ [3 x = 104 −− ] ]5 dv . watch ( x ) −−> 1

Um die Auskommentierung des kompletten Blockes rückgängig zu machenreicht ein einfacher Bindestrich am Anfang des Kommentarblockes. Blockstart-und Blockende-Bezeichnungen werden damit als einfache Zeilenkommentaregesehen und die Anweisungen dazwischen als regulärer Code ausgeführt.

1 x = 12 −−− [[3 x = 104 −− ] ]5 dv . watch ( x ) −−> 10

17.4 DatentypenLua ist eine Programmiersprache mit dynamischer Typbindung. D.h. Sie müs-sen den Typ einer Variable oder Wertes nicht explizit angeben, Lua ’verwaltet’den korrekten Typ automatisch für Sie.Lua unterstützt acht verschiedene Grundtypen, wir beschränken uns allerdingsauf die folgenden sechs:

Zahlen

Boolesche Werte

Zeichenketten

nil

Tabellen

182

Page 193: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

17.4. DATENTYPEN

Funktionen

Zu Programmbeginn feste ’Werte’ werden dabei als ’Konstanten’ bezeichnet.Eine Konstante ist nicht Ergebnis einer Anweisung sondern fest im Programm-text kodiert. Konstante können Zahlen sein (ganze Zahlen und Fließkomma-zahlen, wobei Lua intern nicht zwischen beiden unterscheidet), Zeichenkettenoder die boolean Werte true and false.

ZahlenLua vereinfacht die Anwendung von so unterschiedlichen Zahlentypen wie gan-ze Zahlen, Fließkommazahlen, Fließkommazahlen mit doppelter Genauigkeitindem es intern nur einen Typ verwendet. Zahlenwerte in Lua sind generellvom Typ Fließkommazahlen mit doppelter Genauigkeit und werden intern au-tomatisch umgewandelt.

1 dv . watch ( 1 ) −−> 12 dv . watch ( −12 ) −−> −123 dv . watch ( 100000000000 ) −−> 100000000000

Beachten Sie das Zahlen niemals zu Ganzzahlen gerundet werden. So ist:

1 dv . watch ( 10 / 3 ) −−> 3.3333333333333

Hexadezimale KonstantenAuch wenn Lua intern mit Fließkommazahlen arbeitet wollen Sie doch mach-mal Zahlenwerte in anderen Formaten vorgeben, z.B. als Hexwert.

1 dv . watch ( 0x1234 ) −−> 4660

FließkommakonstantenWie die meisten Programmiersprachen unterstützt Lua bei der Zahleneingabedie traditionelle und wissenschaftliche Notation. Fließkommakonstanten kön-nen daher wahlweise mit Dezimalpunkt und/oder Dezimalexponent angegebenwerden.

1 dv . watch ( −0.05 ) −−> −0.052 dv . watch ( 10E−2 ) −−> 0.13 dv . watch ( 1.25E+6 ) −−> 1250000

Boolesche KonstantenEin boolescher Datenwert entspricht den klassischen logischen Zuständen undist daher entweder true oder false. Ist ein boolescher Wert nicht true muss erfalse sein und umgekehrt. Boolesche Werte werden i.a. zur Repräsentation derErgebnisses logischer oder konditionaller Operationen verwendet.

1 dv . watch ( 2 > 1 ) −−> t rue2 x = 2 < 43 dv . watch ( x ) −−> f a l s e

183

Page 194: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 17. EINLEITUNG IN LUA

ZeichenkettenZeichenketten haben in Lua die übliche Bedeutung; sie entsprechen einer Rei-he von einzelnen Zeichen. Im Gegensatz zu anderen Sprachen unterstützt Luajedoch 8 Bit Zeichen in Zeichenketten. Dies hat einen entscheidenden Vorteil:Zeichenketten (strings) können in Lua ’jedes’ beliebige Zeichen enthalten, d.h.auch ein Null Byte (in C das Stringende). Mit anderen Worten: Sie können be-liebige d.h. auch binäre Daten in Lua Zeichenketten speichern ohne besondereEinschränkungen/Ausnahmen befürchten zu müssen.Zeichenketten werden durch einfache Hochkommas, doppelte Hochkommasoder doppelte eckicke Klammern definiert.

1 dv . watch ( " I t ’ s your code " ) −−> I t ’ s your code2 dv . watch ( ’He says : " Hi " ’ ) −−> He says : " Hi "3 dv . watch ( [ [ He l lo \ nWorld ] ] ) −−> Hel lo \ nWorld

Warum so verschiedene Arten der String-Definition?Die Verwendung der speziellen Zeichen Hochkomma und doppeltes Hochkom-ma innerhalb einer Zeichenkette wird dadurch vereinfacht. Wählen Sie einfachdas Zeichen zur Spezifikation Ihrer Zeichenkette, welches Sie in dieser nichtverwenden wollen.Zeichenketten innerhalb zweier eckigen Klammern erlauben zudem die Unter-drückung von sogenannten Escape Sequenzen.

Zeichenketten mit Escape SequenzesLua definiert folgende Escape Sequenzen innerhalb von Zeichenketten:

Escape Sequenze Beschreibung\a Glocke\b Rücktaste\f Formfeed\n Zeilenumbruch (Linefeed)\r Carriage Return\t horizontaler Tabulator\v vertikaler Tabulator\\ Backslash\" doppeltes Hochkomma\’ einfaches Hochkomma\ddd Zeichen mit dem numerischen Dezimalwert ddd

Die folgenden Beispiele zeigen ihre Verwendung:

1 dv . watch ( ’ I t \ ’ s your code ’ ) −−> I t ’ s your code2 dv . watch ( "He says : \ " Hi \ " " ) −−> He says : " Hi "3 dv . watch ( " Tab1 \ tTab2 " ) −−> Tab1 Tab24 dv . watch ( "Two backslashes \ \ \ \ " ) −−> Two \ \5 dv . watch ( " He l lo \ nworld ’ ’ ) −−> Hel lo6 world7 dv . watch ( [ [ He l lo \ nworld ] ] ) −−> Hel lo \ nworld

184

Page 195: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

17.4. DATENTYPEN

Mittels \ddd können Sie jedes beliebige Byte als numerischen Dezimalwert ineinem String einfügen. Für eine Zeichenkette bestehend aus den Zeichen 0...3ist es: "\000\001\002\003".

nilnil ist ein spezieller Typ in Lua und bezeichnet einen undefinierten Wert. JedeVariable besitzt einen nil Wert solang ihr kein Wert zugewiesen wird.

1 dv . watch ( x ) −−> n i l

Aber mehr noch: Lua verwendet nil wenn eine Variable nicht weiter verwen-det wird. Indem Sie einer Variable den Wert nil zuweisen wird diese von Luaentfernt bzw. gelöscht.

TabellenEiner der mächtigsten Datentypen in Lua sind tables (Tabellen). Es handelt sichdabei um assoziative Arrays, die - anderst als echte Arrays - einen beliebigen,auch nicht numerischen Schlüssel (key) zur Adressierung der einzelnen Werte(value) verwenden. Mehr noch: Da Funktionen in Lua ebenfalls einen norma-len Datentyp darstellen, können Tabellen zur Implementierung eines Objektorientierten Verhaltens verwendet werden. Dies ist allerdings nicht Teil dieserAnleitung.Die Größe der Tabellen ist nicht festgelegt oder beschränkt und wächst mitdem Hinzufügen neuer Einträge. Wenn Sie eine Tabelle nicht länger benötigenkönnen Sie sie einfach per Zuweisung von nil aus dem Speicher entfernen.Starten wir mit einigen Beispielen die etwas mehr Licht in das Verständnis vonTabellen bringen sollten. Als erstes definieren wir eine einfache Liste mit dreiLeitungszuständen:

1 l i n e s t a t e s = { " mark " , " space " , " i n v a l i d " }2 dv . watch ( l i n e s t a t e [ 2 ] ) −−> space

Die Anweisung in Zeile 1 initialisiert eine Tabelle mit drei Einträgen. Das ers-te Feld linestates[1] enthält den Text (oder Zeichensequenz) "mark", daszweite linestates[2] "space" und das dritte "invalid". Beachten Sie, das inLua Indexe generell mit 1 starten und nicht mit 0 (wie z.B. in C).In diesem Beispiel fungiert die Tabelle als eine einfache Liste. Mit der Funktiontable.insert(table,value) können Sie jederzeit neue Einträge hinzufü-gen.

1 t = { 1 , 2 , 3 , 4 , 5 }2 tab le . i n s e r t ( t , 6 ) −−> 1 , 2 , 3 , 4 , 5 , 63 dv . watch ( " Count : " , # t ) −−> Count : 6

Die Anweisung in Zeile 3 verwendet Lua’s internen Längen-Operator # (sieheauch Abschnitt 17.8). Wenn Sie einen neuen Eintrag an einer bestimmten Po-sition einfügen wollen und nicht einfach nur am Ende anhängen, können Siedie gleiche Funktion mit einem zusätzlichen Positions- oder Indexparameterverwenden table.insert(table,position,value).

1 t = { 1 , 2 , 3 , 4 , 5 }2 tab le . i n s e r t ( t , 4 , 44 ) −−> 1 , 2 , 3 , 44 , 4 , 53 dv . watch ( " Count : " , # t ) −−> Count : 6

Ein Element an einer bestimmten Position entfernen Sie mit:table.remove(table,position).

185

Page 196: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 17. EINLEITUNG IN LUA

1 t = { 1 , 2 , 3 , 4 , 5 }2 tab le . remove ( t , 4 ) −−> 1 , 2 , 3 , 53 dv . watch ( " Count : " , # t ) −−> Count : 4

Sie können jederzeit ein bestimmtes Element in der Tabelle oder Liste durcheinen neuen Wert ersetzen. Jedes Tabelleneintrag ist durch den Index-Operator[] referenzierbar. Um den zweiten Eintrag mit 200 zu überschreiben reicht z.B.ein einfaches: t[2]=200.

Entsprechend einfach ist die Abfrage beliebiger Einträge, in unserem Beispielv=t[2] enthält v den Wert des zweiten Feldes. Ist das Feld nicht vorhandenwird nil zurück gegeben. Konsequenter Weise führt jede Zuweisung an einnicht existierendes Feld zur Anlegung desselben.

Die bisherigen Tabellen Beispiele verwendeten Zahlenindexe und übergabenlediglich die Werte. Dies entspricht der Standardvorgabe von Lua. Wie obenerwähnt können Sie allerdings auch beliebige andere Datentypen als Index(key) und Werte verwenden. Stellen Sie sich einen Datentyp vor, der einenPunkt in einem Koordinatensystem repräsentiert:

1 po in t = { x = 5 , y = 10 }2 dv . watch ( po in t . x , po i n t . y ) −−> 5 10

Hier wird eine Tabelle zur Speicherung der beiden Koordinaten x und y benutzt.Diese Art Beziehung zwischen Schlüssel (x oder y) und Wert (der eignetlicheKoordinatenwert) in einem Array wird auch Dictionary genannt.

FunctionsWir diskutieren in diesem Abschnitt Funktionen lediglich in ihrer Rolle als nor-male Variable oder Datenwert. Für weitere Informationen über Funktionen imAllgemeinen sowie ihre Definition siehe Abschnitt 17.10.

Für Lua können Funktionen, wie Zahlen oder Zeichenketten, Variablen zuge-wiesen werden. Wenn Sie der Ausdruck dv.watch als nicht besonders intui-tiv empfinden, weisen Sie diese Funktion einfach der internen Lua Funktionprint zu (letztere wird in der Analyser Lua Umgebung nicht verwendet undkann deshalb bedenkenlos überschrieben werden).

1 p r i n t = dv . watch2 p r i n t ( " He l lo World " ) −−> output i n the watch window

Eine Funktion ist letztendlich nichts weiter als eine Variable (mit dem Funkti-onsnamen), die den eigentlichen Funktionscode referenziert, d.h. den Ort desFunktionscodes enthält. Und wie alle Variablen können diese zugewiesen oderüberschrieben werden.

17.5 BezeichnerEin Bezeichner (Identifier) ist in Computer Sprachen ein Name, der sich auf et-was anderes bezieht, z.B. eine Variable oder eine Funktion. Einige Bezeichnerwerden von Lua für interne Zwecke reserviert, die sogenannten Schlüsselworte(keywords). Wir kennen bereits die booleschen Werte true und false). Andere

186

Page 197: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

17.6. SCHLÜSSELWORTE

sind die fest eingebauten Funktionen wie z.B. print.Die Regeln für zulässige Bezeichner oder Namen entsprechen denen andererSprachen. Ein Bezeichner kann in Lua aus einer beliebigen Folge aus Buch-staben, Zahlen und Unterstrichen bestehen, wobei der Name nicht mit einerZahl beginnen darf1.Gültige Bezeichner oder Variablennamen sind:

x y ABC t1 _nmaVeryLongVariableName the_last_result

Ungültige Bezeichner führen zu einem Fehler

1 dv . watch ( 2n ) −−> malformed number near ’2a ’

17.6 SchlüsselworteDie folgenden Schlüsselworte sind reserviert und können nicht als Variablen-oder Funktionsnamen verwendet werden:

end false for function ifin local nil not orrepeat return then true until while

Erinnern Sie sich? Lua unterscheidet zwischen Groß- und Kleinschreibung, da-her ist and ein reserviertes Wort während And und AND einfach gültige (wennauch wenig sinnvolle) Bezeichnungen für zwei unterschiedliche Variablen sind!

17.7 VariablenVariablen sind vergleichbar mit Behältern die beliebige Daten enthalten kön-nen. Jeder Behälter hat einen eindeutigen Namen über den auf den Inhalt zu-geriffen werden kann. In Lua können Variablen eine einzelne Zahl, einen Textmit Millionen von Zeichen oder eine Tabelle enthalten. Der Name des Behältersmuß ein gültiger Bezeichner sein (siehe oben).Variablen müssen nicht vor der ersten Anwendung deklariert werden. SobaldLua eine neue Variable findet, wird diese automatisch angelegt.

ZuweisungAnmerkung! Vor der ersten Zuweisung ist der Wertes einer Variable immernil. Zuweisungen sind das zulässige Mittel um eine Variable (oder Tabelle) zuinitialisieren oder deren Wert zu ändern.

1 i f x == n i l then2 x = 13 end4 dv . watch ( x ) −−> 1

Wie bereits erwähnt besitzt Lua eine dynamische Typbindung. Es ist deshalbnicht nötig, daß Sie bei der Zuweisung Aussagen über den zuzuweisendenTyp machen müssen. Lua passt den Typ einer Variable automatisch an denzugewiesenen Typ an.

1Die Analyser Software und Lua selbst verwenden Namen beginnend mit einem _ für interneZwecke. Wir empfehlen deshalb generell bei Variablen ein _ als erstes Zeichen zu vermeiden.

187

Page 198: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 17. EINLEITUNG IN LUA

1 x = 12 x = " He l lo World "3 dv . watch ( x ) −−> Hel lo World

Lua unterstützt zudem Mehrfach-Zuweisungen. Das bedeutet: Eine Anzahl vonWerten wird gleichzeitig einer Anzahl von Variablen zugewiesen. Wir werdendieses nette Feature in einem späteren Abschnitt im Zusammenhang mit Funk-tion und mehreren Rückgabewerten diskutieren. Für die neugierigen Leser un-ter Ihnen hier ein kleines Beispiel welches den Wert zweier Variablen aus-tauscht ohne eine zusätzliche Variable zur Zwischenspeicherung zu verwen-den:

1 x = 52 y = 103 x , y = y , x4 dv . watch ( x , y ) −−> 10 5

Globale und lokale VariablenIn Lua existieren drei Arten von Variablen: Globale Variablen, lokale Variablenund Tabellen (wir diskutieren Tabellen später).Per Default sind alle Variablen global was bedeutet: Auf jede Variable kannwährend der Programm Laufzeit zugegriffen werden. Globale Variablen sindTeil eines ’globalen’ Speicherorts oder besser gesagt Teil einer globalen Tabel-le.Wohin gegen lokale Variablen nur in ihrem jeweiligen Kontext oder Ausfüh-rungsblock sichtbar sind, in dem Sie deklariert wurden.

1 y = 102 i f x == n i l then3 local y = 54 x = 15 end6 dv . watch ( x , y ) −−> 1 10

Es ist eine übliche Strategie für bessere Programme, lokale Variablen einzu-setzen, wann immer sie nicht global verwendet werden. Zudem beugen lokaleVariablen unliebsame Seiteneffekten vor. Beispielsweise sollten Sie in Funktio-nen möglichst nur lokale Variablen verwenden.

17.8 OperatorenOperatoren sind Symbole, die Berechnungen auslösen, wenn sie auf Varia-blen, Werte oder Ergebnisse von Ausdrücken angewendet werden. Lua unter-stützt arithmetische Operatoren, Vergleichsoperatoren und logische Operato-ren. Zusätzlich einen sehr nützlichen Operator zur Verkettung von Zeichenfol-gen (Strings).

Arithmetische OperatorenLua verwendet die üblichen arithmetischen Operatoren: die binären + (Additi-on), – (Subtraktion), * (Multiplikation), / (Division), % (Modulo), ^ (Exponent)und unäre – (Negation) Operatoren.

+ - * / % ^

Nicht vergessen! In Lua werden alle Zahlen intern durch Fließkommazahlenmit doppelter Genauigkeit dargestellt.

188

Page 199: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

17.8. OPERATOREN

VergleichsoperatorenVergleichsoperatoren vergleichen Variablen, Werte oder Ausdrücke und liefernimmer ein true oder false. Lua unterstützt die folgenden vergleichenden- bzw.relationalen Operatoren:

< > <= >= == ~=

Der Gleichheits-Operator == testet auf Gleichheit, das Gegenteil ist der Opera-tor∼= der auf Ungleichheit prüft. Sie können alle Operatoren auf beliebige zweiWerte anwenden, d.h. Zahlen und auch Zeichenketten (alle Vergleichsoperato-ren arbeiten auch mit Zeichenketten). Sind beide Werte von unterschiedlichemTyp behandelt sie Lua als ungleich.Beachten Sie: Der Wert 0 liefert im Gegensatz zu anderen Sprachen kein false.

1 dv . watch ( " abc " < " def " ) −−> t rue2 dv . watch ( 0 or true ) −−> 03 dv . watch ( fa lse or true ) −−> t rue

Logische OperatorenLua bietet die folgende logischen Operatoren in Ausdrücken: and, or und not.Alle logischen Operatoren verhalten sich alle auf gleiche Art und Weise. Alleliefern entweder ein true oder false. Als Spezialfall wird der Wert nil als falseverarbeitet.and und or bieten eine Kurzauswertung: Sie werten den zweiten Operandennur aus, wenn es auf Grund des ersten Wertes nötig ist. Ein paar Beispiele:

1 dv . watch ( 4 and 5 ) −−> 52 dv . watch ( 4 or 5 ) −−> 4 ( shor t−cut eva lua t i on )3 dv . watch ( fa lse and true ) −−> f a l s e ( shor t−cut eva lua t i on )4 dv . watch ( a and 1 ) −−> n i l , because a wasn ’ t s p e c i f i e d5 dv . watch ( not fa lse ) −−> t rue

String Verkettungs-OperatorZwei aufeinander folgende Punkte .. bezeichnen den String Verkettungs-Operatorin Lua. Ähnlich dem binären ’+’ Operator addiert dieser zwei Zeichenketten zueiner, indem er zweite an die erste anhängt. Zahlen werden dabei automatischin Strings umgewandelt. Beachten Sie aber, das auf eine Zahl mindestens einLeerzeichen folgen muß, da Lua sonst das erste der beiden Punkte .. alsDezimalpunkt betrachtet und der ganze Ausdruck ungültig wird.

1 dv . watch ( " He l lo " . . " World " ) −−> Hel lo World2 dv . watch ( 100 . . " sec " ) −−> 100sec

Der Verkettungs-Operator liefert ’immer’ eine neue Zeichenkette und läßt diebeiden Operanden unverändert.

Der Längen-OperatorDer Längen-Operator ist definiert als # und liefert die Anzahl der Zeichen einerZeichenkette oder die Anzahl von Einträgen in einer Tabelle (sofern diese keineLücken ausweist).

1 dv . watch ( #" He l lo World " ) −−> 11

189

Page 200: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 17. EINLEITUNG IN LUA

RangfolgeDie folgende Tabelle listet alle Lua Operatoren in der Reihenfolge ihrer Priorität(von höchster zu niedrigster Priorität).

^not # -(unary)

* / %+ -..< > <= >= ~= ==andor

Wenn Sie Zweifel über die Ausführungsreihenfolge habe, verwenden Sie Klam-mern. Das macht Ihren Code nicht nur lesbarer sondern vermeidet unnötigesNachschlagen in diesem Handbuch.

17.9 KontrollstrukturenKontrollstrukturen steuern den Programmfluß und sind integraler Bestandteileiner jeden Programmiersprache.Lua stellt folgende Kontrollstrukturen zur Verfügung: if für bedingte Ausführun-gen, sowie for, repeat und while für wiederholende Ausführungen. Mit Aus-nahme von repeat müssen alle mit einem expliziten end beendet werden.repeat Ausführungsblöcke werden mit einem until geschlossen.

if then elseif wertet einen Ausdruck aus und führt abhängig von dem Ergebnis entwederdie Anweisungen im then Abschnitt oder die Programmzeilen unter else aus.Letztere ist optional und kann entfallen wenn für eine nicht zutreffende Bedin-gung nichts zu tun ist.

1 i f x < 0 then2 x = 03 else4 x = math . s q r t ( x )5 end

Kurze Bedingungsausdrücke können in einer Zeile geschrieben werden:1 function max( a , b )2 i f a > b then return a else return b end3 end

Lua kennt keine switch Anweisung wie sie z.B. unter C üblich sind um zwischenmehreren Alternativen zu wählen. Mit einer Kette von if, elseif Anweisungenereichen Sie allerdings das gleiche Resultat.

1 i f a >= 100 then2 exp = 23 e l s e i f a >= 10 then4 exp = 15 else6 exp = 07 end

190

Page 201: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

17.9. KONTROLLSTRUKTUREN

whileDer while Befehl führt einen Block von Anweisungen aus, solange die Be-dingung wahr ist. Üblicherweise wird zuerst die Bedingung geprüft, bevor derBlock ausgeführt wird. D.h. der Block wird niemals ausgeführt wenn die Bedin-gung falsch ist.

1 loca l x = 02 while x < 10 do3 x = x + 14 end

repeatDer repeat Befehl führt den folgenden Anweisungsblock aus, solange die Be-dingung wahr ist. Im Gegensatz zu while wird die Bedingung erst nach Aus-führung des Blocks geprüft, dieser deshalb auf jeden Fall mindestens einmalausgeführt. Beachten Sie, das eine repeat Anweisung mit until abgeschlossenwerden muß.

1 loca l x = 02 do3 x = x + 14 u n t i l x < 10

Numerisches forLua besitzt zwei Arten der for Anweisung. Wir beschränken uns hier auf dieerste und eingängigere numerische Variante. Das numerische for besitzt eineLaufvariable der ein Startwert zugewiesen wird, einem Endwert sowie optionaleiner Schrittweite, in der der Startwert bis zum Erreichen des Endwerts erhöhtwird. Die Schrittweite ist per Vorgabe 1 wenn sie nicht explizit angegeben wird.

1 for var= s t a r t , end , s tep do2 −−> do something3 end

Beispielsweise

1 loca l m = 02 for n=0 , 9 , 0.1 do3 m = m + 14 end5 dv . watch ( m ) −−> 5.5

breakDie break Anweisung bricht die Anweisungen innerhalb einer for, repeat oderwhile Schleife ab und setzt die Ausführung nach der Schleife fort.

1 loca l m = 02 for n=0 , 9 , 0.1 do3 m = m + 14 i f m == 2.5 then5 break6 end7 end8 dv . watch ( m ) −−> 2.5

191

Page 202: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 17. EINLEITUNG IN LUA

17.10 FunktionenJede Programmiersprache - selbst sehr einfache - verwenden Funktionen. Luaist hier keine Ausnahme. Eine Funktion führt eine bestimmte Aufgabe oder Be-rechnung aus und liefert die Ergebnisse zurück.Sie lesen richtig - Ergebnisse, plural! Funktionen in Lua können eines odermehrere Resultate zurück geben.In beiden Fällen übergeben Sie der Funktion eine Liste von in Klammern ein-geschlossenen Argumenten oder Parametern. Wenn die Funktion keine Argu-mente benötig wird einfach eine leere Liste definiert durch () angegeben.

FunktionsaufrufEinfach ausgedrückt wird eine Funktion durch ihren Namen und eine optio-nale Anzahl von Argumenten aufgerufen. Sie können eine Funktion mit mehrParametern als angegeben aufrufen. In diesem Fall werden nur die spezifizier-ten verwendet. Ein Funktionsaufruf mit zu wenig Parametern liefert allerdingseinen Fehler.Sie kennen bereits einige vordefinierten Funktionen wie z.B. dv.watch(...)oder math.sqrt(x). Die meisten sind Teil eines Moduls oder anderweitigdurch die Analyser Software definiert.

FunktionsdefinitionFunktionen werden ganz konventionell mit dem Schlüsselwort function defi-niert.

1 function fnc ( arg1 , arg2 , . . . )2 −−> the f u n c t i o n body3 end

Das folgende Beispiel definiert eine Maximum-Funktion, die das jeweils größe-re der beiden übergebenen Werte zurück liefert.

1 function max( n1 , n2 )2 i f n1 > n2 then return n1 else return n2 end3 end

Funktionen müssen nicht unbedingt einen Wert (oder mehrere) zurückgeben.In diesem Fall können Sie einfach die return Anweisung weg lassen oder dieFunktion mit einem einfachen return ohne weitere Werte beenden.Wie bereits erwähnt können Funktionen in Lua mehrere Ergebnisse zurück ge-ben. Dies ist ein großer Vorteil, da Sie die Ergebnisse nicht in irgendeinemKonstrukt (Behälter) zusammenfassen müssen den Sie dann als Resultat zu-rück liefern. Es besteht auch keine Notwendigkeit, Ergebnisse in globalen Va-riablen außerhalb der Funktion zu speichern, was zudem zu unangenehmenSeiteneffekten führen kann.Eine Reihe von vordefinierten Funktionen machen von dieser Fähigkeit ge-brauch. Beispielsweise liefert die Funktion math.modf(x) aus dem math Mo-dul den ganzen und den gebrochenen Anteil der übergebenen Zahl x zurück.

1 dv . watch ( math . modf ( 5.125 ) ) −−> 5 0.125

Die Definition einer Funktion mit mehreren Rückgabewerten ist genauso ein-fach wie die jeder anderen. Das folgende Beispiel zeigt die Unterschiede. Stel-len Sie sich eine Funktion vor, die zwei polare Koordinaten (Radius und WInkel)in das karthesische Koordinatensystem (x und y) umwandeln soll.

192

Page 203: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

17.11. MODULE

1 function po la r2ca r tes ian ( radius , angle )2 x = rad ius ∗ math . s in ( math . rad ( ph i ) )3 y = rad ius ∗ math . cos ( math . rad ( ph i ) )4 return x , y5 end

Anstelle irgendeines Behälters oder einer Tabelle liefern wir einfach beide Wer-te als vielfaches Resultat zurück.

17.11 ModuleEin Modul ist ein Zusammenstellung von Funktionen für bestimmte Zwecke.Sie kennen bereits das Modul math oder dv, welches von der Analyzer Soft-ware bereit gestellt wird.Aus der Sicht von Lua ist ein Modul schlicht eine Tabelle, die verschiedeneFunktionen, Modul-Variablen (Funktionen sind für Lua ebenfalls nur ein Varia-blentyp), Modul-Konstanten etc. enthält. Eine Modul Funktion wird deshalb wieein Tabellenelement mit dem Modulnamen gefolgt von einem Punkt und dereigentlichen Funktionsbezeichnung aufgerufen.

Standard ModuleDie folgenden Standard Module werden von dem in der Analyser Software in-tegrierten Lua Interpreter unterstützt. Siehe auch Abschnitt Einschränkungen17.13.Normaler Weise muß ein Modul mit require("modname") zunächst geladenwerden, bevor auf seine Funktionen oder Variablen zugegriffen werden kann.Um die Anwendung von Lua Skripten zur vereinfachen, sind in der AnalyserSoftware aber bereits alle nötigen Module geladen.

Modul Beschreibungmath Die mathematische Bibliothek. Sie enthält alle vom C Stan-

dard definierten mathematischen Funktionen.string Enthält eine ganze Reihe von Funktionen zur Manipulierung,

zum Suchen/Ersetzen und Extrahierung von Zeichenketten.Reguläre Ausdrücke werden ebenfalls unterstützt.

table Die Tabellen Bibliothek mit speziellen Funktionen zur Bear-beitung von Tabellen (Assoziativen Arrays) und Listen (Ta-bellen mit numerischem Index).

Eine kurze aber sehr gute Referenz (allerdings nur in englisch) über Lua undseine Standard Module als PDF Datei finden Sie unter:http://lua-users.org/wiki/LuaShortReferenceDie Referenz ist ebenfalls Teil der MSB-RS232 Software und wird bei der Instal-lation im doc Verzeichnis abgelegt.

Analyser ModuleDie MSB-RS232 Software stellt eine Reihe zusätzlicher Module zur Verfügung,um die Fähigkeiten des Analyser mit denen der Lua Skriptsprache zu verbin-

193

Page 204: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 17. EINLEITUNG IN LUA

den. Die meisten von Ihnen sind optimal an das jeweils zugehörige View ange-passt.

bit Modul

dv Modul

record Modul

Das bit Modul stellt Ihnen binäre Bit Operationen zur Verfügung die in Luanicht implementiert sind.Das zweite Modul, das Sie bereits kennengelernt haben, integriert die LuaSprache im Datenmonitor.Mit dem record Modul können Sie Aufnahme relevante Parameter wie dasProtokoll, die Startzeit der Aufzeichnung sowie die gesetzten Signalnamen ab-fragen.

Bit ModulLua kennt keine verschiedenen Zahlenformate sondern behandelt alle Zahlenals Fliesskommawerte mit doppelter Genauigkeit. Bit Operationen sind deshalbin der Standard Implementierung von Lua nicht vorgesehen.Auf Protokoll bzw. Datenebene werden Sie allerdings häufiger mit dem Pro-blem konfrontiert, einzelne Bits auszuwerten oder - z.B. im Zusammenhangmit Berechnungen von Prüfsummen - Datenbytes bitweise zu modifizieren.Das bit Modul erweitert den integrierten Lua Interpreter um die folgendenFunktionen:

Das Bit Modul (bit)

band(x1,x2) liefert die bitweise UND Verknüpfung der beiden Pa-rameter x1 und x2, z.B. bit.band(0xFF,0x01)

bor(x1,x2) liefert die bitweise ODER Verknüpfung der beidenParameter x1 und x2, z.B. bit.bor(0xFF,0x01)

bxor(x1,x2) liefert die bitweise XOR (exklusiv oder) Verknüp-fung der beiden Parameter x1 und x2, z.B.bit.bxor(0xFF,0x0F)

bnot(x) das Resultat ist die logische Negation jedes ein-zelnen Bits (auch Einerkomplement). Dabei wirdjede 1 durch eine 0 ersetzt und umgekehrt. Z.B.bit.bnot(0x55)

lshift(x,n) verschiebt den übergebenen Wert x bitweise um nBits nach links, z.B. bit.lshift(0x100,2)

rshift(x,n) verschiebt den übergebenen Wert x bitweise um nBits nach rechts, z.B. bit.rshift(0x1FF,1)

9bit.msbprjBeispiel einer LRCBerechnung

Das Beispielprojekt 9bit.msbprj zeigt die Anwendung des bit Moduls an-hand der Berechnung einer LRC Prüfsumme.Sie finden es im examples/DataView Ordner des Installationsverzeichnis-

194

Page 205: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

17.11. MODULE

ses.

Data View ModulDas Datenmonitor (oder Data View) Modul dv enthält Funktionen zur Abfragealler relevanten Daten des aktuell angezeigten Bereiches. So können Sie aufjede beliebige Datenzelle per Index zugreifen, die aktuelle Cursorposition ab-fragen oder die Anzahl der dargestellten Daten ermitteln.

Überlassen Sie es Lua, die Daten einer oder mehrerer Datenzellen zu ver-rechnen und das Ergebnis in einem der acht Watch Fenster auszugeben. ZumBeispiel können Sie eine Checksumme überprüfen oder die Daten ab der Cur-sorposition in ein anderes Format (Fliesskommazahl, 32 Bit Integer Big oderLittle Endian etc.) umwandeln.

Daneben stellt das dv Modul eine Funktion zur Markierung einzelner oder ei-ne Reihe von Datenzellen mit einer spezifischen Farbe zur Verfügung. Dabeikönnen Sie die komplette Datenansicht oder nur einen Teil abhängig von derCursorposition einfärben.

Zu guter Letzt: Wenn Sie mit der angezeigten Information innerhalb der Sta-tuszeile nicht zufrieden sind - das dv Modul enthält auch eine Funktion die dieAusgabe eines Lua Skriptes in der Statuszeile ermöglicht.

Beispiele zur Anwendung des Data View Modules finden Sie ebenfalls imexamples/DataView Ordner des Installationsverzeichnis. errors.msbprjfärbt alle Datenbytes mit einem Frame oder Parity Fehler bzw. aufgetrete-ne Breaks ein. srecord.msbprj visualisiert eine aufgenommene S-RecordÜbertragung.

Weitere Beispiele...Fehleranzeige, S-RecordDarstellung

Das Datenmonitor Modul (dv)

cell(index) liefert das aufgenommene Datenereignis der Zellemit dem angegebenen Index. Die erste Zelle desDatenmonitors hat den Index 1, die letzte den Indexdv.size(). Siehe dazu 17.12.

cursor() gibt die aktuelle Cursorposition als Index zurück.Der Index startet mit 1, der größt mögliche Index istdv.size().

mark(pos,n,col) markiert die nächsten n Datenzellen ab der Positionpos (die erste Zelle hat den Index 1) mit der ange-benen Farbe col.

size() liefert den Index der letzten sichtbaren Zelle in derDatenmonitor Ansicht (Zelle unten rechts).

statusbar(f,args)Zeigt die übergebenen Argumente im linken (f=1)oder rechten Feld (f=2) der Statuszeile an.

watch(args) Gibt alle übergebenen Argumente in dem zugehöri-gen Watch-Fenster Eintrag aus.

195

Page 206: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 17. EINLEITUNG IN LUA

Record ModuleDas record Modul erlaubt die Abfrage aller für die Aufzeichnung relevanterInformationen. Dies beinhaltet Baudrate, Anzahl der Start- und Stopbits, dieParity Einstellung aber auch die verwendeten Signalnamen sowie die Startzeit(Datum) der Aufzeichnung.Die Funktionen in einzelnen:

Das Record Modul (record)

protocol() liefert die Baudrate, die Anzahl der Datenbits (Wort-länge), die Parität None, Odd, Even, Mark, Space,sowie die Anzahl der Stopbits als Rückgabeliste.Die Abfrage erfolgt mit:baud,databits,parity,stopbits = record.protocol()

signalnames() liefert alle Signalnamen als Liste, beginnend mit Si-gnal1 bis Signal8. Zum Beispiel:s1,s2,s3,s4,s5,s6,s7,s8 = record.signalnames()

starttime() liefert die Startzeit der Aufzeichnung als sogenannteUnixzeit (entspricht der Anzahl von Sekunden seitdem 1. Januar 1970 00:00 Uhr).

17.12 Analyser specifische DatentypenDer MSB-RS232 Analysator speichert jede aufgezeichnete Änderung in einerspeziellen Datenstruktur. Diese enthält alle zugehörigen Information wie Zeit-punkt in Mikrosekunden, Art der Änderung bzw. des Ereignisses, den logischenPegelstatus aller Leitungen und weitere nützliche Informationen. Mit einemdv.cell(dv.cursor())können Sie diese Informationen an der entsprechenden Cursorposition (oderrelativ zur ihr) als Tabelle erfragen und in Ihrem Sinne weiter verarbeiten.Jeder Eintrag in der Tabelle repräsentiert eine spezifische Information des auf-genommen Ereignisses. Folgende Einträge (Felder) sind definiert:

Die LogEvent Tabelle

dv.cell(i).Data liefert das Datenbyte (bis zu 9 Bit) der überge-benen Zelle i.

dv.cell(i).CountAll die absolute Datennummer/Position innerhalbbeider Datenkanäle (A und B).

dv.cell(i).CountThis die absolute Datennummer/Position nur fürdiesen Datenkanal (A oder B).

dv.cell(i).Error gibt den aktuellen Fehlerwert des Datenbytean der übergebenen Zelle i oder 0 (kein Feh-ler) zurück. Fehlerwerte sind: 1=Frame, 2=Pa-rity, 3=Break.

196

Page 207: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

17.13. EINSCHRÄNKUNGEN

dv.cell(i).Position liefert die absolute Ereignisnummer (Ände-rung) der angegebenen Zelle i. Die Zählungder Ereignisse beginnt mit 0 und schließt alleausgewählten Ereignisse ein.

dv.cell(i).Sig? Abfrage des logischen Signalstatus (Pegel)zum Zeitpunkt des übergebenen Datenereig-nisses (Zelle). ? ist die gewünschte Signalnum-mer 1...8. Der Rückgabewert ist: +1, –1 oder 0(inaktiv).

dv.cell(i).Source liefert die Quelle des Datenereignisses der an-gegebenen Zelle i.1: Datenkanal A, 2: Datenkanal B.

dv.cell(i).Time der Zeitpunkt in Sekunden (Fliesskommazahl)an der das Byte der übergebenen Zelle i auf-genommen wurde.

dv.cell(i).Valid liefert false wenn die übergebene Zelle i leerist (im Datenmonitor gekennzeichnet mit XX),ansonsten true.

17.13 EinschränkungenLua besitzt eine Vielzahl von zusätzlichen Modulen für die unterschiedlichstenAnforderungen. Nicht alle machen innerhalb der Analyser Umgebung Sinn undwurden deshalb bei der Lua Integration nicht berücksichtigt. Nicht implemen-tierte Module sind:

I/O Library

OS Library

Rechenintensive Lua Skripte oder Endlosschleifen können dazu führen, daßdas zugehörige View nicht mehr oder nur sehr träge reagiert.Die integrierte virtuelle Lua Maschine (Lua VM) bricht deshalb Anweisungenoder Skripte, die ein bestimmtes Zeitmaß überschreiten, einfach ab.In diesem Fall werden Sie durch eine entsprechende Meldung über diesenUmstand informiert:Probieren Sie einmal folgendes:

1 loca l x = 02 while true do3 x = x + 14 end

--> [string "local x = 0..."]:-1: overrun of allowed executions

17.14 Weitergehende InformationDieses Kapitel hat nicht den Anspruch eine gute Einführung in Lua zu erset-zen. Es enthält lediglich die nötigsten Information um Ihnen die ersten Schrittemit Lua innerhalb der MSB-RS232 Software zu erleichtern.

197

Page 208: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 17. EINLEITUNG IN LUA

Es gibt Ihnen vielleicht eine vage Vorstellung der Eigenschaften die Lua so be-sonders auszeichnen. Weitere Informationen finden Sie auf der Lua Websitehttp://www.lua.org.Eine sehr gutes Tutorial ist unter http://lua-users.org/wiki/TutorialDirectory er-hältlich.

198

Page 209: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

18Der Schalteditor

Die Schaltoption erweitert den Analyser um die Fähigkeit, einzel-ne Leitungen interaktiv während einer Aufzeichnung zumanipulieren. Dazu gehört das Umschalten zwischenverschiedenen Pegeln, die Einspeisung von Daten in Sende undEmpfangsleitung sowie das Umverdrahten von Leitungen.Stellen Sie sich die Schaltoption als ein Art Steckbrett oder Steckfeld zwischenden Ein- und Ausgängen von Port A und B vor. Auf diesem können Sie Schalter,Inverter und weitere Elemente anorden und mit den Anschlüssen beider Portsverdrahten. Allerdings mit dem Unterschied, daß Sie keine richtigen Drähte undSchalter verwenden, sondern diese virtuell auf einer Zeichenfläche anordnenund verbinden.

18.1 User InterfaceDer Schaltplan Editor ist in drei Bereiche unterteilt, die ein möglichst einfachesArbeiten erlauben. Der gerasterte Bereich ist Ihre Zeichenfläche, auf der Siedie einzelnen Schaltelemente sowie Ein/Ausgänge anordnen und verbinden.Links davon befindet sich die Auswahlliste der Schaltelemente. Um ein Schalt-element auf der Zeichenfläche hinzuzufügen müssen Sie es lediglich anklicken.Das Erstellen eines Schaltplanes gliedert sich in:

1 Schaltelemente und Ein/Ausgänge auswählen und plazieren2 Elemente verdrahten (verbinden)3 Schaltplan ausführen

Wir sprechen in diesem Zusammenhang von verschiedenen Eingabemodi.Während der Eingabe des Schaltplanes werden Sie immer wieder zwischendiesen Modi wechseln. Sei es, um einen kleinen Zwischentest vorzunehmenoder die eine oder andere Veränderung durchzuführen. Die einzelnen Modiwerden im folgenden beschrieben. Zunächst aber ein Überblick über die Mög-lichkeiten, die Ihnen die Schaltoption bietet.

Bitte beachten Sie!Die angezeigten Signal Pin-Nummern in den folgenden Bildern geben die ak-tuelle Einstellung im Signalnamen Dialog des Kontrollprogramm wieder. Beigewählter DCE Namensgebung ist TxD als Signal (Pin) 2 definiert, währendes bei DTE als Pin 3 angegeben wird. Das gleiche gilt für alle weiteren RS232Signale.

199

Page 210: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 18. DER SCHALTEDITOR

18.2 Signale schalten und mehrDie einfachste Möglichkeit, in eine Verbindung einzugreifen, ist diese zu unter-brechen. Da alle Leitungen völlig gleichberechtigt sind, spielt es keine Rolle,ob Sie eine Datenleitung (RxD oder TxD) unterbrechen, oder eine Kontrolllei-tung, z.B. RTS. Ein einfacher Schalter, und Sie können jederzeit den Datenflußstoppen ohne ein Kabel auftrennen zu müssen.Daneben kann jedes Ausgangssignal an Port A bzw. B mit einer Signalquelleverbunden werden. Signalquellen sind entweder Eingangssignale beider Portsoder ein positiver bzw. negativer Pegel. Leitungen lassen sich so gezielt zwisch-en logisch eins und null hin- und herschalten. Sinnvoll um z.B. die Implemen-tierung von Protokollen zu überprüfen.Die Ein- und Ausgangssignale von Port A und B sind umleitbar. D.h. jedesEingangssignal kann mit jedem Ausgangssignal verbunden werden. Da ihreFunktion (Eingang bzw. Ausgang) von der Hardware vorgegeben ist, kann einEingang allerdings nicht zu einem Ausgang oder umgekehrt umgewandelt wer-den. Eine NULL Modem Schaltung ist deshalb nicht realisierbar.

BeispielLoopback-Port-A.msbdrw

Für eine Loopback Schaltung verbinden Sie einfach RxD und TxD des selbenPorts miteinander. Entsprechendes können Sie mit den Steuerleitungen ma-chen, um ein Loopback mit Handshake zu realisieren. Einen Loopback Schalt-plan finden Sie im circuit Verzeichnis.

200

Page 211: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

18.3. EINGABEMODI

Mit der Schaltoption bestimmen Sie, welche beiden Leitungen als Sende- undEmpfangsleitung und damit zur Datenaufzeichnung verwendet werden sollen.Per Voreinstellung sind das TxD und RxD, aber es können genauso gut auchdie RI oder DTR Leitung sein.In Verbindung mit der Möglichkeit, Leitungen zu routen oder umzuleiten sindSie dadurch in der Lage, Anschlüsse z.B. von nicht genormten Kabeln zu dre-hen und Daten auf unüblichen Leitungen aufzuzeichnen.Manche Applikationen erfordern das eigenständige Einspeisen von Daten ineine vorhandene Verbindung. Sei es, um eine bestimmte Reaktion auszulö-sen oder einfach um Übertragungsfehler zu simulieren. Die Schaltoption bietetanalog zu den beiden Aufzeichnungskanälen auch zwei getrennte Sendekanä-le, welche die Eingabe von beliebigen Datensequenzen erlaubt. (Im obrigenBild sehen Sie die beiden Sendekanäle jeweils über einen Schalter mit denTxD und RxD Leitungen verbunden).Eingegebene Datensequenzen können per ’Quoting’ auch nicht darstellbarehexadezimale Werte enthalten (z.B. $0A für ein Linefeed) und mit einem Fra-ming oder Parity Fehler versehen werden (Fehlersimulation). Inverter Elemen-te erlauben die gezielte Negierung jeder Signalleitung. Dies gilt für Steuer- wieauch die Datenleitungen.

18.3 Eingabemodi

Drei Eingabemodifür Bearbeiten, Verbindenund Ausführen

Der Schalteditor unterscheidet drei verschiedene Eingabemodi, direkt auswähl-bar durch Klicken auf das jeweilige Symbol in der Werkzeugleiste oder direktper Tastenkürzel.

Taste Modus BeschreibungF2 Editiermodus Bauteile einfügen, plazieren, löschenF3 Verbindungsmodus Bauteile verbindenF4 Ausführungsmodus Schaltplan ausführen

18.4 EditiermodusIm Editiermodus fügen Sie neue Schaltelemente hinzu bzw. entfernen nichtbenötigte. Einzelne Elemente können verschoben und gespiegelt werden. EinTextelement erlaubt die Eingabe von beliebigem Kommentaren in unterschied-lichen Stillrichtungen.

Einfügen eines neuen SchaltelementsUm ein neues Element in den Schaltplan einzufügen klicken Sie einfach aufdas gewünschte Symbol in der linken Auswahlliste. Das Element wird darauf-hin in der oberen linken Ecke des Schaltplanes plaziert und kann anschlies-send durch Anklicken und gedrückt halten der linken Maustaste verschobenwerden. Teilweise handelt es sich bei den einzelnen Elementen um begrenzteResourcen, d.h. es ist keine beliebige Anzahl von diesen Elementen verfügbar.Dies gilt aus verständlichen Gründen z.B. für alle Ein/Ausgängssignale sowiefür spezielle Elementen zur Datenein/ausgabe (siehe auch Begrenzte Resour-cen).

201

Page 212: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 18. DER SCHALTEDITOR

SchaltelementeSymbol Beschreibung

RS232 EingängeEingangssignal an Port A (gelb) bzw. Port B (blau). Der Textim Symbol entspricht dem jeweiligen Signalnamen und wird au-tomatisch aktualisiert, sobald er vom Anwender im Kontrollpro-gramm neu definiert wird.RS232 AusgängeAusgang Port A (gelb) bzw. Port B (blau). Auch hier wird der Si-gnalname automatisch angepasst.

Statische SignalpegelDie drei möglichen Signalpegel einer RS232 Verbindung. Ver-wenden Sie einen dieser Elemente um einen Ausgang auf einendefinierten Signalpegel zu legen. Das Off Element dient vor al-lem zur Kennzeichnung von explizit nicht angeschlossenen Aus-gangssignalen. Nicht verbundene Ausgänge sind intern immerals nicht angeschlossen oder off geschaltet.InvertiererMit einem Invertierer können beliebige Signale, statische Pegelwie Datenleitungen invertiert werden. Sinnvoll bei Datenleitungenmit gedrehtem Pegel.Interactiver SchalterEin Umschalter mit zwei Eingängen und einem Ausgang. Mit je-dem linken Mausklick wechselt der Eingang.

Interactiver SchalterEin Taster, der den Eingang wechselt, und diesen Zustand solan-ge hält, bis die linke Maustaste wieder losgelassen wird. DurchAnklicken des Elementes und Loslassen der Maustaste außer-halb des Schaltelementes können Sie den Taster umschaltenohne das er ’zurück springt’ und dadurch seine Voreinstellungändern.DateneingabeDieses Element erlaubt die Eingabe beliebiger Datensequenzenan der damit verbundenen Leitung. Gemäß dem RS232 Stan-dard existieren zwei, um TxD und RxD Leitung zu bedienen. Eskönnen jedoch auch andere Leitungen oder mehrere gleichzeitigsein.DatenaufzeichnungMit diesem Element legen Sie die Leitung und Position des Ab-griffes fest, an welchem die Datenaufzeichnung erfolgen soll.Auch hier gibt es zwei Elemente. Bei einfach verbundenen Lei-tungen ist die Stelle des Abgriffes unerheblich, bei geschaltetenLeitungen kann er z.B. vor oder hinter einem Schalter erfolgen.

Bereits belegte, d.h. im Schaltplan verwendete Ein/Ausgänge werden bei derAuswahl nicht mehr aufgelistet oder im Falle der Datenein/ausgabe deaktiviert.Das Symbol ist dann grau dargestellt.

202

Page 213: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

18.4. EDITIERMODUS

Elemente auswählenBestimmte Operationen wie Verschieben, horizontal umkehren oder löschenbeziehen sich immer auf ausgewählte Elemente. Die Auswahl eines Elementsoder Verbindungsknotens erfolgt einfach per Linksklick mit der Maus wobeidie ausgewählen Elemente durch einen umgebenden punktiertem Rahmen ge-kennzeichnet sind.Um mehrere Elemente gleichzeitig auszuwählen drücken Sie zusätzlich dieUmschalt Taste oder bewegen den Mauszeiger bei gedrückter linker Maustas-te um einen rechteckigen Bereich um die gewünschten Elemente zu ziehen.Sobald Sie die Maustaste loslassen werden alle in diesem Bereich befindli-chen Elemente zur Auswahl hinzugefügt.Durch erneutes Linksklicken mit gedrückter Umschalt Taste können Sie dieAuswahl eines einzelnen Elementes wieder rückgängig machen (mit anderenWorten es deselektieren). Wollen Sie alle Elemente von der Auswahl ausneh-men, Linksklicken Sie einfach einen freien Bereich des Schaltplanes (d.h. au-ßerhalb der Auswahl) oder Drücken Sie Strg+Umschalt+A.Die ausgewählten Elemente können anschliessend einfach verschoben wer-den, indem Sie das entsprechende Element bzw. eines der Selektierten ankli-cken und bei gedrückter linker Maustaste bewegen. Vorhandene Verbindungs-linien werden dabei wie Gummifäden behandelt.Mit Umschalt+A können Sie einfach alle Elemente, d.h. den kompletten Schalt-plan auswählen, z.B. um ihn auf der Zeichenfläche zu verschieben.

Verbindungspunkte editierenBeachten Sie, dass es sich bei den Eckpunkten (Knoten) einer Verbindungebenfalls um ’Elemente’ handelt, die genau wie die Schaltelemente bewegt,selektiert und gelöscht werden können.

Löschen von Elementen/VerbindungenGelöscht werden können generell nur ausgewählte Elemente. D.h. Sie müssendas oder die Teile des Schaltplanes, die Sie entfernen wollen, zunächst aus-wählen, um sie dann durch Drücken der Entf Taste zu entfernen.Der Schalteditor besitzt eine unbegrenzte Undo/Redo Kapazität. Sollten Siemehr gelöscht haben, als Ihnen lieb ist, können Sie den letzten (oder vorletz-ten) Zustand einfach wieder herstellen, in dem Sie auf das Undo Symbol kli-cken. Wie Sie per Undo/Redo durch die letzten Änderungen Ihres Schaltplanesnavigieren finden Sie im Abschnitt Undo/Redo Mechanismus.

Horizontales Umkehren von ElementenBeim Zeichnen des Schaltplanes sind die eingefügten Schaltelemente nichtimmer in der von Ihnen gewünschten Ausrichtung. Um ein oder mehrere Ele-

Horizontal spiegelnausgewählter Elementemit Taste ’H’

mente horizontal zu spiegeln, markieren Sie das oder die gewünschten Ele-mente und drücken die Taste H oder klicken im Menü Objekt den MenüpunktHorizontal umkehren.

Eingabe von TextText wird im Schalteditor wie ein herkömmliches Element behandelt. Er läßtsich verschieben, löschen oder modifizieren. D.h. der Text kann jederzeit in-haltlich und in Größe und Darstellung verändert werden.

203

Page 214: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 18. DER SCHALTEDITOR

Um einen neuen Text einzufügen klicken Sie einfach auf das Textsymbol derlinken Auswahlliste. In dem sich öffnenden Dialogfenster können Sie den ge-wünschten Text sowie Vorder- und Hintergrundfarbe und Schriftgröße vorge-ben.Die Breite des Textes richtet sich automatisch nach der längsten Zeile. In denmeisten Fällen werden Sie Texteingaben zur Dokumentation Ihres Schaltpla-nes bzw. zur Bezeichnung bestimmter Schaltungen oder Verbindungen ver-wenden. Die Plazierung in festen Rasterschritten ist hier eventuell störend.Durch Drücken der Umschalt Taste bei gleichzeitigem Bewegen des Textes er-folgt die Plazierung Pixel weise. Dies gilt im Übrigen auch für andere Elemente,macht dort aber wenig Sinn. Sie können das Textelement jederzeit modifizie-

Texteingabe Dialogfür Labels, Textfelder

ren, indem Sie einfach per Rechtsklick den zugehörigen Textdialog öffnen.

Elemente pixelweise plazierenBei gleichzeitig gedrückter Umschalt Taste können Sie Texte und andereSchaltelemente pixelweise bewegen.

Begrenzte ResourcenBei der Auswahl eines neuen Ein- bzw. Ausgangelements werden nur die frei-en, d.h. noch verfügbaren Elemente in einer Auswahlliste repräsentiert, so dasseine ’doppelte’ Verschaltung nicht möglich ist.Entsprechendes gilt für alle begrenzten Resourcen. Sobald ein Schaltelementaufgebraucht ist, kann es nicht mehr aus der Liste ausgewählt werden.Zu den begrenzten Resourcen gehören:

1 Eingänge (es exitieren insgesamt 8 Eingänge verteilt auf Port A/B)2 Ausgänge (auch hier gibt es insgesamt 8 Ausgänge)3 Dateneingabe (zwei, RS232 definiert zwei Datenleitungen TxD und RxD)4 Datenaufzeichnung (ebenfalls zwei, definiert durch den RS232 Standard)

Undo/Redo MechanismusStellen Sie sich den Undo/Redo Mechanismus als eine Liste von ZuständenIhres Schaltplanes vor, wobei jedes Entfernen von Elementen einen neuen Ein-trag in dieser Liste verursacht.Mit Undo springen Sie in der Liste jeweils um einen Eintrag zurück, währendRedo den jeweils nächsten Eintrag auswählt, d.h. sich in entgegengesetzterRichtung durch die Liste bewegt.

18.5 VerbindungsmodusNachdem Sie jetzt eine Reihe von Schaltelementen plazieren können, müssenSie diese noch verbinden. Der Verbindungsmodus wird entweder durch Kli-cken des Linien Symbols in der Werkzeugleiste oder einfach per F3 aktiviert.Der Cursor nimmt die Form eines Fadenkreuzes an und signalisiert damit dieBereitschaft, neue Verbindungen einzugeben.

204

Page 215: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

18.5. VERBINDUNGSMODUS

VerbindungsregelnVerbindungen können nur zwischen IN Connectors und OUT Connectors be-stehen, kurz IN und OUT.Diese Bezeichnung ist bewußt gewählt, um die Anschlusspins der Schaltele-

RS232 Eingangmit OUT Connector

RS232 Ausgangmit IN Connector

mente von den RS232 Ein/Ausgangsleitungen an den beiden D-Sub Buchsenzu unterscheiden.Jeder RS232 Signaleingang (bei Port A die Leitungen RxD, DSR und CTS)besitzt einen OUT Connector durch den quasi das anliegende Signal weiterge-reicht wird.Entsprechendes gilt für jeden RS232 Signalausgang. Dieser wird über einenIN Connector mit einer Signalquelle verbunden.Im weiteren Verlauf dieser Anleitung sprechen wir deshalb von IN und OUT,wenn wir die Anschlüsse der Schaltelemente meinen, und von Eingang bzw.Ausgang, wenn es sich um das physikalische Signal an den RS232 BuchsenPort A und B handelt.Verbindungen können nur zwischen IN und OUT Connectors der einzelnenSchaltelemente gezogen werden, wobei es unerheblich ist, ob die Verbindungbei einem IN oder OUT Connector startet. Allerdings können Sie einen OUTConnector mit mehreren IN Anschlüssen verbinden, siehe Verzweigungen.

Element IO-Pins und RS232 Ein/AusgängeJedes Schaltelement besitzt IN und OUT Anschlüsse. Als Ein- und Ausgängewerden die RS232 Leitungen an Port A und B repräsentierenden Signalele-mente bezeichnet.

Eine Verbindung eingeben

Einfaches Verbindendurch Anzeige möglicherAnschlüsse

Start einer Verbindung kann ein Anschlußpin (Connector) eines Elements odereines Verbindungsknotens sein. Sobald Sie einen Anschluß mit der linken Maustas-te angeklickt haben, zieht der Cursor eine Art Gummifaden hinter sich her, derdas aktuelle Verbindungssegment repräsentiert. Eine aktive Verbindung (Gum-miband) wird durch Anklicken eines entsprechenden Anschlußpins beendet.Der Schalteditor blendet dazu alle gültigen und in Frage kommenden Anschlüs-se durch ein ein.Der Start der Verbindung ist eine Signalquelle (ein Ausgangssignal), die des-halb nur mit einem Eingang verbunden werden kann. Der Ausgang des Schal-ters ist deshalb nicht gekennzeichnet.Vermutlich wollen Sie keine diagonalen Verbindungen kreuz und quer über Ih-ren Schaltplan ziehen. Deshalb können Sie jederzeit per einfachem Linksklickoder Drücken der Space Taste einen Eckpunkt in der Verbindung definieren.Der Eckpunkt (oder Knoten) wird immer im Raster gesetzt. Den jeweils letztenEckpunkt des Gummibandes entfernen Sie wieder mit Esc.Sobald Sie das lose Ende des Gummibandes mit einem gültigen Anschlußpinverbunden haben, ist die Verbindung fertig gestellt und wird beim Ausführendes Schaltplanes berücksichtigt. Beachten Sie dazu die Hinweise in der Sta-tuszeile.Unverbundene Ausgänge, und damit sind auch jene gemeint, die Sie in IhremSchaltbild gar nicht berücksichtigt haben, werden automatisch auf Off geschal-tet. Ein leeres Blatt bedeutet damit, daß zwischen Port A und B des Analyserskeine Verbindung besteht. Dies entspricht der intuitiven Erwartung: Keine ge-

205

Page 216: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 18. DER SCHALTEDITOR

zeichnete Verbindung gleich keine wirkliche Verbindung.Um in diesem Zusammenhang einen offenen IN Anschluß von einem lediglichvergessenen Anschluß zu unterscheiden, können Sie den IN Connector auchmit dem Off Element aus der Auswahlliste verbinden.

VerzweigungenDer Schalteditor erlaubt Ihnen, mehrere IN Anschlüsse (Signalsenken) mit ei-nem gemeinsamen OUT Connector (Signalquelle) zu verbinden. Signalquellensind neben den insgesamt acht RS232 Signaleingängen an Port A und B auchjedes +5V bzw. -5V Element.Die Verbindungen können direkt oder über Schalter bzw. Inverter geführt wer-den. Beispielsweise können Sie das CTS Signal von Port A direkt mit der CTSLeitung von Port B und invertiert mit der DSR Leitung an Port B verschalten.Siehe nebenstehende Abbildung.Klicken Sie (im Verbindungsmodus) auf den Anschluss des gelben CTS Si-

Signalverzweigungen...die Ausgangsposition...

gnaleingangs um eine Verbindung zu starten. Da die Anschlußpins aller Ele-mente immer nur eine Verbindung zu lassen, müssen Sie einen Eckpunkt ein-fügen, in dem Sie entweder die Leerzeichen oder linke Maustaste betätigen.Vollenden Sie die Verbindung durch Anklicken des linken Inverter Anschlus-ses.Sie können sich den Eckpunkt als ein Element mit einem IN und drei OUT

Signalkonten (Eckpunkt)dient als Start für neueVerbindung...

Anschlüssen vorstellen, die alle übereinander liegen. Der IN Anschluss desEckpunktes wird durch den CTS Signaleingang (gelb) gespeist und ist übereinen OUT Anschluss mit dem IN Connector des Inverters verbunden. Damithat der Eckpunkt quasi noch zwei freie OUT Anschlüsse (entsprechend denzwei noch freien Richtungen nach rechts und unten).Klicken Sie nun auf den Anschluss des blauen CTS Ausgangs (Signalsen-

...und die vollständigeSignalverzweigung

ke) um eine weitere Verbindung zu starten. Der Schalteditor zeigt Ihnen allemöglichen Signalquellen, auch den zuvor eingefügten Eckpunkt. Mit Klick aufden Eckpunkt haben Sie das CTS Signal von Port B nun ebenfalls an die CTSLeitung von Port A angeschlossen. Zum Schluss ergänzen Sie noch die Ver-bindung zwischen DSR und dem OUT Anschluss des Inverters.

Eine Verbindung verschiebenEine Verbindung besteht immer aus ein oder mehreren Segmenten, wobei je-des Segment einen Start- und Endpunkt besitzt, der entweder ein Elementoder Knoten (Eckpunkt) ist. Segmente selbst lassen sich nicht verschieben, dasie den kürzesten ’Weg’ zwischen diesen Elementen repräsentieren. Um ei-ne Verbindung zu verschieben müssen Sie deshalb die zugehörigen Elementebewegen.Um eine komplexere Verbindung (mit mehreren Knoten und/oder Elementen)an einer anderen Stelle des Schaltplanes zu plazieren selektieren Sie alle Ele-mente der Verbindung inkl. Knoten und bewegen dann diese ’Gruppe’ an dengewünschten Ort. Dadurch bleibt die Anordung der einzelnen Elemente unter-einander unverändert.

Verbindungen löschenUm eine Verbindung zu löschen reicht es aus, ein Segment oder einen Knoten(oder natürlich das Element am jeweiligen Ende der Verbindung) zu entfernen.Da der Schalteditor keine ’unterbrochenen’ Verbindungen akzeptiert löscht er

206

Page 217: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

18.6. AUSFÜHRMODUS

darauf hin die komplette Verbindung.Zur Erinnerung: Gelöscht werden können nur ’selektierte’ Elemente. D.h. derKnoten bzw. das Verbindungssegment muß zunächst ausgewählt und anschlies-send gelöscht werden. Per Undo können Sie eine Löschoperation jederzeitrückgängig machen.

18.6 AusführmodusIm Ausführungsmodus wird der von Ihnen eingebene Schaltplan aktiviert undan den Analyser übertragen. In den Ausführungsmodus gelangen Sie entwe-der per Klick auf das entsprechende Symbol in der Werkzeugleiste oder ein-

RTS schalteneinfach durch Einfügeneines Schalters...

fach per F4. Der Cursor nimmt dabei die Form einer Hand an, und symbolisiertdamit ein ’Betätigen’ der Schaltelemente.Jedesmal, wenn Sie mit dem ’Hand’ Cursor ein interaktives Schaltelement an-klicken, wird der entsprechende Schaltvorgang ausgelöst. In diesem Fall wirddie RTS Leitung an Port A bei Drücken der linken Maustaste von einem positi-ven auf einen negativen Pegel geschaltet und beim Loslassen (es handelt sichhier um einen Taster) wieder auf den ursprünglichen positiven Pegel gesetzt.Interaktive Schaltelemente sind immer mit einem ’Knopf’ gekennzeichnet.

SchaltfehlerDer Schalteditor unterscheidet zwischen zwei möglichen Fehlerarten:

Statische Fehler

Dynamische (Laufzeit) Fehler

Statische Fehler treten bereits bei der Eingabe auf, z.B. die Verbindung vonzwei Eingängen, und werden entsprechend unterdrückt, d.h. sie sind erst garnicht erlaubt. Versuchen Sie, zwei Eingänge zu verbinden, Sie werden es nichtschaffen.Dynamische oder Laufzeitfehler können nicht während der Eingabe erkannt

Laufzeitfehlerdurch Signalschleife

werden, da Sie erst nach einem Schaltvorgang ausgelöst werden. Ein Beispielist die neben stehende Endlosschleife. Hier wird das Ausgangssignal RTS aufsich selbst geschaltet, sobald der Schalter betätigt wurde.Bei einem Laufzeitfehler wird die Ausführung durch den Analyser unterdrückt,d.h es findet kein Schaltvorgang statt.

18.7 Ein/Ausgangselemente an Port A und BJeder Leitung bzw. jedem Anschluß an Port A und Port B ist explizit ein Ein-bzw. Ausgangselement zugeordnet (die GND Leitung an Pin 5 ausgenommen).Die Port A repräsentierenden Signalelemente sind gelb, die Port B Elementeblau ausgeführt. Als Eselsbrücke können Sie sich Blau wir Port B merken. Dasfolgende Schaltbild zeigt die Voreinstellung des Analyser, wenn keine Verän-derungen durch die Schaltoption vorgenommen wurden. Alle Signale sind 1:1

Voreinstellungdes Analyzers

durch verbunden. Der Abgriff zur Datenaufzeichnung findet üblicher Weise anden Datenleitungen RxD und TxD statt. Beachten Sie, daß nicht verwendeteAusgangssignale automatisch auf ’off’ geschaltet werden.

207

Page 218: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 18. DER SCHALTEDITOR

Schaltfunktion zurücksetzenSie können diesen Zustand jederzeit wieder herstellen, indem Sie das ResetSymbol in der Werkzeugleiste anklicken. Dadurch wird der Analyser wiederin seinen voreingestellten Zustand versetzt.

Entsprechend dem RS232 Standard handelt essich bei diesen Signalelementen um limitierte Re-sourcen.D.h. Sie können jede Signalleitung an Port Aoder Port B nur einmal verwenden. Ein bereits imSchaltplan eingefügtes Signalelement kann nichtmehr ausgewählt werden.So sind die Signalleitungen RxD (Port B) und RTS

Einfache Zuweisungder RS232 Signale durchautomatische Verwaltungund Anpassung derNamen

(Port A) in der Abbildung nicht mehr Bestandteilder verfügbaren Ausgangssignale, da sie bereitsim Schaltbild existieren.

Um Ihnen die Bedienung zu erleichtern, bietet die Auswahlliste noch zwei zu-sätzliche Details. Hinter jedem Signalnamen wird Port und Pin-Nummer ange-geben. Und die Namen werden automatisch den evtl. von Ihnen vorgegebenenSignalnamen angepasst.

18.8 Beliebige Daten einspeisen

Verbinden Sie das Dateneingabe Element mit den Ausgangsleitungen, in diebeliebige Datensequenzen eingespeist werden sollen. Die linke Abbildung zeigtden normalen Datenfluß für die RxD Leitung, während die rechte diesen unter-bricht und die Eingabe von eigenen Datensequenzen erlaubt.

Um die Dateneingabe zu aktivieren klicken Sie aufden ’Zahnrad’ Knopf im Dateneingabe Element.Der Knopf wechselt zu einem ’gedrückten’ Statusund folgender Dialog erscheint (mit den zuletzt ge-machten Eingaben dieser Sitzung). Um den Dia-log wieder zu schliessen, klicken Sie entweder dasSchliessen Symbol des Dialogs oder erneut aufKnopf des Schaltelements.Dateneinspeisung

an beliebigen Signaleneinfach durch Kopfdruck...

Der Dateneingabe Dialog besitzt vier verschiede-ne Eingabemodi, die per Eingabe in der Menüleiste ausgewählt werden kön-nen.

208

Page 219: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

18.9. DATENAUFZEICHNUNG

Modus BeschreibungZeile Die Eingabe wird mit Enter abgeschlossen, zuvor kann der

eingebene Text beliebig korrigiert werdenZeile Hex. Analog zum Eingabemodus Zeile können hier aber zusätzlich

mittels $XY beliebige nicht druckbare Zeichen gesendet wer-den. XY muß ein gültiger hexadezimaler Wert wie z.B. $0Afür Linefeed sein. Um das $ Zeichen zu senden, geben Sieden entsprechenden ASCII Wert ein, also $24.

Direkt Jedes eingegebene Zeichen wird sofort gesendet. Ein Kor-rektur ist nicht möglich, da alle Tasten, auch die Entfernenund Löschtasten als Tastencode ausgegeben werden.

Expert Dieser spezielle Hex Eingabemodus erlaubt das Senden vonDaten mit definierten Pausen zwischen einzelnen Bytes. DiePause oder Verzögerung wird in Baudrate Takten (Stop-bits) zwischen 1 (Standard) und max. 127 definiert undmit einem vorangestellten ’+’ Zeichen eingegeben. Folgen-de Sequenz wird mit einer ’Pause’ von 48 Takten zwisch-en dem vierten und fünften Byte gesendet (die Eingabeder Pause ist ebenfalls in hex, 30h bedeutet 48 Takte):01 06 00 02+30 00 02. Die Simulation von Pausen in-nerhalb einer Datensequenz ist insbesondere zum Test vonZeit kritischen Protokollen wie Modbus RTU oder Profibushilfreich.

...Eingabedialog öffnen

Neben der Eingabe beliebiger Zeichen ist auch die Simulation von Framingoder Parity Fehlern möglich. Der Analyser speist in diesem Fall die eingege-benen Zeichen mit einem falschen Paritätsbit oder falscher Anzahl von Daten/-Stopbits in die verbundene Leitung ein.

BreaksEin Break ist ein spezielles Signal, bei dem für eine definierte Zeitdauer (üb-licher Weise 0.25s) die Sendeleitung auf logisch 0 gesetzt wird. Breaks wer-den von RS232 Bausteinen (UARTs) gesondert behandelt und dienen i.a. alsReset Aufforderung. Mit dem Break Knopf können Sie jederzeit ein solchesSignal generieren.

Sie können den Eingabedialog jederzeit schliessen, ohne die eingegebenenZeilen/Zeichen zu verlieren. Ein einfacher Klick auf das Schaltelement, und derDialog erscheint in seinem zuletzt vorhandenen Zustand. (In Wirklichkeit wirdder Dialog nicht geschlossen, sondern lediglich von der Anwendung versteckt).

18.9 DatenaufzeichnungMit der Schaltoption bestimmen Sie, welche Leitung als Datenleitung vom Ana-lyser verwendet werden soll. D.h. neben den standardisierten DatenleitungenRxD und TxD kann jede andere Leitung vom Analyser als Datenleitung inter-pretiert werden.

209

Page 220: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 18. DER SCHALTEDITOR

Die linke Abbildung zeigt den normalen Zustand.Dies ist gleichzeitig die Voreinstellung des Analy-sers, wenn Sie keine Modifikation durch die Schalt-option vornehmen. Die Datenleitungen RxD undTxD sind 1:1 verbunden und werden intern zur Da-tenaufzeichnung abgegriffen.Rechts sind die Voraussetzungen etwas anders.

Datenabgriffan beliebiger Leitung

An Port B (Blau) wurde die Sendeleitung (ausirgendwelchen Gründen) an Pin 9 des D-SubSteckers herausgeführt. Die Empfangsleitung istebenfalls nicht Norm konform an Pin 4 angeschlossen.

Da das Gerät an Port A über eine korrekte Pinbelegung verfügt, wurden dieLeitungen zusätzlich umgeleitet und der Datenabgriff entsprechend gesetzt. Esist natürlich sehr ungewöhnlich, das jemand die Ring Leitung als Datenkanalverwendet. Das heißt aber nicht, daß Sie immer eine RS232 Verbindung vorsich haben, bei der alle Leitungen den Vorgaben des D-Sub 9pol. Steckers fürRS232 entsprechen. Mit der Möglichkeit, quasi die RxD und TxD Leitung freizu wählen, ersparen Sie sich in diesen Fällen die Anfertigung eines Adapters.

18.10 PegelabgriffBei durchgängigen Verbindungen der RS232 Ein/Ausgänge spielt es keine Rol-le, an welchem Punkt der Leitung der Analyser den aktuellen Pegelzustand ab-tastet, da der Pegel über die komplette Verbindung gleich ist.Dies ändert sich, sobald Sie eine Leitung manipulieren, z.B. in dem Sie sieinvertieren oder unterbrechen, um die Pegel eigenständig umzuschalten. Wirdder Pegel vor dem Inverter oder Schalter abgegriffen, werden der Leitungs-pegel vor der Schaltung aufgezeichnet und nicht das Resultat, hervogerufendurch die Schaltung.

Voreingestellt ist der Pegelabgriff unmittelbarhinter den RS232 Eingangssignalen, d.h. anA. Sobald Sie die RTS Leitung unterbrechen,z.B. um einen RTS Pegelwechsel zu simulie-ren, wird der Analyzer weiterhin den aktuellenPegel am RTS Eingang (A) abtasten, nicht aberden Pegel, modifiziert durch den eingefügtenSchalter.

Ein gleichzeitig geöffneter Virtueller Ledtester zeigt Ihnen daher auch keineÄnderung an, wenn Sie den Schalter betätigen.Sie können dieses Verhalten aber leicht ändern, indem Sie im Einstelldialogden Abgriff unmittelbar vor die RS232 Ausgänge setzen. Damit erfolgt die Pe-gelabtastung nicht mehr an A sondern an Punkt B und macht damit alle Pegel-wechsel, hervorgerufen durch den Schalter, für alle Views sichtbar.

210

Page 221: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

18.11. VOREINSTELLUNG WIEDER HERSTELLEN

18.11 Voreinstellung wieder herstellenMit dem Schalteditor können Sie den Signalfluss zwischen beiden RS232 An-schlüssen in einem weiten Bereich beeinflussen. Genauso einfach können Sieallerdings die Verbindung zwischen beiden Ports - und damit die Kommunika-tion zwischen den angeschlossenen Geräten - unbeabsichtig unterbrechen.Der MSB-RS232 Analyser setzt die Verbindung zwischen den Ports automa-

Zurücksetzen derAnalyzer Verbindung ...

... auf die 1:1Voreinstellung

tisch auf die Voreinstellung (1:1) zurück, wenn er aus- und wieder eingeschal-tet wird. Einfacher geht es, indem Sie den Reset Knopf in der Werkzeugleisteklicken, siehe 18.1.Der Schalteditor lädt in diesem Fall den Schaltplan für eine 1:1 Verbindung mitAbgriff der Daten an RxD und TxD. Um den neuen Schaltplan anzuwenden,müssen Sie wie gewohnt in den Ausführungsmodus wechseln, entweder durchF4 oder Editormodus Auswahl in der Werkzeugleiste.Beachten Sie! Der die Voreinstellung repräsentierende 1:1 Schaltplan ersetztIhren aktuellen Schaltplan ohne Warnung. Sie können diesen aber jederzeitper Klick auf den Undo Button in der Werkzeugliste zurück holen.

18.12 Schaltpläne laden und speichernDer Schaltplan Editor besitzt eine Autosave Funktion. Sobald Sie das Pro-gramm beenden, wird der aktuelle Schaltplan automatisch in Ihrem Heimat-verzeichnis gesichert. Unter Windows ist das i.a. der OrdnerC:\Dokumente und Einstellungen\Benutzername, unter Linux Ihr nor-males Home Verzeichnis /home/Benutzername.Der Schaltplan wird als Datei .autosave.msbdrw abgelegt.Sie können selbstverständlich jederzeit Ihr aktuelles Schaltbild unter einem be-liebigen Namen abspeichern. Klicken Sie dazu im Menü Datei→Speichern un-ter und wählen Sie Namen und Ort, unter welchen Sie Ihren Schaltplan able-gen wollen.Um einen zuvor gespeicherten Schaltplan zu laden, oder einen im Beispielver-zeichnis Installationsverzeichnis/circuits vorhandenen Plan aufzurufen, klickenSie Datei→Öffne oder drücken Sie Strg+O. Um einen bereits unter einem Na-men gespeicherten Schaltplan erneut zu speichern, reicht ein Strg+S bzw, einKlick auf Datei→Speichern.Die Schaltpläne werden als Netzlisten abgelegt. Es handelt sich dabei um ein-fache Textdateien. Trotzdem sollten Sie diese tunlichst nicht verändern.

18.13 LizensierungDie Schaltoption ist nicht preislicher Bestandteil der Analyser Software undmuß getrennt erworben werden.Sie können die Schaltfunktionen allerdings in Ruhe ausprobieren. Der Analy-ser stellt Ihnen ein Anzahl von Demo Sitzungen mit dem Schalteditor zur Ver-fügung. Damit ist folgendes gemeint:Unter eine Demositzung fallen alle Aufrufe des Kontrollprogrammes, bei denenSie den Schalteditor mindestens einmal öffnen. D.h.:

Innerhalb eines laufenden Kontrollprogrammes können Sie den Schalteditor sooft starten, wie sie wollen. Lediglich der erste Start zählt.Wenn Sie den Schalteditor während einer Sitzung mit dem Kontrollprogrammnicht öffnen, wird Ihnen auch kein Versuch angerechnet.

211

Page 222: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 18. DER SCHALTEDITOR

Eine Demo Sitzung ist in keinerlei Weise eingeschränkt. Sie können Schaltplä-ne eingeben, laden, speichern und diese in Ihrer Anwendung testen. Solan-ge Sie das Kontrollprogramm nicht schließen, haben Sie genügend Zeit, denSchalteditor immer wieder aufzurufen und sich mit seinen Fähigkeiten vertrautzu machen. Unter Hilfe→Über Kontroll Programm im Kontrollprogramm Menüfinden Sie die genaue Anzahl der verfügbaren Versuche.Sind alle Versuche aufgebraucht, können Sie weiterhin mit dem Schalteditorarbeiten. Allerdings werden keinerlei Schaltsequenzen mehr an den Analyserübertragen.

Eine Lizenz erwerbenUm eine Schaltoption Lizenz dauerhaft zu erwerben (die Anzahl der erlaubtenSitzungen wird quasi auf unendlich gesetzt), muß sie per Lizenzschlüssel frei-geschaltet werden. Der Lizenzschlüssel ist ein Unikat und für jeden Analyserund Ausstattung einmalig. Zur Freischaltung benötigen Sie deshalb neben demSchlüssel auch die Seriennummer Ihres Analysers. Sie finden beides im Menüdes Kontrollprogrammes unter: Optionen→Option erwerbenDen neuen Lizenzschlüssel erhalten Sie per Email (oder Fax). Sobald Sie ihnim Kontrollprogramm unter: Optionen→Option registrieren eingegeben haben,ist die Schaltoption freigeschaltet. Unter Optionen→Zeige installierte Optionenkönnen Sie die erfolgreiche Registrierung kontrollieren.

18.14 Die WerkzeugleisteDie Werkzeugleiste dient zum schnellen Zugriff der am meisten benötigtenFunktionen.

A Ende: Speichert alle Einstellungen inklusive des aktuellen Schaltbildesund schließt das Fenster

B Editiermodus: Wechselt zwischen den drei Editiermodi zur Eingabe/-Plazierung von Elementen, Zeichnen von Verbindungen und Ausführungdes Schaltbildes.

C Reset: Stellt die Voreinstellung des Analysers wieder her. D.h. eine 1:1Verbindung von Port A und B mit den Datenkanälen RxD und TxD.

D Undo/Redo: Nimmt die letzte Änderung zurück bzw. stellt diese wiederher.

212

Page 223: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

18.15. KURZBEFEHLE

18.15 Kurzbefehle

Tastenkommandosder wichtigstenFunktionen

Aktion Kurzbefehl

Online Hilfe zum Schalteditor F1

Editiermodus F2

Verbindungsmodus F3

Ausführungsmodus F4

Löscht ausgewählte Elemente Entf

Alles auswählen Strg+A

Auswahl aufheben Umschalt+Strg+A

Ausgewählte Elemente horizontal umkehren (spie-geln)

H

Log Fenster ein/ausblenden Strg+L

Raster ein/ausblenden #

Letzte Änderung rückgängig machen Strg+Z

Letzte Änderung wiederherstellen Umschalt+Strg+Z

Neues Schaltbild (leeres Blatt) Strg+N

Schaltplan Datei öffnen Strg+O

Schaltbild abspeichern Strg+S

Schaltbild unter anderem Namen abspeichern Umschalt+Strg+S

Programm beenden Strg+Q

213

Page 224: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 18. DER SCHALTEDITOR

214

Page 225: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

19Zwei Verbindungen aufzeichnen

Sie haben zwei Verbindungen (RS232 und/oder RS422/485) dieSie gemeinsam betrachten bzw. untersuchen müssen, z.B. Ein-und Ausgangsdaten eines Protokollumsetzers, verschiedeneBussegmente, oder generell voneinander abhängige Datenüber-tragungen. Wie Sie hier vorgehen und was Sie dabei beachtenmüssen zeigt dieses Kapitel.

Zur gleichzeitigen Aufzeichnung zweier getrennter Verbindungen benötigen Siezwei MSB-Analyser. Dies ist allerdings nur eine Voraussetzung. Um zwei Auf-zeichnungen vergleichen zu können müssen die aufgenommenen Daten in ei-ner genauen zeitlichen Beziehung zueinander stehen.Ohne diese können weder exakte Aussagen über die zeitliche Abfolge der auf-gezeichneten Datensequenzen gemacht, noch die Gleichzeitigkeit bestimmterEreignisse überprüft werden. Z.B. wann wurde ein Datenbyte oder eine Byte-folge in der einen Verbindung relativ zu den Daten der anderen Verbindung ge-sendet? Was passierte in beiden Verbindungen zu einem exakten Zeitpunkt?

19.1 Technische VoraussetzungenEine der herausragenden Fähigkeiten der MSB-Analyser ist die exakte Mes-sung und Visualisierung des Zeitverhaltens einer Verbindung mit Mikrosekun-den Genauigkeit. Diese Präzession ist erforderlich um auch bei höheren Baud-raten korrekte Ergebnisse zu liefern und gilt auch für die gemeinsame Analysezweier Verbindungen. Was heißt das im Einzelnen?

Stellen Sie sich zwei ’Agenten’ vor, die in ein streng abgesichertes Gebäudeeindringen wollen und dazu den genauen Ablauf der Wachen an unterschied-lichen Standorten beobachten müssen. Bevor Sie beginnen führen beide einenUhrenvergleich durch. Dies geschieht in der von normalen Uhren gewährleis-teten Genauigkeit von 1 Sekunde. Beide Agenten verfügen zudem über Uhrendie auch nach einem Tag nicht mehr als 1 Sekunde voneinander abweichen.Nicht auszudenken was passieren würde, wenn bereits nach mehreren Minu-ten beide Uhren auseinander laufen würden. Anschließend begeben sich beidean Ihre Position.Jeder einzelne notiert den Zeitpunkt (Sekunden genau) des Wachwechsels,Wachganges etc. Da die Beobachtung mehrere Tage in Anspruch nimmt, syn-chronisieren beide Agenten Ihre Uhren erneut indem einer der Agenten exaktum Mitternacht einen kurzen Funkimpuls sendet.

215

Page 226: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 19. ZWEI VERBINDUNGEN AUFZEICHNEN

Für die erfolgreiche Umsetzung ihres Planes ist es unabdingbar jeden Schrittder Wachen Sekunden genau zu kennen.

Das gleiche Szenario, allerdings mit einer weitaus höheren Genauigkeit stelltsich bei der simultanen Aufzeichnung zweier Verbindungen. Der Uhrenver-gleich steht hier für den ’gleichzeitigen’ Start der Aufnahme (wobei gleichzeitighier auf die millionstel Sekunde genau meint).

Die Uhren beider MSB-Analyser sind natürlich um Größenordnungen genauerals die Armbanduhren der beiden Agenten. Nicht desto trotz laufen auch diesebedingt durch kleine Unterschiede in den Schwingquarzen stetig auseinanderund müssen deshalb in regelmäßigen Abständen neu synchronisiert werden.Die MSB-Analyser verwenden deshalb für beides, den simultanen Start der Auf-zeichnungen als auch für die regelmäßige Abstimmung ihrer Uhren eine zu-sätzliche Synchron-Verbindung.Jeder MSB-Analyser besitzt hierfür eine sogenannte ’MSB-Link’ Buchse in RJ45Ausführung. Um zwei Analyser zu synchronisieren werden diese einfach miteinem handelsüblichen Netzwerkkabel (1:1) über diese Buchsen miteinanderverbunden.Es spielt dabei keine Rolle, ob die beiden Analyser an einem gemeinsamenoder an verschiedenen PCs betrieben werden. Die PC’s müssen auch nichteinem gemeinsamen Netzwerk angehören. Die einzige Einschränkung liegt inder Länge des Synchron Kabels mit dem die Geräte verbunden sind.1 Die Syn-chronisierung wirkt sich lediglich auf den Beginn der Aufzeichnung und diegenaue Einhaltung einer gemeinsamen Zeitbasis aus. D.h. die Zeitstempel deraufgenommenen Ereignisse beider Analyser sind auf die millionstel Sekundegenau vergleichbar.

Darüber hinaus arbeiten beide Analyser völlig autark. D.h. Sie können gleich-zeitig unterschiedliche Protokolle und Ereignisse vorgeben und aufzeichnen(Baudrate, Datenformat etc.). Mehr noch: Bei Verwendung eines MSB-RS232und eines MSB-RS485 Analysers können auch RS232 und RS422/485 Verbin-dungen simultan aufgenommen und untersucht werden, beispielsweise Schnitt-stellenwandler etc.

19.2 Master Slave BetriebEs macht wenig Sinn, die Aufzeichnung der synchronisierten Analyser einzelnzu starten. Vor allem, wenn beide Geräte an unterschiedlichen PCs laufen, dieevtl. sogar räumlich getrennt voneinander sind.Start, Pause und Stop der gemeinsamen Aufnahme erfolgen deshalb übereinen zuvor als ’Master’ definierten Analyser.Dieser ist vom Anwender frei wählbar. Der zweite, über das Synchron Kabelverbundene Analyser wird dabei automatisch zum ’Slave’ und steuert seineAufzeichnung simultan zum Master - Mikrosekunden genau.Beide synchronisierten Analyser können so konfiguriert werden, dass die auf-genommenen Daten automatisch bei Aufzeichnungsstop an einem zuvor an-gegebenen Speicherort abgelegt werden. Das kann die lokale Festplatte desmit dem jeweiligen Analyser verbundenen PC’s sein, aber auch ein beliebiges

1Getestet wurden CAT6 Netzwerkkabel mit 100m Länge.

216

Page 227: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

19.3. EINRICHTEN EINER SYNCHRONEN AUFZEICHNUNG

Netzlaufwerk.Die Aufnahmedateien werden dabei nach Seriennummer und Datum/Zeit desAufnahmestarts benannt. Zusätzlich können Sie ihnen aber noch eine beliebi-ge Zeichenkette (Prefix) voranstellen.

19.3 Einrichten einer synchronen AufzeichnungSie haben jetzt eine ungefähre Vorstellung wie eine Synchron-Aufzeichnungvon statten geht. Kommen wir deshalb zum praktischen Teil. Stellen Sie sichvor, Sie haben zwei RS232 Verbindungen, die Sie synchron aufzeichnen wol-len. Der Einfachheit halber erfolgt die Aufzeichnung mit einem einzelnen PC.D.h. beide Analyser sind an einem gemeinsamen PC angeschlossen.

Verbinden Sie zunächst beide Geräte über die Link MSB Buchsen mit einemStandard Netzwerkkabel. Für längere Verbindungen empfehlen wir Netzwerk-kabel der Kategorie CAT-6, allerdings sollten für die meisten AnwendungenCAT-5 Kabel völlig ausreichen.

Warnung!Bitte beachten Sie, das der Analyser nicht per MSB Link Buchse mit einemPC Netzwerk Anschluss verbunden werden darf! Dies hat mit großer Wahr-scheinlichkeit einen Defekt des Gerätes zur Folge!

Starten Sie die Analyser Software über den Desktop Start Icon. Bei mehrerenmit dem PC verbundenen Geräten müssen Sie den gewünschten Analyser auseiner Liste auswählen ("Wähle angeschlossenen Analyser").

Wiederholen Sie den letzten Schritt für den zweiten Analyser.(Die gleiche Vorgehensweise gilt auch bei an getrennten PC’s betriebenenAnalysatoren wobei jeder PC eine Anwendung der Analyser Software startet.)

Platzieren Sie beide Kontrollprogramme (jedes verbunden mit einem Analyser)auf dem Bildschirm.Noch arbeiten beide Geräte völlig unabhängig voneinander. D.h. Sie könnendie Aufzeichnung jedes einzelnen Analysers einzeln starten, pausieren oderstoppen. Da beide Geräte unterschiedliche Verbindungen (mit verschiedenenVerbindungsprotokollen bzw. Verbindungstypen wie RS232 oder RS422/485)aufnehmen können, müssen Sie diese jeweils zunächst konfigurieren. Diesgeschieht analog zur Aufzeichnung einer nicht synchronen Aufnahme. D.h. Siegeben alle nötigen Verbindungsparameter, Auswahl der aufzuzeichnenden Er-eignisse etc. im Einstelldialog, getrennt für beide Analyser, vor.Per Voreinstellung speichern beide Analyser ihre aufgenommenen Daten auf

Aufnahme Speicherortist unter Autospeichernfrei wählbar, z.B. einNetzlaufwerk

dem Desktop, sobald die synchrone Aufzeichnung vom Master (d.h. von Ihnen)gestoppt wurde. Sie können den Speicherort allerdings auch beliebig vorgebenindem Sie im Einstelldialog unter ’Autospeichern’ einen anderes Verzeichnisauswählen.Der Dateiname wird vom Analyser Programm vorgegeben um auch bei wieder-holter Abspeicherung Fehler durch bereits vorhandene Dateien auszuschlie-ßen und später die Dateien einem Analyser einwandfrei zuordnen zu können.

217

Page 228: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 19. ZWEI VERBINDUNGEN AUFZEICHNEN

Die Dateinamen entsprechen folgender Form, hier als Beipiel eine Aufnahmedes Analysers mit der Seriennummer MSB01060, gestartet am 16 April 2014um 15:32,17.

MSB01060-20140416153217.msblog

Sie können diesem allerdings noch eine beliebige Zeichenkette als Prefix vor-anstellen, z.B. MASTER oder SLAVE.

Nachdem Sie beide Geräte konfiguriert haben müssen Sie jetzt nur noch denMaster für die synchrone Aufnahme vorgeben (vorausgesetzt Sie haben beideAnalyser per Netzwerkkabel verbunden).Aktivieren Sie dazu einfach im Einstelldialog des Gerätes, welches die MasterMaster und Slave

Auswahl des AufnahmeMasters

Rolle übernehmen soll, unter Aufnahme die Auswahl ’Analysator ist Master’.In der Anzeige wird über der laufenden Aufnahmezeit das Wort ’Master’ ein-geblendet. Zeitgleich zeigt das mit dem Master verbundene Gerät den Status’Slave’ in seiner Anzeige und deaktiviert die Knöpfe und Menüeinträge zur Auf-zeichnungssteuerung.

Schliessen Sie den Einstelldialog und klicken Sie im Kontrollprogramm desMasters auf den Aufnahmeknopf. Beide Geräte wechseln in den Record Mo-dus, angedeutet durch eine entsprechende Darstellung des Knopfes sowie derroten LEDs am Gerät selbst.Klicken Sie den Pause Knopf des Masters um die Aufnahme beider Gerätepausieren zu lassen.Mit Klick auf den Stop Knopf wird die Aufzeichnung beendet. Beide Analy-satoren, Master und Slave, speichern die evtl. vorhandenen Daten auf IhremDesktop (oder jedem anderen von Ihnen vorgegebenen Verzeichnis).

Sie können den Vorgang beliebig oft wiederholen. Sobald Sie den Aufnahme-knopf erneut klicken, starten beide Analyser eine neue Aufnahme und spei-chern diese bei Stop automatisch als zwei weitere Dateien.

Diese Vorgehensweise unterscheidet sich auch nicht, wenn Sie beide Analysa-toren an ’getrennten’ Rechnern betreiben die eventuell sogar in verschiedenenRäumen stehen. Einzige Bedingung ist eine direkte Verbindung durch das Syn-chron Kabel.

19.4 Auswertung/Analyse einer synchronen AufzeichnungDie MSB-Analyser Software ist darauf optimiert, eine einzelne Aufnahme durchverschiedenste Views zu betrachten (MultiView Konzept). Das Laden mehrererAufnahmedateien (oder Projekte) ist nicht vorgesehen, da zwei oder mehre-re z.T. völlig verschiedene Aufzeichnungen innerhalb einer Anwendung keinenSinn ergeben. Man denke hier nur an Aufnahmen einer RS232 UND RS485Verbindung2.Wie aber nun zwei synchrone Aufnahmen analysieren?

2Letztendlich entspricht eine laufende MSB-Analyser Programmanwendung immer EINERAufzeichnung. Das gleiche gilt im übrigen für Audio und Video Anwendungen.

218

Page 229: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

19.5. ZUSAMMENFASSUNG

Die MSB-Analyser Software erweitert dazu die bereits vorhandene Kommuni-kation zwischen den Views einer einzelnen Anwendung (Sitzung) konsequentauf mehrere, parallel laufende Anwendungen. D.h. so wie die Signaldarstellungdem Cursor des Datenmonitors folgt, folgen bzw. synchronisieren sich auch dieViews zweier getrennt laufender MSB-Analyser Programme.Dies hat eine Reihe von entscheidenden Vorteilen:

Vergleichende Analyse auch völlig unterschiedlicher Aufzeichnungen (Verbin-dungsart, Protokoll, ...).Synchrones Springen und paralleles Einblenden von bestimmten Aufnahmebe-reichen in beiden Aufzeichnungen (z.B. Suche nach Ereignis in AufzeichnungA und Einblendung der zugehörigen Signalsequenz in Aufzeichnung B).Flache Lernkurve, kein neues Bedienkonzept, keine zusätzlichen Menüs.

Die Analyse zweier synchronisierter Aufzeichnungen unterscheidet sich des-halb nicht sonderlich von der Untersuchung einer einzelnen Aufnahme. Stattnur einer laufenden MSB-Analyser Anwendung starten Sie jetzt für die Masterund die Slave Aufnahme einfach zwei getrennte Programme.Zur gemeinsamen Analyse benötigen Sie keinen verbundenen Analyser, dieUntersuchung der Aufzeichnungen kann gewohnt im Offline Modus erfolgen.Klicken Sie dazu einfach nacheinander auf die vom Master und Slave gemach-ten Aufnahmen.Beide Anwendungen bieten Ihnen den gewohnten Zugriff auf die entsprech-ende Aufzeichnung. Die zu einer Aufzeichnung oder Anwendung gehörendenViews synchronisieren ihre Ansichten durch entsprechendes Aktivieren des Sync.Modus in der Werkzeugleiste.

Um die einzelnen Views zwischen BEIDEN laufenden Anwendungen zu syn-chronisieren, müssen Sie dies allerdings zuerst freigegeben. Per Voreinstel-lung sind Views generell gegen Synchron-Ereignisse von außerhalb gesperrt.Die Freigabe erfolgt für alle Views zentral im Einstelldialog des Kontrollpro- Ext. Synchronisierung

aktivieren in denAufnahme Einstellungen

grammes unter ’Allgemein’e Einstellungen. Aktivieren Sie dort den Punkt ’Ex-terne Synchronisation erlauben’.

Mit Freischaltung der externen Synchronisation ’empfängt’ das Kontrollpro-gramm die entsprechenden Mausklicks oder Ereignisse (wie z.B. Suchresul-tate, Regionauswahl, etc.) einer parallel laufender Analyser Anwendungen undreicht diese an ’seine’ geöffneten Views weiter. Jedes View mit aktiver Synch.Einstellung wird auf diese Ereignisse reagieren und seine Darstellung aktuali-sieren.Auf diese Weise können Sie zu jedem Zeitpunkt innerhalb der Master Aufnah- Synchrone Darstellung

der einzelnen Views inbeiden Aufzeichnungen

me den entsprechenden Abschnitt der Slave Aufzeichnung in der von Ihnengewünschten Darstellung (View) einblenden und umgekehrt.

19.5 ZusammenfassungDie vergleichende Aufnahme bzw. Analyse zweier getrennter Verbindungen er-fordert eine sehr genaue zeitliche Referenz um die aufgenommenen Daten undEreignisse in Beziehung zueinander zu setzen.Diese Kapitel zeigte Ihnen warum das so ist, welche technischen Vorausset-zungen erfüllt sein müssen und wie eine solche Aufnahme mit den MSB-Analyser

219

Page 230: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 19. ZWEI VERBINDUNGEN AUFZEICHNEN

durchgeführt wird.Hier noch einmal die nötigen Schritte ohne zusätzlichen technischen Ballast:

Synchrones Aufzeichnen1 Verbinden Sie beide zu synchronisierenden Analyser über die Link MSB Buch-

se mit einem handelsüblichen Netzwerkkabel.2 Schließen Sie beide Analyser gemeinsam oder getrennt an einen bzw. zwei

PC’s an.3 Starten Sie für beide Geräte ein separates MSB-Analyser Programm.4 Stellen Sie für beide Analyser individuell Verbindungsparameter und aufzu-

zeichnende Ereignisse ein.5 Prüfen Sie, ob die automatische Speicherung nach Stop der synchronen Auf-

zeichnung (Einstellung ’Autospeichern’) aktiviert ist und geben Sie ggf. einenSpeicherort vor.

6 Definieren Sie eines der Geräte im Einstelldialog des zugehörigen Program-mes unter ’Aufnahme’ als Master.

7 Starten Sie die Synchron-Aufzeichnung im Master Kontrollprogramm.8 Die Aufzeichnung wird ebenfalls durch den Master beendet wobei die Aufnah-

men automatisch getrennt gesichert werden.

Synchrones Auswerten/AnalysierenZur Auswertung zweier synchron aufgenommener Aufzeichnungen benötigenSie keinen angeschlossenen Analyser. Allerdings müssen beide MSB-AnalyserProgramm Instanzen auf dem gleichen Rechner laufen, da eine Synchronisie-rung der Views nicht über Rechnergrenzen hinweg möglich ist (im Gegensatzzur Synchronisierung der Aufnahme).

1 Doppelklicken Sie nacheinander beide (Master und Slave) Aufzeichnungenbzw. starten Sie zwei MSB-Analyser Programm Instanzen und laden Sie diesein das Kontrollprogramm.

2 Aktivieren Sie in beiden Programmen im Einstelldialog unter ’Allgemein’ denPunkt ’Externe Synchronisation erlauben’.

3 Plazieren Sie beide Kontrollprogramme und die von Ihnen benötigten zugehö-rigen Views auf Ihrem Bildschirm.

4 Navigieren Sie wie gewohnt durch beide Aufzeichnungen. Views in Sync. Mo-dus werden dabei automatisch ihren Inhalt am aktuell untersuchten Zeitab-schnitt ausrichten.

220

Page 231: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20Kommandozeilen API

Sie wollen die Aufzeichnung einer Verbindung automatisierenund die aufgenommenen Daten in Ihrer eigenen Applikationweiter verarbeiten oder in einem bestimmten Format speichernbzw. ausgeben.Eine Langzeitaufnahme soll in mehreren aufeinanderfolgendenDateien gespeichert oder nachträglich aufgesplittet werden.Der Analyser soll von Ihrer Anwendung gesteuern werden.Die MSB-Analyser Software enthält hierzu eine Reihe von leistungs-fähigen Tools.

Nach der Installation der Analyser Software befinden sich im Installationsver-zeichnis neben den Programmen für die Bedienung der MSB-RS232 und Dar-stellung bzw. Analyse der aufgenommenen Daten noch eine Reihe weitererkleiner ’Helferlein’.Alle diese Programme arbeiten per Kommandozeile und können auch als Teilvon Batchdateien oder Shell Skripten verwendet werden.Gemäß der Unix Philosophie: "Mache nur eine Sache und mache sie gut" er-füllt jedes dieser Programme einen bestimmten Zweck. Durch ihre FähigkeitDatenströme aus der Standardeingabe zu lesen und diese auf der Standard-ausgabe wieder ausgegeben zu können, können die Programme zu beliebigenVerarbeitungsketten kombiniert werden.Mehr noch: Sie können sie mit einer Vielzahl weiterer Programme verwenden,die ebenfalls Daten per Standardein/ausgabe verarbeiten können.

Die Programme im Überblick:

msb_recordSteuert den verbundenen Analyser und schreibt alle empfangenen Analyser-daten auf die Standardausgabe oder in eine angegebene Datei.

221

Page 232: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

msb_formatLiest gültige Analyserdaten von der Standardeingabe, formatiert diese undschreibt das Ergebnis auf die Standardausgabe oder in eine Datei.msb_filterDie von der Standardeingabe gelesenen Daten werden nach vorgegebenenRegeln gefiltert und die passierten Daten auf der Standardausgabe wiederausgegeben.msb_splitLiest gültige Analyserdaten von der Standardeingabe und schreibt diese in eineoder mehrere Dateien (splitten).msb_trigger (in Planung)Prüft die von der Standardeingabe gelesenen Daten gegen ein oder mehrerevordefinierte Trigger-Bedingungen. Ist die Trigger-Bedingung erfüllt werden dieDaten an die Standardausgabe durchgereicht, ansonsten verworfen.

20.1 Beliebige Verarbeitungsketten mittels PipesEine Verarbeitungskette besteht immer aus einer Datenquelle und einer Daten-senke (Empfänger). Zwischen beiden können andere Programme den Daten-strom (hier die vom Analyser aufgenommenen Daten) manipulieren. Die Ver-knüpfung der einzelnen Programme erfolgt dabei über den für Windows undLinux identischen Pipe Operator ’|’.

DATENQUELLE | MANIPULATOR1 | MANIPULATOR2 | ... | DATENSENKE

DatenquellenDatenquellen stehen am Anfang einer Vearbeitungskette und ’liefern’ die nö-tigen Daten auf der Standardausgabe, hier vor allem das Tool msb_record .Genauso geeignet ist aber auch die Ausgabe einer bereits vorhandenen Auf-zeichnungsdatei durch das Kommando type (Windows) bzw. cat (Linux). Bei-spielsweise:type recordfile.msblog bzw. cat recordfile.msblog

ManipulatorenAls Manipulatoren werden Programme bezeichnet, die den eingelesenen Da-tenstrom in irgendeiner Form verändern bevor sie diesen wieder ausgeben. Eintypischer Manipulator könnte bestimmte durch den Analyser aufgenommenenEreignisse entfernen oder die Daten in ein anderes Format umwandeln be-vor er diese wieder ausgibt und damit in der Verarbeitungskette weiter reicht.Durch eine Kette mehrerer miteinander verbundener Manipulatoren läßt sichdie Bearbeitung beliebig erweitern oder ergänzen. So könnten zunächst alleunerwünschten Daten entfernt und anschließend der Rest umgewandelt wer-den, z.B. mit dem Tool msb_format.

DatensenkenDatensenken definieren das Ende der Verarbeitungskette. Eine typische Da-tensenke ist die Standardausgabe (die nichts anderes macht, als die empfan-genden Daten auf dem Bildschirm bzw. innerhalb der Kommandokonsole aus-zugeben) oder eine Datei die das Ergebnis der Verarbeitung speichert.Ein Datensenke könnte aber auch Ihre Anwendung sein, indem Sie die Daten

222

Page 233: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.2. AUFZEICHNEN MIT MSB_RECORD

einfach einliest und gemäß Ihren Vorgaben verarbeitet, beispielsweise Lab-View.Bei msb_split handelt es sich um eine typische Datensenke. Die Daten wer-den nicht weiter gereicht sondern als Datei(en) gespeichert.

Ein paar BeispieleDas Programmverzeichnis der MSB-Analyser Software wird während der In-stallation automatisch dem Suchpfad für ausführbare Programme hinzugefügt.Einem ersten Versuch (auch ohne verbundenem Analyser) steht deswegennichts im Wege.Öffnen Sie ein Kommandoeingabefenster (Konsole) und wechseln Sie in dasBeispielverzeichnis examples der Analyser Software.Leiten Sie eine Aufzeichnung aus dem Beispielverzeichnis in das msb_format(pipen). Beispielsweise:

type DataView\9bit.msblog | msb_format

Linux Anwender verwenden natürlich statt dem type Befehl das Kommandocat. type Datei entspricht dabei der Datenquelle, msb_format dem Mani-pulator. Die Ausgabe (der Empfänger bzw. die Datensenke) ist die Konsole diedas Ergebnis auf Ihrem Bildschirm ausgibt.

Verwenden Sie das Tool msb_split um die gleiche Datei in kleine Häppchenzu zerlegen.

type DataView\9bit.msblog | msb_split -n1000

Ohne zusätzliche Parameter generiert das Split Programm zwei Dateien mitden Namen xaa.msblog sowie xab.msblog.Detailierte Informationen zu den einzelnen ’Helferlein’ finden Sie in den folgen-den Abschnitten.

20.2 Aufzeichnen mit msb_recordWie der Name msb_record bereits andeutet ist dieses Tool für die Steuerungund Aufzeichnung der Daten des verbundenen MSB-Analyser zuständig. Gleich-zeitig fungiert es als ’Datenquelle’ für alle anderen Tools.Aufgerufen ohne weitere Parameter sucht das Programm nach einem mit demPC verbundenen Analyser, überträgt nötigenfalls die Firmware und startet eineAufzeichnung, wobei Baudrate und Protokoll mit ’115200 8N1’ und Aufnahmealler übertragenen Datenbytes voreingestellt sind.Sollte das Programm keinen oder mehrere Analyser erkennen, zeigt es diesmit einer entsprechenden Meldung an. In letzterem Fall können Sie einen Ana-lyser gezielt mit Angabe der Seriennummer auswählen.

Die Ausgabe der aufgenommenen Daten erfolgt direkt auf der Standardausga-be um sie weiteren Tools zur Verfügung zu stellen. Ein kleines Beispiel, einge-geben auf der Kommandozeile soll dies verdeutlichen:

msb_record | msb_format

223

Page 234: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

Die vom Analyser aufgenommenen Daten werden mit dem Pipe Operator ’|’direkt an das nächste Programm in der Kommandokette übergeben1. Diesesliest die Daten aus der Pipe, verarbeitet sie und gibt das Ergebnis seinerseitswieder auf der Standardausgabe aus. In diesem Fall - ohne weitere ProgrammParameter - einfach als informelle Liste.

1 3.501328 A "104 0x68 ’h’ "2 3.501414 A "101 0x65 ’e’ "3 3.501501 A "108 0x6C ’l’ "4 3.501588 A "108 0x6C ’l’ "5 3.501675 A "111 0x6F ’o’ "

Um das Programm abzubrechen drücken Sie einfach Strg+C.

Im Allgemeinen werden Sie msb_record entweder in Kombination mit einemanderen Tool verwenden oder die aufgenommenen Daten direkt in eine Dateischreiben. Letzteres können Sie auf zwei Arten erreichen. Entweder indem Siedie Ausgabe in eine Datei umleiten:

msb_record > output.msblog

oder eine Datei als Ausgabeziel angeben:

msb_record -o output.msblog

Verbindungsparameter und EreignisseWir haben das Rekord Tool bisher ohne Berücksichtigung der Verbindungs-eigenschaften aufgerufen und stillschweigend die Standardeinstellungen ver-wendet. Letztere zeichnet zwar alle übertragenen Daten auf, nicht aber diePegelveränderungen der einzelnen Leitungen.Angenommen Sie haben eine Verbindung mit 38400 Baud, 7 Datenbits undeiner geraden Parität. Die Anzahl der Stopbits ist für den Analyser unerheblich,der Vollständigkeit halber nehmen wir hier 2 Stopbits an.Neben den reinen Datenbytes wollen Sie außerdem die Pegelwechsel der Da-tenleitungen (hier RxD, TxD) sowie der Handshakeleitungen RTS und CTS auf-zeichnen. Der Aufruf des Rekorders ist dann:

msb_record --baudrate=38400 --protocol=7E2 --logsignals=2,3,6,7

oder in kurzer Schreibweise:

msb_record -b 38400 -p 7E2 -l 2,3,6,7

Wir werden später eine weitere Möglichkeit zur Parameter Übergabe mittelseiner Konfigurationsdatei kennenlernen. Wichtig an dieser Stelle:Alle Programmparameter müssen VOR einem folgenden Pipe Operator ’|’ ste-hen. D.h.:

msb_record -b 38400 -p 7E2 -l 2,3,6,7 | msb_format

Dies gilt für alle Programme.

1Sie können msb_record natürlich auch alleine aufrufen. Da es sich bei den ausgegebenenDaten um binäre Werte handelt macht dies aber wenig Sinn.

224

Page 235: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.2. AUFZEICHNEN MIT MSB_RECORD

Einbindung in eigene ApplikationenDas ist alles ganz schön, aber wie binden Sie den Analyser nun in Ihrer eigenenAnwendung ein?Folgenden Voraussetzungen müssen dazu erfüllt sein:

1 Aufruf eines beliebigen Kommandos aus Ihrer Anwendung.2 Einlesen einer von einem anderen Prozess geöffneten Datei.

Das klingt zunächst kompliziert, ist es aber nicht.Starten Sie einfach die von Ihnen gewünschte Verarbeitungskette mit dem ent-sprechenden Befehl (Systemaufruf) der von Ihnen verwendeten Anwendungbzw. Programmiersprache. In C zum Beispiel die Funktionen system oderpopen, LabView bietet hierfür das System Exev VI.

Beim Aufruf externer Kommandos gibt es i.a. zwei Möglichkeiten. Der Aufru-fer ’wartet’ auf das Ende des Kommandos oder das Kommando (der Prozess)läuft entkoppelt und unabhängig von dem Aufrufer. Letzteres ist wichtig wennIhre Anwendung nicht auf das Ausführungsende der Verarbeitungskette war-ten möchte (und damit blockiert ist).

Sobald der Rekorder von Ihrer Anwendung gestartet wurde und die aufgenom-menen Daten mit dem von Ihnen gewünschten Format in eine Datei schreibt,können Sie damit beginnen aus die gewünschten Informationen aus letztererzu lesen. Dies kann z.B. zeilenweise geschehen.Je nach Programmiersprache oder Anwendung können Sie die Ausgabe derVerarbeitungskette auch ohne den Umweg über das Schreiben in eine Dateidirekt in Ihre Applikation einlesen.

Im allgemeinen wird die gestartete Verarbeitungskette oder Befehlsfolge auto-matisch beendet, wenn Sie Ihre Anwendung schließen.Es gibt aber noch eine weitere Möglichkeit, den laufenden Rekorder zu beein-flussen.

Remote KommandosDas msb_record Tool enthält zur Kommunikation mit anderen Anwendun-gen eine einfache und leicht umzusetzende Interprozess-Kommunikation diefür beide Plattformen (Linux und Windows) gleichermassen funktioniert.Um einem laufenden Rekord Programm ein Kommando zu übermitteln reichtes aus, msb_record erneut mit dem Parameter ’-r Kommando’ aufzurufen(siehe Programm Parameter), bzw. aus Ihrer Anwendung den entsprechendenBefehl per Systemaufruf aufzuführen.

Öffnen Sie dazu einfach zwei Konsolen (Kommandozeileneingaben) und star-ten Sie in einer eine Aufnahme mit dem Kommando:

msb_record | msb_format

Der angeschlossene MSB-Analyser wird initialisiert und anschliessend auto-matisch die Aufzeichnung gestartet, signalisiert u.a. durch ein permanentesLeuchten der roten LED 1. Es spielt dabei keine Rolle ob am Analyser geradeDaten anliegen.

225

Page 236: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

Wechseln Sie nun in die zweite Konsole und stoppen Sie die Aufzeichnung mit:

msb_record -r stop

Das die laufende Aufzeichnung wirklich gestoppt wurde erkennen Sie an denerneut wechselseitig blinkenden roten LEDs des Analysers.Um die Aufzeichnung fortzusetzen, wiederholen Sie den Aufruf, nun allerdingsmit dem Kommando ’start’:

msb_record -r start

Das Kommando msb_record -r quit beendet das msb_record Programmbzw. die gesamte Verarbeitungskette und schließt die Datei mit den bislang ge-speicherten Daten.

Synchrones Aufzeichnen mit zwei oder mehreren AnalyserJeder MSB-Analyser verfügt über eine sogenannte Link MSB Buchse, mittelsderer die Aufnahmen von zwei oder sogar sogar mehreren Geräten (bei Ver-wendung des IFTOOLS MSB Port-Link Doublers) mit einer Genauigkeit voneiner Mikrosekunde synchronisiert werden können. Wir haben diesen speziel-len Anwendungsfall und seine Vorteile im Detail in Kapitel 19 beschrieben.Synchronisierte Aufzeichnungen sind aber auch mit den Kommandozeilen Toolsmöglich. Wie das geht erklärt der folgende Abschnitt.

Nehmen wir an Sie haben zwei MSB-Analyser und beide sind über die MSBLink Buchsen verbunden. Wenn Sie die grafische Oberfläche verwenden star-ten Sie zunächst eine Anwendung für jeden Analyser. In einem zweiten Schrittwählen Sie einen von beiden als ’Master’. Der zweite Analyser wird dadurchautomatisch zum ’Slave’. Eine korrekte Einstellung vorausgesetzt können Sieanschließend die Aufnahme in der ’Master’ Anwendung starten.

Kommandozeilen Tools arbeiten von Natur aus anders.Das Programm msb_record besitzt weder einen Dialog zur Auswahl von ’Mas-ter’ oder ’Slave’ noch einen Knopf um die Aufzeichnung zu starten wenn beideAnalyser verbunden und betriebsbereit sind. Sie müssen deshalb dem jeweili-gen Analyser per Programm Parameter mitteilen, ob er als ’Master’ oder ’Sla-ve’ arbeiten soll. Und da Sie mehrere Analyser mit Ihrem PC verbunden habenmüssen Sie zusätzlich die Serienummer mit angeben.Beide Kommandos - für den ’Master’ als auch den ’Slave’ - werden in zwei un-abhängigen Programmterminals bzw. DOS Eingabefenstern ausgeführt.

Als erstes geben wir das Aufnahmekommando für den ’Master’ mit der Serien-nummer MSB01000 ein. Der Einfach halber verwenden wir die Voreinstellun-gen und leiten die Ausgabe direkt in das Formatierung-Tool weiter. Bitte denkenSie daran, zuvor die Seriennummer an Ihr eigenes Gerät anzupassen.

msb_record -nMSB01000 --sync-mode=master | msb_format

Sobald Sie das Kommando mit der Enter Taste bestätigen fordert Sie das Pro-gramm auf, ZUERST den ’Slave’ zu starten und DANN die Enter Taste erneut

226

Page 237: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.2. AUFZEICHNEN MIT MSB_RECORD

zu drücken um die Aufzeichnung zu starten. Was bedeutet das denn?

Ein synchrone Aufzeichnung setzt den Austausch bestimmter Informationenzwischen den beiden MSB-Analyser voraus. Insbesondere Zeit relevante Daten.Lassen Sie uns deshalb ein zweites Terminal- bzw. DOS Kommandoeingabe-fenster öffnen und den ’Slave’ starten mit:

msb_record -nMSB02000 --sync-mode=slave | msb_format

Nochmals: Die Seriennummer hier ist nur ein Platzhalter und Sie müssen siemit der S/N Ihres zweiten Gerätes ersetzen!Beide Geräte sind nun aufnahmebereit, angezeigt durch das wechselseitigeBlinken der roten LEDs. Aber noch wichtiger! Der ’Slave’ ist aktiv und wartetnur noch auf die Timing Daten und das Startkommando des Master Gerätes.Wenn alles soweit eingerichtet ist, dann drücken Sie jetzt die Enter Taste imMaster Eingabefenster.Die folgenden zwei Dinge passieren:

1 Der Master überträgt seine korrekte Startzeit an den Slave2.

2 Der Master sendet das Start Kommando und versorgt im weiteren Verlauf denSlave periodisch mit Synchron-Impulsen über das Link Kabel.

Danach laufen beide Kommandos (in beiden Eingabefenstern) unabhängigvoneinander und verhalten sich nicht anders als eine normale (nicht synchrone)Aufnahme. Sie können das Kommando beliebig mit Parametern oder zusätz-lichen Tools erweitern, die Ausgabe in eine Datei schreiben oder in mehrereDateien aufsplitten.Drücken Sie Strg+C in jedem Kommandofenster um die Master bzw. Slave Auf-nahme zu beenden.

Eine synchrone Aufzeichnung fernsteuernDie Durchführung einer synchronen Aufzeichnung per Kommandozeile mag fürkleine oder seltene Anwendungen ausreichen. Davon abgesehen können Siedie Aufzeichnung natürlich auch per Skript starten. Genau hier lauert aber einkleines Problem. Wie können Sie die vom Master erwartete Enter Taste ein-geben wenn das Kommando innerhalb einer Batchdatei oder eines Skriptesausgeführt wird?

Sie können - natürlich - eine Prozess Pipe verwenden und die Enter Tastean den Master Prozess umleiten. Dies ist aber nicht ganz trivial. Zudem gibtes zum Glück noch eine einfachere Lösung: Das Starten der Aufnahme perFernsteuerkommando:Zunächst eine kleine Batchdatei für Windows Anwender:

2Denken Sie daran: Master und Slave müssen nicht zwangsläufig auf dem gleichen Computerlaufen.

227

Page 238: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

1 rem Synchronous record2 echo " { } I n i t i a t e master . . . "3 s ta r t msb_record . exe − i −nMSB01000 −−sync−mode=master −−paused

↪→ −o master . msblog4 timeout 2 >nul5 echo " { } I n i t i a t e s lave . . . "6 s ta r t msb_record . exe − i −nMSB02000 −−sync−mode=slave −o

↪→ s lave . msblog7 timeout 2 >nul8 echo " Star t synchronous record . . . "9 msb_record . exe −r s ta r t

Und hier die Linux Variante:1 # ! / b in / bash2 echo " I n i t i a t e master . . . "3 msb_record − i −nMSB01000 −−sync−mode=master −−paused

↪→ 2>>/dev / n u l l −o master . msblog &4 sleep 25 echo " I n i t i a t e s lave . . . "6 msb_record − i −nMSB02000 −−sync−mode=slave 2>>/dev / n u l l −o

↪→ s lave . msblog &7 sleep 28 echo " S t a r t record "9 msb_record −r s t a r t

Die Vorgehensweise ist für beide Betriebssysteme ähnlich.Als erstes starten wie einen Hintergrundprozess für den Master (Zeile 3) undweisen ihn an, auf ein Start Kommando zu warten, indem wir den Parameter--paused anfügen.Windows (bzw. die DOS Kommandoeingabe) verwendet das start Komman-do, während Linux Anwender einfach ein Kaufmanns-Und ’&’ an die Komman-dozeile anhängen um diese in den Hintergrund zu versetzen. In Linux leiten wirzudem die stderr (2) Ausgabe nach /dev/null um.

Ein im Hintergrund laufender Prozess bedeutet: Die Kommandozeile wird los-gelöst vom dem Skript ausführenden Terminal (oder DOS Fenster) gestartet.Das Kommando kann deshalb nicht blockieren und die Ausführung wird unmit-telbar mit der nächsten Skriptzeile fortgesetzt.Zeile 4 (und 7) stellen der Programm Initialisierung ein paar Sekunden zurVerfügung. Die DOS Kommandoeingabe besitzt keinen entsprechendes ’sleep’Befehl, aber timeout erfüllt denselben Zweck3.Der ’Slave’ wird in Zeile 6 gestartet und ebenfalls als Hintergrundprozess aus-geführt.

Zu diesem Zeitpunkt sind beide Analyser aufnahmebereit und der ’Master’ war-tet lediglich auf den Auslöser. Anstelle einer gedrückten Enter Taste (unmög-lich, da der Prozess von jeglicher Tastatur entkoppelt ist) senden wir ihm inZeile 9 per ’Fernsteuerung’ ein ’start’ Kommando.Beide Aufnahmeprozesse (Master und Slave) laufen anschließend völlig un-

3timeout ist unter XP nicht verfügbar. Eine Alternative um eine Pause von 2s zu simulieren istdas Kommando: ping 127.0.0.1 -n 3 >null

228

Page 239: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.2. AUFZEICHNEN MIT MSB_RECORD

abhängig voneinander. Der Master schreibt seine Daten in die per -o ange-gebene Ausgabedatei master.msblog. Der Slave speichert seine Daten in sla-ve.msblog.Die interne Synchronisation der MSB-Analyser durch das per MSB Link ver-bundene Kabel garantiert, dass die aufgenommenen Ereignisse in beiden Auf-zeichnungen zeitlich mit einer Genauigkeit von einer Mikrosekunde überein-stimmen.

msb_record Programm ParameterDer Aufruf des Programmes erfolgt mit:

msb_record [OPTION]...

[OPTION] kann ein oder mehrere der folgenden Programm Parameter enthal-ten. Wenn keine Parameter angegeben werden, werden die Programmvorga-ben verwendet, die Ausgabe erfolgt auf der Standardausgabe.Um einem laufenden Hintergrundprozess ein Kommando zu schicken, reichtdie Angabe des Kommandos in Verbindung mit dem Remote Parameter ’-r’aus.

Argument Beschreibung

-b Rate--baudrate=Rate

Baudrate der aufzunehmenden Verbindung.

-c--config-file=file

verwende Einstellungen aus der angegebenen Konfi-gurationsdatei.

-C--create-config-file

erzeugt die Konfigurationsdatei msb_tools.configim aktuellen Verzeichnis.

-d--device=port

verwende ausschließlich Analyser an dem angege-benen seriellen Port.

-h--help

Ausgabe aller verfügbaren Programmparameter.

-i--initiate

Übertragen der Firmware auch wenn sie bereits gela-den ist.

--io1=operation Verwendung des Hilfskanals IO1 (nur MSB-RS485).Folgende Werte sind erlaubt:0 : Eingang mit Pull Down1 : Ausgang statisch 02 : Ausgang statisch 13 : Ausgabe der Busrichtung4 : Ausgabe der Bus Gültigkeit5 : Ausgabe CHN1 gültig6 : Ausgabe CHN2 gültig7 : Ausgabe CHN3 gültig8 : Ausgabe CHN4 gültig9 : Eingang mit Pull Up

229

Page 240: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

--io2=operation Verwendung des Hilfskanals IO2 (nur MSB-RS485).Werte siehe IO1 oben.

-l--log-signals=list

Leitungssignale, die vom Analyser aufgezeichnet wer-den sollen. Die Leitungen werden von 1...8 durchnum-meriert so wie sie im Display Kontrollprogramm ange-zeigt werden. Z.B. -l 2,3 oder --log-signals=2,3,6,7.

-L--logic-mode

Schaltet die Eingänge auf Logiksignalpegel um (nurMSB-RS232), Vorgabe sind RS232 Signalpegel.

--memory-test führt einen interen Speichertest des angeschlossenenAnalysers aus.

--nice=niceness Der nice Parameter steuert den Verbrauch der CPULeerlauf Zeit. Gültige Werte sind 0...10. Ein Wert von0 bedeutet annähernd 100% CPU (Last) Zeit, die Vor-einstellung ist 1. Ein Wert von 0 ist nur bei sehr ho-her Datenrate und Datenlast zu empfehlen. Z.B. mitmsb_record --nice=0

-n Seriennummer--serno=serno

Verwendet den Analyser mit der angegebenen Serien-nummer serno.

--output-buffering Aktiviert die interne Ausgabepufferung. Die vom Ana-lyzer aufgenommenen Ereignisse werden dabei gepuf-fert und nicht sofort in den Ausgabekanal geschrie-ben. Dies erhöht die Performance vor allem bei Ver-bindungen mit hohen Datentransraten und vermeidetLücken in der Aufzeichnung.Beachten Sie, das bei aktivierter Pufferung die Ereig-nisse nicht sofort in das nächste Glied der Kommando-kette gereicht werden, z.B. wenn Sie die aufgenomme-nen Daten in einer Konsole per msb_format ausgeben.

-o Datei--output-file=Datei

Datei, in welche die Ausgabe erfolgen soll. Default istdie Standardausgabe (Konsole).

--paused Startet den verbundenen Analyser im Pause Modus.Die Aufnahme startet erst nach Empfang eine remotestart Kommandos.

-p Protokoll--protocol=Protokoll

Protokoll der aufzunehmenden Verbindung als Komm-bination aus Anzahl Datenbit (5...9), Parität (N)one,(E)ven, (O)dd, (0)off, (1)on, und Stopbit (1,2). Z.B. 8N1oder 7E2.

-r Befehl--remote=Befehl

sendet einem bereits laufenden Programm den ange-führten Befehl. Folgende Kommandos werden unter-stützt:quit beendet Hintergrundprozessstart setzt eine zuvor gestoppte Aufnahme fortstop stoppt die Aufzeichnung.

230

Page 241: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.3. FORMATIERTE AUSGABE MIT MSB_FORMAT

--show-serials Zeigt alle am PC verfügbaren seriellen Ports.

--show-analyzers Zeigt alle am PC angeschlossenen MSB-Analyser.

--sync-mode=mode Wählt die Betriebsart (autonom, master, slave) desAnalysers für synchrone Aufzeichnungen. Die Vorga-be ist autonom.

-t Zahl--time-delay=Zahl

Verlangsamt den Transfer der Firmware um die ange-gebenen Zahl (Vorgabe ist 0, d.h. keine Verzögerung,bis maximal 100.

-u--unique-file

Speichert die aufgenommenen Daten im aktuellenVerzeichnis in einer Datei mit eindeutigem Datei-namen der Form YYYYMMDD-HHmMMmSSs.msblog,z.B. 20110324-03h04m41s.msblog.Dieser Parameter ist vor allem bei einem automati-schen Aufzeichnungsstart nach (Re)boot des Rech-ners interessant.

-v--verbose

Verbose, Ausgabe zusätzlicher Informationen.

-V--version

Ausgabe der Programmversion.

-w Anschluss--wiring=Anschluss

Setz den Bus Anschluss (nur MSB-RS485). FolgendeWerte sind erlaubt:0 : 2-Draht Abgriff1 : 2-Draht Segment2 : 4-Draht Abgriff3 : 4-Draht Segment

20.3 Formatierte Ausgabe mit msb_formatmsb_format erlaubt die Formatierung der Analyserdaten nach Ihren Anfor-derung, beispielsweise als CSV (Komma separierte Liste). Ohne Parametererhalten Sie eine Liste der aufgetretenen Ereignis mit Angaben zum Zeitpunkt,Ereignistyp, Datenbyte oder Leitungsstatus. Dies entspricht dem Formatbe-zeichner ’I’ und ist die Voreinstellung.

Sie können dies jederzeit ändern, indem Sie dem Programm eine eigenene’Formatanweisung’ per Parameter -F bzw. --format= übergeben. Alle aufdiesen folgende Zeichen werden als Formatdefinition gewertet. Ein Leerzei-chen bzw. generell alle sogenannten ’Whitespace’ Zeichen wie Tabs oder En-ter beenden den Formatstring. Wenn Sie ein Leerzeichen als Teil der Ausgabedefinieren wollen, müssen Sie dies quoten. Wie das geht erfahren Sie im Ab-schnitt 20.3.Wir beschränken uns hier zunächst auf den einfachen Fall und wollen lediglichdas Datenbytes nebst zugehörigem Zeitstempel ausgeben. Dabei soll in jederZeile die Zeit in Sekunden und das Datenbyte stehen, getrennt durch ein Kom-

231

Page 242: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

ma. Der entsprechende Formatstring4 lautet: T,B

Wir werden im folgenden eine Aufzeichnungsdatei als Datenquelle verwenden.Damit brauchen Sie für die folgenden Beispiele keinen angeschlossenen Ana-lyser. Unabhängig von der Datenquelle ist die Arbeitweise identisch und gilt soauch für Aufnahmen mit msb_record.Öffnen Sie (wieder) ein Kommandofenster und wechseln Sie in das DataViewVerzeichnis (i.a. msb-VERSION/examples/DataView). Geben Sie anschlie-ßend folgenden Befehl ein:

type modbus-ascii.msblog | msb_format -FT,B

Die Ausgabe sieht wie folgt aus:

...5633.304127,485633.305162,705633.306197,575633.307226,135633.308261,10

In der Ausgabe kann jederzeit zwischen einer ASCII Darstellung und einer bi-nären Ausgabe gewechselt werden. Letztere ist vor allem dann sinnvoll, wennSie die Daten in eine Datei schreiben und durch eine andere Applikation ein-lesen wollen. Eine umständliche Konvertierung der ASCII Darstellung in nativeProgrammtypen wie double oder integer kann dadurch entfallen.Der Formatbezeichner % aktiviert die binäre Ausgabe während @ wieder aufASCII (die Voreinstellung) zurück schaltet. Beispielsweise gibt der folgendeAufruf alle Zeichen in ihrem eigentlichen Wert aus.

type modbus-ascii.msblog | msb_format -FT,%B@

Beachten Sie, dass bei der binären Ausgabe kein Zeilenumbruch erfolgt. In die-sem Beispiel schalten wir deshalb nach der binären Ausgabe des Datenbyteswieder in den ASCII Modus zurück.

...5633.304127,05633.305162,F5633.306197,95633.307226,5633.308261,

Zeilenumbruch im ASCII Modus abschaltenUm die Ausgabe im ASCII Modus lesbarer zu machen wird am Ende immerein Zeilenumbruch angehängt. Sie können dieses Verhalten aber deaktivie-ren, indem Sie das Programm mit dem Parameter —disable-linefeed aufrufen,oder den Formatstring mit % (Binärmodus) beenden.

4Eine Auflistung aller Formatbezeichner finden Sie in der Tabelle Format Parameter.

232

Page 243: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.3. FORMATIERTE AUSGABE MIT MSB_FORMAT

Ausgabe mit beliebigen ZeichenSie wollen per Formatstring ein nicht druckbares Zeichen einfügen, oder einvom System unabhängigen Zeilenumbruch festlegen5.Verwenden Sie den Formatbezeichner #ddd um ein beliebiges Zeichen zu de-finieren, was an Stelle des Bezeichners ausgegeben werden soll. Um die Aus-gabe der einzelnen Werte durch ein Tabulator zu trennen, geben Sie diesenals Dezimalwert 9 ein. Beispielsweise:

type modbus-ascii.msblog | msb_format -FT#009B#009S

Oder: Separieren der einzelnen Werte durch jeweils ein Leerzeichen (Space,Dezimalcode 32):

type modbus-ascii.msblog | msb_format -FT#032#032S

Um unter Windows einen Zeilenumbruch mit einem einzelnen Linefeed zu rea-lisieren, geben Sie diesen als Dezimalwert (010) vor und Aktivieren zur Unter-brückung der im ASCII Modus voreingestellten systemabhängigen Zeilenum-bruchsequenz am Schluss den Binärmodus:

type modbus-ascii.msblog | msb_format -FT#009B#009S#010%

Der Zeichenwert muss immer mit drei Dezimalstellen (0...9) erfolgen. Abwei-chende Stellenanzahl oder falsche Eingaben in Form von ungültigen Dezimal-zahlen führen zu einer Fehlermeldung.

Ausgabe in DateiSie können die Ausgabe jederzeit in eine Datei umlenken. Rufen Sie dazu dasProgramm mit dem zusätzlichen Parameter ’-o Dateiname’ auf.In der Datei landen nur die per Formatstring definierten Ausgaben, keinerleiStatusmeldungen oder Zusatzinformationen die Sie eventuell per Programm-parameter angegeben haben.Eine einfache Ausgabe in eine Datei erfolgt mit:

type modbus-ascii.msblog | msb_format -FT#009B#009S#010% -o test.log

Format ParameterDie folgenden Bezeichner sind als Format Parameter definiert. Beachten Sie,dass hier nicht aufgeführte Zeichen genauso ausgegeben werden. Ausnahmensind Whitespace Zeichen (d.h. alle Leerzeichen, Tabs, Enter), die als Ende desFormatstrings gewertet werden.(Für ein Leerzeichen in der Ausgabe verwenden Sie #032, die Ausgabe einesTabulators erreichen Sie mit #009).

Bez. Bedeutung Beschreibung

% Binary Flag Schaltet für alle folgenden Parameter die binäreAusgabe ein.

5 Unter Linux werden Zeilen mit einem einfachen Linefeed beendet, während Windows eineCarridge Return/Linefeed Kombination verwendet.

233

Page 244: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

@ Ascii Flag Schaltet für alle folgenden Parameter die ASCIIAusgabe ein.

#ddd Zeichen Ausgabe eines beliebigen auch nicht druckbarenZeichens, angegeben als 3-stelliger Dezimalwert.Erlaubter Wertebereich ist 0...255. Z.B. ZeilenendeCarridge Return mit #013.

[...] [format] Ausgabe des Zeitstempels in einem Benutzer defi-nierten Format. Weitere Information hierzu findenSie im Abschnitt 20.3.

a Änderung Zeigt die Änderung in den Signalleitungen imVergleich zum letzten Ereignis. Z.B. bedeutet+TxD -RTS ein Wechsel der TxD Leitung aufeinen positiven Signalpegel und ein Wechsel derRTS Leitung auf einen negativen Signalpegel.

A Alle Signalpegel Status bzw. Veränderung aller Signale in einemrepräsentativen Textformat wie im Ereignismonitordargestellt. Z.B.:-^DCD,^^TxD,^^RxD,^^DSR,-^DTR,^^CTS,^^RTS,-^RI

b Data-Byte Ausgabe des aufgenommenen Datenbytes als 8Bit Wert. In ASCII wird der Wert als 2 stellige Hexa-dezimalzahl mit führenden Nullen dargestellt. Z.B.41 für das Zeichen ’A’.

B Data-Byte Wie ’b’, allerdings wird der Wert im ASCII Modeals Dezimalzahl. Z.B. 65 für das Zeichen ’A’ oder10 für Linefeed.

d Datum/Uhrzeit Datum und Uhrzeit des aufgetretenen Ereignissesim ISO Format YYYY-MM-DD HH:MM:SS (ASCIIAusgabe). Im Binärmodus erfolgt die Ausgabe als32 Bit Zahl mit Angabe der verstrichenen Sekun-den seit dem 1 Januar 1970, 00:00:00 UTC (Unix-zeit).

D Excel Datum Datum als Tage seit dem 1.1.1900. Ausgabe als 32Bit Wert (binär) oder Dezimalzahl (ASCII).

e Error Übertragungsfehler. Fehler werden im ASCII Mo-dus als Buchstabe gekennzeichnet: ’F’rame’,’P’arity’ oder ’B’reak’. In Binary als 8 Bit Wert(0:kein Fehler, 1:Frame, 2:Parity, 3:Break).

i Info Informelle Ausgabe, vor allem zu Testzwecken.Verwenden Sie ausschließlich diesen Parameter,wenn Sie die vom Formater eingelesenen Datenüberprüfen wollen.

234

Page 245: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.3. FORMATIERTE AUSGABE MIT MSB_FORMAT

l Logik-Pegel Der aktuelle logische Leitungsstatus. Ein gesetz-tes Bit entspricht einem logischen Pegel von 1. DieBitzuordnung entspricht der Signalreihenfolge imKontrollprogramm. Bit 0 ist das erste (linke) Signal,Bit 7 das letzte (rechte) Signal im Display.Die Ausgabe erfolgt entweder als 8 Bit Wert (Bi-närmode) oder als 2-stelliger Hexadezimalwert mitführenden Nullen. So bedeutet ’7F’ das alle Signa-le mit Ausnahme von Signal 8 einen logischen ’1’Pegel aufweisen.

L Logik-Pegel Siehe ’l’. Im ASCII Mode erfolgt die Ausgabe alsDezimalwert. So entspricht 127 dem obigen hex7F und ein Wert von 255 bedeutet einen logischen’1’ Pegel für alle Leitungen.

M Millisekunden Zeitstempel des Ereignisses in Millisekunden re-lativ zum aktuellen Tag. Ausgabe als 32 Bit Wert(binär) oder als Dezimalzahl im ASCII Modus.

o dt zuletzt Ausgabe der verstrichenen Zeit seit dem letztenEreignis in Sekunden als Dezimalzahl mit 6 Nach-kommastellen oder als 8 Byte Wert (double) im Bi-närmodus.

O dt gleichen Typs Ausgabe der verstrichenen Zeit seit dem letztenGLEICHEN Ereignis in Sekunden als Dezimalzahlmit 6 Nachkommastellen oder als 8 Byte Wert(double) im Binärmodus.

P Position Laufender Ereigniszähler beginnend mit 0. Ausga-be binär als 32 Bit Wert, in ASCII als Dezimalzahl.

s Datenstatus Die Ausgabe ist abhängig vom Datentyp. Handeltes sich um ein übertragenes Datenbyte enthät esin den unteren 9 Bit den Wert des aufgezeichnetenDatenbytes. Die oberen 7 Bits sind 0.Im Falle einer aufgezeichneten Leitungsänderungenthalten die oberen 8 Bit den ’logischen’ Zustandder jeweiligen Leitung. Die unteren 8 Bit repräsen-tieren den Gültigkeitszustand der einzelnen Leitun-gen. Siehe auch Formatparameter ’l’ und ’v’ sowieAbschnitt 12.4. Daten oder Status werden als 4-stelliger Hexwert mit führenden Nullen im ASCIIModus ausgegeben (z.B. F12E). Im Binärmoduserfolgt die Ausgabe als 16 Bit Wert.

S Source Quelle oder Richtung des Datenbytes. Port A=1,Port B=2, (0 wenn es sich um kein Datenereignishandelt). Die Ausgabe erfolgt als Dezimalzahl inASCII oder als 8 Bit Wert im Binärmodus.

235

Page 246: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

t Ereignistyp Art des Ereignisses, im ASCII Modus bezeichnetals: A (Daten Port A), B (Daten Port B), L (Ände-rung des Leitungspegel). Im Binärmodus Ausgabeals 8 Bit Wert im Bereich [0...2].

T Zeitstempel Mikrosekunden genauer Zeitstempel des Ereignis-ses relativ zum Start der Aufzeichnung. Ausgabein Sekunden als Fliesskommazahl mit 6 Nachkom-mastellen (ASCII) oder als 8 Byte Fliesskomma-wert mit doppelter Genauigkeit (double).

u usec Anteil Mikrosekundenanteil des Ereigniszeitstempels. In-teressant um die Datum/Uhrzeit Ausgabe mit denMikrosekunden zu ergänzen. So liefert das Format-Fd+u 2012-04-11 15:57:40+184935. IM Bi-närmodus erfolgt die Ausgabe als 32 Bit Wert.

v Valid-Pegel Der aktuelle Güligkeitsstatus der einzelnen Signal-leitungen bitweise kodiert. Leitungen mit einemkorrekten Pegel enthalten ein gesetztes Bit. DieAusgabe erfolgt als 8 Bit wert im binären Modus,oder als 2-stelliger Hexadezimalwert mit führen-den Nullen in ASCII. Z.B. ’FF’ wenn alle Leitungeneinen gültigen Pegel besitzen.

V Valid-Pegel Siehe ’v’. Im ASCII Modus erfolgt die Ausgabe alsDezimalwert. Sind alle Leitungen gültig (alle Bitsgesetzt) entspricht dies einem ’255’.

w Data-Word Berücksichtigt bei der Ausgabe der Datenbytesauch 9-Bit Datenübertragungen. Im Binärmoduswerden die Datenbytes als 16 Bit Werte geschrie-ben.Im ASCII Modus erfolgt die Ausgabe als 3 stelligeHexadezimalzahl mit führenden Nullen dargestellt,z.B. 105

W Data-Word Siehe ’w’. Die Ausgabe der aufgenommenen Da-tenbytes in ASCII erfolgt hier als Dezimalzahl, z.B.261.

x1...8 signal level Ausgabe des Tri-State Signalpegels individuel-ler Signalleitungen. Die Signalnummer 1...8 ent-spricht der Signalfolge im Kontrollprogramm. DerSignalstatus wird als -1, 0, oder 1 in ASCII bzw.als vorzeichenbehafteter 8 Bit Wert im Binärmodusausgegeben.

Benutzerdefinierte DatumausgabeEine zwischen zwei eckigen Klammern eingeschlossene Zeichenkette wird alsspezielle Datum und Uhrzeit Formatanweisung behandelt. Sie erlaubt die Aus-

236

Page 247: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.3. FORMATIERTE AUSGABE MIT MSB_FORMAT

gabe von Datum und Uhrzeit des Ereignisstempels individuell nach Ihren Vor-gaben. Ein Beispiel:

type modbus-ascii.msblog | msb_format -F"[%d.%m.%Y %H:%M:%S],u#115"

liefert:

27.08.2010 09:41:04,303098s27.08.2010 09:41:04,304127s27.08.2010 09:41:04,305162s27.08.2010 09:41:04,306197s27.08.2010 09:41:04,307226s27.08.2010 09:41:04,308261s...

Das msb_format Programm unterstützt die nachfolgenden Formatparameterfür Anwender spezifische Datum/Zeit Ausgaben. Jeder Parameter wird mit ei-nem % eingeleitet.Beachten Sie! Bei Verwendung in einer Batch Datei6 müssen Sie das % dop-pelt eingeben, da Sie sonst einen ’Invalid format parameter’ Fehler erhalten.Der Grund: Das % Zeichen wird von dem Windows Kommando Interpreter in-tern zur Referenzierung der Skript Argumente benutzt.Obiges Beispiel:

type modbus-ascii.msblog | msb_format -F"[%d.%m.%Y %H:%M:%S],u#115"

muss in einer Batch Datei deshalb geändert werden zu:

type modbus-ascii.msblog | msb_format -F"[%%d.%%m.%%Y %%H:%%M:%%S],u#115"

Beachten Sie!Da der Kommando-Interpreter in Windows wie auch in Linux das Leerzeichen(hier zwischen Datum und Uhrzeit) als Trennzeichen zwischen zwei Parame-tern interpretiert, müssen Sie den Formatstring ’quoten’, d.h. in Gänsefüß-chen einschliessen.

6Dies betrifft ausschließlich Windows

237

Page 248: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

Parameter Beschreibung

%a abgekürzter Name des Wochentages

%A ausgeschriebener Name des Wochentages

%b abgekürzter Name des Monats

%B ausgeschriebener Name des Monats

%c Datum und Uhrzeit Repräsentation gemäß den Systemein-stellungen

%d Tag des Monats als Zahl [01...31]

%e Monatstag als Dezimalwert mit vorangestelltem Leerzeichenbei einstelligen Werten [ ’ 1’...’31’ ]

%H Stunde im Bereich [00...23]

%I Stunde im Bereich [00...12]

%j Tag des Jahres als Zahl [001...366]

%m Monat als Zahl [01...12]

%M Minute als Dezimalwert [00...59]

%p die Zeit in ’a.m.’ oder ’p.m.’ Notation

%S Sekunden als Dezimalwert [00...59]

%T aktuelle Zeit, genau wie %H:%M:%S

%U Nummer der Woche des aktuellen Jahres als Dezimalwert[00...53], beginnend mit dem ersten Sonntag als erstem Tagder ersten Woche [01]

%w Wochentag als Zahl [0...6], beginnend mit Sonntag

%W Nummer der Woche des aktuellen Jahres [00...53], begin-nend mit dem ersten Montag als erstem Tag der ersten Wo-che

%y Jahr als 2-stellige Dezimalzahl [00...99]

%Y Jahr als 4-stellige Dezimalzahl inklusive des Jahrhunderts

%Z Zeitzone, Name oder eine Abkürzung, z.B. CEST

%% das % Zeichen

msb_format Programm ParameterDer Aufruf des Programmes erfolgt mit:

msb_format [OPTION]...

[OPTION] kann ein oder mehrere der folgenden Programm Parameter enthal-ten. Wenn keine Parameter angegeben werden, werden die Programmvorga-

238

Page 249: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.4. DATENAUSGABE FILTERN MIT MSB_FILTER

ben verwendet (Format -FI), die Ausgabe erfolgt auf der Standardausgabe.

Argument Beschreibung

-c Datei--config-file=Datei

Verwende die angegebene Konfigurationsdatei.

--disable-linefeed Zeilenumbruch unterdrücken.

-F Format--format=Formatstring

Ausgabeformat Definition, siehe Format Tabelle.

-h--help

Ausgabe aller verfügbaren Programmparameter.

-o Datei--output-file=Datei

Datei, in welche die Ausgabe erfolgen soll. Defaultist die Standardausgabe (Konsole).

-s list--signal-names=list

Pass a comma separated list of signal names foruse in the output. For instance:--signal-names=DCD,RxD,TxD,DSR,DTR,CTS,RTS,RI

names all signals according to the RS232 DCEstandard names.

--signal-rs232-dte Predefined signal list. Names all signals accordingto RS232 DTE.

--signal-rs232-dce Predefined signal list. Names all signals accordingto RS232 DCE.

--signal-rs485 Predefined signal list for use with the RS485 analy-zer. Names all signals as like:--signal-names=CH1,CH2,CH3,CH4,BDIR,BSIG,IO1,IO2

-v--verbose

Verbose, Ausgabe zusätzlicher Informationen.

-V--version

Ausgabe der Programmversion.

20.4 Datenausgabe filtern mit msb_filterIn der Regel werden Sie dieses Tool verwenden um aus einer bereits vorhan-denen Aufzeichnung (*.msblog) einen bestimmten Bereich, nur bestimmte Er-eignisse, oder eine Kombination von beiden zu extrahieren.Beispielsweise wenn Sie lediglich die übertragenen Datenbytes ohne die mitaufgenommenen Änderungen der Leitungspegel weiter verarbeiten möchten.

Wie alle Tools liest msb_filter die zu filternden Daten aus der Standardein-gabe und gibt die gefilterten Daten auf der Standardausgabe wieder aus. Esist entspricht damit einem Filter zwischen Ein- und Ausgabe. Welche Datendurchgeleitet werden, geben Sie per Programm Parameter an.

type recordfile.msblog | msb_filter [Filterparameter] ...

239

Page 250: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

Beachten Sie, das Sie zumindest einen Filterparameter angeben müssen, dadas Programm nur die Daten durchreicht, die per Parameter frei gegeben wur-den7. Ohne Angabe eines Filter Parameters werden alle Daten blockiert.

Daten filternDie folgende Kommandokette filtert aus der Datei modbus-ascii.msblogim examples/DataView Verzeichnis alle (an Port A und B) empfangenenDatenbytes und speichert diese als neue Aufzeichnungsdateidata-only.msblog.

type modbus-ascii.msblog | msb_filter -A -B > data-only.msblog

Genauso gut können Sie die Ausgabe von msb_filter zur formatierten Aus-gabe direkt an das msb_format Programm weiter reichen.

type modbus-ascii.msblog | msb_filter -A -B | msb_format

Bestimmte Leitungsereignisse herausfilternNeben den Daten könnnen Sie auch die aufgezeichneten Leitungsänderun-gen einzelner Leitungen herausfiltern. Z.B. wenn Sie alle Signaländerungenaufgenommen haben, aber nur an den Daten und den Handshake LeitungenRTS/CTS interessiert sind.Die Auswahl der von msb_filter durchgereichten Signale erfolgt als Kom-ma separierte Liste und entspricht dem --log-signals Parameter des Toolsmsb_record.

type modbus-ascii.msblog | msb_filter -A -B --pass-signals=6,7 | msb_format

Obige Kommandokette extrahiert zusätzlich zu den übertragenen Daten dieSignaländerungen der Leitungen 6 und 7 (bei RS232 Verbindungen i.a. RTSund CTS).

Einen Aufzeichnungsabschnitt filternMit dem weiter unten beschriebenen msb_split können Sie eine Aufzeich-nungsdatei in einzelne ’kleinere Häppchen’ zerlegen. Was aber, wenn Sie le-diglich an einem ganz bestimmten Ausschnitt der Aufzeichnung interessiertsind? Z.B. an den ersten oder letzten 100000 Ereignissen. Oder an allen Er-eignissen innerhalb eines bestimmten Zeitabschnitts?Das Tool msb_filter enthält zwei zusätzliche Parameter zur Definition einesAbschnittes:

1 --pass-selection=pos1,pos2

pos1 und pos2 spezifizieren die Ereignisnummer des ersten und letzten Ereig-nisses welches durchgereicht werden soll (pass). Beispiel:type modbus-ascii.msblog | msb_filter --pass-all --pass-selection=300,310

2 --pass-time=time1,time2

time1 und time2 definieren Begin und Ende des Abschnittes in Sekunden. DieAngabe erfolgt als Fliesskommazahl und einer gewohnten Auflösung in Mikro-sekunden.

7Linux Anwender verwenden natürlich statt dem type Befehl das cat Kommando.

240

Page 251: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.4. DATENAUSGABE FILTERN MIT MSB_FILTER

type modbus-ascii.msblog | msb_filter --pass-all --pass-time=3.04,3.05

Filter durchgängig schaltenPer Voreinstellung ’blockiert’ das Filter Tool alle Daten. Bei der Definitioneines bestimmten Bereiches müssen Sie deshalb entweder die durchzurei-chenden Ereignisse explizit auflisten, oder mit dem Parameter --pass-alldas Filter für alle Ereignisse komplett ’durchlässig’ schalten.

msb_filter Programm ParameterDer Aufruf des Programmes erfolgt mit:

msb_filter [OPTION]...

[OPTION] kann ein oder mehrere der folgenden Programm Parameter enthal-ten. Es muss zumindest ein Filter Parameter angegeben werden.

Argument Beschreibung

-a--pass-all

Keine Filterung, alle Daten und Ereignisse werdendurchgereicht.

-A--pass-dataA

Nur die Daten empfangen an Port A (MSB-RS232)bwz. Channel 1 (MSB-RS485) werden durchge-reicht.

-B--pass-dataB

Nur die Daten empfangen an Port B (MSB-RS232)bwz. Channel 2 (MSB-RS485) werden durchge-reicht.

-c--config-file=file

verwende Einstellungen aus der angegebenen Kon-figurationsdatei.

-h--help

Ausgabe aller verfügbaren Programmparameter.

--pass-all-signals Alle Leitungsänderungen dürfen passieren.

--pass-signals=list Liste der Signale deren Änderungen durchgereichtwerden sollen. Die Signale sind von 1...8 durchnum-meriert, ihre Reihenfolge entspricht der Anzeige imKontrollprogramm. Z.B.--pass-signals=2,3,6,7.

-s--pass-selection=list

Durchleitung alle Ereignisse die in dem an-gegebenen Bereich liegen. Der Bereich istdefiniert als erste und letzte Ereignisnum-mer. Beispielsweise reicht -s 100,200 oder--pass-selection=100,200 die Ereignisse abPosition 100 bis 200 durch.

241

Page 252: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

-t--pass-time=list

Durchleitung aller Ereignisse die in dem angege-benen Zeitbereich liegen. Der Zeitbereich ist inSekunden (Auflösung in Mikrosekunden) anzuge-ben. Das folgende Beispiel -t 10.257,20.213leitet alle Ereignisse durch, die in der Zeit zwisch-en 10.257s und 20.213s nach Beginn der Aufzeich-nung aufgetreten sind.

-v--verbose

Verbose, Ausgabe zusätzlicher Informationen.

-V--version

Ausgabe der Programmversion.

20.5 Aufzeichnungen splitten mit msb_splitBei der Aufzeichnung mit dem MSB-RS232 Analyser können schnell recht großeDatenmengen entstehen. Dies gilt vor allem dann, wenn auf der Suche nachFehlern in einer Datenkommunikation der Fehler tagelang nicht auftritt und ei-ne Aufzeichnung im Fifo Modus aus bestimmten Gründen nicht möglich ist.msb_split liest eine Rekorddatei von der Standardeingabe und zerlegt die-se in kleinere Aufzeichnungsdateien, wobei Sie Größe und Bezeichnung perProgramm Parameter vorgeben können.

Bestehende Rekorddatei splittenSie haben eine GByte große Rekorddatei und wollen diese in handlichereStücke splitten, zumal Sie lediglich an den letzten Ereignissen in der Aufzeich-nung interessiert sind.Öffnen Sie dazu eine Konsole (unter Windows Eingabeaufforderung) und wech-seln Sie in das Verzeichnis, welches die Rekorddatei enthält.Geben Sie folgendes Kommando ein:

type record.msblog | msb_split -n1000000

Mit type wird die angegebene Rekorddatei auf der Standardausgabe ausge-geben und durch den Pipe Operator ’|’ in die Standardeingabe des msb_splitProgrammes geleitet.

Linux Anwender verwenden statt des type Programmes den cat Befehl.

Je nach Größe der Ausgangsdatei record.msblog teilt msb_split diese inmehrere 1000000 ∗ 24 + 3072 große Dateien. Jede Datei (mit Ausnahme derletzten) enthält 1000000 Ereignisse, je 24 Byte umfassend, plus einen Headervon 3072 Bytes. Im aktuellen Verzeichnis befinden sich eine Reihe von neuenmsblog Dateien der Form:

xaa.msblog, xab.msblog, xac.mbslog, ...

242

Page 253: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.5. AUFZEICHNUNGEN SPLITTEN MIT MSB_SPLIT

Sie können jede dieser Datei einzeln mit der MSB-RS232 Analyser Softwareuntersuchen, indem Sie diese einfach in das Programm laden oder diese dop-pelklicken.Per Voreinstellung nummeriert das Programm alle Dateien alphabetisch miteinem vorangestellten ’x’. Sie können dieses Verhalten jederzeit durch Anga-be eines entsprechenden Programm Parameters ändern. Für eine 3stellige,numerische Numerierung verwenden Sie die Parameter -a und -d (siehe Pro-gramm Parameter unter 20.5).

type record.msblog | msb_split -a3 -d -n1000000

Als Resultat erhalten Sie nun: x000.msblog, x001.msblog, ...

Das führende ’x’ können Sie durch einen eigenen Prefix ersetzen, indem Siediesen als letzten Parameter an den Programmaufruf anhängen. Also:

type record.msblog | msb_split -a3 -d -n1000000 Test

Die resultierenden Dateien beginnen nun mit: Test000.msblog, Test001.msblog,usw.

Diese Art der Numerierung sagt natürlich wenig über den eventuell wichtigenZeitabschnitt der einzelnen Dateien aus. Alternativ zu einer alphabetischenoder numerischen Benennung der Dateien können Sie auch Datum und Uhr-zeit des Auftretens des ersten Ereignisses in der jeweiligen Splitdatei angege-ben. Der Parameter hierfür lautet -D.

type record.msblog | msb_split -D -n1000000 Projekt-

Die erzeugten Dateien haben damit sinngemäß folgende Bezeichnungen:

Projekt-20110510_15h53m24s.msblogProjekt-20110510_15h58m31s.msblogProjekt-20110510_16h02m10s.msblog...

Wenn Sie keinen Prefix bevorzuge, hängen Sie einfach einen ’leeren’ Stringals letzten (PREFIX) Parameter an:

type record.msblog | msb_split -D -n1000000 ""

und erhalten:

20110510_15h53m24s.msblog20110510_15h58m31s.msblog20110510_16h02m10s.msblog...

Laufende Aufzeichnung von msb_record splittenDa das msb_split Programm seine Daten aus der Standardeingabe liest,können Sie auch die Ausgabe des msb_record Tools als Datenquelle ver-wenden und die aufgenommenen Ereignisse quasi sofort in kleine Häppchen

243

Page 254: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

unterteilen. Dies ist z.B. sinnvoll, wenn Sie sehr lange und vor allem sehr großeAufzeichnungen planen und diese erst später untersuchen müssen.

msb_record -b115200 -p8N1 | msb_split -a4 -d -n1000000

msb_split Programm ParameterDer Aufruf des Programmes erfolgt mit:

msb_split [OPTION]... [PREFIX]

[OPTION] kann ein oder mehrere der folgenden Programm Parameter enthal-ten. Wenn keine Parameter angegeben werden, werden die Programmvorga-ben verwendet.[PREFIX] ist eine optional und frei wählbare Zeichenkette, die dem Datei-namen vorangestellt wird. Vorgabe ist das Zeichen ’x’.Alle Parameter können in einer kurzen Schreibweise (ein Buchstabe mit einemführenden Bindestrich, erste Zeile) oder in der Langform (zweite Zeile) ange-geben werden.

Argument Beschreibung

-a Länge,--suffix-length=Länge

Anzahl der zu verwendenden Zeichen für denNumerierungs-Suffix. Vorgabe ist 2 Zeichen.

-c Datei--config-file=Datei

Verwende die angegebene Konfigurationsdatei.

-d,--numeric-suffix

Die Dateinamen werden numerisch benannt, dieVorgabe ist alphabetisch.

--dir=directory Ausgabe der gesplitteten Dateien in dem angege-benen Verzeichnis.

-D,--date-time-suffix

Die Dateinamen werden mit dem Datum und derUhrzeit des ersten Ereignisses in der Datei im For-mat YYYYMMDD_HHhMMmSSs versehen.

-h--help

Ausgabe aller verfügbaren Programmparameter.

-n,--number=Anzahl

Anzahl der Ereignisse pro ausgegebener Datei. Je-des Ereignis umfasst 24 Byte.

-t,--split-time=Sekunden

Aufgenommenen Daten in neuer Datei ablegen alleangegebene Sekunden.

-v--verbose

Verbose, Ausgabe zusätzlicher Informationen.

-V--version

Ausgabe der Programmversion.

244

Page 255: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.6. EINE AUFZEICHNUNG TRIGGERN MIT MSB_TRIGGER

20.6 Eine Aufzeichnung triggern mit msb_triggerLangzeitaufzeichnungen in Verbindung mit den Kommandozeilen Tools dienenoft dazu, bestimmte und selten auftretende Ereignisse zu finden die zu Fehlernin der Kommunikation führen. Dies können z.B. plötzlich nicht mehr reagieren-de Busteilnehmner sein, ausgelöst durch ungültige Telegramme oder fehler-hafte Telegramminhalte.Es ist offensichtlich, dass solche Ereignisse nicht einfach per Suchmuster (Da-tensequenz) detektiert werden können. Betrachten wir dazu einen Modbus Teil-nehmer, der unerwartet (und auch nur einmal alle Stunden oder Tage) mit einerFehlermeldung antwortet. Obgleich in Modbus Fehlermeldungen in zwei Byteskodiert werden (Adress Byte, gefolgt von Fehlernummer), kann diese Sequenzauch innerhalb des Telegramminhalts (Payload) beliebiger anderer Telegram-me auftreten. Eine Trigger Bedingung ist aber nur dann wahr, wenn die ge-suchten beiden Bytes an Anfang eines (Modbus RTU) Telegramms stehen.

Da es eine Unmenge unterschiedlichster Protokolle gibt verwendet das Toolmsb_trigger den gleichen Ansatz wie der Protokollmonitor. Ein integrierterLua Skript Interpreter erlaubt die Formulierung beliebiger - auch sehr komple-xer - Trigger Bedingungen, bei der normale ’Suchmechanismen’ chancenlossind.Das msb_trigger Programm folgt dabei den Regeln aller anderen Komman-dozeilen Tools. Sie können es zur Triggerung einer aktuellen (laufenden) Auf-zeichnung verwenden mit:

msb_record | msb_trigger script.lua > record.msblog

Oder Sie extrahieren einen für Sie interessanten Abschnitt (spezifiziert durcheine Trigger Bedingung) aus einer bereits vorhandenen Aufzeichnung:

type record.msblog | msb_trigger script.lua > result.msblog

(Linux Anwender verwenden das cat Kommando anstelle von type).

Beachten Sie bitte!Um die Kommandozeilen Beispiele möglichst einfach zu halten verzichten wirauf alle zusätzlichen msb_record Parameter.Sie können die Ausgabe (das Resultat) des msb_trigger Programms in an-dere Tools wie z.B. dem Formater (msb_format) oder Splitter (msb_split)weiterleiten.Die Datei script.lua enthält die in Lua formulierte Trigger Bedingung alsFunktion trigger(). Diese arbeitet ähnlich der Funktion split() im Proto-kollmonitor und wir werden diese im folgenden genauer betrachten.

Eine Trigger Bedingung definierenStandardmäßig leitet das msb_trigger Tool alle von der Standardeingabegelesenen Datenereignisse (generiert von msb_record oder aus einer exis-tierenden Aufzeichnung) an die im Skript definierte Lua Funktion trigger.

1 function t r i g g e r ( data , i n t v a l , d i r , a l t e r )2 −− r e t u r n t rue i f the t r i g g e r c on d i t i o n occurred3 end

245

Page 256: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

Die trigger Funktion wird separat für jede Datenrichtung aufgerufen. Da dieDaten einzelner Telegramme auf eine Datenrichtung beschränkt sind, machtdies die Datenverarbeitung deutlich einfacher.Neben den Datenbytes (9 Bit) werden auch die verstrichene Zeit zum vorheri-gen Datenbyte, die Datenrichtung sowie eine eventuelle Änderung der Daten-richtung an die trigger() Funktion übergeben. Nachfolgend die Aufzählungaller Funktionsparameter:

1 data→ das aktuelle Datenbyte (9 Bit)2 interval → (kurz intval), die verstrichene Zeit zum letzten Byte in Sekunden

(Mikrosekunden Genauigkeit)3 direction → (kurz dir), die Richtung oder Quelle (Absender) des aktuellen Da-

tenbytes. 1=Data A, 2=Data B.4 alternation → (kurz alter), true wenn sich die Datenrichtung seit letzten Aufruf

geändert hat

Sie können jeden einzelnen Parameter nach eigenen Vorgaben umbenennen.Wichtig ist nur, das die Reihenfolge der Parameter eingehalten wird. Es ist au-ßerdem erlaubt, unnötige Parameter wegzulassen, sofern danach keine weite-ren Parameter verwendet werden. (Die Reihenfolge muss von links nach rechtsgewährleistet sein!).

Beginnen wir mit einem einfachen Beispiel. Das folgende Lua Skript löst eineAufzeichnung aus, sobald in einer Modbus ASCII Übertragung ein Telegrammunvollständig endet. Anstelle eines CR LF (Carriage Return, Line Feed) wirddas Telegramm mit einem einzelnen CR beendet.

1 las tBy te=−12 function t r i g g e r ( data )3 i f l a s tBy te == 0x0D and data ~= 0x0A then4 −− t r i g g e r5 return true6 end7 las tBy te = data8 return fa lse9 end

Über ein innerhalb der trigger Funktion verfügbares event Objekt könnenSie zusätzliche Informationen über das aktuelle Ereignis (Datenbyte oder Lei-tungsänderung) abrufen. Z.B. den Zeitpunkt (Time Stamp) des Datenbytes so-wie die aktuellen Leitungspegel.Das event Modul wird detailiert im Protokollmonitor Kapitel 13.7 beschrieben.Es ist besonders nützlich, wenn Sie eine Aufzeichnung bei Auftreten eines be-stimmten Leitungspegels oder Änderung eines solchen triggern wollen.Um Ihnen eine Idee davon zu vermitteln löst das folgende Skript eine Aufzeich-nung bei fallender Flanke des DTR Signals aus.Dabei wird bei jeder detektierten Leitungsänderung der Pegel des DTR Si-gnals mit Hilfe des event Moduls ermittelt (mögliche Tri-State Pegel -1, 0 und+1) und mit dem gespeicherten letzten Leitungspegel verglichen.

1 −− the DTR s i g n a l number2 DTR = 43 −− here we s to re the l a s t DTR l i n e s ta te4 l a s t _ d t r = −1

246

Page 257: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.6. EINE AUFZEICHNUNG TRIGGERN MIT MSB_TRIGGER

5 function t r i g g e r ( )6 local d t r = event . l e v e l ( DTR )7 −− check f o r a f a l l i n g edge8 i f d t r == −1 and l a s t _ d t r == 1 then9 −− t r i g g e r

10 return true11 end12 l a s t _ d t r = d t r13 return fa lse14 end

Da das msb_trigger Tool per Default nur Datenereignisse an die triggerFunktion übergibt, müssen Sie den verarbeitenden Ereignistyp bzw. die TriggerQuelle per Kommandoparameter auf --trigger-source=signal ändern.msb_record | msb_trigger --trigger-source=signal script.lua > record.msblog

Pre und Post TriggerWie bereits erwähnt liegt der Hauptzweck des msb_trigger Tools darin, dieMenge der aufgenommenen Daten auf die unmittelbar interessanten Bereicheeiner Aufzeichnung zu reduzieren und das Analysieren unnötig großer Daten-mengen zu vermeiden.Wie viele Daten vor und nach einer Trigger Bedingung zur Auswertung benö-tigt werden hängt vom jeweiligen Anwendungsfall ab. msb_trigger erlaubtIhnen deshalb, beide frei zu definieren. Der Parameter --pre-trigger gibtdabei die Anzahl der vorherigen Daten bzw. Ereignisse an, die bei Auslösendes Triggers mit aufgezeichnet werden. Interessant vor allem dann, wenn dieKommunikation vor der Trigger Bedingung herangezogen werden muss.Der Parameter --post-trigger definiert die der Daten/Ereignisse, die nachausgelöster Triggerung noch folgen (siehe Abschnitt Programm Parameter 20.7).Die Aufnahme wird damit nach einer definierten Anzahl beendet und verhindertdie Aufzeichnung weiterer, nicht benötigter Daten.

Auch hier ein Beispiel: Nehmen wir an, Sie suchen nach einem Fehler in einerModbus RTU Kommunikation, bei welcher ein Teilnehmer eine falsche Prüf-summe (CRC16 checksum failure) meldet.Das folgende Trigger Skript zerlegt den eintreffenden Datenstrom in einzelneModbus RTU Telegramme, indem es die Inaktiv (Idle) Zeiten zwischen den ein-zelnen Datenbytes auswertet. Modbus RTU spezifiziert eine Idle Zeit von 3.5Byte (die Zeit, die zur Übertragung von 3.5 Byte benötigt wird) als TelegrammTrennung. Im Falle einer größeren inaktiven Pause (idle time) enthält die glo-bale Variable seq (Zeile 2) das komplette Telegramm.

Modbus RTU verwendet eine 16 Bit CRC16 Prüfsumme die in den letzten bei-den Bytes eines Telegramms übertragen werden. Das Lua Skript testet zu-nächst die Telegrammlänge (Zeile 7) auf mindestens 2 Bytes (um den Zugriffauf nicht vorhandene Daten zu vermeiden), und vergleicht anschließend dieletzten beiden Bytes mit der berechneten Prüfsumme. Die Funktion triggerliefert true wenn die Trigger Bedingung zutrifft, d.h. die empfangene Prüfsum-me nicht der berechneten entspricht.

1 −− represents the ac tua l te legram2 seq = " "

247

Page 258: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

3 function t r i g g e r ( data , i n t v a l , d i r , a l t e r )4 i f i n t v a l > p ro toco l . bytepause ( 3.5 ) then5 −− seq represents the cu r ren t telegram , t e s t checksum6 −− read 16 b i t ckecksum of cu r ren t te legram7 i f #seq >= 2 then8 loca l cks_ is = seq : byte (−1) ∗ 256 + seq : byte (−2)9 loca l cks_must = checksum . crc16_modbus ( seq : sub(1 ,−3) )

10 i f cks_ is ~= cks_must then11 return true12 end13 end14 −− s t a r t a new telegram sequence15 seq = " "16 end17 −− add the cu r ren t data byte to the ac tua l te legram sequence18 seq = seq . . s t r i n g . char ( data )19 return fa lse ;20 end

Sie finden das entsprechende Skript im examples/API Verzeichnis.Modbus RTU Telegramme sind auf eine maximale Länge von 256 Bytes limi-tiert. In unserem Beispiel wollen wir mindestens 10 Telegramme vor und nachdem Telegramm mit der ungültigen Prüfsumme aufzeichnen. Dies gibt uns einePre- und Post-Trigger Anzahl von 2560.

msb_record | msb_trigger --pre-triger=2560 --post-trigger=2560←↩script.lua > record.msblog

Beachten Sie, das es sich bei obiger Eingabe um eine Zeile handelt die nurzur Übersicht hier umgebrochen wird (←↩ kennzeichnet den Zeilenumbruch).

Trigger Ausschnitt aus Aufzeichnung extrahierenDas msb_trigger Programm dient nicht nur zur Auslösung einer aktiven Auf-zeichnung. Sie können damit genauso gut eine bereits gemachte Aufzeich-nung nach bestimmten Ereignissen durchsuchen und das Ergebnis zur späte-ren Analyse als neue Aufzeichnung abspeichern.Der Aufruf des msb_trigger Tools ist identisch. Sie müssen lediglich dasmsb_record als Datenquelle durch die Ausgabe der entsprechenden Auf-zeichnung ersetzen. Also:type record.msblog für Windows Anwender oder cat record.msblogfür Linux User. Im Falle des vorherigen Beispiels (Windows):

type modbus-rtu.msblog | msb_trigger --pre-triger=2560 ←↩--post-trigger=2560 script.lua > record.msblog

Eine Aufzeichnung nach bestimmten Ereignissen durchsuchenStellen Sie sich vor, Sie wollen wissen ob in einer aktiven Übertragung odereiner bereits gemachten Aufzeichnung falsche Prüfsummen - oder generell ir-gendwelche Fehler - vorhanden sind. Sie wollen aber keine neue Aufzeichnunganalysieren, sondern das Resultat Ihrer Prüfung (Zeit und/oder Nummer desentsprechenden Telegramms) direkt auf dem Bildschirm sehen.Das msb_trigger Tool bietet einen speziellen Parameter --debug der Ihnennicht nur dabei hilft, Ihr Skript zu testen. Er dient zudem als ’Schalter’ um dieAusgabe der aufgenommenen Ereignisse im Falle einer Trigger Auslösung zu

248

Page 259: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.6. EINE AUFZEICHNUNG TRIGGERN MIT MSB_TRIGGER

unterdrücken und damit einen Mix aus eigenen Ausgabeanweisungen und bi-nären Ereignisdaten zu vermeiden.

Kommen wir auf unser Modbus RTU Prüfsummen Beispiel zurück. Wir wollennun nach Telegrammen mit ungültiger Prüfsumme suchen und das Ergebnisin Form der Telegrammzeit zusammen mit der übertragenen (falschen) underwarteten CRC16 Prüfsumme ausgeben.Zunächst die entsprechende trigger Funktion:

1 −− a Lua s t r i n g represen t ing the l a s t rece ived data o f one channel2 seq = " "3 −− conta ins the t ime stamp of the f i r s t byte o f the cu r ren t te legram4 t s = 056 function t r i g g e r ( data , i n t v a l , d i r , a l t e r )7 i f a l t e r or i n t v a l > p ro toco l . bytepause ( 3.5 ) then8 −− seq represents the cu r ren t telegram , t e s t checksum9 −− read 16 b i t ckecksum of cu r ren t te legram

10 i f #seq >= 2 then11 loca l cks_ is = seq : byte (−1) ∗ 256 + seq : byte (−2)12 loca l cks_must = checksum . crc16_modbus ( seq : sub(1 ,−3) )13 i f cks_ is ~= cks_must then14 p r i n t ( s t r i n g . format ( "%6 f \ t i s :%04X, must:%04X" ,15 ts , cks_is , cks_must ) )16 end17 end18 −− s t a r t a new telegram sequence19 seq = " "20 −− s to re the telegram time21 t s = event . t ime ( )22 end23 −− add the cu r ren t data byte to the ac tua l te legram sequence24 seq = seq . . s t r i n g . char ( data )25 −− don ’ t stop pars ing26 return fa lse27 end

Ganz wichtig! Da Sie nicht wollen, das die Verarbeitung der eingehenden Da-ten bei der ersten Triggerung (falsche Prüfsumme erkannt) aufhört muss dietrigger Funktion IMMER false zurück geben (Zeile 26). Ansonsten been-det sich das Programm ohne Ausgabe. Der Grund: Der --debug Parameterschaltet die normale Ausgabe der empfangenen Daten ab und alle per Luaprint Anweisungen gemachten Ausgaben werden nicht mehr vollendet, da dasProgramm zuvor beendet wird.Sie können das obige Skript selber testen. Öffnen Sie dazu einfach ein Termi-nal (Linux) oder Kommando Eingabe/Fenster (Windows) in dem examples/APIVerzeichnis und geben Sie folgendes ein:

type Modbus-RTU-wrong-checksum.msblog | msb_trigger ←↩--debug scan-modbus-wrong-checksum.lua

Das Kommando sollte folgende Ausgabe produzieren:

727.232679 is:982E, must:972E904.113558 is:50A5, must:50A6949.962685 is:528C, must:508C

249

Page 260: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

Die verwendete Modbus RTU Aufzeichnung enthält drei Telegramme mit un-gültiger Prüfsumme, aufgetreten an den angegebenen Zeiten. Die übertrageneund falsche CRC16 Prüfsumme is als ’is’ bezeichnet, die erwartete (berechne-te) als ’must’. Sie können die Aufzeichnung jederzeit in die Analyzer Softwareladen und die entsprechenden Telegramme überprüfen.

Ein Skript zur Triggerung und SucheBis hierhin haben wir die folgenden Anwendungen kennengelernt:

1 Wie Sie eine Aufzeichnung triggern2 Wie Sie Trigger Ereignisse aus einer Aufzeichnung extrahieren3 Wie Sie eine Aufzeichnung nach bestimmten Ereignissen durchsuchen

Der dritte Punkt verwendet dabei die eingebaute Debug Funktionalität desmsb_trigger Tools. Das Problem hierbei: Code der die Debug Funktion ver-wendet, d.h. mit --debug aufgerufen wird und eigene Ausgaben per Lua printmacht, kann nicht zur Triggerung einer Aufzeichnung verwendet werden.Der Grund: Zunächst wird per --debug Parameter die Weitergabe der von derStandardeingabe gelesenen Ereignisse (generiert durch msb_record oderAusgabe einer gemachten Aufzeichnung) unterdrückt und damit die Generie-rung einer korrekten Analyzer Aufzeichnungsdatei unterbunden. Stattdessenerfolgt die Ausgabe individueller Information (z.B. durch Lua print Anweisun-gen) in einem nicht kompatiblen Analyzer Aufzeichnungsformat - was in die-sem Fall auch beabsichtigt ist.Die Konsequenz ist: Zwei unterschiedliche Skripte, eins zur Triggerung undeins zur Suche bzw. Testen. Auch im Falle eher einfacherer Skripte eine dochunbefriedigende Lösung.

Im folgenden Abschnitt zeigen wir Ihnen deshalb, wie Sie diese verschiedenenAnwendungsfälle trotzdem in EINEM Skript realisieren können.Dreh- und Angelpunkt ist dabei der Programm Parameter --debug. Bei Auf-ruf des msb_trigger Tools mit diesem Parameter erfolgt die Ausgabe in ei-nem nicht kompatiblen, individuellen Format. Mit Wissen um diesen Parameterkönnten wir im Skript eigene Ausgaben per Lua print (de)aktivieren und denRückgabewert der trigger Funktion (true oder false) steuern.

Genau zu diesem Zweck definiert msb_trigger die globale Variable DEBUG.Sie ist true bei Programmaufruf mit übergebenem --debug Parameter, an-sonsten false. Damit ist es recht einfach, Code für beide Anwendungsfälle(Auszeichnungs-Triggerung oder individuelle Ausgabe) in einem Skript zu ver-einen. Hier erneut unser Modbus RTU Beispiel:

1 −− a Lua s t r i n g represen t ing the l a s t rece ived data o f one channel2 seq = " "3 −− conta ins the t ime stamp of the f i r s t byte o f the cu r ren t te legram4 t s = 05 −− the t r i g g e r f u n c t i o n6 function t r i g g e r ( data , i n t v a l , d i r , a l t e r )7 i f i n t v a l > p ro toco l . bytepause ( 3.5 ) then8 −− seq represents the cu r ren t telegram , t e s t checksum9 −− read 16 b i t ckecksum of cu r ren t te legram

10 i f #seq >= 2 then11 loca l cks_ is = seq : byte (−1) ∗ 256 + seq : byte (−2)

250

Page 261: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.6. EINE AUFZEICHNUNG TRIGGERN MIT MSB_TRIGGER

12 loca l cks_must = checksum . crc16_modbus ( seq : sub(1 ,−3) )13 i f cks_ is ~= cks_must then14 i f DEBUG then15 p r i n t ( s t r i n g . format ( "%6 f \ t i s :%04X, must:%04X" ,16 ts , cks_is , cks_must ) )17 else18 return true19 end20 end21 end22 −− s t a r t a new telegram sequence23 seq = " "24 −− s to re the telegram time25 t s = event . t ime ( )26 end27 −− add the cu r ren t data byte to the ac tua l te legram sequence28 seq = seq . . s t r i n g . char ( data )29 return fa lse ;30 end

Die entscheidende Code ist in Zeile 14. Hier prüfen wir bei erkannter Trigger-oder Such-Bedingung, ob das Skript mit dem Programm Parameter --debugaufgerufen wurde. Wenn ja, erfolgt die individuelle Ausgabe der Telegramm-zeit sowie der empfangenen und erwarteten CRC16 Prüfsumme (Zeile 15).Anschliessend kehrt die Funktion mit false zurück (Zeile 29) um eine weitereVerarbeitung der empfangenen Daten zu gewährleisten.Bei nicht gesetzter DEBUG Variable (false) signalisiert die Funktion einfach einegefundene Trigger Bedingung indem es true zurück gibt (Zeile 18). Eine indivi-duelle Ausgabe, die sich mit den eigentlichen Aufzeichnungsdaten vermischenwürde findet dadurch nicht statt!Sie finden das kombinierte Skript wie alle anderen auch im examples/APIVerzeichnis.

Mehrfaches TriggernBislang haben wir uns bei der Triggerung einer Aufzeichnung nur auf einmaligeTrigger Ereignisse beschränkt. Sobald die per Trigger Skript formulierte Bedin-gung eintrat, wurde eine Aufzeichnung mit der gegebenen Anzahl von Pre- undPost-Trigger Ereignissen erzeugt und das Programm bzw. die Verarbeitungs-kette beendet.In den meisten Fällen ist dies auch ausreichend. Was aber, wenn Sie mehrereTrigger Ereignisse in einer einzelnen Aufzeichnung sammeln möchten?Das Programm Argument --multi-trigger deaktiviert die einmalige Trig-gerung. Statt dessen fährt das Tool msb_trigger mit der Verarbeitung weite-rer Daten fort. Sobald die im Skript definierte Trigger-Bedingung wieder zutrifft,wird erneut die per Pre- und Post-Trigger angegebene Anzahl von Ereignissenin die gleiche Ausgabedatei geschrieben.Die resultierende Aufzeichnungs-(Record)-Datei enthält nun mehrere Daten-segmente mit den jeweils aufgetretenen Trigger Ereignissen. Die einzelnenDatenabschnitt sind dabei durch eine Aufzeichnungslücke definiert durch dieZeit zwischen den Triggerungen und der gewählten Anzahl von Pre- und Post-Trigger Ereignissen getrennt.Das msb_trigger Tool markiert diese Grenzen durch spezielle ’Gap’ Ereig-nisse. Im Datenmonitor werden diese als zwei aufeinander folgende gelbenDatenfelder angezeigt, siehe das folgende Bild:

251

Page 262: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

Die schwarz umrandeten Felder markieren die Trigger Bedingung. Hier wurdenach dem Auftreten der Datensequenz ’hello’ gesucht. (Wir haben die schwar-zen Umrandungen zum besseren Verständnis eingefügt. In der reallen Aufzei-chung existieren diese nicht). Immer zu sehen sind allerdings die gelben Fel-der, die den Anfang und das Ende des zu einem Trigger Ereignis gehörendenDaten- oder Ereignisbereichs markieren. Alle innerhalb der ’gelben’ Lücken-markierungen liegenden Ereignisse gehören zusammen und sind ein- und der-selben Triggerbedingung zugeordnet. Sie können einzelne Triggersequenzen(Abschnitte) jederzeit einfach per Ereignismonitor in separaten Aufzeichnungs-dateien speichern.

Ein typischer Aufruf von msb_trigger für mehrfaches Triggern sieht wie folgtaus:msb_record | msb_trigger --pre-trigger=100 --post-trigger=100←↩--multiple-trigger multitrigger.lua > test.msblog

Die Anzahl der Pre- und Post-Trigger Ereignisse ist dabei mit jeweils 100 spe-zifiziert. Die Trigger Bedingung wird - wie üblich - per Lua Skript angegeben,hier multitrigger.lua.

Noch ein Wort zum Trigger Skript selbst.Im Gegensatz zu einem Skript für einmaliges Triggern müssen Sie bei mehr-fachem Triggern dafür sorgen, das Ihre im Skript definierte Trigger Bedingungnach erfolgter ’Triggerung’ zurückgesetzt wird. Das folgende Beispiel zeigt das.Es triggert bei einer bestimmten Datensequenz, hier ’hello’ für Kanal 1 (A) und’world’ für Kanal 2 (B).

1 −− a Lua s t r i n g represen t ing the l a s t rece ived data o f one channel2 seq = " "3 −− the t r i g g e r f u n c t i o n4 function t r i g g e r ( data , i n t v a l , d i r , a l t e r )5 −− channel A uses " h e l l o " , channel B " wor ld "6 local pa t t e rn = { " h e l l o " , " wor ld " }7 −− add the data to the s tored s t r i n g / sequence8 seq = seq . . s t r i n g . char ( data )9 −− l i m i t the s ize f o r a b e t t e r search performance

10 i f #seq > 2048 then seq = seq : sub ( −32, −1 ) end11 −− check i f the a l ready rece ived bytes conta in the given pa t t e rn12 i f seq : f i n d ( pa t t e rn [ d i r ] ) then13 −− MATCHED!

252

Page 263: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.7. MSB_TRIGGER SPEZIFISCHE LUA ERWEITERUNGEN

14 −− NOTE! We must c l ea r the sequence b u f f e r f o r the next mu l t i−t r i g g e r !

15 seq = " "16 −− t r i g g e r i s t r ue17 return true18 else19 return fa lse20 end21 end

Das Skript bzw. die Funktion trigger hängt dabei in Zeile 8 jedes eintreffen-de Datenbyte an den internen Puffer seq an. Anschließend prüft es in Zeile12, ob der Puffer das gesuchte Muster (’hello’ oder ’world’, je nach Kanal oderDatenrichtung) enthält. Sobald dies zutrifft, ist die Trigger Bedingung erfüllt.Bei einmaligem Triggern reicht es, den Wert true zurück zu geben. BetrachtenSie nun aber den Fall, das die Funktion bei mehrfachem Triggern erneut aufge-rufen wird. In diesem Fall enthält der interne Puffer seq immer noch die bereitszuvor zur Triggerung führende Datensequenz. Die Funktion liefert erneut trueobwohl noch keine weitere ’hello’ oder ’world’ Sequenz empfangen wurde.Um dies zu verhindern, müssen Sie den Trigger Mechanismus zurücksetzen.Hier bedeutet das: Sie müssen den internen Puffer löschen, bevor Sie true zu-rück geben. Wir machen dies in Zeile 15.Generell ist es ratsam, im Skript die Trigger Bedingung bei erfolgter Triggerungkorrekt zu reseten, unabhängig davon, ob die das Skript für einmaliges odermehrfaches Triggern verwenden.

20.7 msb_trigger spezifische Lua ErweiterungenDas msb_trigger Programm teilt nutzt eine Reihe von Modulen des Proto-kollmonitors. Diese sind im folgenden aufgelistet:

base16 Modul : Funktionen zur Codierung und Dekodierung von base16 Se-quenzen (i.a. verwendet in Modbus ASCII und Intel SRecord Telegrammen),siehe Protokollmonitor, Abschnitt 13.7.

checksum Modul : Das Checksum Modul enthält fertige Berechnungsalgo-rithmen für Modbus RTU (CRC16), Modbus ASCII (LRC), BACNet (CRC8 undCRC16), DNP3 sowie CRC16 CCITT (Kermit), siehe Protokollmonitor, Anschnitt13.7.

event Modul : Das event Modul ist nur innerhalb der trigger Funktion verfügbarund liefert zusätzliche Informationen zum aktuell empfangenen Datenereignis,siehe Protokollmonitor, Abschnitt 13.7.

protocol Modul : Liefert Informationen zur aktuell verwendeten Baudrate, An-zahl der Daten-, Stopbits und Parity, siehe Protokollmonitor, Abschnitt 13.7.

shared module : Wie der Protokollmonitor verwendet auch das msb_triggerProgramm zwei unabhängige Lua Interpreter zur Aufsplittung der Telegram-me, getrennt nach Datenrichtung. Der Grund für dieses Implementierungsde-tail und wie Sie Daten zwischen beiden Interpretern austauschen können er-klärt der folgende Abschnitt 13.7 im Protokollmonitor Kapitel.

Alle Module können in gleicher Weise wie im Protokollmonitor verwendet undvon überall aufgerufen werden. Die einzige Ausnahme ist das event Modul.Dieses ist nur innerhalb der trigger Funktion verfügbar.

253

Page 264: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

msb_trigger Programm ParameterAufruf des Programms mit: msb_trigger [OPTION]... trigger-script

[OPTION] kann einen oder mehrere der folgenden Programm Parameter bein-halten. Bei nicht angegebenem Parameter werden die Default Einstellungenverwendet. trigger-script ist ein Lua Skript welches die eigentliche Trig-ger Bedingung formuliert.Einige der Parameter können in einer Kurzform (einzelnes Zeichen mit voran-gestelltem Bindestrich) oder in einer Langform mit zwei vorangestellten Binde-strichen verwendet werden.

Parameter Beschreibung

-c Datei--config-file=Datei

Verwende die angegebene Konfigurationsdatei.

-h--help

Ausgabe aller verfügbaren Programmparameter.

--debug Aktiviert den Debug Modus.

--multi-trigger Das msb_trigger Programm stoppt nicht nachAuftreten der ersten Triggerung sondern fährt mitder Verarbeitung und Suche nach weiteren Trig-ger Bedingungen fort.

--pre-trigger=events Gibt die Anzahl der Ereignis VOR dem Trigger-punkt an, welche mit ausgegegben werden sol-len, sobald eine Trigger-Bedingung eintritt. DieVoreinstellung ist 4096 Ereignisse (Daten sowieSignalereignisse).

--post-trigger=events Gibt die Anzahl der Ereignisse an, die NACH demTriggerzeitpunkt noch ausgegeben werden sol-len. Voreingestellt ist keine Begrenzung, d.h. dieDatenausgabe erfolgt bis zum Stop der Aufnah-me.

--trigger-source=source Die Art der Ereignisse, die an das TriggerSkript übergeben werden. Voreingestellter Wertist data (Datenereignisse). Sie können aberauch nach bestimmten Signalbedingungen trig-gern. In diesem Fall verwenden Sie signal alsTrigger Quelle (source).

-v--verbose

Verbose, Ausgabe zusätzlicher Informationen.

-V--version

Ausgabe der Programmversion.

254

Page 265: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

20.8. EINE KONFIGURATIONSDATEI FÜR ALLE

20.8 Eine Konfigurationsdatei für alleBisher haben wir entweder die Default Einstellung der einzelnen Tools ver-wendet oder unsere Vorgaben per Programmargumente an das jeweilige Toolübergeben. Je nach Länge der Verarbeitungskette und Anzahl der Parameterkann dies recht schnell sehr unübersichtlich und auch fehlerträchtig werden.

Alle Tools lassen sich deshalb einfach mit einer einzelnen Konfigurationsda-tei steuern, die sie dem Programm msb_record als Parameter übergeben.msb_record sorgt automatisch dafür, das allen weiteren Programme in derVerarbeitungskette8 die dort gemachten Einstellungen erhalten.

Die Konfigurationsdatei ist nicht Teil der Programminstallation sondern kannjederzeit mit folgendem Kommando neu erzeugt werden.

msb_record -C

bzw.

msb_record --create-config-file

Als Ergebnis landet die Datei msb_tools.config im aktuellen Verzeichnis.Öffnen Sie die Datei mit einem Editor Ihrer Wahl (unter Windows beispielswei-se Notepad, Linux User verwenden gedit, kate, oder natürlich vi, emacs ...).

Die Konfigurationsdatei ist ausführlich dokumentiert. Passen Sie einfach diefür Sie wichtigen Parameter an und speichern Sie die Datei anschließend un-ter einem anderen Namen. Letzteres ist sinnvoll, da ein erneuter Aufruf vonmsb_record -C diese ohne zu zögern überschreibt.

Sie können natürlich beliebige Konfigurationsdateien anlegen, für jede Appli-kation eine individuelle. Dateiname und Endung sind dabei ohne Belang.

Sobald Sie die Konfigurationsdatei msb_record übergeben, werden alle Pro-gramm der Verarbeitungskette die dort gespeicherten Einstellungen überneh-men. Zum Beispiel:

msb_record -c meine-config-datei | msb_format

bzw.

msb_record --config-file meine-config-datei | msb_format

Nun werden Sie einwenden:Was aber, wenn ich als Datenquelle nicht msb_record verwende, sondern dieAusgabe einer Rekorddatei mittels type bzw. cat?

In diesem Fall können Sie jedem Programm in der Verarbeitungskette die Kon-figurationsdatei auch individuell übermitteln. Alle Tools verstehen den Parame-ter --config-file bzw. einfach nur -c. Sie brauchen dazu nicht einmal dieKonfigurationsdatei ändern. Rufen Sie einfach das entsprechende Tool mit dergewünschten Datei auf.

type examples\DataView\9bit.msblog | msb_format --config-file datei

8Dies betrifft natürlich nur alle zur Analyser Software gehörenden Kommandozeilen Tools.

255

Page 266: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

KAPITEL 20. KOMMANDOZEILEN API

256

Page 267: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

AASCII Zeichensatz

ASCII (American Standard Code for Information Interchange) isteine Form der Zeichenkodierung, die ursprünglich fürFernschreiber entwickelt wurde, und sich in den Anfängen desComputer Zeitalters als Standard-Code für Schriftzeichenetablierte.

Bei den ersten 32 Zeichen des ASCII Codes (hex 00...1F) handelt es sich umnicht druckbare Zeichen die für Steuerzwecke reserviert sind. Steuerzeichensind z.B. der Zeilenvorschub ( Linefeed) oder der Wagenrücklauf (Carridge Re-turn). Sie werden bei Geräten verwendet, die den ASCII Code zu Steuerungs-zwecken verwenden wie beispielsweise Drucker oder Terminals. Ihre Definitionist historisch begründet.

Code 20 entspricht dem Leerzeichen, 7F ist ein Sonderzeichen, welches auchals Löschzeichen DEL bezeichnet wird.

Code ...0 ...1 ...2 ...3 ...4 ...5 ...6 ...7 ...8 ...9 ...A ...B ...C ...D ...E ...F

0... NUL SOH STX ETX EOT ENQ ACK BEK BS HT LF VT FF CR SO SI

1... DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

2... SP ! “ # $ % & ’ ( ) * + , - . /

3... 0 1 2 3 4 5 6 7 8 9 : ; < = > ?

4... @ A B C D E F G H I J K L M N O

5... P Q R S T U V W X Y Z [ \ ] ∧ _

6... ‘ a b c d e f g h i j k l m n o

7... p q r s t u v w x y z { | } ∼ DEL

Obige Tabelle berücksichtigt nur 7 Bits pro Byte, d.h. die ersten 128 Zeichen.Erweiterungen des ASCII Codes machen sich dies zu nutze, indem Sie in dienoch möglichen weiteren 128 Zeichen für länderspezifische Kodierungen oderGrafikzeichen verwenden. Da diese aber sehr unterschiedlich ausfallen undeine ausführliche Darstellung den Rahmen hier deutlich sprengen würden, be-schränken wir uns auf die standardisierte 7 Bit Version.

257

Page 268: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

ANHANG A. ASCII ZEICHENSATZ

258

Page 269: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

BBaudratemessung

Der MSB-RS232 Analyser erlaubt die Einstellung und Messungbeliebiger Baudraten in einem weiten Bereich von 1 Baud bis1 MBaud und das mit einer Genauigkeit besser als 0.1%.

Die Messung der Baudrate erfolgt 8 mal pro Sekunde. Dabei wird die Breite vonsingulären 0 oder 1 Bits gemessen und gemittelt. Je mehr Bits innerhalb desMessfensters von 125ms zur Messung zur Verfügung stehen, desto genauerwird die Messung. Ein größeres Datenaufkommen kann also zu stabileren undgenaueren Messwerten führen.Der Analyser erlaubt drei Arten der Baudrate Messung.

1 Automodus (Daten A + B)

2 TxD an Eingang A (Daten A)

3 RxD an Eingang B (Daten B)

Im Auto-Modus wird nach Zufallsprinzip Daten A (TxD) oder Daten B (RxD)zur Messung verwendet, je nachdem welcher Kanal zum Messstart die ersteDatenflanke liefert. Dadurch kann es zu schwankenden Messwerten kommenwenn beide Kanäle etwas unterschiedliche Taktgeneratoren verwenden.Dieser Modus ist besonders geeignet, um differierenden Baudraten auf derSende- und Empfangsleitung auf die Schliche zu kommen.

Um definiert die Übertragungsraten eines Kanales zu messen, sollte der ver-wendete Eingang explizit gesetzt werden. Dies entspricht der Auswahl Daten Abzw. Daten B und wird im Einstelldialog des Kontrollprogrammes vorgenom-men.

Im Statusfenster wird neben der eingestellten auch die gemessene Übertrag-ungsrate angezeigt. Letztere mit ihrer prozentualen Abweichung zur voreinge-stellten Baudrate. Aus Platzgründen werden Abweichungen größer als ±50%mit Out! gekennzeichnet.

dBaud = 100 ∗ Baudmete−BaudsetBaudset

Negative Werte weisen dabei auf eine zu kleine Übertragungsrate hin, positi-ve auf eine zu grosse. Viele Bitfehler in einer Übertragung können durch nicht

259

Page 270: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

ANHANG B. BAUDRATEMESSUNG

korrekt erzeugte Raten erklärt werden. Als grober Richtwert gilt:Abweichungen von maximal±3% können noch toleriert und ausgeglichen wer-den, darüber hinausgehende Abweichungen sollten vermieden werden.

Baudrate ToleranzVermeiden Sie bei der Übertragung Abweichungen der Baudrate mit mehr als3%. Bitfehler sind dann die Folge.

Durch ungenügende Steilheit der Sender in einer EIA-232 Verbindung und dar-aus resultierenden langsamen Anstiegszeiten kann die Messung bei höherenÜbertragungsraten etwas zu hoch ausfallen. Dies kann dann auch ein Hinweissein, dass die EIA-232 Treiber nicht genügend an die verwendete Übertrag-ungsrate angepasst sind.

260

Page 271: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

CFarben

Die MSB-RS232 Analyser Software erlaubt Ihnen anverschiedenster Stelle die Angabe eigener Farben. Eine Auswahlvordefinierter Farben finden Sie hier.

Die Angabe von Farbwerten kann sowohl in Form eines Farbnamens erfolgen(die folgenden Tabellen geben einen Überblick über die vordefinierten Farbna-men) oder durch Eingabe des RGB (rot grün blau) Wertes als hexadezimaleZahl.Beachten Sie bitte, das Farbnamen generell mit den englischen Bezeichnun-gen einzugeben sind, auch wenn Sie eine deutsche Version der Software ver-wenden. Manche Farben bestehen aus mehreren Worten, beispielsweise ’indi-an red’. Das Leerzeichen ist Teil des Namens und muß explizit mit angegebenwerden.In der folgenden Aufstellung finden Sie neben dem Farbnamen auch immerden RGB Wert, den Sie alternativ eingeben können. RGB Werte können ineiner kurzen und einer langen Form eingegeben werden.

C.1 RGB Wert kurze FormDie kurze Form #RBG reduziert jeden Farbanteil auf einen Wert zwischen0...15, in hexadezimaler Schreibweise 0...F, wobei R,G und B jeweils einer He-xzahl 0...F entsprechen. D.h. jeder Farbanteil kann in 1/15 Schritten von 100%definiert werden. Zum Beispiel ist rot #F00 und weiß #FFF. Da der jeweiligeFarbanteil Werte zwischen 0...F annehmen kann, bedeutet 0 das der jeweiligeFarbanteil überhaupt nicht, bzw. bei F voll vorhanden ist. In der kurzen Formsind 16 x 16 x 16 = 4096 Farben möglich.

C.2 RGB Wert lange FormDie lange Form #RRGGBB erweitert den Wertebereich für die einzelnen Farban-teile von 16 auf 256, was einfach eine höhere Auflösung pro Farbanteil ist,nämlich 1/256 Schritte von 100%. Rot wäre hier #FF0000, weiß #FFFFFF. Diesentspricht einem Farbbereich von 256 x 256 x 256 = 16777216 möglichen Far-ben.

C.3 Vordefinierte FarbnamenDie vordefinierten Farbnamen sind eine Auswahl aus einer Liste standardisier-ter Farben wie sie z.B. bei der Darstellung von Webseiten verwendet werden.

261

Page 272: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

ANHANG C. FARBEN

Von den erweiterten Farben abgesehen, sollte die Eingabe von ’green’ deutlichintuitiver sein, als #0F0 bzw. #00FF00. Leicht zu merken sind hier neben ’black’und ’white’ vor allem die Grundfarben.

Grey colors

Name/Value Color Name/Value Color

black#000000

dim grey#696969

dark grey#a9a9a9

grey#bebebe

light grey#d3d3d3

white#fffff

Basic colors

Name/Value Color Name/Value Color

blue#0000ff

green#00ff00

red#ff0000

cyan#00ffff

magenta#ff00ff

yellow#ffff00

Extended colors

Name/Value Color Name/Value Color

medium spring green#7fff00

forest green#228b22

lime green#32cd32

dark green#006400

aquamarine#70db93

spring green#00ff7f

medium aquamarine#66cdaa

sea green#238e6b

medium turquoise#70dbdb

dark turquoise#00ced1

steel blue#236b8e

sky blue#3299cc

slate blue#007fff

light steel blue#b0c4de

262

Page 273: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

C.3. VORDEFINIERTE FARBNAMEN

Name/Value Color Name/Value Color

cornflower blue#6495ed

navy#23238e

medium blue#0000cd

dark slate blue#483d8b

medium orchid#9370db

medium slate blue#7f00ff

blue violet#8a2be2

dark orchid#9932cc

purple#b000ff

orchid#db70db

violet red#cc3299

orange red#ff007f

maroon#b03060

salmon#6f4242

khaki#f0e68c

wheat#d8d8bf

medium goldenrod#eaeaad

pale green#8fbc8f

medium sea green#426f42

medium violet red#db7093

turquoise#adeaea

cadet blue#5f9ea0

light blue#add8e6

midnight blue#2f2f4f

pink#bc8fea

thistle#d8bfd8

plum#eaadea

violet#4f2f4f

firebrick#8a2222

brown#a52a2a

orange#cc3232

indian red#cd5c5c

coral#ff7f50

tan#db9370

sienna#8e6b23

gold#ffd700

medium forest green#6b8e23

yellow green#99cc32

dark olive green#556b2f

green yellow#adff2f

263

Page 274: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

ANHANG C. FARBEN

264

Page 275: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

DUnterbrechungsfreie Analyse mit

W232-Kabel

Der MSB-RS232 Analyser leitet alle Leitungen intern durch ein GateArray, was zusätzliche Vorteile wie z.B. die Schaltoption eröffnet(Signale umverdrahten, schalten, invertieren, ...). Dies bedeutetallerdings auch, das die Verbindung nur besteht, so lange derAnalyser in der Leitung eingebunden und mit Strom versorgt ist.

Das W232 Kabel bietet eine einfache Lösung um den Analyserbeliebig an eine RS232 Leitung anzuschliessen ohne dieVerbindung zu unterbechen.Das W232-Kabel verbindet direkt die zu untersuchenden Geräte. Gleichzeitigwerden alle Signale abgegriffen und mittels zwei Sub-D Anschlüssen auf dieEingangspins der MSB-RS232 Anschlussports verteilt. Der Datenstrom wird so-mit nicht durch den Analysator durchgeführt, sondern nur parallel untersucht.Im Betrieb mit nicht angeschlossenem Analysator können die offenen Kabel-anschlüsse Stecker A und Buchse B zum Schutz der Kontakte zusammenge-steckt werden. Das Kabel kann somit auch als serielles 1:1 Kabel verwendetwerden.

VorteileDas W232-Kabel kann permanent im Betrieb verbleiben, während der Analysa-tor nur sporadisch für Aufzeichnungen oder Fehlersuche angeschlossen oderaktiviert werden muss. Ein Auftrennen und Anhalten der Übertragung ist so-mit nicht notwendig. Dies ist insbesondere wichtig, wenn die zu untersuchendeVerbindung aus Sicherheitsgründen nie unterbrochen werden darf.

NachteileDie Schaltfunktionalität des Analysators (Option Schaltfunktion) kann nur ein-geschränkt verwendet werden, da die Ausgänge des Analysators nicht verwen-det werden.Ebenfalls werden durch den Parallelanschluss die RS232 Sender mit zweiRS232 Empfängern belastet, was jedoch im Normalfall kein Problem darstellt.

265

Page 276: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

ANHANG D. UNTERBRECHUNGSFREIE ANALYSE MIT W232-KABEL

266

Page 277: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

EWindows Trouble-Shooting

Der für den Betrieb des MSB-RS232 Analysers benötigte Treiberwird bei der Installation automatisch installiert und das Gerät beiStart automatisch erkannt. Sollte dies nicht der Fall sein oderandere Probleme auftreten, finden Sie hier eine Reihe vonLösungen.

E.1 Analyser wird nicht erkannt (Teil I)BeschreibungDer Analyser ist korrekt mit Ihrem System verbunden und beide LEDs leuchtenrot. Nach Start der MSB-RS232 Software wird er dennoch nicht erkannt.

LösungEntfernen Sie zunächst alle USB Geräte außer Maus/Tastatur von Ihrem PC.Verbinden Sie anschliessend den Analyser mit Ihrem PC und schauen Sie imGeräte-manager nach, ob und welcher COM Port dem Analyser zugewiesenwird. I.a. sollte unter den COM Einstellungen nach dem Anschliessen ein neu-er COM Port erscheinen.Wenn dies der Fall ist, öffnen Sie eine Kommando Shell (DOS Box) und wech-seln in das Installationsverzeichnis der MSB-RS232 Software. I.a. ist das:

C:\Programme\msb-4.6.8

Starten Sie die Software von Hand, indem Sie folgendes eingeben:

msb_serv.exe -pCOMxx -nMSByyyyy --force

COMxx ist dabei die COM Portnummer, wie sie im Gerätemanager angezeigtwird, MSByyyyy ist die Seriennummer des Gerätes. Sie finden diese auf demGehäuseboden. Z.B.

msb_serv.exe -pCOM12 -nMSB01234 --force

Sollte die Software mit diesem Parameter starten, können Sie diesen zusätz-lichen Programmparameter unter Eigenschaften des MSB Starticons auf IhremDesktop anpassen. Eine Beschreibung dazu finden Sie in der Anleitung im Ka-pitel 7.13. Lesen Sie bitte auch nachfolgenden Abschnitt.

267

Page 278: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

ANHANG E. WINDOWS TROUBLE-SHOOTING

Helfen Sie uns bei GerätekonfliktenDer Firmware Loader verwendet die vom Betriebssystem während der USBEnumeration ermittelten Informationen um alle mit einem MSB-Analyser verbun-denen seriellen Ports zu erkennen.Bei den mannigfaltigen Kombinationen von existierenden USB Geräten undTreibern können wir nicht ausschliessen, dass in seltenen Fällen das Pro-gramm den Analyser nicht korrekt erkennt. Um solche Situationen bei der wei-teren Programmentwicklung berücksichtigen zu können benötigen wir Ihre ak-tive Mithilfe.Öffnen Sie dazu erneut eine Kommando Shell (DOS Box) und wechseln Sie indas Installationsverzeichnis. Geben Sie folgendes Kommando ein:

msb_serv.exe --verbose

Der --verbose Parameter erzeugt eine Reportdatei (AnalyzerScan.txt) mitzusätzlichen Informationen zur Analyser Erkennung und speichert diese aufdem Desktop. Senden Sie diese Datei anschließend an [email protected].

E.2 Analyser wird nicht erkannt (Teil II)BeschreibungDer Analyser ist korrekt mit Ihrem System verbunden und beide LEDs leuch-ten rot. Im Gerätemanager wird ihm aber keine virtuelle COM Port Nummerzugewiesen (siehe E.1).

LösungInstallieren Sie den für den Betrieb des Analysers nötigen Treiber neu. Sie fin-den den Treiber auf Ihrer Installations CDROM im Verzeichnis driver oderauf unserer Website unter https://iftools.com/download.Verwenden Sie zur Installation das ausführbare Treiber Setup Programm (er-kennbar an der Endung .exe).

E.3 Analyser arbeitet nicht wie erwartetBeschreibungDer MSB-RS232 Analyser verliert die Verbindung zum PC und stoppt unerwar-tet. Dabei arbeitet das Gerät zunächst wie erwartet, bricht dann aber aus un-erfindlichen Gründen die Aufnahme ab.

LösungVermutlich liegt die Ursache des Problems an der Energieeinstellung IhresPC’s (hauptsächlich Notebooks, Laptops aber auch normale Desktop Rech-ner). Deaktivieren Sie deshalb das Power Management des USB Hubs.Um die Laufzeit im mobilen (Akku) Betrieb zu verlängen bzw. um generell Ener-gie zu sparen, kann Windows USB Anschlüsse abschalten, die nicht im Betriebsind bzw. auf eine entsprechende Anforderung nicht reagieren. Teilweise istdieses Verhalten fehlerhaft im System oder BIOS implementiert, so dass auchaktive USB Geräte abgeschaltet werden.

1 Öffnen Sie das Start Menü und klicken Sie auf Systemeinstellungen.

2 Doppelklicken Sie das System Icon und wählen Sie dort Hardware

3 Wählen Sie den Gerätemanager aus

268

Page 279: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

E.4. UNBEKANNTE PROBLEME

4 Klicken Sie in der Liste auf den Universal Serial Bus Kontroller um diesesauszuklappen.

5 Rechtsklicken Sie den Eintrag USB Root Hub und wählen Sie Eigenschaftenaus.

6 Klicken Sie auf Energieverwaltung

7 Deaktivieren Sie den Eintrag Computer kann Gerät ausschalten um Ene-gie zu sparen

8 Wiederholen Sie dies für alle weiteren USB Root Hubs

9 Klicken Sie auf OK und schliessen Sie den Gerätemanager

10 Starten Sie Ihren Computer neu

E.4 Unbekannte ProblemeBeschreibungSie haben ein anderes Problem, welches hier nicht genannt ist.

LösungMailen Sie uns unter [email protected] mit genauen Angaben zur IhremSystem (Windows Version, Service Pack, 32/64 Bit System) sowie der verwen-deten Software Version und einer detailierten Beschreibung Ihres Problems.

269

Page 280: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

ANHANG E. WINDOWS TROUBLE-SHOOTING

270

Page 281: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

FLinux Trouble-Shooting

Neuere Linux Kernels bringen von Haus aus alles mit, was fürden Betrieb des Analyzer benötigt wird. Nichtsdestotrotz lauernauf Grund der Vielzahl unterschiedlicher Linux Varianten immerwieder Fallstricke, die � zunächst � das einwandfreieFunktionieren erschweren. Wie Sie diese Probleme umgehen,zeigt dieses Kapitel.

F.1 Analyser wird nicht erkannt (Teil I)BeschreibungDer Analyser ist korrekt mit Ihrem System verbunden und beide LEDs leuchtenrot. Nach Start der MSB-RS232 Software wird der Fehler ’Keine MSB gefunden’gemeldet.

LösungLinux User benötigen Gruppenrechte um auf das für den Betreib des Analysersnötige /dev/ttyUSBx zugreifen zu können. Öffnen Sie eine Konsole und ge-ben Sie folgendes Kommando ein:

~$ ls -l /dev/ttyUSB?crw-rw---- 1 root dialout 188, 0 2009-08-26 14:47 /dev/ttyUSB0

Unter Debian is es die Gruppe dialout, SuSE Systeme verwenden die Grup-pe uucp. Werden Sie Mitglied dieser Gruppe, indem Sie Ihren Benutzer Ac-count dieser Gruppe hinzufügen.Beachten Sie, daß Sie sich erst ab- und anschliessend neu anmelden müssen,um die Änderung wirksam werden zu lassen. Ein Reboot ist nicht nötig.Ob Sie die richtigen Gruppenrechte haben, zeigt Ihnen das Kommando:

~$ groupsusername dialout cdrom floppy audio video plugdev

F.2 Analyser wird nicht erkannt (Teil II)BeschreibungSie haben die korrekten Zugriffsrechte auf die Gerätedatei /dev/ttyUSBx.Trotzdem wird der Analyser nicht erkannt.

271

Page 282: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

ANHANG F. LINUX TROUBLE-SHOOTING

LösungVergewissern Sie sich, daß auf Ihrem System kein Braille1 Treiber installiert ist.Trennen Sie den Analyser von Ihrem PC und stecken Sie ihn wieder an. ÖffnenSie anschliessend eine Konsole und geben Sie das Kommando dmesg ein.Ist die Ausgabemeldung ähnlich der folgenden:

~$ dmesgDetected FT232BM Feb 11 16:14:59 sd kernel: [ 1575.765756] usb 3-2:FTDI USB Serial Device converter now attached to ttyUSB0 Feb 1116:14:59 sd kernel: [ 1575.881392] usb 3-2: usbfs: interface 0 claimedby ftdi_sio while ’brltty’ sets config Feb 11 16:14:59 sd kernel: [1575.885485] ftdi_sio ttyUSB0: FTDI USB Serial Device converter nowdisconnected from ttyUSB0

ist ein Braille Treiber installiert. Wenn Sie kein Braille Gerät verwenden, ent-fernen Sie den Treiber mit Hilfe des Paket Management Ihres System. UnterDebian beispielsweise:

~# apt-get remove brltty

F.3 Analyser wird nicht erkannt (Teil III)BeschreibungSie haben alle USB Geräte (außer Maus und Tastatur) entfernt und nur denAnalyser an Ihrem PC angeschlossen. Trotzdem wird kein Eintrag /dev/ttyUSBxangelegt.

LösungÖffnen Sie eine Konsole und geben Sie das Kommando dmesg ein.

~$ dmesgusb 1-1: new full speed USB device using uhci_hcd and address 5ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detecteddrivers/usb/serial/ftdi_sio.c: Detected FT232BMusb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0

Die Ausgabe des dmesg Kommandos zeigt Ihnen, ob der Analyser vom Ker-nel als FTDI USB Serial Device erkannt und das entsprechende Kernelmodulftdi_sio geladen wurde.Ist dies nicht der Fall, dann hat Ihr Kernel entweder überhaupt keinen USB Sup-port oder aber die Unterstützung für FTDI Geräte ist nicht aktiviert. Falls Sie Ih-ren Kernel selbst übersetzt haben überprüfen Sie bitte, ob Sie das ftdi_sioModul freigeschaltet haben. Der entsprechende Eintrag in der Kernel Konfigu-rationsdatei /usr/src/linux/.config lautet:

CONFIG_USB_SERIAL_FTDI_SIO=m

Ist dies nicht der Fall, müssen Sie den Kernel neu übersetzen.Ob der Kernel den Analyser generell als USB Gerät erkannt hat, ermitteln Siemit:

1Ein Blindenschrift fähiges Ausgabegerät

272

Page 283: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

F.4. AUFNAHME FUNKTIONIERT NICHT

~$ cat /proc/bus/usb/devicesT: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 5 Spd=12 MxCh= 0D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1P: Vendor=0403 ProdID=6001 Rev= 4.00S: Manufacturer=IFTOOLSS: Product=MSB-BS: SerialNumber=MSB00001C:* #Ifs= 1 Cfg#= 1 Atr=01 MxPwr= 0mAI: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sioE: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0msE: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Das Beispiel zeigt einen Analyser vom Typ MSB-RS232 (MSB-B) mit der Ser-iennummer MSB000001, Hersteller ist IFTOOLS.Diese Ausgabe sollten Sie auf jeden Fall sehen, ansonsten ist das Problemvermutlich in der USB Unterstützung Ihres Systems zu suchen. Haben Sie IhrLinux schon einmal mit USB Geräten verwendet? Mailen Sie uns Ihr Problemmit genauen Angaben zu Ihrem System, siehe Abschnitt F.9.

Helfen Sie uns bei GerätekonfliktenDer Firmware Loader verwendet die vom Betriebssystem im sysfs zur Ver-fügung gestellte Informationen um alle mit einem MSB-Analyser verbundenenseriellen Ports zu erkennen.Bei den mannigfaltigen Kombinationen von existierenden USB Geräten undTreibern können wir nicht ausschliessen, dass in seltenen Fällen das Pro-gramm den Analyser trotzdem nicht korrekt erkennt. Um solche Situationenbei der weiteren Programmentwicklung berücksichtigen zu können benötigenwir Ihre aktive Mithilfe.Öffnen Sie dazu erneut eine Kommando Shell (Konsole) und wechseln Sie indas Installationsverzeichnis. Geben Sie folgendes Kommando ein:

~$ ./msb_serv --verbose

Der --verbose Parameter erzeugt eine Reportdatei (AnalyzerScan.txt) mitzusätzlichen Informationen zur Analyser Erkennung und speichert diese aufdem Desktop. Senden Sie diese Datei anschließend an [email protected].

F.4 Aufnahme funktioniert nichtBeschreibungDer Analyser scheint korrekt erkannt worden sein und die Firmware geladen.Nach Starten einer Aufnahme werden aber keine Daten aufgezeichnet.

LösungDer Analyser signalisiert die korrekte Initialisierung der Firmware durch ein ab-wechselndes Blinken beider roter LEDs. Wenn beide roten LEDs nach Startder Software dauerhaft leuchten, wurde die Firmware nicht korrekt in das Gerätübertragen. Grund ist eine zu hohe Transferrate der Firmware in den Analyserdie bei manchen (selten!) Treiberimplementierungen zu Fehlern führt.Sie können die Transferrate bei der Firmware Initialisierung per Programm Pa-rameter reduzieren. Rufen Sie dazu die Analyser Software mit folgendem zu-sätzlichen Parameter aus dem Installations-Verzeichnis auf:

~$ ./msb_serv -r 20

273

Page 284: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

ANHANG F. LINUX TROUBLE-SHOOTING

Der Wert 20 entspricht der Reduzierung der Transferrate. Erlaubte Werte sind0 (keinerlei Reduzierung) bis maximal 50.Sobald die Analyser Firmware korrekt geladen wurde können Sie den verwen-deten Parameter Ihrem msb-4.6.8 Desktop Icon hinzufügen.

F.5 Segmentation Fehler während InstallationBeschreibungDas Installations Programm beendet sich mit einem Segmentation Fehler. Diestritt hauptsächlich in einer KDE4 Umgebung auf.

LösungStarten Sie die Installation aus einer Konsole im Textmodus. Kopieren Sie da-zu die Installationsdatei von der IFTOOLS CDROM (falls es sich um keinenDownload handelt) auf Ihre lokale Festplatte und setzen Sie die Datei per~$ chmod +x msb-2.4.0-linux-installer.bin

auf ausführbar.Starten Sie die Installation im Textmodus wie folgt:~$ ./installation-file-linux.bin --mode text

F.6 Das Menü Hilfe→Inhalt F1 funktioniert nichtBeschreibungWenn Sie F1 drücken oder per Hilfe→Inhalt F1 die Online Hilfe aufrufen, pas-siert nichts bzw. bekommen Sie eine Fehlermeldung. Im Installations Verzeich-nis können Sie die Handbücher aber normal öffnen.

LösungDie MSB-RS232 Software zeigt die entsprechenden Handbuchseiten mit demProgramm xpdf an, da dieses die Fähigkeit besitzt, einzelne Stellen per defi-nierten Links einzublenden.Sie müssen deshalb dieses Programm installieren, wenn es nicht auf IhremSystem vorhanden ist. Die üblichen PDF Viewer wie kpdf, okular oder GNO-ME Programme können Sie aber jederzeit zum Lesen/Ausdrucken des Hand-buches verwenden.

F.7 Programm läuft nicht unter einem 64 bit Linux (Part I)BeschreibungNach Klick auf den Desktop Icon startet das Analyser Programm nicht bzw.wird mit einem Segmention Fehler (Segfault) sofort wieder beendet.

LösungBei der MSB-Analyser Software handelt es sich um eine 32 Bit Anwendung. Umdiese unter einem 64 Bit Linux ausführen zu können benötigen Sie die ent-sprechenden 32 Bit Bibliotheken (ia32-libs). Anwender von Debian basieren-den Systemen (z.B. Ubuntu) können diese mit folgendem Kommando einfachnachinstallieren:~$ sudo apt-get install ia32-libs

Anwender anderer Distributionen verwenden den Paketmanager Ihres Sys-tems.

274

Page 285: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

F.8. PROGRAMM LÄUFT NICHT UNTER EINEM 64 BIT LINUX (PART II)

F.8 Programm läuft nicht unter einem 64 bit Linux (Part II)BeschreibungSie haben die 32 Bit Bibliotheken installiert, aber wenn Sie das Programm star-ten erscheint lediglich ein zu schmales (abgeschnittenes) oder gar kein Fens-ter.

LösungDas 32 Bit Kompatibilitäts-Paket für 64 Bit Ubuntu verwendet einen fest kodier-ten Pfad für die gdk-pixbuf Bibliotheken, der die 32 Bit Varianten nicht berück-sichtigt.Wir empfehlen folgenden Workaround:Öffnen Sie ein Terminal Fenster und geben Sie folgendes Kommando ein:

gedit ~/Desktop/msb-4.6.8.desktop

Ersetzen Sie die Zeile: Exec=/home/jb/msb-4.6.8/msb_serv mit:

Exec=env GDK_PIXBUF_MODULE_FILE=/usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders.cache msb_serv

Die geänderte Desktop Datei zum Start der Analyser Software hat nun folgen-des Aussehen:

[Desktop Entry]

Type=Application

Version=0.9.4

Name=msb-4.6.8Comment=Starts the msb program

Icon=/home/jb/msb-4.6.8/msb-48.pngPath=/home/jb/msb-4.6.8Exec=env GDK_PIXBUF_MODULE_FILE=/usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders.cache msb_serv

Terminal=false

Name[en_US]=msb-4.6.8

Speichern Sie die Datei und starten Sie die Software mit (Doppel)Klick auf denMSB-Analyser Icon.

F.9 Unbekannte ProblemeBeschreibungSie haben ein anderes Problem, welches hier nicht genannt ist.

LösungWir sind sehr daran interessiert, unser Produkt/Software auf allen modernenLinux Varianten lauffähig zu machen. In Hinblick auf die große Zahl von ver-schiedenen Linux Distributionen ist dies nicht immer ganz einfach. Deshalb:Mailen Sie uns unter [email protected] mit genauen Angaben zur IhremSystem (Distribution, Kernel Version, 32/64 Bit System, Desktop Umgebung)sowie der verwendeten Software Version und einer detailierten BeschreibungIhres Problems.

275

Page 286: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

ANHANG F. LINUX TROUBLE-SHOOTING

276

Page 287: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

Glossar

Glossar BeschreibungAufzeichnungstiefe Die Anzahl maximaler Ereignisse oder Ab-

tastungen, aus denen sich eine Signal-aufzeichnung zusammensetzen kann, wirdAufzeichnungs- oder Speichertiefe genanntund hängt vom verfügbaren Speichermediumab. 161

CSV Comma Separated Values, Textdateiformat, inder der Inhalt einzelner Datensätze durch Kom-mas getrennt in jeweils einzelnen Zeilen abge-legt wird. 57

Datagramm Datagramm ist ein Oberbegriff für ein Daten-frame, Datenpaket oder Datensegment und be-schreibt eine zusammengehärende Datense-quenz mit definiertem Anfang und Länge. InFeldbussen auch als Telegramm bezeichnet.81

ETX End of Text, im ASCII Steuerzeichensatz hexa-dezimal 0x03. Markiert das Ende einer Nach-richt bzw. Datagrammes. 81

FIFO First In, First Out, Datenpuffer zur Speiche-rung von ankommenden Daten nach dem Prin-zip der Warteschlange. Das erste gespeicherteElement wird auch wieder zuerst entnommen.2

Firmware Mit Firmware wird die in einem elektronischenGerät enthaltene und für dessen Funktion not-wendige Software bezeichnet. Firmware kannfester Bestandteil der Hardware sein, oder erstbeim Starten in das Gerät geladen werden. 23

FLEXUART Eine spezielle von IFTOOLS entwickelte UARTerlaubt das präzise Setzen und Messen belie-biger Baudraten im Bereich von 1 Baud bis 1MBaud mit 0,1% Genauigkeit. 25

Jitter Taktzittern bei der Übertragung von Digi-talsignalen hervorgerufen durch eine leichteGenauigkeitsschwankung im Übertragungstakt(Clock). 161

277

Page 288: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

Glossar

Glossar BeschreibungLua Lua ist eine imperative und erweiterbare Skript-

sprache zum Einbinden in Programme, extremschnell und mit sehr geringem Resourcenver-brauch. 43, 54

RTF Ein Datei- und Datenaustauschformat für for-matierte Texte, ursprünglich von Microsoft ent-wickelt. 56

Stopbits Ein (oder mehrere) Stopbits garantieren, daßsich die Datenleitung nach Senden eines Da-tenbytes wieder im ’Mark’ Zustand befindet,und sich der Empfänger bei Empfang des miteinem Startbit (’Space’ Zustand) eingeleite-ten nächsten Datenbytes neu synchronisierenkann. 1

STX Start of Text, im ASCII Steuerzeichensatz alshexadezimal 0x02 definiert. Markiert den An-fang einer Nachricht bzw. Datagrammes. 81

UART Universal Asynchronous Receiver Transmit-ter, elektronisches Bauelement, welches zumasynchronen Sendung und Empfangen vonDaten über eine serielle Datenleitung dient. EinSynchrontakt bzw. Signal ist dabei nicht nötig..2

Zeitbasis Die einem Raster (10 Pixel) entsprechendeZeitspanne. Je niedriger die Zeitbasis, destohöher die zeitliche Auflösung der Darstellung.Die niedrigste Zeitbasis im Signalmonitor be-trägt 500ns, d.h. 50ns pro Pixel.. 163

278

Page 289: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

Index

Absolute Zeit, 60Analyser

mehrere, 35Analysetools

siehe Views, 32Ansichten

siehe Views, 43Aufzeichnung

automatisch starten, 36laden, 34pausieren, 25speichern, 33starten, 25stoppen, 25

Aufzeichnungsmodus, 30Fifo, 30kontinuierlich, 30

base16decode, 124encode, 125

Baudratebeliebig, 28Jitter, 161

boxtext, 128

box.space, 127Break

anzeigen, 54suchen, 64, 73

cfg.setmaxop, 129checksum

crc16_bacnet, 130, 131crc8_bacnet, 129kermit, 130, 131lrc, 132modbus, 132

Data View, 53Adresse vorgeben, 56Bereich auswählen, 56Bereich exportieren, 57Bereich kopieren, 56Bereich speichern, 57Kontollzeichen einblenden, 59Schriftart, 60Tastenkürzel, 67

Datenaufzeichnen, 29

Datenabgriff, 210Dateneingabe, 208Datenleitung

aufzeichnen, 29Datenleitung auswählen, 209Datenmonitor

siehe Data View, 53datetime

date, 133debug

clear, 134print, 135resume, 135summarize, 136suspend, 136timeprompt, 136

Ereignisabstände messen, 79Ereignismonitor

siehe Event View, 69event

data, 137dir, 137isbreak, 137level, 138number, 138time, 139

Event View, 69Bereich auswählen, 76Bereich exportieren, 76Spalten ein/ausblenden, 70Tastenkürzel, 80

FirmwareLaden, 23

Kontrollanzeigeaktive Leitungen, 27Aufnahmekapazität, 26PC Verbindung, 27umschalten, 26

KontrollprogrammParameter, 37Spezielle Parameter, 39Tastenkürzel, 37

Ledtester, 51Pegelbezeichnung einblenden, 52

Levelfinder, 69linestates

changed, 139

279

Page 290: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

INDEX

count, 140Loopback, 200

Modulbase16, 124

MultiProzess Architektur, 41

overrun allowed executions, 128

Paritätsfehleranzeigen, 54suchen, 64, 73

Programmeinstellung, 49übertragen, 49

Projekt, 47laden, 48speichern, 33, 48zuletzt geöffnet, 34

protocolbaudrate, 141bitpause, 141bytepause, 142databits, 142parity, 143

Protocol View, 81Bereich auswählen, 85Font, 155Tastenkürzel, 157

ProtokollAutomatisch erkennen, 25Einstellung, 28

Protokoll TemplatesAufsplitten in Telegramme, 88erstellen, 85Sprachsyntax, 87vordefinierte, 85

Protokolle, 84Protokollmonitor

siehe Protocol View, 81

Rahmenfehleranzeigen, 54suchen, 64, 73

recordbuswiring, 143starttime, 143

Region, 173auswählen, 56, 76, 167ein/ausblenden, 174in View anzeigen, 174

löschen, 174umbenennen, 174

Ringpuffer, 30

Schalteditor, 199Fehlermeldung, 207Lizenz, 211Tastenkürzel, 213Texteingabe, 203Verbindungen, 205Voreinstellung, 212

Schaltelemente, 202einfügen, 201horizontal spiegeln, 203löschen, 203

Schaltpläne, 211Scope Darstellung, 162shared

get, 144set, 144

Sicherheitsabfrageungespeicherte Daten, 32

Signal View, 161Abstände messen, 167Ausschnitt rückgängig machen, 165Ausschnitt vergrößern/verkleinern,

164Bereich auswählen, 167Cursor, 167Datenbytes einblenden, 166Farben ändern, 165Raster ein/ausschalten, 165Signal invertieren, 166Signalreihenfolge, 166Tastenkürzel, 172

Signalleitungauswählen, 29

Signalmonitorsiehe Signal View, 161

Signalnamenändern, 29

SignalpegelAnzeige, 162Veränderungen suchen, 74Zeitdauer suchen, 75Zustand suchen, 71

Sitzung, 47laden, 34siehe Projekt, 33

string

280

Page 291: Manual - IFTOOLS · War die RS232 Schnittstelle mit Markteinführung von USB bereits für ’obsolete’ d.h. veraltet erklärt worden, sind heute unzählige Anbieter von USB auf

INDEX

dump, 146

TaskleisteView unterdrücken, 32

telegram, 147data, 148datatime, 148dir, 149dump, 149duration, 150isbreak, 150number, 151size, 151string, 151time, 152

TelegrammDarstellung, 95siehe Protokoll, 84

telegramsat, 153

Transparenz, 166

Übertragungsfehler, 60suchen, 64, 73

Unterbrechungsfreier Anschluss, 22

Views, 43autoscroll, 42kopieren, 44sperren, 42synchronisieren, 42Zustand speichern, 44

W232 Kabel, 265

Zeichenkette suchen, 61Zeitabstand

Datenbytes, 60suchen, 63

Zeitbasis, 163

281