1. Startseite
  2. Forum
  3. Auto
  4. Audi
  5. A6
  6. A6 4F
  7. FIS Textanzeige / Vialle LPG Gasanlage Tankstand über FIS anzeigen

FIS Textanzeige / Vialle LPG Gasanlage Tankstand über FIS anzeigen

Audi A6 C6/4F
Themenstarteram 7. November 2010 um 10:11

Hi all,

nach langer Entwicklungszeit habe ich endlich mal ein Video über eins meiner Projekte gedreht, um euch das Projekt mal vorzustellen.

Da ich bei mir eine Vialle Gasanlage verbaut habe und diese Anlage nicht mit den übrigen Fahrzeugsystemen integriert ist, braucht man normalerweise ein extra Bedienteil im Innenraum, welches den Tankstand mittels 5 LEDs anzeigt und über einen Taster erlaubt von Benzin- auf Gasbetrieb (bzw. umgekehrt) umzuschalten.

An dem Bedienteil hat mich

a) gestört, dass es als "Fremdkörper" im Innenraum sichtbar ist (z.B. blaue LEDs ...)

b) dass es den Tankstand nur in sehr groben Schritten anzeigt

c) dass es mir nicht angezeigt hat, wenn die Gasanlage unter hoher Motorlast temporär zurück auf Benzinbetrieb schaltet (die Regeln, wann und auf basis welcher Parameter die Lastumschaltung geschieht, kann man in der Anlage programmieren - leider ohne Anzeige am Bedienteil, wann sie greifen)

In meiner naiven Denkweise hatte ich zuerst geplant das Bedienteil durch einen Mikrocontroller abzulösen, welcher mit einem Taster in der Mittelkonsole gesteuert wird, der auch eine LED enthält und darüber den Status anzeigt.

Die Tankanzeige wollte ich eigentlich über durch den Mikrocontroller simulierte Tankgeber zum Kombiinstrument hin realisieren. (bei Benzinbetrieb Anzeige des Benzintankstands / bei Gasbetrieb Anzeige des Gastankstands)

So weit so gut ... also habe ich damit angefangen und musste folgendes feststellen:

1) die Bedieneinheit der Gasanlage wird digital mit Daten versorgt (z.B. auch den Tankstand)

2) das KI erlaubt nur bei einem Stillstand von mehr als 10 Sekunden eine von der normalen Mittelwertsberechnung (die Anzeigeschwankungen während der Fahrt elemeniert) losgelöste Einstellung des neuen Tankstandes

Das Vialle Protokoll hat mich dann erst einmal 2 volle Wochen beschäftigt, bis ich es decodiert hatte und im eigenen Mikrocontroller nachgebaut hatte.

Die Tankstandanzeige hat es dann leider nötig gemacht am ursprünglichen Plan eine Änderung durchzuführen. Ich habe mir dann halt überlegt, dass es ja auch ganz nett wäre, den Tankstand im FIS anzuzeigen :)

Beim 4B wäre das noch sehr einfach gewesen. Leider nicht beim 4F ... aber das konnte ich da ja noch nicht wissen ... ;)

Nächster Schritt war der Bau einer CAN-Bridge mit dem Mikrocontroller. Zwei CAN-Busse, den Mikrocontroller zwischen KI und CAN-GW, wobei der Mikrocontroller alles was auf Bus #1 empfangen wird auf Bus #2 rausschickt und umgekehrt.

Gesagt, getan - eine weitere 1 Wochen später hatte ich das dann auch fertig. Hat eine Woche gedauert, da ich auf dem Weg feststellen musste, dass es mit Zündplus für die Schaltung an der Stelle leider nicht getan ist. da das KI auch ohne Zündung noch kommunizieren können muss, was Dauerplus nötig gemacht hat - leider verbunden mit der Anforderung eines extrem niedrigen Ruhestromverbrauches. (Sleep Modi, auch für die CAN Teiber / den CAN Controller / den Mikrocontroller etc.)

Nächster Schritt das FIS Protokoll ...

Ich dachte eigentlich, dass es mit dem Umschreiben von CAN Messages getan ist, weil diese regelmässig über den Bus - und damit über den Mikrocontroller - geschickt werden und den angezeigten Text enthalten.

