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?
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.
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.
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!
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.
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.