Der CAN-Bus im Volvo

Volvo V70 2 (S)

Um Kabelbäume unter anderem in Fahrzeugen zu vereinfachen entwickelte Bosch im Jahre 1983 das Controller Area Network. Seit dem Jahr 2000 findet dieses System in vielen Fahrzeugen Anwendung (bei Volvo ab V70II S80 S60 XC70 XC90).

Grundprinzip ist, dass der gesamte Datenaustausch auf zwei Leitungen stattfindet. Diese werden um Reflexionen an beiden Enden zu vermeiden jeweils mit einem 120 Ohm Widerstand terminiert. Die Signalübertragung erfolgt differenziell mit einer Spannungsdifferenz von 2V zwischen CAN-H und CAN-L. Da im KFZ die Datenleitung vielen Störfeldern ausgesetzt ist werden beide Kabel miteinander verdrillt ,damit beide Leitungen den Störungen gleichermaßen ausgesetzt sind und eine Spannungsdifferenz von 2V erhalten bleibt.

Link zur Grafik

Bei einem dominanten Zustand (logisch 0) liegen beide Leitung auf einer Spannung von 2,5 volt. Im rezessiven Zustand (logisch 1) wird die Spannung der Leitung CAN-H(igh) um 1V auf 3,5V angehoben und die Spannung auf der Leitung CAN-L(ow) um 1V auf 1,5V abgesenkt.

Link zur Grafik

Alle im Netzwerk befindlichen Geräte können auf dieser Leitung mithören und abwechselnd senden. Damit sichergestellt wird, dass immer nur ein einzelnes Gerät sendet ist das Übertragungsverfahren streng definiert. Eine Darstellung aller Mechanismen würden den Inhalt des Forums jedoch sprengen, somit ist es an dieser Stelle sinnvoll die wesentlichen Spezifikationen zu erläutern.
Ein Gerät muss immer auf eine Lücke warten, bis es anfangen darf, Daten in das Netzwerk zu senden. Gleichzeitig muss das sendende Gerät im Netzwerk mithören und vergleichen ob jeder einzelne Spannungszustand erfolgreich in das Netzwerk übertragen wird. Da bei einer 1 der Pegel als hoch und einer 0 der Pegel als tief definiert ist, kommt es dazu, dass wenn zwei Geräte gleichzeitig senden, das Gerät mit dem dominanten Bit das Netzwerk auf Null zieht und somit den rezessiven Zustand überschreibt. Weil jedes Gerät die zu sendende Meldung mit dem Zustand des Netzwerkes vergleicht, stellt das Gerät, welches zum eigentlichen Zeitpunkt eine 1 gesendet hat einen Fehler fest und stoppt die eigene Sendung. Infolgedessen haben Meldungen mit einer vorausgehenden 0 eine höhere Priorität als Meldungen mit einer vorausgehenden 1.

Zur Identifikation besteht jede gesendete Meldung aus einer ID und einem Datensatz.

Zum Beispiel die Meldung welche vom Lenkradmodul gesendet wird, um den Zustand des Blinker- und Wischerhebels wiederzugeben:

ID: 0111300A Daten: C0 00 00 27 80 8E 00 C0

Da Volvo den erweiterten J1939-CAN-Frame nutzt besteht die ID aus 4 Bytes “01 11 30 0A” welche einerseits die Priorität der Meldung festlegen und andererseits der Identifikation dienen. Jede ID in einem Netzwerk darf nur einmal vergeben sein. Die ID hat den Nutzen für andere Geräte, dass diese dadurch selektieren können, welche Informationen für sie wichtig sein können. Das Radio beispielsweise achtet auf IDs, welche vom CEM kommen und die Geschwindigkeit und Beleuchtungseinstellung enthalten, wie auch auf IDs welche vom Lenkradmodul kommen und eine Änderung der Lenkradtasten enthalten.
Ein Gerät darf auch über mehrere IDs verfügen, da es auch verschiedene Informationen versenden kann.

Die ID bei Volvo wird gefolgt von einem 8 Byte Datensatz “C0 00 00 27 80 8E 00 C0” in diesem sind die Informationen enthalten, welche das Gerät dem Netzwerk mitteilt.

