Kurzanleitung CAN-Tester fuer DOS (evtl. auch Windoze)


Stand: 15.08.2001 (übernommen aus DOS-CAN-Tester)

Zweck des Programms:

 

Einschränkungen:

Weil die CAN-Hardware oft ohne brauchbarem CAN-Software-Treiber betrieben werden muss (sondern durch Polling OHNE INTERRUPTS), ist die Performance dem aehnlich funktionierenden CAN-TESTER FUER DOS weit unterlegen, was die Geschwindigkeit betrifft. Die Zeit zwischen zwei CAN-Telegrammen muss derzeit bei der Windoze-Variante ueber 50 Millisekunden betragen !

 

ACHTUNG: MKT UEBERNIMMT KEINE HAFTUNG FUER SCHAEDEN, DIE DURCH DEN GEBRAUCH DIESER SOFTWARE ENTSTEHEN; WEDER AN SOFT- NOCH AN HARDWARE !

 

Installation:

Installieren Sie zunaechst ein CAN-Interface auf Ihrem PC.

Zur Zeit unterstuetzt werden:

- CAN-Interfaces der Firma ESD mit "NTCAN"-Treiber

- CAN-Interfaces der Firma PEAK mit "PCAN-LIGHT"-Treiber

- CAN-Interfaces der Firma PEAK mit "PCAN Driver V2" (CanApi2)

Hinweise und Tips zur Installation einiger CAN-Interfaces und der dazugehoerigen Softwaretreiber (VxD, SYS, DLL) finden Sie in der Datei <WoBu3>c:\drivers1\doku\can_inst.doc .

 

Programmstart:

DOS-Variante: Je nach verwendeter CAN-Hardware z.B. "dc_ecan.exe" oder "dc_dong.exe" (evtl. auch andere Hardware) starten.

Windows-Variante: Hier gibt's nur CanTest1.exe . Verknüpfung erstellen, anklicken, fertig.

 

Konfiguration:

Die Konfiguration (CAN-I/O-Adresse, IRQ, Baudrate etc) erfolgt im Menue Settings...Can Interface Setup. Bei Verwendung des PCCAN-Interfaces der Firma ESD muss vorher der NTCAN-Treiber installiert werden.

 

Komponenten des Hauptfensters:

 

Im Watch-Fenster werden bis zu 10 zu ueberwachende CAN-Messages angezeigt. Diese koennen im "Watch"-Menue oder im Steuerprogramm definiert werden. Im Empfangsfenster werden i.A. alle empfangenen CAN-Telegramme als scrollende Text-Liste angezeigt.

Im Sendefenster werden alle gesendeten CAN-Messages angezeigt, wahlweise mit Angabe des exakten Sendezeitpunktes (bei WINDOZE leider weniger exakt als bei der DOS-Variante des Programms !)

Falls das Sendefenster abgeschaltet wird, erscheinen die gesendeten Telegramme auch im Empfangsfenster (welches dann den Titel "RX/TW-Window" oder aehnlich traegt).

Im Kommandofenster wird das Steuer-Programm angezeigt. Dieses Textfile enthaelt im einfachsten Fall nur eine Liste von zu sendenden CAN-Messages. Mit F2 koennen sie das Telegramm, auf dem grade der Cursor steht, absenden.

Das Meldungsfenster dient zur Anzeige von Systemmeldungen und spezieller Ausgaben des Steuerprogramms (@print-Befehl).

Ausserdem koennen Zusatzmodule zum DOS-CAN-Tester (z.B. SDO-Modul) ihre Ausgaben in dieses Fenster "drucken".

 

Bedienung der Editor-Fenster:

Empfangs-, Sende-, Kommando- und Meldungsfenster sind als "Editorfenster" angelegt. Empfangs- und Sendefenster koennen jeweils bis zu 100 Zeilen speichern. Das Kommandofenster speichert bis zu 500 Zeilen, das Meldungsfenster maximal 200 Zeilen (DOS-Programm, Speicher ist knapp!).

Mit den Cursortasten kann der Fensterinhalt gescrollt werden. Ausserdem kann Text mit den ueblichen "Edit"-Funktionen zwischen diesen Fenstern hin- und herkopiert werden. Unter Windows dient CTRL-C zum kopieren des markierten Textes in die Zwischenablage, CTRL-V zum Einfuegen von Text.

