Forum: Mikrocontroller und Digitale Elektronik Was heisst diese Zeile?


von Alex (Gast)


Lesenswert?

Hallo!
Ich möchte vom Motor-Can was lesen.
Habe zum Beispiel das hier gefunden:
Auf der ID 420 sollen verschiedene Temperaturen drauf sein.
Was könnte diese Zeile bedeuten:
// rprintfStr("Temp coolant= "); rprintfdec((can_buff[3]-100)/2);

aus dem Link:
http://audiforum.us/threads/id-codes-can-protocol.4999/
post nr.1 ganz am ende.

Verstehe ich das Richtig?
rprintfStr - Ausgabe auf den LCD
"Temp coolant= " als text ausgeben
rprintfdec - keine Ahnung
can_buff[3] ausgelesener Wert aus Can Nachricht (byte 3)
-100  -aus dem ausgelesenen Wert 100 abziehen
/2 - und die Differenz durch 2 teilen

Kann leider kein C oder Assembler (was immer das ist)

Danke
Gruss
Alex

von Karl H. (kbuchegg)


Lesenswert?

Ob rprintfdec tatsächlich auf einem LCD ausgibt oder nicht, weiss nur 
der, der die Funktion geschrieben hat. Da da aber die Worthülse 'print' 
im Funktionsnamen vorkommt, ist der Gedanke naheliegend, dass da wohl 
irgendeine Ausgabe erfolgen wird.

Allerdings hast du am Anfang die // übersehen.
Die bedeuten, dass die ganze Zeile auskommentiert ist und somit den 
COmpiler nicht weiter zu interessieren hat.

> can_buff[3] ausgelesener Wert aus Can Nachricht (byte 3)

das 4. te Byte. In C wird bei 0 angefangen zu zählen.

> -100  -aus dem ausgelesenen Wert 100 abziehen
> /2 - und die Differenz durch 2 teilen

ist wohl naheliegend :-)

von Anja (Gast)


Lesenswert?

Alex schrieb:
> can_buff[3] ausgelesener Wert aus Can Nachricht (byte 3)
> -100  -aus dem ausgelesenen Wert 100 abziehen
> /2 - und die Differenz durch 2 teilen

Irgendwas kann da nicht stimmen:
Byte 3 kann maximal 250 werden
bei Offset 100 und Skalierung durch 2 wäre die maximal
mögliche Temperatur 75 Grad.

Muß schon ein sehr energiesparendes Fahrzeug sein.

Gruß Anja

von Wilhelm F. (Gast)


Lesenswert?

Anja schrieb:

> Muß schon ein sehr energiesparendes Fahrzeug sein.

Nun ja, der vorige Entwickler ist wohl raus geflogen, und der jetzige 
hat was geerbt. So schwer ist das doch gar nicht.

von Alex (Gast)


Lesenswert?

>bei Offset 100 und Skalierung durch 2 wäre die maximal
>mögliche Temperatur 75 Grad.

DAS ist der Punkt, wo ich nicht weiter komme.
Ich lese bei tatsächlicher Wassertempeartur von 81°C (per vag-com 
(diagnosesoftware) ausgelesen) den Wert 0xAA bzw. 170 in dezimal aus.

mein Problem ist jetzt die Umrechnung.

Gruss Alex

von M. K. (sylaina)


Lesenswert?

Bist du sicher, dass der Code richtig ist? Nicht das hier im Code was 
anderes gemeint ist als das, was du ausließt

von Anja (Gast)


Lesenswert?

Alex schrieb:
> DAS ist der Punkt, wo ich nicht weiter komme.
> Ich lese bei tatsächlicher Wassertempeartur von 81°C (per vag-com
> (diagnosesoftware) ausgelesen) den Wert 0xAA bzw. 170 in dezimal aus.
>
> mein Problem ist jetzt die Umrechnung.

Dann laß doch das Auto auf 20 Grad abkühlen und meß noch mal.
Dann hast Du 2 Gleichungen mit 2 Unbekannten.

Ich wette es kommt ein 0ffset 64 und eine Auflösung 0.75 Grad/Digit 
heraus.
Entsprechend -48 .. 140 Grad.

Gruß Anja

von Alex (Gast)


Lesenswert?

>Bist du sicher, dass der Code richtig ist?

Nein, ich bin sicher, dass die ID richtig ist.
Auf der ID sind insgesammt 6 bytes.
Die ersten 3 verändern sich kaum beim Kalten und warmen Motor, die 
nächsten 2 können Öl und Wassertemperaturen sein, und das Letzte (byte 
6) ist mir auch rätzelhaft.
Gruss Alex

