CAN Logger / CAN Snooper

(nur für bestimmte Terminals mit16- oder 32-bit CPU und einer speziellen Firmware-Variante), siehe Feature-Matrix)

Leider wurde dieses Dokument noch nicht komplett ins Deutsche übersetzt..
Verwenden Sie ggf. die englischsprachige Version: canlg_01.htm,
oder notfalls diese automatische Übersetzung - auch wenn das Ergebnis recht 'drollig' ausfallen dürfte.

  1. Übersicht
  2. Verwendung des CAN-Loggers
    1. Einleitung
    2. Steuern des CAN-Loggers durch die Applikation
    3. Das Konfigurationsmenü des Loggers ('im Gerät')
    4. Erweiterte Funktionen beim MKT-View II / III / IV
  3. Verwendung des CAN-Snoopers
    1. Das Hauptmenü des Snoopers ('im Gerät')
      1. Decodieren von CAN-Signalen per Snooper
      2. Aufzeichnen und Abspielen von CAN-Telegrammen per Snooper
      3. Anzeige von CAN-Rohdaten im Snooper ("Message Dump")
      4. Anzeigeformat für 'CAN FD' im Snooper-Modus
  4. Details, Internes, Dateiformate
    1. Interpreterkommandos und -Funktionen zum Steuern des Loggers / Snoopers :
      logger.run, logger.stop, logger.trigger, snooper.run, ..
    2. Interpreterkommandos und -Funktionen zum Steuern der Speicherkarte:
      card.insert, card.remove, card.state, card.dspace, ..
    3. Interpreterkommandos für das 'Power-Good-Flag' (nur beim alten MKT-View "PLUS" erforderlich)
    4. Dateiformate
    5. Speichermedien
    6. Stromversorgung
  5. Rechtliches

Weiterführende Informationen (externe Links):

Übersicht

Der CAN-Logger/Snooper ist ein Software-Feature in bestimmten Anzeige-Geräten von MKT-Systemtechnik, z.B. MKT-View II / II / IV. Bei Geräten ohne extern zugängliche Speicherkarte sind diese Funktionen i.A. nicht implementiert.


Verwendung des CAN-Loggers

Einleitung

Steuern des CAN-Loggers durch die Applikation

Das Konfigurationsmenü des Loggers ('im Gerät')

CAN-Logger-Menü "Signals and Identifiers"

CAN-Logger-Menü "Messages and Identifiers"

Erweiterte Funktionen beim MKT-View II / III / IV

Dieses Kapitel wurde noch nicht ins Deutsche übersetzt. Verwenden Sie bitte die englischsprachige Variante.

Hinweis: Details zur Konfiguration des CAN-Loggers finden Sie nur im Handbuch des CAN-Logger-Konfigurationstools, welches kein Bestandteil der Dokumentation des Anzeige-Programmiertools ist !

Viele Jahre nach dem Erscheinen des ersten MKT-Views mit integriertem Logger ("MKT-View Plus") verfügen Geräte mit Logger i.A. auch über eine umfangreiche Script-Sprache, z.B. im MKT-View III / IV. Mit diesen Geräten (und Firmware ab November 2021) lassen sich z.B. neue Funktionen per Script (in der Applikation) implementieren:

  • Script-gesteuertes Starten und Beenden der Aufzeichnung ("trigger")
  • Script-gesteuertes Abspielen von aufgezeichneten Log-Dateien für die Anzeige, oder/und auf dem CAN-Bus

Erweiterte Steuerung des Loggers per Script

... bislang nur in englischer Sprache beschrieben ...

Scriptgesteuerte Wiedergabe von Log-Dateien (*.cld)
... bislang ebenfalls nur in englischer Sprache beschrieben ...



Verwendung des CAN-Snoopers

Der CAN-Snooper ist ein einfacher CAN-Bus-Analyser auf 'Message'-Ebene. Er dient in erster Linie zum Untersuchen von CAN-Telegrammen in einem "unbekannten" CAN-Netzwerk (d.h. einem Netzwerk, für das keine Datenbank mit Signaldefinitionen vorliegt). Empfangene Messages können zunächst markiert werden, um danach interaktiv (im Menü) zu definieren, was beim Empfang bestimmter Message-Identifier passieren soll (z.B. Signalton, oder auch Decodieren der im empfangenen CAN-Datenfeld enthaltenen Signale).
Ein Betrieb des 'CAN-Snoopers' als LIN-Bus-Monitor ist zwar prinzipiell möglich, konnte bislang mangels einer geeigneten Hardware ("funktionsfähiges Steuergerät mit LIN-Master und -Slave") noch nicht getestet werden.

Der Start des CAN-Snoopers kann im System-Menü des Terminals oder per Kommando snooper.run in der Display-Applikation erfolgen..

 Main system menu (9)
 EXIT !
 Load program from FILE
 Transfer via CAN = OFF/Auto
 Other transfers ... ▶
 Audio Recorder
 CAN snooper mode            
 CAN logger config
 User Settings
 System Setup / Unlock
 System Test
 Network Setup
 Diagnostics
 General Settings
 ...
CANsnooper  F1:Pg↑ F2:Pg↓ F3:Mode E:Menu
00000333 5E 73 F3 CA DE 4B       c=1234  
00000334 01 00 00 00 01 00 00 00 c=1234
00000335 E9 26 2F 43 43 2F 26 E9 c=1233
000003FD 00 01 02 03 04 05 06 07 c=1234
000003FE 00 11 22 33 44 55 66 77 c=1234
40000333 5E 73 F3 CA DE 4B       c=1234
40000334 01 00 00 00 01 00 00 00 c=1234
40000335 E9 26 2F 43 43 2F 26 E9 c=1233
400003FD 00 01 02 03 04 05 06 07 c=1234
400003FE 00 11 22 33 44 55 66 77 c=1234



RxCnt=19752 I=1/10

( Start des CAN-Snoopers per System-Menü in einem MKT-View III )