In der "Ueberschrift" eines Editorfensters wird die aktuelle Cursorposition und die Anzahl gespeicherter Zeilen in der Form <Cursorspalte>:<Cursorzeile>/<Anzahl Zeilen> dargestellt.

 

 

Hauptmenue

(DOS-Variante, fuer die Windows-Variante wird dies irgendwann noch ueberarbeitet)

Die wichtigsten Funktionen des Hauptmenues koennen auch per Shortcut mit der ALT-Taste aktiviert werden. Hier nur kurzer AUSZUG:

File: Ermoeglicht das Laden und Abspeichern der Kommandodatei.

Settings: Anzeige verschiedener Dialogfenster fuer die Konfiguration.

View: Umschaltung zu anderen Anzeigefenstern und Zusatzmodulen.

Run: Starten, Stoppen und Einzelschrittbearbeitung des Kommandoprogramms...

F2: Abarbeiten der Zeile im Kommandotext, in der grade der Cursor steht, ohne das evtl schon laufende Kommandoprogramm zu beeinflussen. Wird i.A. dazu benutzt, um "einzelne" CAN-Telegramme zu senden.

F7: Continue: Setzt das Kommandoprogramm in der aktuellen Zeile fort.

F8: "Single Step" zum Abarbeiten des Kommandoprogramms Zeile fuer Zeile

F9: "Run" / "Stop": Starten oder Anhalten des Kommandoprogramms. Hat keinen Einfluss auf die Anzeige im Sende- und Empfangsfenster.

F9 Startet das Kommandoprogramm in der ersten Zeile, wenn es nicht bereits laeuft, andernfalls wird es gestoppt.

 

ALT-F9: Fortsetzen des Kommandoprogramms in der Cursorzeile.

 

 

Das Kommandoprogramm

Das Kommandoprogramm besteht im einfachsten Fall aus einer Reihe von CAN-Messages, die gesendet werden sollen.

Das Format ist normalerweise:

<CAN-Identifier> <Datenbyte0> <Datenbyte1> ... <Datenbyte7>

Der CAN-Identifier wird normalerweise in hexadezimaler Form erwartet. Moeglich ist allerdings auch die dezimale Form, die durch ein vorgestelltes '#' gekennzeichnet werden muss.

Die Datenbytes werden i.A. auch hexadezimal erwartet. Statt einfacher Zahlenwerte koennen allerdings auch beliebige Ausdruecke verwendet werden. Diese sollten in Klammern umschlossen werden, um Fehlinterpretationen auszuschliessen. Auch Variablen sind moeglich (s.U.).

Statt einer CAN-Message kann eine Zeile auch eine Anweisung an den Kommando-Interpreter enthalten.

Alle Anweisungen an den Kommando-Interpreter beginnen mit dem '@' - Zeichen.

Anweisungen sind z.B.:

- Variablen-Zuweisungen, z.B:

@A=10*I

- Verzweigungen und Schleifen:

@goto

@gosub ... @return

@repeat ... @until

@if <Bedingung> <Anweisung>

- Ausgabe-Anweisungen:

@print "<Format-String>", <numerischer Parameter> ...

 

Die Verzoegerungszeit bei der Abarbeitung der Zeilen des Kommandoprogrammes kann im Systemmenue eingestellt werden. Sie sollte mindestens 5 ms (pro Zeile) betragen. Zusaetzliche Verzoegerungen innerhalb des Kommandoprogramms koennen mit dem @delay - Befehl realisiert werden.



Befehle des Kommando-Interpreters

@repeat Kennzeichnet den Anfang einer Wiederholschleife

@until <Bedingung> Sprung nach @repeat, wenn <Bedingung> == 0.

@goto <Sprungziel> Sprung zum angegebenen Label (sh. Beispiel)

@gosub <Unterprogramm> Ruft ein Unterprogramm auf.

@return Ende eines Unterprogramms

@if <Bedingung> ... folgende Anweisungen werden nur ausgefuehrt,

wenn <Bedingung> ungleich Null.

@print("<Format-String>", <Parameter>.. )

Druckt Texte und Zahlen ins Meldungs-Fenster.

Beispiele fuer den Format-String:

"%ld" Dezimalzahl beliebiger Laenge

