Forum: PC-Programmierung CAN DBC mit Wertetabelle - wie wird das behandelt?


von Günter N. (turtle64)


Lesenswert?

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?

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

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.

: Bearbeitet durch User
von Thomas F. (igel)


Lesenswert?

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.

von Günter N. (turtle64)


Lesenswert?

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!

von Le X. (lex_91)


Lesenswert?

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.

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.