In Beispiel des Lenkradmoduls codiert die 5te Stelle (Byte 4) für:

5te Stelle:
80: Nichts gedrückt
84: Blinkhebel in rechter Stellung
88: Blinkhebel in linker Stellung
C0: Resettaste am Blinkhebel wird betätigt (Boardcomputerversion)
A0: Read Taste am Blinkhebel wird betätigt

Die 6te Stelle "8E" gibt an, dass der Wischerhebel in 0 Stellung ist.

Die Gesamte Meldung wird etwa alle 15ms in das Datennetzwerk gesendet (nach Priorität häufiger oder seltener), damit jegliche Geräte über den Zustand Bescheid wissen und entsprechend reagieren können. Erhält das CCM die Meldung 84 aktiviert es das Relais für den Blinker der rechten Seite.

Link zum Datendiagramm

Im Datendiagramm ist zu erkennen, dass die gesamte Meldung (als Frame bezeichnet) aus mehr als der ID und dem Datensatz besteht. Es sind noch einige Zusätze nötig, damit eine Meldung erfolgreich übertragen werden kann, diese sind aber bei alleiniger Betrachtung der Meldungen hier nicht von Bedeutung und werden in der realen Anwendung von Controllern automatisch errechnet und durchgeführt.

Kommt es trotz aller Mechanismen dazu, dass ein Fehler auftritt, weil beispielsweise eine ID doppelt im Netzwerk auftritt, unterbricht das Gerät mit gleicher ID die Sendung sofortig und versucht zu einem weiteren Zeitpunkt seine Meldung in das Netzwerk zu senden. Kommt es weiterhin hintereinander zum selbigen Fehler, klinkt sich das Gerät für eine vergleichsweise längere Zeit (ca. 10s) aus dem Netzwerk aus und versucht den Datentransfer erneut. Dies kann jedoch gravierend sein, wenn beispielsweise für etwa 10s der Blinker nicht mehr funktioniert.

Im Volvo gibt es zwei verschiedene CAN-Netzwerke:

Link zur Grafik

Das Motor High-Speed CAN mit einer Datenrate von 250kb/s und das Comfort-Low-Speed-CAN mit einer Datenrate von 125kb/s. Beide Netzwerke laufen voneinander unabhängig, das CEM ist das einzige Gerät welches in Kontakt mit beiden Netzwerken steht und somit Daten zwischen diesen austauschen kann wie beispielsweise die Drehzahl.

Volvo hat die Codierung jeglicher Daten in jedem Baujahr geändert, was zur Folge hat, das sich Geräte aus unterschiedlichen Baujahren nicht über den CAN-Bus unterhalten können, das sie ihre Meldungen nicht mehr verstehen.

Dazu ein Beispiel für die Datenwörter, welche unter anderem für die Tasten des Lenkrades zuständig sind:

Fahrzeug aus 2001
ID: 00200066 Daten: C0 00 00 01 1F 40 40 7F

Fahrzeug aus 2002:
ID: 0261300A Daten: 80 00 00 27 80 C2 00 CF

Beide Meldungen erfüllen genau die gleiche Funktion, können aber nicht von Geräten aus anderen Baujahren interpretiert werden.

Durch diese Zusammenhänge lassen sich nicht nur Funktionen im Fahrzeug ergründen sondern auch Erweiterungen wie die eines CAN-Extenders aufbauen. Durch ein einfaches Senden einer Meldung in dieses Netzwerk lässt sich somit etwa eine Coming-Home Funktion mit zusätzlich aktivierten Nebelscheinwerfen realisieren oder es können Tastendrücke oder Fahrzeugdaten jeglicher Art erfasst werden.

Beste Antwort im Thema

Um Kabelbäume unter anderem in Fahrzeugen zu vereinfachen entwickelte Bosch im Jahre 1983 das Controller Area Network. Seit dem Jahr 2000 findet dieses System in vielen Fahrzeugen Anwendung (bei Volvo ab V70II S80 S60 XC70 XC90).