"%5.5ld" Dezimalzahl mit genau 5 Ziffern

"%lX" Hex-Zahl beliebiger Laenge

Naeheres siehe Handbuch eines "C"-Compilers bei der Beschreibung des " printf"-Befehls. Die Parameter sind immer 32-Bit-Integer-Zahlen, daher die "Eingabegroessen-Modifikation" 'l'.

@sound(frequenz, dauer, modulation)

Erzeugt diverse Toene im PC-Speaker.

@freeze "Friert" Empfangs- und Sendefenster ein.

@def_watch Definiert Komponenten einer Watch-Struktur (s.U.)

@stop Haelt das Kommandoprogramm an (wie F9).

  

WATCH - Definitionen

Um "besondere" CAN-Messages aus dem Empfangsdatenstrom herauszufiltern, wurden die "Watches" implementiert. Ähnlich wie bei einem Source-Level-Debugger dient eine "Watch" dazu, bestimmte CAN-Telegramme zu erkennen, anzuzeigen und gegebenenfalls bestimmte Aktionen zu unternehmen.

Eine Watch-Struktur besteht daher aus den folgenden Elementen:

Name: Die Zeichenkette, die im "Watch"-Fenster als "Beschriftung" dient

Ereignis: Das "Filter" zum Erkennen beim Empfang. Besteht aus CAN-Identifier und CAN-Daten (mit "xx" fuer "don't care")

Ausdruck: ein numerischer Ausdruck, der nach dem Empfang eines CAN-Telegramms nach Passieren des Ereignis-Filters dieser Watch berechnet wird. Das Ergebnis dieser Berechnung wird im Watch-Fenster angezeigt, es kann auch vom Kommandoprogramm fuer einfache "Steuerungszwecke" gelesen werden (watch(n).val) .

Anzeigeformat: Definiert, wie ein Watch-Ausdruck im Watch-Fenster angezeigt wird. Der Parameter ist eine Zeichenkette im Stil der "C"-Funktion "printf", wobei der Parameter immer als 32-Bit-Integer zu verwenden ist.

Aktion: Definiert die Aktion, die ausgefuehrt werden soll, wenn das oben definierte Watch-Ereignis eingetroffen ist. Der Parameter ist eine Zeichenkette, die "normale" Interpreteranweisungen und "spezielle" Aktions-Anweisungen (ein-Buchstaben-Befehle) enthaelt, z.B.:

i : Ignorieren (d.h. nicht ins Empfangsfenster drucken). Diese Option kann "global" im Watch-Menue deaktiviert werden.

b : Piepsen (mit dem PC-Speaker, z.B. bei Notfall-Meldungen)

l : Watch-Name und berechneten Ausdruck mit ins Log-File schreiben.
Die aktuellen Watch-Definitionen werden beim Verlassen des Programmes in der Konfigurationsdatei abgelegt, sie stehen daher beim naechsten Start des Programmes wieder zur Verfuegung. Sie koennen im Watch-Menue editiert oder mit dem Befehl @def_watch im Kommandoprogramm definiert werden.

 

  

Settings

Hardware-Einstellungen

Hier werden u.A. die I/O-Adresse und IRQ-Nummer der verwendeten CAN-Karteim PC eingestellt.

Benutzer-Einstellungen


Datei loggen: Aktivieren/Deaktivieren des Empfangs-Mitschnittes in eine Datei. Eine bereits vorhandene Datei wird vom Programm nie ueberschrieben, sondern es wird immer am eine existierende Datei angehaengt.

ACHTUNG: Die Datei-Log-Funktion ist bestens dazu geeignet, in kurzer Zeit die Festplatte vollzuschreiben. Sie sollte moeglichst nie "unbewacht" verwendet werden !

Identifier-Anzeige: Waehlt das Anzeigeformat fuer CAN-Message-IDENTIFIER (hexadezimal oder dezimal).


Kommentate -> LOG: Wenn aktiv, werden die Kommentare aus dem Kommandoprogramm mit in die Log-Datei uebernommen. Dient zur Erleichterung der spaeteren Analyse.

Logdatei: Definiert Pfad+Namen der Log-Datei.

