Forum: Fahrzeugelektronik Wie nummeriert/dokumentiert man die Datenbytes der CAN-Botschaft?


von Olli Z. (z80freak)


Lesenswert?

Hallo,

wenn ich eine CAN-Botschaft empfange dann sieht das im Log von CANHacker 
z.b. so aus:
1
Time   ID     DLC Data                    Comment
2
03,429 50C      3 0C 01 00                
3
03,429 50C      3 0C 01 00                
4
03,459 2D5      7 01 0F FF FF 97 FF 49    
5
03,459 2D5      7 01 0F FF FF 97 FF 49    
6
03,460 2D8      3 09 FA 1F                
7
03,460 2D8      3 09 FA 1F                
8
03,461 2D9      8 0C 77 77 01 F8 F8 F8 F8 
9
03,461 2D9      8 0C 77 77 01 F8 F8 F8 F8 
10
03,462 2DA      5 00 2A 00 27 00          
11
03,462 2DA      5 00 2A 00 27 00          
12
03,463 2DB      8 FF FF FF FF 00 00 00 00 
13
...

Die DLC ist durchaus variabel. Wenn ich nun in einer Dokumentation auf 
die Datenbytes bezug nehmen möchte, wie beziffere ich diese am besten?

Ich würde es so sehen das das Byte ganz rechts das niederwertigste (LSB) 
und damit "D0" oder "Byte 1" darstellt und das nach rechts aufsteigend 
gezählt wird. Oder ist es genau andersrum?

Es gibt Nachrichten die enthalten einen Wert über mehrere Bytes und mit 
der Leserichtung rechts-nach-links wären diese dann in Big-Endian.

: Bearbeitet durch User
von Falkner (Gast)


Lesenswert?

>Big-Endian
Bei CAN benutzt man die Bezeichnungen "Intel" und "Motorola"

https://forum.iqan.se/communities/1/topics/608-byte-order-for-bit-sized-can-messages

von Rolf M. (rmagnus)


Lesenswert?

Olli Z. schrieb:
> Die DLC ist durchaus variabel. Wenn ich nun in einer Dokumentation auf
> die Datenbytes bezug nehmen möchte, wie beziffere ich diese am besten?
>
> Ich würde es so sehen das das Byte ganz rechts das niederwertigste (LSB)
> und damit "D0" oder "Byte 1" darstellt und das nach rechts aufsteigend
> gezählt wird. Oder ist es genau andersrum?

Wieso "niederwertigste"? Welche Wertigkeit (und ob überhaupt), hängt 
doch davon ab, was da drin steht. Die Rohbytes haben erstmal keine 
Wertigkeit. Da ist dann einfach das erste Byte das Byte 1, das zweite 
das Byte 2 und so weiter.

> Es gibt Nachrichten die enthalten einen Wert über mehrere Bytes und mit
> der Leserichtung rechts-nach-links wären diese dann in Big-Endian.

Die Byteoder kann durchaus auf Basis einzelner Signale variieren.

von Thomas F. (igel)


Lesenswert?

Olli Z. schrieb:
> Es gibt Nachrichten die enthalten einen Wert über mehrere Bytes und mit
> der Leserichtung rechts-nach-links wären diese dann in Big-Endian.

Es wird von links nach rechts gezählt. Das erste übertragene Byte ist 
Byte 0.

Bei Werten größer 8 Bit unterscheidet man zwischen Intel- und 
Motorola-Format welches zuerst kommt. Das darf jeder Busarchitekt selber 
festlegen.  Meist wird Intel verwendet.

von Olli Z. (z80freak)


Lesenswert?

Bezüglich auf das Logformat oben: Wo würdet ihr denn Byte 0 sehen?

von Rolf M. (rmagnus)


Lesenswert?

Olli Z. schrieb:
> Bezüglich auf das Logformat oben: Wo würdet ihr denn Byte 0 sehen?

Thomas F. schrieb:
> Es wird von links nach rechts gezählt.

von Jürgen (Gast)


Lesenswert?

Zum Dokumentieren von CAN-Signalen gibts dbc-Files. In dieser werden in 
der Regel alle Botschaften, Signale und deren Eigenschaften definiert.
Vielleicht kannst du dich ja auch daran orientieren?

von Olli Z. (z80freak)


Lesenswert?

Gern, vielen Dank. Ist der Aufbau Opensource?

von Jürgen (Gast)


Lesenswert?

Den Aufbau der dbc-Files findest du in Google.

In der Firma nutzen wir die Software CANdb++ von Vector, ich denke für 
deine Zwecke sollte die Standard Version reichen, die bekommt man meines 
Wissens nach auch kostenlos.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Zur Frage: "Wie dokumentiert man die Datenbytes der CAN-Botschaft?"

> FIBEX ist ein frei verfügbarer, firmenübergreifender Standard:
https://www.elektroniknet.de/elektronik-automotive/software-tools/bordnetze-entwerfen-mit-dem-fibex-editor-26.html

Der dbc-Datei-Aufbau ist nicht Opensource, sondern proprietär von 
Vector.

http://socialledge.com/sjsu/index.php/DBC_Format
Hier^^ ist nicht alles beschrieben, z.B. finde ich für "on change" keine 
Inhibit-Zeiten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.