Grundprinzip ist, dass der gesamte Datenaustausch auf zwei Leitungen stattfindet. Diese werden um Reflexionen an beiden Enden zu vermeiden jeweils mit einem 120 Ohm Widerstand terminiert. Die Signalübertragung erfolgt differenziell mit einer Spannungsdifferenz von 2V zwischen CAN-H und CAN-L. Da im KFZ die Datenleitung vielen Störfeldern ausgesetzt ist werden beide Kabel miteinander verdrillt ,damit beide Leitungen den Störungen gleichermaßen ausgesetzt sind und eine Spannungsdifferenz von 2V erhalten bleibt.

Link zur Grafik

Bei einem dominanten Zustand (logisch 0) liegen beide Leitung auf einer Spannung von 2,5 volt. Im rezessiven Zustand (logisch 1) wird die Spannung der Leitung CAN-H(igh) um 1V auf 3,5V angehoben und die Spannung auf der Leitung CAN-L(ow) um 1V auf 1,5V abgesenkt.

Link zur Grafik

Alle im Netzwerk befindlichen Geräte können auf dieser Leitung mithören und abwechselnd senden. Damit sichergestellt wird, dass immer nur ein einzelnes Gerät sendet ist das Übertragungsverfahren streng definiert. Eine Darstellung aller Mechanismen würden den Inhalt des Forums jedoch sprengen, somit ist es an dieser Stelle sinnvoll die wesentlichen Spezifikationen zu erläutern.
Ein Gerät muss immer auf eine Lücke warten, bis es anfangen darf, Daten in das Netzwerk zu senden. Gleichzeitig muss das sendende Gerät im Netzwerk mithören und vergleichen ob jeder einzelne Spannungszustand erfolgreich in das Netzwerk übertragen wird. Da bei einer 1 der Pegel als hoch und einer 0 der Pegel als tief definiert ist, kommt es dazu, dass wenn zwei Geräte gleichzeitig senden, das Gerät mit dem dominanten Bit das Netzwerk auf Null zieht und somit den rezessiven Zustand überschreibt. Weil jedes Gerät die zu sendende Meldung mit dem Zustand des Netzwerkes vergleicht, stellt das Gerät, welches zum eigentlichen Zeitpunkt eine 1 gesendet hat einen Fehler fest und stoppt die eigene Sendung. Infolgedessen haben Meldungen mit einer vorausgehenden 0 eine höhere Priorität als Meldungen mit einer vorausgehenden 1.

Zur Identifikation besteht jede gesendete Meldung aus einer ID und einem Datensatz.

Zum Beispiel die Meldung welche vom Lenkradmodul gesendet wird, um den Zustand des Blinker- und Wischerhebels wiederzugeben:

ID: 0111300A Daten: C0 00 00 27 80 8E 00 C0

Da Volvo den erweiterten J1939-CAN-Frame nutzt besteht die ID aus 4 Bytes “01 11 30 0A” welche einerseits die Priorität der Meldung festlegen und andererseits der Identifikation dienen. Jede ID in einem Netzwerk darf nur einmal vergeben sein. Die ID hat den Nutzen für andere Geräte, dass diese dadurch selektieren können, welche Informationen für sie wichtig sein können. Das Radio beispielsweise achtet auf IDs, welche vom CEM kommen und die Geschwindigkeit und Beleuchtungseinstellung enthalten, wie auch auf IDs welche vom Lenkradmodul kommen und eine Änderung der Lenkradtasten enthalten.
Ein Gerät darf auch über mehrere IDs verfügen, da es auch verschiedene Informationen versenden kann.

Die ID bei Volvo wird gefolgt von einem 8 Byte Datensatz “C0 00 00 27 80 8E 00 C0” in diesem sind die Informationen enthalten, welche das Gerät dem Netzwerk mitteilt.

In Beispiel des Lenkradmoduls codiert die 5te Stelle (Byte 4) für:

5te Stelle:
80: Nichts gedrückt
84: Blinkhebel in rechter Stellung
88: Blinkhebel in linker Stellung
C0: Resettaste am Blinkhebel wird betätigt (Boardcomputerversion)
A0: Read Taste am Blinkhebel wird betätigt

Die 6te Stelle "8E" gibt an, dass der Wischerhebel in 0 Stellung ist.