Dem ist leider nicht so :(

Die Kommunikation ist an der Stelle schon wirklich sehr gut gelöst. Es wird nichts unnötiges über den Bus geschickt.

Man kann sich die Kommunikation ähnlich wie beim TCP Protokoll im Internet vorstellen - jedenfalls was die Sequenznummern in den FIS Datenpaketen angeht.

Bei einem Protokoll, welches Sequenznummern verwendet, ist es leider nicht möglich einfach zusätzliche Nachrichten einzufügen, ohne die Sequenznummern zu stören. Die Kommunikationspartner stellen sofort fest, dass da irgendetwas in der Kommunikation nicht stimmt, weil die Sequenznummern nicht mehr zu der Anzahl der empfangenen/gesendeten Nachrichten passen.

Das FIS quittiert ein Fehler im Sequenznummernzyklus mit einem Reset ... sehr unschön, da das FIS für eine lange Zeitspanne komplett schwarz wird, bis sich das Protokoll zum MMI wieder vollständig neu aufgebaut hat.

Ok ... weiter im Text ...

Bei einem solchen Protokoll gibt es nur die Möglichkeit eines sogenannten "man in the middle" Angriffs. (falls man hier von einem Angriff sprechen möchte ... ich wollte doch einfach nur meinen Tankstand anzeigen lassen ... *g*)

Glücklicherweise hatte ich das Design ja aber sowieso schon als CAN Bridge mit dem Mikrocontroller in der Mitte ausgelegt :)

Hat mich zwar einige Nerven gekostet, aber mit dem nötigen Zeiteinsatz habe ich das schliesslich dann auch noch alles in den Griff bekommen. (ich gehe hier nicht auf weitere Hürden ein, die zu nehmen sind ...)

Den Mittelkonsolentaster habe ich mit einer RGB-LED versehen. Ist ein blanko-Sonderfunktionstaster, dessen Kappe normalerweise nicht beschriftet ist. Die Kappe habe ich mir gravieren lassen. Man kann keinen Unterschied zu den normalen Mittelkonsolentastern feststellen.

Die Information, ob mein Dicker wirklich auf Gas oder Benzin läuft habe ich mir von jeweils einer Einspritzdüse geholt. Ich denke mal dort kann man 100% sicher sein, auf was gerade gefahren wird ...

So - kommen wir zu dem, was hier wahrscheinlich die Meisten mit sicherheit eh nur interessieren wird ... dem Video, welches die Lösung in Aktion zeigt.

Man könnte nun mit der Lösung auch sehr nette andere Sachen machen:

- Tachoangleichung über den µC

- Anzeige von beliebigen Werten/Texten im FIS (von Daten die über den CAN zum KI fliessen oder über den µC extern geholt werden)

- mit ziemlicher Sicherheit auch weitere Ebenen im Bordcomputer realisieren (wie die Ebenen, die man über die Mode-Taste ansprechen kann)

- Eingaben über den Bordcomputer-Lenkstockschalter realisieren (wenn man die BC Lenkstocktaster länger drückt und wieder loslässt, dann wird kein normaler Event ausgelöst ... dieses lange Drücken könnte der µC auswerten und dann etwas machen)

So viel erst einmal dazu .... hoffe ich bin nicht zu sehr meinem Schreibfluss erlegen und habe euch nicht zu sehr gelangweilt ;)

Kai

Beste Antwort im Thema
Themenstarteram 7. November 2010 um 10:11

Hi all,

nach langer Entwicklungszeit habe ich endlich mal ein Video über eins meiner Projekte gedreht, um euch das Projekt mal vorzustellen.

Da ich bei mir eine Vialle Gasanlage verbaut habe und diese Anlage nicht mit den übrigen Fahrzeugsystemen integriert ist, braucht man normalerweise ein extra Bedienteil im Innenraum, welches den Tankstand mittels 5 LEDs anzeigt und über einen Taster erlaubt von Benzin- auf Gasbetrieb (bzw. umgekehrt) umzuschalten.

An dem Bedienteil hat mich

