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
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 :-)
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
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.
>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
Bist du sicher, dass der Code richtig ist? Nicht das hier im Code was anderes gemeint ist als das, was du ausließt
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
>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
>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
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
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
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.
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.
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
>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
Das sind sozusagen Erfahrungswerte :-) Könnte hinkommen mit CAN-Byte*0,75 - 48 Zu deinen 78h fehlt die entsprechende Temperatur.
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
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.
>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.
Andersherum. y=ax+b 160/80 -> Steigung 0,5 //das ist a Jetzt fehlt noch b 10=0,5*40+b b=-10
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.