CAN Daten auslesen mittels dbc File

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
soeintyp
User
Beiträge: 3
Registriert: Montag 27. November 2017, 09:56

Guten Tag,

ich habe mittels Suchfunktion leider nichts derartiges gefunden, sofern bereits ein Thema diesbezüglich besteht, bitte dies zu entschuldigen.

Ich stehe vor folgendem Problem: Ich habe ein aufgezeichnetes CAN Datenfile. Dieses liegt mir in Form eines .asc oder aber auch als .blf File vor.
Dieses File möchte ich nun mittels dem zugehörigen .dbc file entschlüsseln und danach visualisieren. Mein Problem liegt nun darin, dass ich in keines der bestehenden Pakete für Python eine solche Funktion, wie sie beispielsweise in Matlab besteht (canMessageImport(*.asc ,zb. 'Vector', *.dbc)), gefunden habe. Ich habe schon verschiedene durchsucht wie python-can oder caneton, etc. Darin habe ich leider bisher nichts gefunden, oder nur schlampig gesucht / übersehen?!?

Gibt es denn eine solche "einfache" Möglichkeit? In Matlab erhalte ich dann eine Datenstruktur, sowas würde mir schon helfen, aber alles selbst entschlüsseln zu müssen, würde vermutlich meine Programmierkenntnisse überschreiten.
Oder hättet ihr eine andere Idee, bzw hattet ihr schon Erfahrung mit sowas?

Vielen Dank schon mal für eure Hilfe,
mfg
soeintyp
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich kenne mich mit CAN nicht aus, aber so wie ich das verstehe sind die dbc-Dateien ein Art Beschreibung des Verkehrs, der dann zu diskreten Messages wird. Auf Anhieb habe ich da auch nichts gefunden, aber python-can kommt mit einer Liste von CAN-Devices:

http://python-can.readthedocs.io/en/lat ... faces.html

Ggf. reicht es einfach aus rauszufinden, welches davon deines ist, und dann kannst du dir die DBC-Nummer sparen.
soeintyp
User
Beiträge: 3
Registriert: Montag 27. November 2017, 09:56

Danke für die Antwort!

Genau, so kann man es sagen. So sehen übrigens die Daten aus dem .asc file aus:
0.000000 1 D4x Rx d 8 4D 03 00 00 00 00 00 00
0.000307 1 D5x Rx d 8 00 00 00 00 00 00 00 00
0.000599 1 D6x Rx d 8 12 DF 31 01 00 00 00 00
0.000907 1 D7x Rx d 8 00 00 00 00 00 00 00 00
0.008895 1 D0x Rx d 8 2F BE 2A 74 00 80 FF 7F
0.050001 1 D4x Rx d 8 E7 03 00 00 00 00 00 00
0.050308 1 D5x Rx d 8 00 00 00 00 00 00 00 00
0.050596 1 D6x Rx d 8 6E F7 44 01 00 00 00 00
0.050898 1 D7x Rx d 8 00 00 00 00 00 00 00 00
0.058934 1 D0x Rx d 8 BD BE 4A 72 FF 7F FF 7F ....

Mich interessieren hier eigentlich nur die die erste Spalte mit Timestamp die dritte mit ChannelID und die Daten (4D 03 ... 00 )

Wenn ich das richtig verstehe bei den verschiedenen CAN-Modulen, dann kann ich das ja nur verwenden wenn ich direkt das Modul auch verwende aber nicht aus einem Datenfile heraus oder?
Ideal wäre es, wenn ich mich nicht direkt für ein Interface entscheiden muss.

mfg
soeintyp
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja, scheint so als ob dieses Python CAN nicht die Lösung ist.

Eine andere habe ich aber auch nicht. Die Daten so wie du sie gezeigt hast einzulesen ist trivial bezüglich timestamp, Kanal und Payload. Aber eine ‚Feinstruktur‘ des letzteren ist dann der Kicker. Keine Ahnung ob und was da passieren muss.

Aber wenn du das in matlab schon hinbekommst, warum machst du das nicht einfach damit?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe noch den hier gefunden: https://github.com/ebroecker/canmatrix

Das versteht DBC (und andere), wobei es glaube ich nicht in der Lage ist Nachrichten zu dekodieren. Aber der Entwickler ist sehr aktiv, vielleicht kann er dir helfen.
soeintyp
User
Beiträge: 3
Registriert: Montag 27. November 2017, 09:56

Das Problem ist Matlab ist sehr teuer und ich will mir keine Lizenz mehr kaufen. Darum seh ich mich nach alternativen um in bester Form gratis oder zumindest günstig und das ist Matlab leider nicht.

Danke für den Tipp und deine Mühen, ich versuch den Entwickler mal anzuschreiben.

mfg
soeintyp
Antworten