Sendefenster aktiv: Wenn ja, werden Sende- und Empfangsdaten in getrennten Fenstern angezeigt. Wenn nein, wird das mpfangsfenster als "kombiniertes" RX/TX-Fenster verwendet. Dies ist in einigen Faellen vorteilhaft, besonders wenn der DOS-CAN-Tester zum Testen von Reaktionen angeschlossener Module verwendet wird. (funktioniert unter Windoze nicht !)

Markiere "[TX]": Wenn aktiv, werden die von diesem Programm GESENDETEN Messages in der Log-Datei besonders gekennzeichnet (und zwar mit "[TX]").

Sendepause: Definiert die Wartezeit beim Abarbeiten des Kommandoprogrammes und damit die Mindest-Pause zwischen zwei vom Kommandoprogramm gesendeten CAN-Messages. Sollte >= 5 ms betragen (speziell bei der PC-CAN-Karte mit ON-Board-Controller).

Watch -> LOG: Wenn aktiv, werden die Ergebnisse der Watch-Ausdruck-Berechnungen als Kommentar in das Log-File uebernommen. Auf diese Weise kann der Inhalt von empfangenen CAN-Telegrammen einer beliebigen Berechnung unterzogen werden, und das Ergebnis (fast) beliebig formatiert mit ausgedruckt werden. Dient zur Erkleichterung der spaeteren Log-Analyse.

Zeitmarke (an/aus): Aktivieren / Deaktivieren der Zeit-Anzeige

fuer Empfangs- und Sendefenster.

Zeitformat (ms/hh:mm:ss) Anzeigeformat fuer die Zeitmarke. Möglich ist "Millisekunde" oder "Stunde:Minute:Sekunde.Millisekunde"

Fehler- und Statusmeldungen

Die Statusflags des CAN-Treibers werden intern als 16-Bit-Parameter verwaltet.

Wenn sich der Zustand dieses Parameters aendert, wird dies automatisch im Meldungsfenster als Hex-Zahl angezeigt. Diese Hex-Zahl kann eine Kombination der folgenden Bitmasken sein:

$0001 : CAN-Hardware-Fehler oder "anderer Fehler"

$0002 : Ueberlauf des CAN-Empfangspuffers

$0004 : Ueberlauf des CAN-Sendepuffers

$0008 : Zu viele CAN-Interrupts in zu kurzer Zeit (Rechner zu langsam)

oder gar keine CAN-Interrupts (IRQ-Nummer falsch eingestellt ?)

$0040 : CAN-Bus-Warnung, mindestens ein Fehlerzaehler zu hoch

$0080 : CAN-Bus-OFF, Grund z.B. falsche Baudrate bei einem Teilnehmer




CAN-Error-History

(nur bei der DOS-Variante verfügbar)

Die "CAN-Error-History" ist ein optionaler Bestandteil des CAN-Treibers.

Der Inhalt dieses "CAN-Fehler-Speichers" kann von der Benutzeroberflaeche im Meldungsfenster angezeigt werden. Man erhaelt damit genauere CAN-Fehler-Diagnosen, z.B. "Bit Stuffing Error", "unexpected dominant Bit" u.s.w. Die erkennbaren CAN-Fehler haengen stark vom verwendeten CAN-Controller ab.

Derzeit lassen sich mit 82527-kompatiblen Controllern die meisten CAN-Fehler erkennen.







Troubleshooting

(basieren zum grossen Teil auf "Notizen aus der Entwicklungsphase")

Problem: Peak-CAN-Dongle kann zwar senden, aber nicht empfangen

Ursache: Treiber der Firma PEAK blockiert den direkten Zugriff auf die parallele Schnittstelle. Die passierte bei MKT bei der Installation von Lenze's "Global Drive Control". Trotz De-Installation blieb der Peak-CAN-Treiber uebrig !!!

Abhilfe: Schauen Sie in die Datei WINDOZE\SYSTEM.INI ! Schmeissen Sie den Peak-Treiber raus, wenn Sie ihn nicht fuer andere Programme brauchen, und installieren Sie den aktuellen "PCAN Driver V2.0" von Peak (und CANAPI2.DLL). Hinweise dazu stehen u.A. in der Datei CAN_INST.DOC (MKT). Geht das nicht, verwenden Sie die DOS-Version des CAN-Testers. Die ist zwar nicht mehr "taufrisch", aber viel schneller und stabiler als der Windows-Krampf...

.-.-.

W.B.

Zurück zum Index