Hinweise:

  • Fehlt der Eintrag 'CAN snooper mode' im Systemmenü Ihres Gerätes, ist die Firmware zu alt oder der Snooper ist für Ihr Gerät (noch) nicht verfügbar.
  • Der CAN-Snooper ist möglicherweise noch nicht freigeschaltet. Zur Freischaltung von 'optionalen' Features nehmen Sie bitte Kontakt mit dem Hersteller auf.
  • Der CAN-Snooper funktioniert am besten im 'Landscape'-Modus (Breitformat). Betrieb im 'Portrait'-Modus (Hochformat) ist zwar möglich, aber wegen des dann nötigen horizontalen Scrollens unpraktisch.
  • Soll ein bestimmtes Gerät (MKT-View III/IV/V) vorübergehend nur als CAN-Bus-Monitor im 'Snooper'-Modus verwendet werden, kann der Snooper nach jedem Einschalten des Gerätes automatisch gestartet und angezeigt werden. Gehen Sie dazu wie folgt vor:
    Rufen Sie wie oben beschrieben den CAN-Snooper auf ("manuell").
    Rufen Sie im 'CAN Snooper Menü' den Punkt 'Other functions ..." auf.
    Setzen Sie dort den Parameter 'Boot in Snooper Mode' auf 1 (Eins), und rufen danach im gleichen Menü die Funktion 'Save Snooper-Config' auf.
    Um die 'normale Funktion' des Gerätes als programmierbares Anzeigesystem wiederherzustellen, setzen Sie den Parameter 'Boot in Snooper Mode' wieder auf 0 (Null).

Per Default werden empfangene Message-Identifier in hexadezimaler Form angezeigt.
Die drei höchstwertigen Bits im hexadezimalen 32-Bit-Wert enthalten die Bus-Nummer (in Bits 31 und 30) und das 11/29-Bit-Flag (für "extended frames"):

  • 0x00000000 (Bits 31..29 nicht gesetzt) : Ein 11-Bit-"Standard"-Message-Identifier, empfangen vom ersten CAN-Interface (Bus 1)
  • 0x20000000 (Bit 29 gesetzt) : Indikator für einen 29-Bit-Message-Identifier, aka "Extended Message Frame"
  • 0x40000000 (Bit 30 gesetzt) : Indikator für das zweite CAN-Interface (Bus 2)
  • 0x80000000 (Bit 31 gesetzt) : Indikator für das dritte CAN-Interface (Bus 3)
  • 0xC0000000 (sowohl Bit 31 als auch 30 gesetzt) : Indikator für das vierte CAN-Interface (z.B. "CAN4"),
    welches bei bestimmten Geräten auch als LIN bus konfiguriert werden konnte.

Nach dem CAN-Message-ID folgen i.d.R. bis zu 8 Datenbytes im empfangenen CAN- oder LIN-Frame. Auch diese werden per Default nur hexadezimal angezeigt (mit je 2 Ziffern).

Im rechten Teil des Displays können weitere (optionale) Informationen angezeigt werden, z.B. die Anzahl der mit einem bestimmten Message-ID empfangenen Frames. Ein einzelner Buchstabe zeigt an, welche "zusätzliche Info" ("additional info") hier momentan auf dem Display steht:

  • c= Counter. Für jeden empfangenen CAN-Message-Identifier enthält der CAN-Snooper einen eigenen Empfangs-Zähler, allerdings "nur" für maximal 2048(?) verschiedene IDs.
  • p= Periodendauer. Die zuletzt zwischen zwei Messages mit dem gleichen ID verstrichene Zeit in Millisekunden.
  • f= Frequenz. Dies ist die Anzahl von Messages (mit dem gleichen ID) pro Sekunde.
  • t= Timestamp. Da das Display bei manchen Geräten zu klein für den CAN-Snooper ist, muss der Bildschirm ggf. horizontal gescrollt werden, um den 'Timestamp' (Zeitmarke) komplett zu sehen.

Welche der oben aufgezählten Informationen angezeigt werden soll kann wie später beschrieben im CAN-Snooper-Menü eingestellt werden. Darüberhinaus können die im Datenfeld enthaltenen Signale statt der hexadezimalen Rohdaten-Anzeige auch in einem benutzerfreundlicheren Format dargestellt werden (Display options.. View: "Both, combined" statt "Raw CAN frames").

Der Markierungsbalken in der CAN-Message-Liste kann per Cursor Up/Down oder mit dem Drehknopf bewegt werden. Er bleibt immer auf dem gleichen (manuell gewählten) Eintrag, auch wenn in der nach Message-Identifier sortierten Liste neue Einträge (vor dem markierten Eintrag) erscheinen.

Die obere Textzeile (über der CAN-Message-Liste) zeigt u.A. die aktuelle Belegung der Funktionstasten (F1 bis F3) an. Diese Tasten können z.B. verwendet werden, um sich seitenweise durch die Liste zu bewegen ("page up", "page down"); um den markierten Eintrag temporär zu verbergen ("Hide"); und um notfalls (bei zu kleinem Display) den Bildschirminhalt horizontal zu scrollen. Die Funktionstastenzuordnung kann ihrerseits per Funktionstaste (z.B. F3) umgeschaltet werden, oder (bei Geräten ohne entsprechende Tastatur) mit Hilfe des Menüs. Hier einige Abkürzungen für Tastenfunktionen:

  • PgUp: Eine Seite nach oben (page up)
  • PgDw: Eine Seite nach unten (page down)
  • Mode: Umschalten zum nächsten 'Mode', bzw zur nächsten Funktionstastenbelegung
  • Menu: Aufruf des Hauptmenüs für den CAN-Snooper
  • Dump: Speichert die aktuelle CAN-Message-Liste in einer Textdatei (nicht nur den momentan sichbaren Bereich, sondern "alles")
  • Mark: Markiert den momentan selektierten Eintrag für später
  • Hide: Verbirgt den momentan selektierten Eintrag

