Der CAN-Bus im Volvo
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 Antworten
@FASchmidt
Ich kann nur empfehlen sich mal durch den Thread hier durchzuarbeiten, da ich mir selbst das meiste Wissen von hier bzw. DR_V70 aneignen konnte. Programmcode und Software ist schon auf den ersten Seiten zu finden, irgendwie ist der gesamte Thread ein Tutorial 😉
@DR_V70
Die Datenbank carcom war ein guter Tipp, obwohl es wohl zu einfach wäre endlich auf die Spalten "canAdress" und "canData" zu treffen, am besten noch mit Beschreibung und Modelljahr für sämtliche Diagnosemeldungen :P
In der Tabelle T121_Config wurde ich jedenfalls schonmal mit "canAdress" fündig und auch einige bekannte Bezeichnungen wie "busRate" oder "adressSize" tauchen auf:
http://www1.xup.to/tn/2014_08/12449836.png
Interessant war für mich auch die Tabelle T155_Scaling, die, wie der Name schon verrät, offensichtlich Umrechnungsfaktoren für zurückgegebene Werte beinhaltet. Sinnvoll wäre es sicher, wenn man zu den Umrechnungsfaktoren auch die umzurechnenden Werte zuordnen könnte...
Auch hier bin ich auf "alte Bekannte" gestoßen, in diesem Fall die von dir geposteten Umrechnungfaktoren für Innenraumtemperatur und Batteriespannung:
http://www1.xup.to/tn/2014_08/10718642.png
Mit der Tabelle Service habe ich bis jetzt kaum etwas anfangen können:
http://www1.xup.to/tn/2014_08/20740589.png
Jedenfalls ergibt die Splate "definition" hier wenigstens "Sinn" und sieht XML zumindest ähnlich:
http://www1.xup.to/tn/2014_08/13156317.png
Dass die Messages erst zusammengebaut werden ist zwar wenig aufmunternd, aber ich hoffe einfach Hinweise auf den Algorithmus zu finden, solange ich die Hoffnung noch nicht aufgegeben habe 😉
@0xC90 PK -> PKzip. But you all figured that out by now?
Die Tabelle Service beschreibt Botschaften, die notwendig sind, um den Diagnosebetrieb mit Hilfe des UDS-Protokolls zu aktivieren. Damit kann man je nach Session bestimmte Dienste aktivieren, die für Vida nötig sind. Man kann Fehler auslesen bzw. löschen, bestimmte Parameter anpassen, Geräte flashen bis hin zu nahezu unbegrenztem Zugriff auf einzelne Steuergeräte. Letzteres ist aber nur Fahrzeugherstellern und Zulieferern vorbehalten.
Interessant sind die einzelnen IDs der Steuergeräte. In den Tabellen sollten diese stehen. Gemäß Architektur vom XC90 hat dieser 2 CAN-Busse: Antriebsstrang Bus mit 500 kbit/s und Comfort-Bus mit 125 kbit/s. Beide CANs sind über ein Gateway (CEM) verbunden, in der Regel werden aber nicht alle Botschaften zwangsläufig weitergeleitet, sodass nicht alle Steuergeräte im Normalbetrieb erreichbar sind. Nur im Diagnosebetrieb besteht die Verbindung zu allen ECUs, um z.B. die Fehler auslesen und beheben zu können. Allerdings beschränkt sich das nur auf die notwendigen Funktionen. D.h. in erster Linie sollten die Geräte erreichtbar sein, die am 125 kbit/s CAN hängen. Diese sind je nach Ausstattung:
CEM Central electronic module
SWM Steering wheel module
DDM Driver door module
PDM Passenger door module
REM Rear electronic module
CCM Climate control module
ICM Infotainment control
UEM Upper electronic module
DIM Driver information module
AEM Auxiliary electronic
PSM Power Seat module
PHM Phone module
Notfalls kann man die Sicherungen der Steuergeräte kurz rausnehmen und vergleichen, welche Botschaften auf dem CAN fehlen. Diese sind dann den Geräten zuzuordnen. Allerdings müssen dann auch Fehlercodes wieder gelöscht werden, die dadurch vielleicht entstehen.
@0xC90: Bist du bei deinem Elch in der Zwischenzeit weiter gekommen?
Wird was spezielles gesucht?, die Diagnose IDs sind ja alle bekannt. Die normalen IDs im Netzwerk unterscheiden sich fast jedes MY. Das CEM hat 6 IDs. Die Geräte besitzen keinen vollständigen Bootloader, darum ist das Programmieren über den Bus nicht ganz so einfach mit Befehlen zu bewältigen, sondern man benötigt weitaus mehr...
Ähnliche Themen
Interessant sind ja genau die normalen IDs im Netzwerk, beispielsweise für einen XC90 MY05. Hat die jemand?
Zitat:
Original geschrieben von 0xC90
@DR_V70Danke für den Tipp, habe gestern schonmal einen Microsoft SQL Server aufgesetzt und mir die Dateien angesehen. Ich weiß gar nicht ob das noch zu deinem Thread hier passt, da die Problematik bei mir ja nur noch entfernt mit dem CAN-Bus zu tun hat 😉
Jedenfalls habe ich VIDA gestartet und ohne angeschlossenem Arduino SardineCAN ausgewählt, meine VIN eingegeben und im Diagnostic Menü testweise das REM ausgewählt und dort beim Unterpunkt "Activations" (oder so ähnlich) das Rückfahrlicht eingeschaltet.
Unter C:/VIDA/System/log/Diagnostic wird eine neue Datei mit einem Protokoll der durchgeführten Diagnosen angelegt, in meinem Fall enthält die Datei unter anderem die Zeile14:08:48,517 [ScriptProvider ][001][Info] Fetched script: 'VCC-236163-2 1.4' title: 'Veh Comm Spec, REM P2004-' variantId: '0900c8af83c940e7'
Interessant scheint hier die variantId zu sein, da ich am Vortag in der Datenbank bereits zahllose Einträge im Format "0900xxx" gesehen habe.
Neben der Datenbank mit den Bildern ist die DB "DiagSwdlRepository" mit Abstand am größten. In dieser findet sich die Tabelle "ScriptVariant" und wenn ich mittels WHERE-Klausel die Spalte "Id" nach der gesuchten Id "0900c8af83c940e7" filtere, erhalte ich als Ergebnis eine Zeile die in der Spalte "fkScript" den Wert "0900c8af8360635b" enthält.
Suche ich nun wiederum in der Tabelle "ScriptContent" nach diesem Wert der Spalte "fkScript", wird mir folgende Zeile zurückgegeben:
http://www1.xup.to/tn/2014_08/18250301.pngWeil das eine ziemliche Einbahnstraße ist, gehe ich davon aus, dass die gesuchten Informationen in der Spalte "XmlDataCompressed" enthalten sind. Leider kann ich damit nichts anfangen, da kein Klartext vorliegt und "Compressed" mir im Bezug auf XML absolut nichts sagt.
Kopiere ich den Text dieser Spalte in einen Hex-Editor (natürlich ohne anfängliches "0x"😉, fällt mir auf, dass ich in der dritten und dritt letzten Zeile jeweils den Wert von "fkScript" wieder finde:
http://www1.xup.to/tn/2014_08/86454813.png
Der Rest besteht aus für mich unverständlichen Kauderwelsch, aber ich bin mir sicher, dass die Informationen die an das Auto gesendet werden darin versteckt sind. Ein mögliches Indiz dafür ist evtl. die Prüfsumme, da diese nicht zum Inhalt der Spalte "XmlDataCompressed" passt, aber vielleicht zum entschlüsselten Inhalt (sofern es sich um MD5 handelt).
Ich habe die Textdatei mit besagtem "verschlüsseltem" Inhalt angehängt, in der Hoffnung, dass jemand damit etwas anfangen kann, wobei das sicher viel verlangt ist... 😉
so sieht dieses verschlüsselte File im normalen Zustand aus.
Vg.
Hallo zusammen,
seeehr interessant hier! Ich hab meinen C70II zwar erst seit kurzem aber da muss ich doch gleich an den CAN Bus. DiCE hatte ich schon bevor das Auto da war. :-)
Mein erstes Projekt soll eine LED-Tagfahrlicht Steuerung sein. Leider passt die Volvo Software des Nachrüstsatzes für das LED Tagfahrlicht nicht zu meiner Stammnummer, daher muss gebastelt werden.
Arduino Uno und CAN-BUS Shield sind auch bereits da und ich habe im CANHacker einen erfolgreichen connect. :-) Soweit so gut...
Jetzt aber meine ersten Fragen:
- Hat wer einen Tipp wo ich im C70II den CAN Bus einfach abgreifen könnte? Am CEM wär schön. Ich weiss aber nicht ob da noch was frei ist. Oder gibt es sonst wo einen freien Steckplatz der einfach zugänglich ist?
- Wenn ich den CAN-BUS Shield vom Auto her speise, muss ich was beachten wenn ich gleichzeitig mit dem Laptop dran bin (Speisung von zwei Seiten). Oder läuft das alles automatisch?
- Ich habe in VIDA keine Möglichkeit gefunden das Abblendlicht über eine Diagnosefunktion ein-/auszuschalten. Nebellicht geht, Fernlicht auch, aber nicht Abblendlicht. Lässt sich das Abblendlicht nicht über den CAN-Bus steuern?
Vielen Dank schon Mal für die Hilfe,
Reto
Hallo DR_V70
Ich bin voll begeistert von den Projekt und würde auch noch mit machen bzw einsteigen.
Frage nur ob das noch aktuell ist und einige vorschreiber auch noch interessiert.
Was mich antreibt ist die Standheizung.
Da ich einen Franzosen V70II D5 habe, habe ich KEINEN Zuheizer verbaut und wollte gerne auf die Drecks Ardic D952 verzichten. Anstelle sollte einen Webasto TT-V eingebaut werden.
Jetzt liegt das Projekt aber etwas still da ich, bis jetzt, keine Möglichkeit gefunden habe das ECC über eine Plus oder Masse Schaltung zum laufen zu bringen. (Momentan nur "versuche" auf den schaltplan)
Ich würde auch mit dem "eigenbau extender" anfangen aber momentan nur wenn ich irgendwie damit dei ECC Einheit zum laufen zu bringen.
Sonst wäre das was für den nächsten Winter.
Ist es möglich dem Arduino über anlegen einer Masse oder Plusversorgung zu sagen er soll ein Datensatz o. einen Befehl in den BUS werfen der die ECC-Einheit einschaltet?
Sehr nett von dir.
Mfg Sven
Hallo mal wieder,
dank den Festtagen hatte ich etwas Zeit mich weiter um den CAN-Bus in meinem C70 zu kümmern und habe erste Erfolge!
Was ich machen möchte, die Nebelscheinwerfer/Tagfahrlicht aktivieren abhängig vom Dämmerungssensor. Ich habe den original LED-Tagfahrlicht Nachrüstsatz verbaut, aber leider ist die dazu passende Software nicht mit meiner Fahrzeugversion kompatibel.
Einen geeigneten Anschlusspunkt an den CAN-Bus habe ich leider bis jetzt nicht gefunden. Ich arbeite im Moment über den ODBII Stecker, parallel zum DiCE.
Sowohl Dämmerungssensor wie auch Nebelscheinwerfer werden vom CEM gesteuert. Am Low speed CAN-Bus habe ich keine Diagnosemeldungen der Nebelscheinwerfer gefunden. So habe ich mich mal an den High speed CAN-Bus (500kbit/s) angehängt (glücklicherweise sind beide auf dem ODBII Stecker) und siehe da, da gibt es eine Diagnosemeldung und ich kann die Nebelscheinwerfer über den CANHacker ein- und ausschalten!! Teilerfolg! :-) Beim C70 ist für die Nebelscheinwerfer scheinbar nur ein Befehl nötig und nicht zwei...
C70 Nebelscheinwerfer ein:
ID: 000FFFFE Daten: CF 50 B1 8C 10 01 01 01
C70 Nebelscheinwerfer aus:
ID: 000FFFFE Daten: CF 50 B1 8C 10 00 00 00
Nur stellt sich damit auch das erste Problem. Ich fürchte der Dämmerungsensor ist nur über den Low speed Bus verfügbar. Somit brauche ich eine Verbindung zu zwei Netzwerken. Wie kann ich das mit dem Arduino lösen? Zwei CAN-Bus shields stacken? Elektrisch sollte das nicht so eine grosse Sache sein, einfach CAN_DS und CAN_INT auf einen anderen Digital-I/O legen?
Doch dann muss ich auch noch der Software sagen, dass da zwei CAN-Busse vorhanden sind und irgendwie mit beiden kommunizieren. Das ist wohl der Knackpunkt. Hat wer eine Idee wie das am einfachsten gelöst werden kann?
Und dann habe ich auch noch ein Problem mit dem CANHacker. Im Tracer Modus ist alles ok, aber im Monitor Modus ist die Spaltenbreite zu schmal. So sehe ich nicht die ganzen Daten um sie zu beobachten. Die Spaltenbreite lässt sich nicht verändern, auch die Zeichengrösse nicht. Hat wer dasselbe Problem? Kennt jemand eine Lösung?
Gruss,
Reto
Mit dem CAN gibt es mehrere Möglichkeiten,
2 Shileds über SPI mit dem Arduino verbinden, weiß nicht ob der da mitkommt, auch könnte das programmiertechnisch schwierig werden.
Ein stärkeres Board mit Dual-CAN, Arduino Due oder Chipkit max32 wäre eine Option.
Ich würde es mir aber einfach machen und einen weiteren Uno mit weiterem CAN-Shield nehmen und diese dann über den Serialport miteinander kommunizieren lassen.
Mit CAN Hacker kann ich mir das Problem nicht erklären, bei mir sieht das ordentlich aus, vielleicht Windows Schriftart, nutze immer XP, vielleicht liegt es daran, sollte eigentlich so passen...
Was mir aber negativ auffällt ist, dass der Arduino oder CAN Hacker mal bei nachfolgenden Meldungen welche verschluckt, aber auch nur mit dem Script für CAN Hacker, wenn ich mir alles selber ausgeben lasse über den Serialport klappt es so...
Wunder mich auch gerade, dass ich keine Tagfahrlichteinstellung finde...
Wie sieht eigentlich mit dem Blinker aus, kann man da die Diagnose aktivieren? Oder gibt es den Comfortblinker so?
Mal schauen wie ich das mit den 2 CAN löse... Beim Arduino Due oder Chipkit max32 braucht es noch die Transceiver zusätzlich, also auch nicht ohne ein weiteres board möglich.
Zwei Uno und serielle Kommunikation wäre eine Möglichkeit wenn ich das mit den zwei Shields auf einem Uno nicht hinbekomme...
Bezüglich CANHacker, ich hab Win7, vielleicht ist dies das Problem? Die Windows Schriftgrösse habe ich schon geändert, hat nichts genutzt...
Mein C70 hat Komfortblinker. Kann mich aber auch nicht erinnern irgendwo ne Blinker Diagnose gesehen zu haben...
Ja wenn der Comfort Blinker hat braucht man das auch nicht...
Ja Transreceiver sollte nicht das Problem sein, würd mir dafür nicht von irgendwem so ein überteuertes Board holen, sondern einfach 2 3,3V Transreceiver von Reichelt oder ebay...
Bei windows vielleicht mal einfach mit classic Design versuchen 😁
Was Spaltenbreite Problem bei Windows 7 konnte ich lösen indem ich die Windows Schriftgrösse auf 125% gesetzt habe. Jetzt ist zwar alles etwas verzettelt, aber man kann die gesamten Messages lesen. 😉