a) gestört, dass es als "Fremdkörper" im Innenraum sichtbar ist (z.B. blaue LEDs ...)

b) dass es den Tankstand nur in sehr groben Schritten anzeigt

c) dass es mir nicht angezeigt hat, wenn die Gasanlage unter hoher Motorlast temporär zurück auf Benzinbetrieb schaltet (die Regeln, wann und auf basis welcher Parameter die Lastumschaltung geschieht, kann man in der Anlage programmieren - leider ohne Anzeige am Bedienteil, wann sie greifen)

In meiner naiven Denkweise hatte ich zuerst geplant das Bedienteil durch einen Mikrocontroller abzulösen, welcher mit einem Taster in der Mittelkonsole gesteuert wird, der auch eine LED enthält und darüber den Status anzeigt.

Die Tankanzeige wollte ich eigentlich über durch den Mikrocontroller simulierte Tankgeber zum Kombiinstrument hin realisieren. (bei Benzinbetrieb Anzeige des Benzintankstands / bei Gasbetrieb Anzeige des Gastankstands)

So weit so gut ... also habe ich damit angefangen und musste folgendes feststellen:

1) die Bedieneinheit der Gasanlage wird digital mit Daten versorgt (z.B. auch den Tankstand)

2) das KI erlaubt nur bei einem Stillstand von mehr als 10 Sekunden eine von der normalen Mittelwertsberechnung (die Anzeigeschwankungen während der Fahrt elemeniert) losgelöste Einstellung des neuen Tankstandes

Das Vialle Protokoll hat mich dann erst einmal 2 volle Wochen beschäftigt, bis ich es decodiert hatte und im eigenen Mikrocontroller nachgebaut hatte.

Die Tankstandanzeige hat es dann leider nötig gemacht am ursprünglichen Plan eine Änderung durchzuführen. Ich habe mir dann halt überlegt, dass es ja auch ganz nett wäre, den Tankstand im FIS anzuzeigen :)

Beim 4B wäre das noch sehr einfach gewesen. Leider nicht beim 4F ... aber das konnte ich da ja noch nicht wissen ... ;)

Nächster Schritt war der Bau einer CAN-Bridge mit dem Mikrocontroller. Zwei CAN-Busse, den Mikrocontroller zwischen KI und CAN-GW, wobei der Mikrocontroller alles was auf Bus #1 empfangen wird auf Bus #2 rausschickt und umgekehrt.

Gesagt, getan - eine weitere 1 Wochen später hatte ich das dann auch fertig. Hat eine Woche gedauert, da ich auf dem Weg feststellen musste, dass es mit Zündplus für die Schaltung an der Stelle leider nicht getan ist. da das KI auch ohne Zündung noch kommunizieren können muss, was Dauerplus nötig gemacht hat - leider verbunden mit der Anforderung eines extrem niedrigen Ruhestromverbrauches. (Sleep Modi, auch für die CAN Teiber / den CAN Controller / den Mikrocontroller etc.)

Nächster Schritt das FIS Protokoll ...

Ich dachte eigentlich, dass es mit dem Umschreiben von CAN Messages getan ist, weil diese regelmässig über den Bus - und damit über den Mikrocontroller - geschickt werden und den angezeigten Text enthalten.

Dem ist leider nicht so :(

Die Kommunikation ist an der Stelle schon wirklich sehr gut gelöst. Es wird nichts unnötiges über den Bus geschickt.

Man kann sich die Kommunikation ähnlich wie beim TCP Protokoll im Internet vorstellen - jedenfalls was die Sequenznummern in den FIS Datenpaketen angeht.

Bei einem Protokoll, welches Sequenznummern verwendet, ist es leider nicht möglich einfach zusätzliche Nachrichten einzufügen, ohne die Sequenznummern zu stören. Die Kommunikationspartner stellen sofort fest, dass da irgendetwas in der Kommunikation nicht stimmt, weil die Sequenznummern nicht mehr zu der Anzahl der empfangenen/gesendeten Nachrichten passen.

Das FIS quittiert ein Fehler im Sequenznummernzyklus mit einem Reset ... sehr unschön, da das FIS für eine lange Zeitspanne komplett schwarz wird, bis sich das Protokoll zum MMI wieder vollständig neu aufgebaut hat.

Ok ... weiter im Text ...

Bei einem solchen Protokoll gibt es nur die Möglichkeit eines sogenannten "man in the middle" Angriffs. (falls man hier von einem Angriff sprechen möchte ... ich wollte doch einfach nur meinen Tankstand anzeigen lassen ... *g*)

Glücklicherweise hatte ich das Design ja aber sowieso schon als CAN Bridge mit dem Mikrocontroller in der Mitte ausgelegt :)