Die Gesamte Meldung wird etwa alle 15ms in das Datennetzwerk gesendet (nach Priorität häufiger oder seltener), damit jegliche Geräte über den Zustand Bescheid wissen und entsprechend reagieren können. Erhält das CCM die Meldung 84 aktiviert es das Relais für den Blinker der rechten Seite.

Link zum Datendiagramm

Im Datendiagramm ist zu erkennen, dass die gesamte Meldung (als Frame bezeichnet) aus mehr als der ID und dem Datensatz besteht. Es sind noch einige Zusätze nötig, damit eine Meldung erfolgreich übertragen werden kann, diese sind aber bei alleiniger Betrachtung der Meldungen hier nicht von Bedeutung und werden in der realen Anwendung von Controllern automatisch errechnet und durchgeführt.

Kommt es trotz aller Mechanismen dazu, dass ein Fehler auftritt, weil beispielsweise eine ID doppelt im Netzwerk auftritt, unterbricht das Gerät mit gleicher ID die Sendung sofortig und versucht zu einem weiteren Zeitpunkt seine Meldung in das Netzwerk zu senden. Kommt es weiterhin hintereinander zum selbigen Fehler, klinkt sich das Gerät für eine vergleichsweise längere Zeit (ca. 10s) aus dem Netzwerk aus und versucht den Datentransfer erneut. Dies kann jedoch gravierend sein, wenn beispielsweise für etwa 10s der Blinker nicht mehr funktioniert.

Im Volvo gibt es zwei verschiedene CAN-Netzwerke:

Link zur Grafik

Das Motor High-Speed CAN mit einer Datenrate von 250kb/s und das Comfort-Low-Speed-CAN mit einer Datenrate von 125kb/s. Beide Netzwerke laufen voneinander unabhängig, das CEM ist das einzige Gerät welches in Kontakt mit beiden Netzwerken steht und somit Daten zwischen diesen austauschen kann wie beispielsweise die Drehzahl.

Volvo hat die Codierung jeglicher Daten in jedem Baujahr geändert, was zur Folge hat, das sich Geräte aus unterschiedlichen Baujahren nicht über den CAN-Bus unterhalten können, das sie ihre Meldungen nicht mehr verstehen.

Dazu ein Beispiel für die Datenwörter, welche unter anderem für die Tasten des Lenkrades zuständig sind:

Fahrzeug aus 2001
ID: 00200066 Daten: C0 00 00 01 1F 40 40 7F

Fahrzeug aus 2002:
ID: 0261300A Daten: 80 00 00 27 80 C2 00 CF

Beide Meldungen erfüllen genau die gleiche Funktion, können aber nicht von Geräten aus anderen Baujahren interpretiert werden.

Durch diese Zusammenhänge lassen sich nicht nur Funktionen im Fahrzeug ergründen sondern auch Erweiterungen wie die eines CAN-Extenders aufbauen. Durch ein einfaches Senden einer Meldung in dieses Netzwerk lässt sich somit etwa eine Coming-Home Funktion mit zusätzlich aktivierten Nebelscheinwerfen realisieren oder es können Tastendrücke oder Fahrzeugdaten jeglicher Art erfasst werden.

277 weitere Antworten
277 Antworten

Ok....mit der neuen Datei klappt der Connect....REM ist auch schon ausgebaut- nun habe ich die Steckerbelegung für Can-H und Can-L auf folgender Seite gesucht:

pins

Muss ich Pin 15 + 17 belegen und was ist High und was ist Low?

Sendet das Auto auch schon Codes wenn der Wagen aus ist, oder muss gestartet werden?

Lg

A15 ist CAN-H bei Volvo weiß, A17 ist CAN-L bei Volvo grün.

Nach dem Schaltplan, kommt CAN-H auf D-Sub 3 und Can-L auf D-Sub 5.

Das Ganze lässt sich auch noch hiermit vergleichen, CAN-L ist schwarz anstatt grün und CAN-H bleibt weiß.