Weitere Möglichkeiten zur Konfiguration des CAN-Snoopers sind über dessen Menü zu finden. Dieses wird bei Geräten mit "echter" Tastatur per ENTER-Taste, oder alternativ durch Drücken des Encoder-Knopfes aufgerufen. Details dazu finden Sie im nächsten Kapitel.

Das Hauptmenü des CAN-Snoopers

Beim Aufruf des Hauptmenüs (per ENTER oder Drücken des Encoder-Knopfes) öffnet sich (abhängig von der Display-Größe) ein ähnliches Popup-Menü wie hier gezeigt:

CANsnoop  F1:Pg↑ F2:Pg↓ F3:Escape E:Select
00000333 5E 73 F3 CA DE 4B       c=1234   
00000334┌────────────────────────┐=1234
00000335│CAN Snooper Menu (1)    │=1233
000003FD│Close menu & continue   │=1234
000003FE│Clear message list      │=1234
40000333│RX-Action id=00000333 > │=1234
40000334│CAN BUS parameters    > │=1234
40000335│Display options       > │=1233
400003FD│Record / Replay msgs  > │=1234
400003FE│Other functions       > │=1234
        │Quit snooper            │
        └────────────────────────┘

RxCnt=19752 I=1/10

Zur Navigation dienen -wenn vorhanden- die Cursortasten und ENTER (zum 'Aufruf' der markierten Funktion). Bei Geräten ohne Cursortasten verwenden Sie stattdessem den Dreh/Drückknopf. Bei Geräten die weder Cursortasten noch einen Dreh/Drückknopf enthalten, verwenden Sie stattdessem den Touchscreen. Ist auch dieser nicht vorhanden, dann kann der CAN-Snooper nur per 'Remote'-Funktion bedient werden.

Funktionen im Hauptmenü:

  • Close menu [and continue]
    Schliesst das Snooper-Menü und stellt die Message-Anzeige wieder "bildschirmfüllend" dar.
  • Clear message list
    Löscht die Message-Liste, inklusive der darin vorhandenen CAN-Message-Zähler.
  • Define an RX-action
    Hiermit können bestimmte Aktionen definiert werden, die bei jedem Empfang eines CAN-Frames mit dem gleichen (momentan selektierten) Message-Identifiers durchgeführt werden sollen. Dies kann z.B. ein akustisches Signal sein: "Click, low" = kurzer, niederfrequenter Klick.
    "Click, high" = kurzer, höherfrequenter Klick.
    "Beep" = etwas länger als ein "Klick" andauernder Ton.
    Bei entsprechend hoher Message-Rate (mit dem gleichen Message-ID) könnten diese "Piepser" in einen nervtötenden Dauerton übergehen. Um die Nerven benachbarter Kollegen zu schonen, kann im gleichen Menü auch die Lautstärke des (Piezo-)Speakers im Gerät eingestellt werden ("Beeper Volume" in Prozent).
  • CAN bus parameters
    Einstellung der CAN-Baudrate und Anzeige momentaner CAN-Fehler-Flags.
    VORSICHT !
    Das Gerät (auf dem der CAN-Snooper läuft) ist i.A. ein AKTIVER CAN-Knoten. Wird bei einem AKTIVEN CAN-Knoten die falsche Baudrate eingestellt, dann könnte der CAN-Controller tausende von CAN-Error-Frames pro Sekunde senden. Sie sollten daher nicht während einer Fahrt mit 200 km/h die CAN-Baudrate versuchen, mit dem CAN-Snooper die "passende" Baudrate zu finden ! Bei neueren Geräten (z.B. MKT-View III/IV) kann der CAN- Ausgangstreiber abgeschaltet werden (aka 'passive monitor') um das Problem unerwünschter CAN-Error-Frames zu umgehen. Das Gerät (mit CAN-Snooper) bleibt dann 'stumm', statt den CAN-Bus mit Error-Frames zu überfluten, was leider der korrekten Funktion eines CAN-Controllers entspricht.
  • Display options
    Hier können Alternativen zur hexadezimalen Anzeige von Identifiern und Daten ausgewählt werden, und bestimmte ("momentan nicht benötigte") Messages verborgen werden. Bei Geräten mit ausreichend großem Display kann unter 'View:' zwischen 'Raw CAN frames' (hexadezimale Rohdaten), 'Signal Values' (decodierte, skalierte Signalwerte), und 'Both, combined' (beides kombiniert) umgeschaltet werden. Decodierte Signalwerte werden zusammen mit ihrem Namen und (falls vorhanden) der physikalischen Einheit angezeigt.

  • Signal decoders (Signal-Decoder)...
    .. dienen zur Extraktion einzelner Signale, inklusive Umrechnung vom 'Rohwert' in eine anwenderfreundlichere 'physikalische' Einheit wie z.B. km/h.
    Signal-Decoder werden üblicherweise nicht selbst definiert, sondern wie in einem der folgenden Kapitel beschrieben aus Datenbanken extrahiert.

  • Record / Replay messages
    Der CAN-Snooper kann eine begrenzte (selektierte) Anzahl von CAN-Messages in einem Vector-'ASC'-ähnlichen Format als Datei aufnehmen. Der Inhalt von so aufgezeichneten Dateien kann auch wieder 'auf dem Bus' abgespielt werden (mit dem 'CAN-Snooper' selbst, aber auch mit dem im Programmiertool eingebauten CAN-Logfile-Abspiel-Utility).

  • Other functions
    Seltener benötigte Funktionen wie z.B.:
      "Save Snooper-Config" : Aktuelle Konfiguration als Datei speichern
      "Load Snooper-Config" : Aktuelle Konfiguration aus Datei laden
      "Copy Defs from Logger" : Übernimmt Signaldefinitionen
          für den CAN-Snooper
          aus der aktuellen CAN-Logger-Konfiguration
      "Copy Defs from Display" : Übernimmt Signaldefinitionen
          aus der aktuell geladenen Display-Applikation
      "Dump buffer to file now" : Speichert die momentane, nach empfangenen CAN-Message-Identifiern sortierte Liste als Datei auf der Speicherkarte.

  • Quit snooper
    Beendet den 'CAN-Snooper'-Betrieb und kehrt zur Funktion als "programmierbares Terminal" zurück. Wurde der Snooper über das System-Menü aufgerufen, kehrt "Quit" (im Snooper-Menü) an die entsprechende Stelle im System-Menü des Terminals zurück. Wurde der Snooper 'programmgesteuert' von einer bestimmten Anzeigeseite aufgerufen, kehrt "Quit" ebendorthin (zur aufrufenden 'Seite') zurück.
    Danach wird auch die 'normale' Verabeitung empfangener CAN-Messages fortgesetzt.

