FIS Textanzeige / Vialle LPG Gasanlage Tankstand über FIS anzeigen
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
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 Antworten
Ich find das einfach genial wie du das gemacht hast! Würd ich mir sofort kaufen dein zusatzmodul!
Wi hast du das eigentlich mit dem Schalter gemacht? Gibt es da von Audi so einen Schalter der so aussieht? der sieht ja aus wie ein Originalteil.
Den Tasterdeckel habe ich gravieren lassen. Also einen Taster genommen, der keine Beschriftung hat und die Schrift von hinten reingravieren lassen.
Man sieht dann keinen Unterschied zum Original.
Die erste Platine habe ich hier liegen. Es fehlen aber noch ein paar Dinge und ich komme zeitlich kaum dazu endlich mal wieder richtig Zeit in das Projekt zu stecken 🙁
Mal sehen, vielleicht in den Sommerferien ...
Gibt es schon Neuigkeiten? Ich möchte Genauso diverse Sachen im FIS anzeigen.
DANKE!
Ähnliche Themen
Zitat:
Original geschrieben von kbankett
Was brauchst du denn an Infos?
Ich würde gerne die Anzeige der Valentine One vielleicht wie beim folgenden Link oder besser in einem Zusatzmenü (Mode) darstellen:
http://www.youtube.com/watch?v=MZnAjzVw-KIAußerdem werde ich in Kürze eine Car-PC verbauen und diverse Statusmeldungen etc. anzeigen.
Oha.
Nein, etwas fertiges kann ich dir leider nicht liefern.
Da müsste noch so einiges im Source angepasst / erweitert werden.
Zitat:
Original geschrieben von kbankett
Oha.
Nein, etwas fertiges kann ich dir leider nicht liefern.
Da müsste noch so einiges im Source angepasst / erweitert werden.
Ich kann warten. Was genau wäre zurzeit möglich?
Alter Schwede, habe mir gerade mal den kompletten Threed rein gezogen und bis auf das Video so gut wie nix Verstanden!😕😁
Aber Wooow, mehr kann ich da nicht sagen. Wenn das ganze mal Plug and Play fähig ist, so Steuergerät reinhängen, programieren und fertisch. Dann koofe isch dat bei dir!!🙂
Verbeuge mich! Hut ab!
Hochachtungsvoll
Pin
Zitat:
Original geschrieben von kbankett
Immer noch genau das, was im Video zu sehen ist.
Hey Kai 🙂
Kannst du HIER nochmal reinschauen? 😉
Gruß
Justin
Hey Kai,
danke für deine Antwort! 🙂 (im anderen Thread).
Mir geht es ja auch nur um das Vialle-Protokoll bzw. um eine Hardware im Audi-Design (Taster mit LEDs usw.), die die komische Eieruhr von Vialle ablösen soll... Hast du da etwas, unabhängig von CAN und FIS usw.? Oder wäre es ein großer Aufwand, ein solches Controller-Board zu entwickeln mit entsprechenden Schnittstellen zu Taster, Tankanzeige usw.?
Vielen Dank und Gruß,
Justin
Hi Justin,
ok, die Datenübertragung zwischen dem Vialle-Bedienteil und dem Steuergerät ist eine UART Schnittstelle. (also einfach seriell)
Du brauchst also nur einen Controller, der einen seriellen Port hat.
Baudrate müsste ich nachschauen. Ich meine es waren 9600 Baud. (8N1)
Das Vialle Steuergerät sendet dauernd einen Datenstrom.
Wenn du es also so weit an den Start gebracht hast, dass du die Daten empfängst, dann kann ich dir ein paar Tips geben in welchem Byte was drinsteht.
Alle Bytes konnte ich natürlich nicht rausfinden, sondern nur die, die sich im Normalbetrieb auch ändern.
In einem Byte findet sich der Tankstand, in einem anderen der Anlagenzustand (Gas oder Benzin).
Die Umschaltung (der Taster) ist darüber realisiert, dass die Datenleitung auf Masse gezogen wird.
Du brauchst also noch einen GPIO, mit dem du einen Transistor anschteuerst, welcher dann die Leitung auf Masse zieht.
Zum Thema Taster findest du hier was.
Mir ist nur noch nicht klar, wie du den Tankstand anzeigen möchtest, wenn nicht über das FIS.
Derzeit plane ich nicht ein Board zu entwickeln. Mein Fokus liegt im Moment woanders.
Grüße,
Kai
gibt es keine Möglichkeit, den Ladedruck oder die Öltemperatur vom CAN auszulesen und über so ein "Gerät" auf dem FIS anzuzeigen? Leider habe ich von der Hardwareentwicklung überhaupt keine Ahnung. Software wäre schon weniger das Problem. Müsste man nur noch die Software auf den Controller bekommen, was für mich wieder böhmische Dörfer sind 😉
Mit deiner Hardware müsste sowas doch eigentlich möglich sein? Kannst du da evtl. einen Bauplan und deinen Quellcode zur Verfügung stellen und erklären, wie man den µc programmiert? Dann könnte man dort angreifen und eine Ladedruckanzeige und/oder Öltemperaturanzeige fürs FIS aufbauen. Ich denke, das wäre für viele Leute interessant.
Ja, klar könnte man an die Werte kommen.
Über den Motor-CAN werden diese ja verbreitet, da man ja auch ein FL KI nachrüsten kann und diese Werte dann angezeigt bekommt.
Bei mir ist die Öltemperatur ja nur nicht über das VFL CAN GW übermittelt worden. Auf dem Motor-CAN muss die Info aber schon vorher dagewesen sein.
Nein, ich kann nicht mal eben erklären wie man C programmiert und Hardware entwickelt - tut mir leid 😉
Wenn, dann ginge das nur mit einem S3_225 2013 Software Update 😁