Der Wagen sendet immer Signale wenn der Schlüssel sich ab Position I befindet. Wenn der Schlüssel nicht steckt aber etwa eine Tür geöffnet wird oder irgendeine Taste auf der Fernbedienung betätigt wird, wacht das System auf und sendet für etwa 30s Signale und geht danach wieder in den Sleep Modus. Durch Betätigen von Knöpfen, öffnen von Türen etc. wird der Traffic auf dem Bus immer aktiv gehalten auch wenn kein Schlüssel eingesteckt ist.

Zum Testen hier mal zwei Diagnosecodes, welche sich einfach aus CanHacker heraus senden lassen sollten:

Diagnose des Blinkers:
links:
ID: 000FFFFE Datensatz: CE 48 B0 05 01 03 02 00

rechts:
ID: 000FFFFE Datensatz: CE 48 B0 05 01 03 01 00

Damit sollte der Blinker jeweils 15 mal in die gewünschte Richtung blinken.

Die gesendete Meldung lässt sich deaktivieren mit:
ID: 000FFFFE Datensatz: CE 48 B0 05 00 00 00 00

Der Gong (etwa vom Anschnallgurt) lässt sich aktivieren durch:
ID: 000FFFFE Datensatz: CE 51 B0 0B 01 FF 20 00

Deaktivierung:
ID: 000FFFFE Datensatz: CC 51 B0 0B 00 00 00 00

Soweit getestet hört der Gong ohne Deaktivierung nicht auf.

Habe den Logger erfolgreich in Betrieb genommen. Wie kann ich denn deine Beispielcodes senden?
Ich kann z.B. Die ID garnicht komplett beim Can Hacker eingeben?

Und wie kann man nun herausfinden welche Adresse z.B. Der linke vordere Fensterheber hat?
Muss man den Bus loggen und schauen welche Adresse angesprochen wird? Diesen dann Filtern und diesen Code dann senden und schauen ob as Fenster runter geht?

Ähnliche Themen

Hört sich gut an, der Volvo nutzt ja die erweiterte J1939 Version von CAN-Messages, diese wird auch als "29 Bit ID" bezeichnet. Einfach das kleine Feld unter dem Eingabefeld ID anklicken.

Per Single Shot kann dann die ausgewählte ID gesendet werden.

Zum Loggen lässt sich auch die Ansicht mit einem Klick auf "Tracer" umschalten, dann wird erstmal deutlich in welcher Fülle die Nachrichten reinkommen.
Jedoch eignet sich die andere Ansicht, welche nur die letzte erhaltene Meldung der jeweiligen ID anzeigt besser um Schalter oder andere Dinge zu loggen.

Dabei fällt wahrscheinlich auf, dass es dort viele wechselnde Datenblöcke gibt, diese werden als "rolling counter" bezeichnet. Dadurch weis der Rest der Geräte, dass der Sender noch aktiv ist, reagiert und sie keine Meldung verpasst haben. Diese haben oft eine Abfolge von 00 auf 40 auf 80 auf C0 auf 00 .
Diese sind also beim loggen selbst nicht von großer Bedeutung.

Das Hauptaugenmerk liegt auf den stehenden Werten, wenn man diese der Reihe nach durch geht und beispielsweise einen Knopf auf dem Lenkrad betätigt und sich dieser Wert während des Tastendrucks ändert, hat man schon einen Schalter gefunden. Auf der ID des Blinkerhebels sind dann ebenfalls die restlichen Schalter auch zu finden.

Würde also mit dem Read oder Rest-Button anfangen, sofern vorhanden.
Dann hat man schon die ID welche man nur noch beachten muss.
Auf dieser liegt auch der Blinkerhebel etc...

Zur Orientierung, im V70 von 2001 sieht dies so aus:
Oft sind die Positionen gleich, aber die Datensätze anders.

Blinkerhebel:

ID: 0111300A Datensatz: C0 00 00 27 80 8E 00 C0

Fünfte Stelle:
80 nichts gedrückt
84 Blinker rechts
88 Blinker links
C0 Reset-Button
A0 Read-Button

Sechste Stelle:
Wischerhebel

Lenkradtasten:

ID: 00200066 Datensatz: C0 00 00 01 1F 40 40 7F

Fünfte Stelle:
1F nichts gedrückt
1E Cruise-Button

Achte Stelle:
7F nichts gedrückt
Ansonsten Radio-Buttons

