Wenn die empfangenen Daten in meiner CAN-Nachricht 327,67 überschreiten, springt der Wert auf -327,68 zurück. Warum passiert das?
Der Grund für dieses Überlaufen ist, dass es sich um eine 16-Bit vorzeichenbehaftete Zahl handelt. Alle Kanäle im Dash sind vorzeichenbehaftet, daher muss man sie für eine korrekte Funktion auf eine 32-Bit-Zahl erweitern. Wie das gemacht wird, hängt davon ab, an welcher Stelle im CAN-Nachricht der Kanal positioniert ist. Ich habe ein Bild angehängt mit einigen Beispielen, wie man Offset, Länge, Maske und Divisor je nach Position des Kanals „Fuel Used“ einstellt.
Eine Sache ist zu beachten: Wenn sich der Kanal im Byte 0 befindet, muss man fortgeschrittene Mathematik verwenden, um den richtigen Divisor zu erhalten. In diesem Fall benötigt man einen Divisor von 65536, aber der Divisor-Parameter in der CAN-Vorlage hat einen Maximalwert von 32767.
Der Grund für den Divisor ist, dass die Maske als 'AND' auf den Kanal wirkt und kein Bit-Shift ist.
Das Kontrollkästchen für vorzeichenbehaftet/vorzeichenlos muss weiterhin korrekt ausgewählt sein, je nachdem, ob der empfangene Kanal vorzeichenbehaftet ist oder nicht.
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.