Forum: Mikrocontroller und Digitale Elektronik CAN Bus Daten Umrechnungsproblem


von Stefan M. (metaworld)


Lesenswert?

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

: Verschoben durch User
von Tom (Gast)


Lesenswert?


von Speed (Gast)


Lesenswert?

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

von Stefan M. (metaworld)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

Und ich finde super von Dir, dass du am Ende nochmal Feedback gegeben 
hast. Das wird viel zu oft im Eifer des Gefechts vergessen.

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.