Fernbedienung:

ID 00A1102A Datensatz: 80 30 00 10 04 00 00 00

Sechste Stelle:
35 Gelber Knopf Licht einschalten
15 Licht ist an
24 Gelber Knopf Licht ausschalten

Vierte Stelle:
Bei Erhalt des Schließsignals taucht hier eine 30 auf
Bei Erhalt des Öffnungssignals eine 80

Zentralverrieglung:

ID: 00F01022 Datensatz: 80 00 00 01 34 90 10 0F

Sechste Stelle:
90 Fahrzeug offen
91 Fahrzeug zu
99 Schließsignal erhalten
98 Öffnungssignal
93 Fahrzeug auch innen verriegelt (Deadlock)

So....habe den Gong per Can Hacker aktivieren können..des weiteren habe ich die cruise control aktiviert...

Header: 00 40 00 66
Data: c0 00 00 01 1e 41 40 7f

Nun möchte ich natürlich die Id's den Komponenten zuordnen.

In der Datei ist ein Auszug meines loggens....Somit habe ich doch schon alle ID meines Wagens in der Übersicht....nun geht es doch darum, herauszufinden, welche ID wohin gehört....sehe ich es richtig, dass ich zuerst hier schauen muss, wo es zu einer Änderung kommt...quasi ich drücke auf Cruise-Control (20 mal)
und bemerke einen anstieg bei den Count's bei einer bestimmten ID....Diese schaue ich mir dann genauer im Monitor an (mit Filter um den Datensatz herauszubekommen) ??

Die Diagnosecodes sollten eigentlich in der gesamte Baureihe funktionieren, denke das wäre noch einen Versuch wert, eventuell ein Tipfehler oder der Schlüssel stand nicht auf Position II, sonst geht der Blinker nicht, die Meldungen des Blinkhebels lassen sich auch ohne Schlüssel auslesen, der Blinker geht nur bei eingeschalteter Zündung, die Scheinwerfer hingegen lassen sich auch bei verschlossenem Fahrzeug aktivieren.

Also mit dem Logging muss jeder selbst rausfinden wie es für ihn am schnellsten geht, die meisten Meldungen erscheinen eh alle 15ms egal ob ein Knopf gedrückt wird oder nicht, es wird damit bestätigt, dass das Modul anwesend ist und das derzeitig kein Knopf betätigt wird. Eine Betätigung sorgt nicht dafür, dass die Meldung häufiger auftaucht.

Ich masche es echt Schritt für Schritt, nach deinem Screenshot schaue ich mir die erste ID 0040066 an. Dann schaue ich ob der erste Wert 00 konstant bleibt oder nicht, wenn dieser dauernd in einer bestimmten Reihenfolge wechselt ist es ein Counter, also weiter zur nächsten Zahl. Bleibt diese Konstant, drücke ich eine Taste und schaue ob es eine Änderung gibt, wenn nicht Taste loslassen, weiter zur nächsten Zahl...

Nach der zeit weis man welche IDs für was stehen, dann ist das alles nicht mehr so kompliziert.

Will dir jetzt nicht die Sucherei verderben, aber

ID 0261300A könnte für den Blinker und Wischerhebel sein.
ID 00613DF8 könnte für die Funkfernbedienung sein.

Olaf hat unter Hacking Volvo Blogspot schon einiges für seinen 2002er S80 veröffentlicht.

Ja hast schon Recht, habe gerade die ID 0261300A durchgecheckt...und von Prinzip her ist mir das nun auch klar...habe den Blinkerhebel in Nullstellung...dann nehme ich den Traffic auf und sobald ich den Blinker betätige ändert sich der Datensatz. Dann schnell Pause gedrückt und ich habe den Code für den Blinker :

0261300A C0 00 00 27 88 8D 00 E7

Wenn ich den Code per Single shot an den Bus sende blinkt der Wagen. Soweit so gut....Problem an dieser Stelle ist, dass ich 10 mal senden muss um ein blinken zu bekommen... Kann man das beim Can-Hacker direkt einstellen oder muss da ein Code auf den Arduino um ein blinken zu simulieren ?

