CAN Bus Daten Umrechnungsproblem

OP #5577970
Hallo Zusammen,

Ich habe folgendes kleines Projekt am laufen. Ich lese mittels eines 
Arduinos und eines CAN Bus Shields die FMS Schnittstelle eines LKW aus. 
Technisch funktioniert das ganze auch und ich kann Daten im Seriellen 
Monitor anschauen und umrechnen.

Doch nun kommt der Knackpunkt, ich bin zu doof zum Rechnen im Moment bei 
bestimmten Daten oder ich finde meinen Fehler nicht.

Jeder Datensatz besteht aus einer ID in deren Inhalt definiert ist der 
acht Byte lang ist.

Beispiel:

Daten von ID: 18FEFC27
Inhalt : FF E6 FF FF FF FF FF FF

Identifikator Erklärung: 18 FE FC 27

Byte Bit Länge   Information           Auflösung     Bereich 
Anmerkung
1     1     8    Scheibenwasser        0.4% / Bit   0 bis 100%

2     1     8    Kraftstoffstand       0.4% / Bit   0 bis 100%

und so weiter...

Wenn ich Byte zwei Betrachte E6 als HEX-Wert wird daraus 230 als 
Dezimalzahl. Weiter Rechne Ich dann 230*0,4 = 92. Der Tatsächliche 
Füllstand war von dem LKW wirklich 92% laut dem OEM Tester vom LKW 
Hersteller. Also richtig Umgerechnet.


Nun zu meinen Problem

Daten von ID: 18FEF527
Inhalt: C5 FF FF 16 24 FF FF FF

Identifikator Erklärung: 18FEF527
Byte Bit Länge Information       Auflösung     Bereich 
Anmerkung

4    1   16    Ausentemperatur  0,03125°C /Bit -273° bis 1735° offset 
-273°


Die beiden Hex Werte wären 16 und 24. Zusammen sollen beide die 
Aussentemperatur ergeben. Doch Rechnerisch komme ich auf folgendes:

1624 HEX macht 5668 Dezimal. 5668*0,03125°C = 177,125 °C. Wenn ich nun 
das Offset von -273° C dazu Addiere komme komme ich auf -95,875° Celcius 
also Falsch.

Wo liegt mein Fehler??

MfG Stefan Mandl
Gast
Stefan M. schrieb:
> Nun zu meinen Problem
>
> Daten von ID: 18FEF527
> Inhalt: C5 FF FF 16 24 FF FF FF
>
> Identifikator Erklärung: 18FEF527
> Byte Bit Länge Information       Auflösung     Bereich
> Anmerkung
>
> 4    1   16    Ausentemperatur  0,03125°C /Bit -273° bis 1735° offset
> -273°
>
> Die beiden Hex Werte wären 16 und 24. Zusammen sollen beide die
> Aussentemperatur ergeben. Doch Rechnerisch komme ich auf folgendes:
>
> 1624 HEX macht 5668 Dezimal. 5668*0,03125°C = 177,125 °C. Wenn ich nun
> das Offset von -273° C dazu Addiere komme komme ich auf -95,875° Celcius
> also Falsch.
>
> Wo liegt mein Fehler??
>
> MfG Stefan Mandl

Denke du hast nur die Bytes vertauscht:
HEX 16 = DEZ 22
HEX 24 = DEZ 36

36 * 256 = 9216
9216 + 22 = 9238

9238 * 0,03125°C = 288,69°C
288,69°C - 273°C = 15,69°C
OP
Hallo Zusammen,

Lange nix mehr dazu geschrieben aber ich möchte mich mal bei Speed 
bedanken der den Schlüssel zum Erfolg hatte. Manchmal sieht man den Baum 
vor lauter Bäumen nicht :-). Es funktioniert soweit ganz gut und ich 
kann alle für den Fahrer Relevanten Daten auf ein Info-Display schicken 
dank eurer Hilfe.
Nochmals Danke für eure Hilfe.

MfG Stefan Mandl

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 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.