IXXAT - Products, Services and Training for CAN, CANopen, DeviceNet, CAL, FlexRay, LIN, Embedded TCP/IP
Home
Features
Galerie
Interfacekarten
Tutorial
Tips, News, Artikel
Support & FAQ
Downloads
Impressum


English
Tutorial

10 Sequencer-Modul: Senden von Nachrichtenfolgen

Mit dem Sequencer-Modul steht ein einfaches, aber dennoch sehr wirkungsvolles Hilfsmittel für die Erzeugung von zeit- oder ereignisabhängiger Nachrichtenfolgen zur Verfügung. Das Sequencer-Modul ist ein äußerst effektives Tool für den Test von CAN-Geräten und -Netzwerken, z.B. durch Simulation des Start-up-Verhaltens von Netzwerken. Für die Definition von Nachrichtensequenzen stehen die nachfolgenden Befehle zur Verfügung:

Senden von Daten- oder Remote-Nachrichten
Warten auf das Eintreffen von Daten oder Remote-Nachrichten
Einfügen von Wartezeiten
Warten auf Benutzereingabe
Wiederholen von Befehlsblöcken

Die Kommandos der Skriptsprache sind:

Befehl Bedeutung Aktion
td transmit data Senden einer Nachricht
tr transmit remote Senden einer Nachrichten-Anforderung
wd wait for data Warten auf das Eintreffen einer Nachricht
wr wait for remote Warten auf das Eintreffen einer Nachrichten-Anforderung
delay delay Einfügen einer Wartezeit in ms
pause pause Warten auf Benutzereingabe
repeat repeat Wiederholung eines Blocks
endrep end repeat Ende eines Blocks

Fügen Sie das Sequencer-Modul Ihrer Konfiguration hinzu, indem Sie das Sequencer-Icon der Modulübersicht per Drag and Drop auf Ihren Controller ziehen.

Ein Doppelklick auf den Eintrag im Konfigurationsbaum startet das Seuqencer-Modul. Unterhalb der Menü- und Schalterleiste befindet sich ein Eingabebereich, in welchem die Befehle in Skriptsprache eingetragen werden. Nach dem Start des Skriptes dient der Eingabebereich als Anzeige, in dem durch einen Laufbalken der aktuell bearbeitete Befehl angezeigt wird.


Beispielhaft ist hier die Syntax eines Sende- und eines Empfangsbefehls gegeben:

td <anzahl_der_wiederholungen> <verzögerungszeit> <nachricht-id> <[datenfeld]>

Der Befehl zum Versenden einer Nachricht lautet td. Seine vier Parameter werden jeweils durch mindestens ein Leer- oder Tabulatorzeichen getrennt. Durch Angabe einer "verzögerungszeit" (in Millisekunden) kann bestimmt werden, ob und wie lange das Sequencer-Modul nach dem Versenden der Nachricht die Abarbeitung des Skriptes unterbricht. Nach dieser Wartezeit wird die Nachricht sooft versandt, wie dies unter "anzahl_der_wiederholungen" angegeben ist. Die Angabe eines Datenfeldes ist optional. Es darf bis zu 8 Ziffern enthalten, welche ebenfalls durch Leerzeichen zu trennen sind.

wd <verzögerungszeit> <nachricht-id>

Der Befehl um auf den Empfang einer CAN-Nachricht mit "nachricht-id" zu warten, lautet wd. Auch hier kann durch Angabe einer "verzögerungszeit" die Abarbeitung des Skriptes unterbrochen werden.

Im folgenden Beispiel wird eine Sequenz von vier Nachrichten fünf mal hintereinander gesendet. Danach wird auf den Empfang einer Nachricht mit dem Identifier 60h gewartet. Schließlich wird die gesamte Sequenz drei mal wiederholt. Das Semikolon leitet eine Kommentarzeile ein.

repeat 3
    repeat 5
        ;   Count Delay ID    Data
        td  1     50    41    12 13 14 15
        td  1     50    0x3F  33 44 55
        td  1     50    0x0A  22 33
        td  1     50    32    76 65 43 26
	endrep
    wd  1   0x60
endrep

Dieses Beispiel können Sie markieren, in die Windows-Zwischenablage kopieren und in den Eingabebereich Ihres Sequencer-Moduls einfügen. Starten sie die Abarbeitung der Kommandofolge dann entweder

durch Auswahl des Menüpunktes Nachrichtensequenz | Start oder
durch Klick auf den Button in der Schalterleiste

Beobachten Sie dies mit dem Receive-Modul. Das Sequencer-Modul wird nach dem Senden von vier Nachrichten am Warte-Befehl wd anhalten. Um die Abarbeitung des Skriptes fortzusetzen, müssen Sie im Transmit-Modul eine Nachricht mit dem Identifier 0x60 definieren und diese senden, sobald die Abarbeitung stoppt.