zurück zum Anfang

Signal-Decoder im CAN-Snooper

From the received CAN- and/or LIN- traffic, a few signals can be isolated for display purposes.

You define a few signal parameters, and the CAN snooper will turn bits and bytes from a CAN message into human-readable decimal numbers.

In some devices (since 2017/08), the 'signal decoders' will be preset with the signal definitions imported from a CAN database (*.dbc) into the display application (*.cvt). Since the display itself cannot access the original database, it makes sense to keep all CAN signal definitions in the *.cvt file even if you don't need them as display variables (in your normal display applications). Alternatively (if the imported 'CANdb' table had been stripped from the display application by the developer), the CAN snooper may be able to extract a few CAN signal definitions from the display variables: In the CAN snooper menu, select Other functions, Copy Defs from Display.
This way, you can easily check the decoded signals as shown in the screenshot further below.

Short form:
If you keep the signal definitions in the *.cvt, you don't need to enter the signal decoders manually (as explained in the rest of this chapter) because the CAN Snooper will already know how to decode the incoming traffic into physical values.
In that case, skip the rest of this chapter (you don't need it), and watch the decoded values on the screen !

CANsnoop F1:Pg↑  F2:Pg↓  F3:Mode E:Menu
GpsMsg1  21 C5 50 42 E2 6B 09 41 c=4038   
 |_ GpsLat: 52.192509 °                   
 |_ GpsLon: 8.5888386 °                   
GpsMsg2  C0 03 10 47 00 44 00 00 c=11401
 |_ GpsTime: 36867.75 seconds
 |_ GpsDate: 17408 Unix days
GpsMsg3  A8 55 C3 3E 9A 99 9F 42 c=11363
 |_ GpsSpeed: 0.38151288 km/h
 |_ GpsHei~t: 79.800003 mASL
GpsMsg4  A3 01 F0 00 A4 69 D6 41 c=11401
 |_ GpsUni~s: 1504088067.7501 Unix sec
GpsMsg5  41 D6 69 A4 00 F0 01 A4 c=11401
 |_ MotUni~s: 1504088067.7501 Unix sec
RxCnt=83807 I=1/8

If signal decoders have been defined (or imported from a *.dbc into the *.cvt file), the current signal values can optionally be displayed along with the CAN-message in the CAN snooper's full-screen display (in the snooper menu: "Display options".."View": "Both, combined"). To show the symbolic message name instead of a numeric message-ID, set "Display options".."ID Format" to "Symbolic".

Names (e.g. CAN-message and -signal names) may have to be truncated for the display. A tilde (~) represents omitted characters in such names. For example, 'GpsUni~s' shown in the screenshot above was originally a CAN-signal named 'GpsUnixSeconds'.

The number of digits for the display depend on the signal's data type. Scaled single-precision 'floats' are displayed with up to 7 decimal digits, 'double'-precision values (64-bit) may be displayed with up to 16 digits.

To configure a Signal Decoder for a particular message, select the message which shall be decoded (so we know the ID) and open the CAN Snooper's main menu. Select "Signal decoders". A popup menu similar to the one shown below will appear:
CANsnoop  F1:Pg↑ F2:Pg↓ F3:Escape E:Select
00000333 5E 73 F3 CA DE 4B       c=1234   
00000334┌────────────────────────┐=1234
00000335│CAN Signal Decoders (2) │=1233
000003FD│Back to main menu       │=1234
000003FE│Add decoder id=00000333 │=1234
40000333│Signal01 +0012345678  > │=1234
40000334│Signal02 +0000000000  > │=1234
40000335│Signal03 -0099999999  > │=1233
400003FD│Signal04 -0099999999  > │=1234
400003FE│Signal05 -0099999999  > │=1234
        │Signal06 -0099999999  > │
        └────────────────────────┘

RxCnt=19752 I=1/10

Select the menu item "Add decoder id=XXXXX" to define a new signal decoder. We already know the CAN-ID of the message, because that message has been selected in the message list. Otherwise, you would have to enter a 29-bit value without a numeric keyboard now which may be tricky without a real keyboard.

To define or modify one of the CAN Signal Decoders, another menu will appear on the terminal's screen:

CANsnoop  F1:Pg↑ F2:Pg↓ F3:Escape E:Select
00000333 5E 73 F3 CA DE 4B       c=1235   
00000334┌────────────────────────┐=1234
00000335│Edit CAN signal #1      │=1233
000003FD│OK (apply & return)     │=1234
000003FE│Bus&CAN-ID = 0x00000333 │=1234
40000333│L.S.Bit at pos = 00     │=1234
40000334│Nr of data bits= 00     │=1234
40000335│SignalType: Signed      │=1233
400003FD│Byte Order: ?unknown?   │=1234
400003FE│SigName:                │=1234
        │                        │
        └────────────────────────┘

RxCnt=19753 I=1/10

As shown in the screenshot, the CAN Snooper needs some more information to decode a CAN signal. These are

  • message ID
  • position of the least significant bit within the message. Valid bit positions are 0..63 (!!) because a CAN message has up to 8 data bytes.
  • count of databits for the signal. Often 8, 16, or 32 bits.
  • the signal's byte order ("Intel" / "Motorola" format as in a CANdb signal)
  • the signal type ( "Unsigned", "Signed", "Float", or "Double" )

For example, we are interested in a signal with 16 databits which is in the first 'WORD' in the CAN message. We guess the machine which sends the frame uses a CPU with low-byte-first so we set the signal's byte order to Intel (aka Little Endian format). The finished definition would look like this:

CANsnoop  F1:Pg↑ F2:Pg↓ F3:Escape E:Select
00000333 73 55 44 4C 34 59 48 46 c=1236   
00000334┌────────────────────────┐=1234
00000335│Edit CAN signal #1      │=1233
000003FD│OK (apply & return)     │=1234
000003FE│Bus&CAN-ID = 0x00000333 │=1234
40000333│L.S.Bit at pos = 00     │=1234
40000334│Nr of data bits= 16     │=1234
40000335│SignalType: Signed      │=1233
400003FD│Byte Order: Intel       │=1234
400003FE│SigName:                │=1234
        │                        │
        └────────────────────────┘

RxCnt=19754 I=1/10

In most cases, 16-bit-values will be on even byte boundaries within the CAN data field. Values in Intel format (little endian) are sent low-byte-first, Motorola format (big endian) is high-byte-first. Forget about "Motorola forwards" and "Motorola backwards" - we don't know the difference. Here, the bits inside a CAN-/LIN-frame are ALWAYS numbered as follows, regardless if the sender uses "Intel", "Motorola" or whatever-byte-order:

(numbering of data bits in a CAN- or LIN-frame)

Byte-
Index

bit 7
(MSB)

bit 6

bit 5

bit 4

bit 3

bit 2

bit 1

bit 0
(LSB)

[0]

7

6

5

4

3

2

1

0

[1]

15

14

13

12

11

10

9

8

[2]

23

22

21

20

19

18

17

16

[3]

31

30

29

28

27

26

25

24

[4]

39

38

37

36

35

34

33

32

[5]

47

46

45

44

43

42

41

40

[6]

55

54

53

52

51

50

49

48

[7]

63

62

61

60

59

58

57

56

 

Like in many programming languages, bits and array indices are numbered from zero to "N minus one". The very first bit in the data field is BIT ZERO, not "BIT ONE".

After specifying all signal parameters, apply the changes and return to the previous menu by selecting "OK". This takes you back to the signal decoder menu, where the decoded values will be displayed as soon as new CAN messages with a matching identifier have been received. Decoders which have not received a signal yet will show the value '-99999999' which means 'invalid'.

 

back to top

Aufzeichnen und Abspielen von CAN-Telegrammen per Snooper

Bei Geräten mit Speicherkarte (z.B. MKT-View II / III / IV) kann der CAN-Snooper(!) auch zum Aufzeichnen empfangener CAN-Telegramme, und zum 'Abspielen' aufgezeichneter Telegramme auf dem CAN-Bus verwenden. Das Dateiformat ist mit einer alten Version von Vector's CAN-'ASC'-Format kompatibel (ASCII, d.h. Text).
Wählen Sie dazu wie in den unten gezeigten Screenshots im CAN-Snooper-Menü den Eintrag 'Record / Replay msgs' ("Aufzeichnen / Abspielen von CAN-Telegrammen"):

CANsnoop  F1:Pg↑ F2:Pg↓ F3:Escape E:Select
00000333 73 55 44 4C 34 59 48 46 c=1236   
00000334┌────────────────────────┐=1234
00000335│CAN Snooper Menu (1)    │=1233
000003FD│Close menu & continue   │=1234
000003FE│Clear message list      │=1234
40000333│RX-Action id=00000333 > │=1234
40000334│CAN BUS parameters    > │=1234
40000335│Display options       > │=1233
400003FD│Record / Replay msgs  > │=1234
400003FE│Other functions       > │=1235
        │Quit snooper            │
        └────────────────────────┘

RxCnt=19755 I=1/10
CANsnoop  F1:Pg↑ F2:Pg↓ F3:Escape E:Select
00000333 73 55 44 4C 34 59 48 46 c=1236   
00000334┌────────────────────────┐=1234
00000335│Record/Replay Msgs (1)  │=1233
000003FD│Back to main menu       │=1234
000003FE│File: cansn001.asc      │=1234
40000333│STOP record/playing     │=1234
40000334│Start recording ALL     │=1234
40000335│Start recording MARKED  │=1233
400003FD│Start replay INTERNAL   │=1234
400003FE│Start replay to CAN-BUS │=1235
        │Record/Replay options > │
        └────────────────────────┘

RxCnt=19755 I=1/10
'Start recording MARKED messages' bedeutet, daß nur Telegramme mit den vorher markierten CAN-Message-Identifiern in der Datei gespeichert werden.
'Internal playback' ist das 'rein interne' Abspielen, d.h. die aufgezeichneten Telegramme werden firmware-intern so verarbeitet, als wären sie vom echten CAN-Bus empfangen worden.
'Replay to CAN-BUS' bedeutet das physikalische, 'aktive' Senden der aufgezeichneten Telegramme auf dem 'echten' CAN-Interface des MKT-Views (III/IV). Diese Option darf natürlich nicht in einem fahrenden KFz verwendet werden.

Hinweis: Mit der oben beschriebenen Funktion aufgezeichnete CAN-Telegramme können nicht nur im MKT-View selbst, sondern auch im auf dem PC laufenden Programmiertool (Simulator) abgespielt werden. Details dazu finden Sie hier.
Da das 'ASC'-Format viel Speicherplatz pro Telegramm benötigt, kann der CAN-Snooper kein Ersatz für den im MKT-View (III/IV) ebenfalls verfügbaren CAN-Logger sein. Ähnliches gilt für das Aufzeichnen von CAN-Telegrammen 'als Text' per Script.

zurück zum Anfang

Anzeige von CAN-Rohdaten im Snooper ("Message Dump")

Zum bequemen Analysieren der aufgezeichneten CAN-Daten kann der Inhalt des Empfangspuffers (des CAN-Snoopers) auch als Textdatei auf der Speicherkarte abgespeichert werden. Diese Datei kann dann am PC analysiert, editiert / kommentiert, und ausgedruckt werden. Dazu reicht ein einfacher Texteditor wie z.B. Notepad++.
Im Gegensatz zur im vorhergehenden Kapitel beschriebenen 'Aufnahme'-Funktion ('Record') erzeugt der 'Message Dump' keine kontinuierliche Aufzeichnung, sondern speichert lediglich einen 'Schnappschuss' des Puffers mit allen seit dem Start empfangenen CAN-Message-Identifiern, den mit jedem ID empfangenen Nutzdaten (neuestes Telegramm), und Message-Zählern für eine statistische Auswertung.

Das 'Message-Dump'-Dateiformat entspricht der Anzeige in der Message-Liste, nach CAN-Message-Identifier sortiert (nicht chronologisch).


Beispiel eines 'Message Dumps' (aus Textdatei):
; CANsnoop dump nr. 7
; started 2003-08-28 13:36:59
; dumped  2003-08-28 14:00:28
00000003 08 BD 28 5E 4B 94 11 AF c=233
000003FF 08 BC D3 5E 7E E9 7F 2F c=231
 ...

Die Header-Zeilen enthalten Datum und Uhrzeit von der batteriegepufferten Echtzeituhr, im international verständlichen ISO-8601-Format (YYYY-MM-DD hh:mm:ss).

Dateinamen werden automatisch im Format "candmpNN.txt" erzeugt. Darin ist 'NN' ein dezimaler Zähler, der von Null bis 99 laufen kann. Bei jedem Abspeichern eines Message-Dumps wird dieser Zähler um eins erhöht. Der Zählerstand kann gegebenenfalls im Untermenü 'Other Functions' eingestellt werden.

Um einen 'Message Dump' abzuspeichern, können Sie..

  • die entsprechende Funktionstaste drücken (die Belegung der Funktionstasten ist mit der 'Mode'-Taste umschaltbar, i.e. ist 'Mode' die dritte Funktionstaste),

or

  • im Snooper-Menü unter Other Functions die Funktion Dump buffer to file aufrufen.

Hinweis: Das Abspeichern des nach Identifier sortierten Puffers als Textdatei kann einige Sekunden dauern. Während dieser Zeit können bei hoher Buslast einige empfangene Telegramme 'verloren gehen', d.h. nicht mitgezählt werden. Stattdessem würde bei 'verlorenen' Telegrammen der Lost Message Counter inkrementiert.

zurück zum Anfang

Anzeigeformat für 'CAN FD' im Snooper-Modus

Bei Geräten mit CAN-FD-fähigem Controller (z.B. MKT-View V) werden empfangene 'FD'-Frames in einem etwas anderen Format angezeigt, um diese auch bei kurzen Datenfeldern von "klassischem" CAN zu unterscheiden.
Übersteigt die Länge des Datenfeldes (max. 64 Bytes/Frame bei CAN FD) die maximale Zeilenlänge, dann werden nur die ersten Datenbytes angezeigt.
Bei CAN FD wird i.A. nur das "wichtigste" CAN-FD-spezifische Flag (*) zwischen CAN-Message-Identifier und Datenfeld angezeigt, um Platz auf dem Display einzusparen. Die Anzahl Datenbytes wird auch beim Mischbetrieb (mit CAN und CAN FD) als Dezimalzahl in eckigen Klammern vor dem hexadezimalen Datenfeld angezeigt. Beispiel:

CANsnoop  F1:Pg↑ F2:Pg↓ F3:Escape E:Select
00000333 FDF [64] 11 22 33 44 55 66 77 88 c=4   
00000334 BRS [64] 11 22 33 44 55 66 77 88 c=5
00000335 CAN [08] 11 22 33 44 55 66 77 88 c=22
00000336 CAN [02] 11 22                   c=10
20000444 ESI [48] 11 22 33 44 55 66 77 88 c=1965
RxCnt=2006 I=1/10

(*) Der CAN-Snooper wählt eine möglichst kurze Form für den 'Message Dump'.
Solange nur 'klassische CAN-Frames' empfangen werden, wird auch die im vorhergehenden Kapitel beschriebene Darstellung verwendet, ohne Angabe der Anzahl Datenbytes (weil diese bei maximal 8 Bytes einfach per Auge 'abzählbar' sind).
Nach dem Empfang des ersten 'FD'-Rahmens werden im Message-Dump i.A. eines der folgenden Tokens zwischen Identifier und Datenfeld angezeigt:
FDF : 'FD Format', aber ohne 'BRS' (Bitrate Switch), und kein 'ESI' (Error State Indicator).
BRS : 'Bit Rate Switch', d.h. FD-Rahmen mit "schnellem Datenfeld".
ESI : 'Error State Indicator' : Deutet auf schwere Probleme im CAN-FD-Netzwerk hin !
CAN : 'klassischer' CAN-Rahmen (nur bei Mischbetrieb mit CAN und CAN FD).

zurück zum Anfang


Details, Internes, Dateiformate

Interpreter commands to control logger and snooper

Some of the logger / snooper functions can be controlled or activated from the user-programmable terminal application. For example, you can activate the CAN snooper from your own menu, or through a hotkey (etc etc). The interpreter functions are:

logger.run
Activates the CAN logger, but does not necessarily trigger it (depending on the configuration, see logger.trigger). Caution: If the supply power is 'unsafe' for any reason, the command logger.run will have no effect. Depending on the hardware, the power-good-flag must be set to one (power=1) before logger.run has an effect.
logger.stop
Stops the CAN logger. The logfile on the memory card is closed, so you can safely remove the card. No popup window appears (in contrast to the 'card.remove' command). The logger will also stop automatically when the power-good-flag is cleared (power=0).
logger.trigger(X)
Triggers a recording (X=1) or clears the trigger flag (X=0). Does not close the logfile. Intention: Manual trigger or trigger by the user-programmable terminal application. Examples:
logger.trigger(1) : rem Start recording to the CF card
logger.trigger=1 : rem Same effect as above, only different syntax
logger.trigger=0 : rem Stop recording, but keep buffering received frames
Note about "logger.run" vs "logger.trigger":
Setting the trigger (=begin writing to the logfile) with this command automatically includes activating the logger (logger.run). But, if the logger was not running when executing the trigger-command, there will be nothing in the pretrigger-buffer.
So, if you need pretrigger-data, activate the logger before triggering it ! More info on that can be found in the documentation of the CAN Logger Configuration Utility.
logger.info
returns the "info string" which has been defined with the logger configuration utility. The info string cannot be modified with this routine !
logger.file
returns the name of the current logfile (as a string). The filename cannot be modified with this routine !
logger.fnr
returns the logfile sequence number (as integer value). The value can only be read, but not modified with this routine !
logger.fspace
returns the remaining space in the current logfile in KByte. The result is only valid if a logfile is opened at the moment. The limit may be the remaining disk space, but also the user-defined maximum file size.
logger.load
The relative CPU load caused by the logger. Unit is percent * 100 (two places after the decimal point). A value greater than 100.00 means "severe overload" (Reasons: message rate too high, decoding of trigger conditions too complicated, access to the memory card too slow, etc). Only for testing purposes.
logger.menu(X)
Enters one of the logger's built-in configuration or diagnostic screens, which are otherwise only accessible via the terminal's system menu.
The numeric parameter X defines, which of the screens shall be entered :
logger.menu(0) = Enter the logger's main menu
logger.menu(1) = Show the basic logger states (CAN logger diagnostics)
logger.menu(2) = Show the current trigger conditions
logger.menu(9) = Open the file selector to load a new logger configuration(*)
Note: There may be other values which are not listed in this document !
(*) It is highly recommended NOT to load a different logger configuration during runtime, because the new CAN message filters cannot be applied without rebooting the terminal.
logger.rcnt
returns the count of CAN messages received (but not necessarily "written") by the CAN logger.
logger.wcnt
returns the count of CAN messages written to the logfile (since starting the logger).
logger.lost
returns the count of "lost" CAN messages in the CAN logger. Lost messages are caused by severe overload, see "logger.load" for details.
logger.state
returns the current state of the CAN logger as a numeric value. Possible results :
0 = "stopped" (file not open, or buffer not filled in interrupt)
1 = "engaged" (file open, ISR active, but not triggered yet)
2 = "triggered" (file open, ISR active, AND "triggered" )
3 = "post-triggered" (after triggered). Only occurrs if the post-trigger time in the logger configuration is non-zero.

snooper.run
Enters the CAN snooper mode from your application.With this command, there is no need for the user to navigate through the terminal's system menu !

Planned: Examples for the usage of these commands are in the files  "LoggerTest.cvt" or "LogDemoX.cvt".

Interpreterkommandos und -Funktionen zum Steuern der Speicherkarte

In einigen Anwendungen könnte der Wechsel der Speicherkarte ohne Abschalten der Versorgungsspannung nötig sein. Da im Zweifelsfall aber Dateien auf der Speicherkarte zum Schreiben geöffnet sein könnten (besonders im Logger-Betrieb), könnte das Dateisystem beim 'ungeplanten' Entfernen der Speicherkarte beschädigt werden. Es ist daher unzulässig, im laufenden Betrieb die Speicherkarte zu entnehmen bzw. zu wechseln !
Soll die Speicherkarte ohne Abschalten der Spannungsversorgung (unabhängig vom Vorhandensein einer internen USV) entfernt werden, dann integrieren Sie in der Display-Applikation die foldengen Befehle (z.B. per programmierbarem Button, Funktionstaste, etc):

card.insert
Dieser Befehl öffnet ein kleines Popup-Fenster, in dem der Bediener zum Einsetzen einer Speicherkarte aufgefordert wird. Ist bereits eine Speicherkarte eingesetzt, passiert nichts (kein Popup).
Das Kommando wartet nicht, bis der Bediener eine Speicherkarte eingesetzt hat (mit anderen Worten: Die selbstprogrammierte Anwendung läuft im Hintergrund weiter). Das Popup-Fenster wird automatisch geschlossen, sobald eine Speicherkarte in das Gerät eingesetzt wurde.

card.remove
Öffnet ein kleines Popup-Fenster, in dem der Bediener zum Entfernen der im Gerät eingesetzten Speicherkarte aufgefordert wird. Dabei werden alle eventuell noch offenen Dateien auf der Speicherkarte geschlossen (wichtig zum Schutz des Dateisystems).
Ist keine Speicherkarte eingesetzt, passiert nichts (kein Popup).
Wie auch 'card.insert' wartet dieses Kommando nicht, bis der Bediener der Aufforderung nachgekommen ist (mit anderen Worten: Die selbstprogrammierte Anwendung läuft im Hintergrund weiter).
card.state
Liefert den aktuellen Zustand der Speicherkarte (eingesetzt/nicht eingesetzt, usw.) Mögliche Rückgabewerte sind:
0 = keine Karte eingesetzt
1 = Karte eingesetzt, Directory wurde gelesen, "ok"
2 = Karte eingesetzt, Initialisierung noch nicht abgeschlossen
3 = Karte eingesetzt, aber falscher Typ / nicht unterstütztes Dateisystem
4 = Spannungsversorgung für die Karte (und automatische Steuerung) sind abgeschaltet; Zustand der Karte unbekannt.
card.dspace
Liefert den momentan noch freien Karten-Speicher in kByte. Der Aufruf dieser Funktion kann, abhängig vom Dateisystem und der Größe des Datenträgers, einige Sekunden in Anspruch nehmen.

Im Normalfall ist es unnötig, den Bediener per Applikation zum Einsetzen oder Entfernen der Speicherkarte aufzufordern. Es wird empfohlen, die Karte bereits vor dem Einschalten der Spannungsversorgung einzusetzen, und erst nach dem Abschalten bzw. (bei neueren Geräten) dem Herunterfahren des Systems zu entfernen.

Interpreterkommando zum Setzen des 'Power-Good-Flags'

Hinweis:
Das folgende Kapitel bezieht sich nur auf alte Geräte ohne interne USV (unterbrechungsfreie Stromversorgung), wie z.B. 'MKT-View Plus'.
Bei neueren Geräten mit interner USV (z.B. MKT-View II/III/IV) braucht das 'Power-Good-Flag' nicht wie im Folgenden beschrieben durch die Applikation gesetzt werden, um z.B. den CAN-Logger zu aktivieren !

Um Beschädigung des Dateisystems auf der Speicherkarte zu vermeiden, sind Schreibzugriffe nur bei 'zuverlässiger' Spannungsversorgung möglich. Auch der CAN-Logger kann/darf erst gestartet werden, wenn die Spannungsversorgung 'sicher' ist.
Bei Kraftfahrzeugen mit Verbrennungsmotor bestand (beim MKT-View "Plus") folgendes Problem:

Beim Anlassen des Motors brach die Versorgungsspannung für kurze Zeit so tief ein, dass ein unplanmäßiger Reset (d.h. Neustart) des Gerätes ausgelöst wurde. Dadurch konnte (bei frühzeitig gestartetem Logger) das Dateisystem auf der Speicherkarte, oder sogar die Karte selbst beschädigt werden.

Abhilfe: Bei diesen alten Geräten musste im ANWENDERPROGRAMM (*.cvt) das sogenannte Power-Good-Flag gesetzt werden, per Interpreterkommando:

power=1 : REM Logger-Config wird geladen, etc etc

Erst danach waren Zugriffe auf die Speicherkarte (auch für den CAN-Logger) möglich.
Durch Setzen des Power-Flags (power=1) teilte die Applikation der Firmware mit, dass die Spannungsversorgung nun 'sicher genug' für den Betrieb des CAN-Loggers war.
In der Display-Applikation wurde dies üblicherweise in einer Event-Definition definiert, mit der das Power-Flag z.B. an die Drehzahl des Motors gekoppelt wurde, z.B.:
Ereignis:
  Drehzahl>1000

Reaktion:
  power=1 : REM Spannungsversorgung ist jetzt 'sicher genug' für den Logger

Das Kommando 'power=1' bedeutete (beim MKT-View "Plus") in etwa:
"Die Versorgungsspannung ist jetzt sicher, und der Logger darf mit seiner Arbeit beginnen".

Eine ähnliche Definition liesse sich auch zum 'sicheren' Herunterfahren des Loggers formulieren:
Ereignis:
  Drehzahl<500

Reaktion:
  power=0 : REM Motor ist aus, Dateien schliessen, Logger aus !

Mit 'power=0' werden alle Schreibzugriffe auf die Speicherkarte verboten. Darüberhinaus schliesst die Firmware alle noch offenen Dateien, wozu (u.A.) auch das aktuelle Logfile gehörte.

Zum Testen oder für Diagnosezwecke kann der aktuelle Zustand des 'Power-Good-Flags' auch per Interpreterfunktion ('power') ausgelesen werden.
Beim MKT-View II / III / IV sind diese Umstände nicht mehr erforderlich, denn diese Geräte verfügen zum Schutz der Speicherkarte über eine interne USV (unterbrechungsfreie Stromversorgung).

Beim alten MKT-View 1 ("Plus") war der Default-Zustand für das Power-Flag 0 (Null), d.h. die Versorgung wurde als 'unsicher' angenommen, und Zugriffe auf die Speicherkarte waren ohne Setzen des Power-Flags durch die Applikation nicht möglich.
In späteren Re-Designs der Harware (MKT-View II, III) wurde eine unterbrechungsfreie Spannungsversorgung (USV) in den Geräten implementiert, und es besteht keine Notwändigkeit mehr das 'Power-Flag' in der Display-Applikation selbst zu setzen, denn:
Bei allen Geräten mit interner USV setzt die FIRMWARE das Power-Flag, sobald die internen Speicherkondensatoren ('Ultracaps') ausreichend geladen sind.

Im (alten) Beispielprogramm "LogDemo1.cvt" finden Sie ein Beispiel zum Setzen des Power-Flags. In diesem bewusst einfach gehaltenen Beispiel wird der Bediener dazu aufgefordert, eine beliebige Taste (den berüchtigten "Any-Key") zu drücken, sobald die Spannungsversorgung seiner Meinung nach 'sicher' ist.
Wie bereits erwähnt, empfiehlt es sich dem Bediener diese Arbeit -wenn möglich- abzunehmen, wenn z.B. die Motordrehzahl im CAN-Netzwerk verfügbar ist.


Rechtliches

In dieser Beschreibung verwendete Namen oder Logos sind möglichwerweise Warenzeichen oder eingetragene Warenzeichen ihrer jeweiligen Eigner, auch wenn sie in dieser Beschreibung nicht entsprechend gekennzeichnet sind. Entsprechendes kann für copyright-geschütztes Material zutreffen. Ein fehlendes ®(r) oder ©(c) erlaubt daher keinen Rückschluss auf ein eventuell vorhandenes Warenzeichen / Trademark, Copyright, oder dergleichen.
Sollten Sie Inhaber eines Trademarks oder Copyrights eines der in dieser Beschreibung verwendeten Namens sein, der in der folgenden Auflistung fehlt, bitten wir (MKT Systemtechnik) um einen Hinweis per E-Mail an info@mkt-sys.de.

CANdb is registered trademark of Vector Informatik GmbH.
Compact Flash™ is a trademark of Sandisk Corp.
NI DIAdem is trademark or registered trademark of National Instruments Corporation.
Intel and the Intel logo are registered trademarks of Intel Corporation.
DL4YHF is a registered amateur radio callsign which the author may have used as a password somewhere.
Excel, Microsoft, Windows, Win95/98, WinNT, WinXP are registered trademarks of Microsoft Corporation.

Weitere Hinweise und den Link zum Impressum finden Sie im Hauptdokument des Hilfesystems.

Zurück zum Anfang