mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Olli Z. (z80freak)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

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
Autor: Falkner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas F. (igel)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Olli Z. (z80freak)
Datum:

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

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Olli Z. (z80freak)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gern, vielen Dank. Ist der Aufbau Opensource?

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Torsten C. (torsten_c) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.