Das ist schon richtig so, wenn der Code des Hebels in den Bus gesendet wird, wird dieser ja auch vom CEM wargenommen, dieses setz das Relais vom Blinker usw..
Aber das Lenkradmodul sendet ja auch alle 15ms die Position des Blinkerhebels, welcher eben nicht gesetzt ist. Somit wird spätestens nach 15ms das Blinken wieder beendet.

Wenn man jetzt auf den Comfortblinker hinaus will gibt es da eine einfache Lösung und zwar die der Diagnosecodes, dieser muss nur einmal gesendet werden und aktiviert den Blinker auch wenn der Schalter nicht gesetzt ist.

Ich nutze das Lawicel Protokoll auf dem Arduino nur zum Loggen, die gesammelten Informationen finden in einem eigenen Programm Anwendung.

Wenn man da an den Comfort-Blinker denkt, gibt es mehrere Möglichkeiten:

Die einfache wäre, das Programm wartet bis es eine Meldung des Blinkerhebels bekommt und sendet dann zusätzlich die Diagnose-Aktivierung des Blinkers zur jeweiligen Seite. Nach 1700ms (Zeit für 3mal Blinken) sendet es dann die Deaktivierung, falls er Hebel immer noch betätigt ist, blinkt der Blinker ganz normal weiter, falls der Hebel vorher deaktiviert wurde, ist die Diagnose-Aktivierung noch bis zum 3ten Blinken aktiv.

Die aufwändigere wäre, dass das Programm anfängt die Zeit zu zählen, wie lange der Blinkerhebel aktiv ist. Ist dieser länger als 1 Sekunde lang aktiv macht das Programm überhaupt nichts, wird der Hebel jedoch unter einer Sekunde betätigt, sendet es die Aktivierung und nach 1700ms die Deaktivierung so kommt es ebenfalls zu 3mal Blinken.
Dies hat den Vorteil, dass nicht jedes Mal eine Aktivierung gesendet werden muss.

Ein Beispiel wird hier später noch veröffentlicht, kann aber wenn ich die E-mail per PN erhalte ein funktionierendes Beispiel senden, dazu benötige ich aber noch den Code vom Blinkhebel in beiden Positionen, ich gehe mal davon aus, dass die Diagnose-meldung funktioniert hat.

Ok ich werde dann heute erstmal alle Komponenten sniffen....Gibt es denn Online auch ein Tutorial zum proggen? Vom Prinzip leuchtet mir dein Blinker-Beispiel ja ein,aber man muss das Shield ja auch in einen "Abhörmodus" setzen. So das er immer mithört....

Meine Bestellung ist auch raus.
@Schalkan: was für ein Bj hat deiner eigentlich?

Schönen Sonntag

Habe nen D5 aus 2002, scheint identisch mit dem Bus von Olaf.....

Ich habe gestern bestellt - fahre einen S6 (MY05).

Es gibt da nicht viele Anleitungen zu, einen großen Beitrag hat Olaf mit seiner Darstellung und der Umsetzung in Sardine geleistet. Dies alles selbst rauszufinden hat schon wesentlich länger gedauert.
Eigentlich ist der Kern des Programmes die Einbindung des mcp2515. Dazu gibt es bei Arduino einige Librarys, aber scheinbar nur eine, welche den erweiterten J1939 Datensatz unterstützt.
Zu finden unter:
http://www.nunoalves.com/open_source/?p=475

Diese wird auch von Sardine genutzt und ist durch das Kopieren des Canbus Ordners in den library Ordner des Arduinos gleich mit installiert. Wer Sardine nicht nutzen will, benötigt also dieses oder eine andere Library mit gleichen Fähigkeiten.

Die Library konfiguriert die Einstellungen des mcp2515 und verarbeitet die Anforderungen zum Lesen und Senden im Bus.

Das Rest des Programmes besteht dann nurnoch aus if Abfragen welche jede einkommende Meldung auf ID und wenn zutreffend auf den Datensatz vergleichen.
Es ist schon erstaunlich, was dieser 16mhz Prozessor mit 2kb Ram in Anbetracht der Datenmenge leisten kann.

Deine Antwort
Ähnliche Themen