Hat mich zwar einige Nerven gekostet, aber mit dem nötigen Zeiteinsatz habe ich das schliesslich dann auch noch alles in den Griff bekommen. (ich gehe hier nicht auf weitere Hürden ein, die zu nehmen sind ...)

Den Mittelkonsolentaster habe ich mit einer RGB-LED versehen. Ist ein blanko-Sonderfunktionstaster, dessen Kappe normalerweise nicht beschriftet ist. Die Kappe habe ich mir gravieren lassen. Man kann keinen Unterschied zu den normalen Mittelkonsolentastern feststellen.

Die Information, ob mein Dicker wirklich auf Gas oder Benzin läuft habe ich mir von jeweils einer Einspritzdüse geholt. Ich denke mal dort kann man 100% sicher sein, auf was gerade gefahren wird ...

So - kommen wir zu dem, was hier wahrscheinlich die Meisten mit sicherheit eh nur interessieren wird ... dem Video, welches die Lösung in Aktion zeigt.

Man könnte nun mit der Lösung auch sehr nette andere Sachen machen:

- Tachoangleichung über den µC

- Anzeige von beliebigen Werten/Texten im FIS (von Daten die über den CAN zum KI fliessen oder über den µC extern geholt werden)

- mit ziemlicher Sicherheit auch weitere Ebenen im Bordcomputer realisieren (wie die Ebenen, die man über die Mode-Taste ansprechen kann)

- Eingaben über den Bordcomputer-Lenkstockschalter realisieren (wenn man die BC Lenkstocktaster länger drückt und wieder loslässt, dann wird kein normaler Event ausgelöst ... dieses lange Drücken könnte der µC auswerten und dann etwas machen)

So viel erst einmal dazu .... hoffe ich bin nicht zu sehr meinem Schreibfluss erlegen und habe euch nicht zu sehr gelangweilt ;)

Kai

111 weitere Antworten
Ähnliche Themen
111 Antworten

Super Modifikation! Und sehr interessant für mich, da ich mir schon immer einen CarPC einbauen wollte, um Zusatzinfos im FIS (Öltemperatur usw.) anzeigen zu lassen. Ich hatte auch schon angefangen, eine Software zu schreiben, die Sensordaten auslesen und in CAN Messages packt, die m oberen FIS Teil aufgegeben werden. Allerdings war das noch zu Zeiten, in denen ich einen S3 8L fuhr (FIS per CAN angesteuert). Ich weiß leider nicht, ob es beim 4F noch genauso ist (zumal ich nun ein Farb-FIS habe und damals nur ein monochromes).

Hier hatte ich einige Infos dazu geposted: http://www.canhack.de/viewtopic.php?f=11&t=988

http://www.a3-freunde.de/DATA/007/0300930001255820609.jpg

Wenn du mit deiner CAN Brücke auch Zusatzdaten anzeigen kannst, wär das perfekt (ich hatte damals den Reset Taster vom Lenkstockhebel abgegriffen, um die Anzeige von "Zusatzanzeige" auf "Normal" umzuschalten).

Ich wollte die ganze CAN Brücke damals rein auf Softwarebasis realisieren (mit einem Peak CAN Controller), da ich in Sachen µC Programmierung bzw. Hardwareentwicklung keine Ahnung habe.

respekt....suuuuuuuuuuuper.

Wahnsinn was man*n* nicht alles machen kann.

Ist das eigentlich auch bei anderen Gasanlagen realisierbar?

Und gibt es den Schalter auch blind? ist der LPG Schriftzug etwa auch beleuchtet?

Komme aus dem Staunen garnet mehr raus.

