CAN DBC mit Wertetabelle - wie wird das behandelt?

OP #6115071
Hallo,

eine Frage zum Thema, was ein CAN-Empfänger mit dem DBC-File anstellt, 
speziell wie Wertetabellen behandelt werden:

Ich habe hier einen Sensor, der über CAN Daten schickt.
Im DBC-File ist definiert:

Signal: 16 Bit signed
Faktor: 0,01
Offset: 0
somit Wertebereich -327,68 bis 327,67

Außerdem ist eine Wertetabelle hinterlegt, laut der der Wert 0xFFFF 
bedeutet "Keine Daten erhalten".
(Ich weiß, das liegt mitten im normalen Messbereich, 0x8000 wäre 
besser.)

Das Problem:
Das Empfangsprogramm (ich weiß leider nicht, welches benutzt wird) 
speichert, wenn 0xFFFF empfangen wird, den Wert -0,01, also einen 
"normalen" Messwert.
Sollte dieser Wert nicht ausgefiltert und durch "Keine Daten erhalten"
ersetzt werden?
Was steht denn normalerweise in der Messwertdatei, wenn solche 
"Sonderwerte" empfangen werden?
#6115753
Günter N. schrieb:
> Das Empfangsprogramm (ich weiß leider nicht, welches benutzt wird)
> speichert, wenn 0xFFFF empfangen wird, den Wert -0,01, also einen
> "normalen" Messwert.
> Sollte dieser Wert nicht ausgefiltert und durch "Keine Daten erhalten"
> ersetzt werden?

Nö, warum? Es ist aus der Sicht des Programms nur ein Wert, der einen 
bestimmten Namen bekommen hat. Dass das bedeutet, dass keine Daten da 
sind, ist nur deine Interpretation des Wertes.
Stell dir mal die Gangwahl für ein Automatrikgetriebe vor. Es gibt
die manuelle Wahl der Gänge 1 bs 7 und die "Spezialwerte" R, N, D und P. 
Würdest du da erwarten, dass nur bei manueller Gangwahl was rauskommt 
und R, N, D und P als "keine Daten" gewertet werden?

> Was steht denn normalerweise in der Messwertdatei, wenn solche
> "Sonderwerte" empfangen werden?

Das kommt auf den Anwendungsfall an. Aber das universellste wäre, den 
Wert einfach auszugeben, so wie es deine Software getan hat.
#6116042
Günter N. schrieb:
> Das Empfangsprogramm (ich weiß leider nicht, welches benutzt wird)

Die Interpretation der dbc-Datei und Umrechnung der rohen CAN-Daten ist 
nun mal Aufgabe des Empfangsprogramms. Wenn dieses etwas anderes macht 
hat das erst mal nix mit der CAN-Spezifikation zu tun. Es steht dem 
Programmierer frei ob er sich an die Vorgaben in der DBC halten will.
OP #6116218
Vielen Dank an Euch beide!

Das erklärt einiges.

In diesem Fall werden die empfangenen Daten geplottet, und da sieht es 
dann so aus, als ob es Ausreißer zu 0 bzw. -0,01 hin gibt. Die 
Interpretation, dass das "kein Wert" bedeutet, wird also dem geneigten 
Anwender überlassen.

Prima, dass es hier endlich mal Antworten ohne das übliche "bist du aber 
doof" und so weiter gab!
#6116295
Günter N. schrieb:
> In diesem Fall werden die empfangenen Daten geplottet, und da sieht es
> dann so aus, als ob es Ausreißer zu 0 bzw. -0,01 hin gibt. Die
> Interpretation, dass das "kein Wert" bedeutet, wird also dem geneigten
> Anwender überlassen.

Wenn im dbc 0xFFFF als "Fehlerwert" definiert ist so darf dieser nicht 
in eine physikalische Darstellung umgerechnet werden.
Der Plotter verhält sich also falsch.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.