von Alex (Gast)


Lesenswert?

>Ich wette es kommt ein 0ffset 64 und eine Auflösung 0.75 Grad/Digit
>heraus.

Darf ich fragen, wie du darauf kommst?

P.S. ich warte schon seit Stunden, bis das Auto abkühlt. Wird noch 
dauern.

Gruss

von Michael A (Gast)


Lesenswert?

Alex schrieb:
> Ich lese bei tatsächlicher Wassertempeartur von 81°C (per vag-com
> (diagnosesoftware) ausgelesen) den Wert 0xAA bzw. 170 in dezimal aus.
>
> mein Problem ist jetzt die Umrechnung.
Wenn du jetzt bei einer zweiten Temperatur die Werte ausliest, kennst du 
schon mal den Skalierungsfaktor und dann sollte der Achsenabschnitt auch 
rauszukriegen/bestätigen sein

von Hugi (Gast)


Lesenswert?

Alex schrieb:
> Die ersten 3 verändern sich kaum beim Kalten und warmen Motor

Naja, das erste Byte scheint ja auch die Außentemperatur zu sein!?
// rprintfStr("Temp ext= "); rprintfdec((can_buff[ 0 ]-100)/2);z

von Wilhelm F. (Gast)


Lesenswert?

Alex schrieb:

> rprintfdec((can_buff[3]-100)/2);

Suche und poste die Funktion doch mal hier her. Da, wo du sie gelesen 
hast, ob es Sourcecode war, da muß sie sich doch auch drinnen befinden.

Befindet sie sich nicht mehr im Code, ist es gerade mal unwichtig.

von H.Joachim S. (crazyhorse)


Lesenswert?

Habe hier ein paar Formeln:
Motortemperatur: Wert*0,75-48
Aussentemperatur: Wert*0,5-40
ATF-Temperatur: Wert-50

Wirst also nicht umhin kommen, dass passende selbst zu ermitteln.
can_buff[3]-100)/2 ist jedenfalls Mumpitz.

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang gerade gemachter Screenshot.
In Hintergrund sieht man die richtig ausgelesene Wassertemp.
Im vorderen Fenster unter Filter Messages ist die Nachricht mit der ID 
420 und der Inhalt.
Wer kann da sie Logik finden?

Ach ja, zum Vergleich:
Als die Ausgelesene Temperatur 81°C war, stand bei Byte 5 (wo gerade 78 
steht) AA.

Sieht da Jemand den Zusammenhang?

Danke
Gruss Alex

von Alex (Gast)


Lesenswert?

>Habe hier ein paar Formeln:
>Motortemperatur: Wert*0,75-48
>Aussentemperatur: Wert*0,5-40
>ATF-Temperatur: Wert-50

Danke!
Was sind das für Formeln?
Ich meine wo kann man die Anwenden?

Gruss Alex

von H.Joachim S. (crazyhorse)


Lesenswert?

Das sind sozusagen Erfahrungswerte :-)
Könnte hinkommen mit CAN-Byte*0,75 - 48

Zu deinen 78h fehlt die entsprechende Temperatur.

von Alex (Gast)


Lesenswert?

DANKE für die Hilfe!
>Zu deinen 78h fehlt die entsprechende Temperatur.
Steht im Hindergrundfenster rechts.

>Könnte hinkommen mit CAN-Byte*0,75 - 48
Nah dran, passt aber nicht ganz.


Wie rechnet man sowas aus?

Gruss Alex

von H.Joachim S. (crazyhorse)


Lesenswert?

delta y / delta x, dann das absolute Glied.
Klasse 8 würde ich sagen:-)
Würde bei dir bedeuten Wert*0,7 -38.
Unüblich, aber denkbar.

von Alex (Gast)


Lesenswert?

>delta y / delta x, dann das absolute Glied.

Schule ist schon leider lange her.
Damit ich nicht faul aussehe mache ich mal eine Rechnung:
ALLE WERTE SIND AUSGEDACHT! Ich will nur die Richtigkeit der Rechnung 
wissen.

28h  sind  10°C
C8h  sind  90°C

delta y / delta x
( C8h - 28h ) / ( 90 - 10 )
A0 / 80
Ergibt 2

Und wie gehts weiter?
Sorry für die Dämlichkeit. Habe es echt vergessen.

von H.Joachim S. (crazyhorse)


Lesenswert?

Andersherum.
y=ax+b
160/80 -> Steigung 0,5 //das ist a
Jetzt fehlt noch b
10=0,5*40+b
b=-10

von Alex (Gast)


Lesenswert?

Danke!
Schönes Wochenende
Gruss Alex

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.