Gruß Alex

Themenstarteram 7. November 2010 um 10:36

@S3_225: Tja, bei deinem alten Fahrzeug gab es die Sequenznummern im Protokoll noch nicht.

Es ist leider wirklich ein guter Kampf, den man mit dem nun deutlich verbesserten Protokoll hat.

Ohne die Sequenznummern wären zur FIS Textausgabe nur ca. 5-10 Zeilen Quellcode nötig. So sind es ca. 6000 nur dafür :(

@lma263: Grundsätzlich - klar ginge das auch mit anderen Gasanlagen, warum auch nicht?

Man müsste, jedenfalls wenn der Tankstand dort auch digital übertragen wird, natürlich wieder das Protokoll "reverse engineeren".

Analoge Werte kann der µC direkt über die ADC-Ports. (Analog Digital Wandler)

Ja, die Schrift ist natürlich auch beleuchtet und sieht von der Beleuchtung auch absolut identisch zu den übrigen Tastern aus.

am 7. November 2010 um 12:14

Hallo,

erst mal ein ganz Großes Projekt was du dir da angetan hast, Respekt vor der Arbeit.

Mal ne andere frage, wenn du das schon Programiert hast dann müsste es doch hinhauen das man die Km/h anzeige im FiS hinbekommt??

Grüßle

R E S P E K T ! Funktioniert das System theoretisch mit jeder Vialle Anlage in jedem 4F ?

Themenstarteram 7. November 2010 um 20:19

Ja, natürlich. Jedenfalls, wenn es sich um eine Lpi 7 handelt.

Ich denke sogar, dass es in allen Fahrzeugen mit einem MMI 2G und 3G funktionieren würde.

Im A8, Q7 und Q5 auf jeden Fall. (könnte nur sein, dass die Message-IDs auf dem CAN anders sind, wobei ich mir beim Q7 sicher bin, dass diese identisch sind, da man ein Q7 KI in einen 4F pflanzen kann - hat hier ja schon jemand erfolgreich gemacht)

P.S.: Danke für die Blumen! :)

Themenstarteram 8. November 2010 um 6:18

Zitat:

Mal ne andere frage, wenn du das schon Programiert hast dann müsste es doch hinhauen das man die Km/h anzeige im FiS hinbekommt??

Nein, da es - jedenfalls nach meinem bisherigen Kenntnisstand - keinen so großen Font gibt. Jedenfalls, wenn du es dir so vorstellst, wie es original ist.

Der Tacho-Screen ist fest in der Software im FIS implementiert. Die Geschwindigkeit erhält das KI ja sowieso mit einer hohen Frequenz über den Bus.

Nächstes Problem ist, dass das Protokoll zur Textanzeige im FIS nicht für so häufige Updates gemacht ist. Jedenfalls wird es auch wieder nicht so schön flüssig aussehen, wie der originale digitale Tacho.

Ansonsten - klar könnte man auch die Geschwindigkeit in einer Textzeile anzeigen. Könnte man z.B. auch in der 2. Zeile von oben machen, die nur auf den ersten beiden BC Seiten angezeigt wird. (FM / AM / DAB etc.)

Also ich schließe mich den Respektsbekundungen an !

SO eine integrative Lösung ist schon was Feines. Ich habe nach wie vor so einen Fremdkörperkasten von meiner Gasanlage (Prins VSi) im Cockpit. Ausserdem habe ich mit meinem A6 der ersten Stunde noch das alte monochrome FIS. Das farbige sieht schon deutlich besser aus.

Aber man kann nicht alles haben...

 

Gruß Axel

Hallo Kai,

repsekt, dass du das hinbekommen hast. Ich bin auch gerade dabei eine CAN Bridge (STM32 mit DualCAN/Ethernet/USB) für eine

FIS-Anzeige zu programmieren. Allerdings auf der B8 Plattform. Deine Idee bzw. du hast es ja schon realisiert deckt sich

mit meiner, also 2 x CAN und dann die Telegramme die vom Bus kommen modifizieren um die Anzeige hinzubiegen.

Evtl. Könnten wir ja Erfahrungen austauschen, denn die Zusätzliche Ebene im FIS (ala NAV/TEL/etc.) wäre ja schon klasse für

alle möglichen Anwendungen.

Daumen hoch, für deine Arbeit !

Gruß Andi

Themenstarteram 23. Dezember 2010 um 11:28

Hi Andi!

Klar. Kein Problem. Ich denke mal, dass das Protokoll im B8 so wie im 4F sein wird.

Es könnte nur gut sein, dass die Message-IDs unterschiedlich sind.

Ich bin jetzt gerade dabei ein Layout für eine Platine zu machen. Bluetooth anstelle von UART möchte ich ausserdem noch drauf packen.

Auf einem ARM7 könnte man natürlich auch gleich ein ganzes Linux laufen lassen ;)

Was für eine Gasanlage hast du? Oder für eine andere Applikation?

Hast du einen CAN Tracer?

Kai

Hi Kai,

wirklich schöne Umsetzung. Wie sieht denn dein Ansatz bzgl. der Sequenz-Nummern aus? Nummer abfragen, eigenen Zähler implementieren und jede Nachricht umschreiben? D.h. jede Sequenznummer erhöht sich damit um die Anzahl der eigenen Nachrichten seit dem letzten Neustart?

6000 Zeilen nur dafür kommen mir doch ein wenig viel vor, das sollte doch in < 100 Zeilen gemacht sein.

 

Grüße,

Nico

Kai Du bist ein Genie :) Sehr schön...

Themenstarteram 23. Dezember 2010 um 18:13

Zitat:

Original geschrieben von Nico82x

wirklich schöne Umsetzung. Wie sieht denn dein Ansatz bzgl. der Sequenz-Nummern aus? Nummer abfragen, eigenen Zähler implementieren und jede Nachricht umschreiben? D.h. jede Sequenznummer erhöht sich damit um die Anzahl der eigenen Nachrichten seit dem letzten Neustart?

6000 Zeilen nur dafür kommen mir doch ein wenig viel vor, das sollte doch in < 100 Zeilen gemacht sein.

Hi Nico,

ja, genau das mache ich. Ich habe zwei Sequenznummernzyklen eingeführt. Einen Richtung CAN-GW und einen in Richtung KI.

Die Sequenznummern sind aber nur ein (upper) Nibble - soll heissen von 0-F.

Das für sich alleine wäre natürlich nicht so sonderlich herausfordernd.

Da die Befehle aber jeweils aus einer Sequenz von Kommandos besteht, die jeweils atomar sein muss, braucht es aber einen enormen Aufwand um die Befehlsketten erst in einer dynamischen Struktur abzulegen und dann über einen Scheduler in Richtung KI zu schicken. (und das dann auch noch mit dem richtigen Ablauftiming / dem Warten auf die pasenden Antworten vom KI nach einem einzelnen Kommando aus der Sequenz)

Ausserdem muss dann auch noch erkannt werden, wann die jeweilige Sequenz anfängt und zuende ist. Leider kann man sich dabei auch nicht drauf verlassen, dass immer ein bestimmtes Kommando am Ende ist.

So, und dann muss man noch jeweils die passenden Antworten zum Auto hin (CAN GW) generieren, da das Protokoll zum KI ja entkoppelt ist und man daher nicht mehr einfach die KI Antworten mit neuen Sequenznummern versehen kann.

Der Aufwand wir nötig, weil das Navi z.B. ziemlich häufig soche Befehlssequenzen zum KI schickt. (häufige Updates)

Wenn man dann einfach nur zeitgesteuert ein Textupdate zum FIS schickt, dann kommt es häufig zu Kollisionen, die das Protokoll zu einem Reset bewegen. (der dann das komplette KI schwarz macht und den Screen neu aufbauen lässt)

Da der Reset ein paar Sekunden dauert, sieht das Ergebnis sehr unschön aus :(

@xzpsycho: Kein Genie. Wie mein Kennzeichen schon sagt ein NERD oder Geek, wie es auf meinem T-Shirt steht ;)

Kai

Hallo Kai,

absolut klasse Lösung und super technsiche Umsetzung.

Viele weihnachtliche Grüße

Mario

Deine Antwort
Ähnliche Themen