Realdash und EMUS BMS Kommunikation über Arduino
Inhalt:
Realdash
Auf der Suche nach einem Programm, mit dem ich ein Cockpit Display für meinen Kewet programmieren kann, und das mit meinem EMUS BMS läuft, bin ich auf Realdash gekommen. Realdash ist im Demomodus voll funktionsfähig, hat eine große Hardwarekompatibilität und kann mit allen benötigten Kommunikationsprotokollen umgehen. Einzig die Dokumentation ist sehr spärlich. Deshalb möchte ich hier über meine Erfahrungen berichten und einige Hilfestellungen für den Umgang mit Realdash beschreiben. Die Kommunikation zum EMUS BMS findet über einen Arduino mit dem CAN Protokoll statt. (Das EMUS BMS kommuniziert mit seinem eigenen Android/iOS Programm über ein proprietäres serielles Protokoll, das hier nicht verwendet wird!).
Realdash läuft auf Windows 10, iOS und Android Geräten und hat diverse vorgefertigte „Dashs“ im Lieferumfang. Im Store können kostenpflichtige Dashs erworben werden. Ein Dash ist eine Oberfläche, die auf einem Gerät ein Cockpit Anzeigedisplay zur Verfügung stellt. Diese können nach belieben editiert und für den persönlichen Bedarf umgestaltet werden. Da die Programmierung eines Dash auf einem Android Gerät fast unmöglich ist (obwohl möglich) habe ich die Entwicklung auf der Windows Oberfläche vorgenommen. Laufen soll es dann auf einem Android Autoradio. Hierbei sei noch einmal darauf hingewiesen, das viele Radios massive Kompatibilitätsprobleme haben, insbesondere mit Bluetooth. Nach einigen Misserfolgen habe ich ein Modell gefunden, das gut funktioniert (siehe weiter unten).
Ich habe mich mit dem Anschluss des EMUS BMS beschäftigt und der Integration verschiedener anderer Sensoren. Hier erst einmal ein erster Eindruck:
Realdash gibt es für Windows im Microsoft Store. Ich habe nach der Installation noch ein kostenpflichtiges Dash gekauft, das Classic S2000, das ich mir für den Kewet umgebaut habe. Die Entwicklungsoberfläche ist einfach toll, aber die Dokumentation für die Programmierung ist wie schon oben gesagt, mehr als dürftig. Der finnische Entwickler hatte dann auch nach der 2 Frage per Email keine Lust mehr zu antworten….
Es gibt aber ein kleines ein Forum, in dem man Fragen stellen kann.
Ein gekauftes Dash ist nur für eine Plattform benutzbar, will man es also auf Windows und Android benutzen, muß man es 2x kaufen. Die Kommunikation mit der Außenwelt wird über ladbare .XML Files konfiguriert, ebenso die etwas weitergehende Dash Steuerung.
Ich möchte mich hier, wie gesagt, auf die Kommunikation mit dem EMUS BMS beschäftigen. Es gibt hier keine Standardlösung! Auf der Realdash Seite kann man sich ein Beispiel Sketch für den Arduino herunterladen, mit dem man eine Kommunikation herstellen kann (das ist aber leider fehlerhaft). Um eine Verbindung zum EMUS herzustellen, ist aber noch etwas Arbeit nötig. Prinzipiell spricht das EMUS CAN und auch das Realdash, aber mit einigen kleinen Unterschieden. EMUS gibt Standard CAN aus, Realdash möchte aber eine spezielle Initialisierung haben (Das ist einfach eine Ziffernfolge vor der CAN Message).
So ist ein Standard CAN-Serial oder Bluetooth Adapter nicht verwendbar um EMUS und Realdash direkt miteinander kommunizieren zu lassen.
Android Autoradio
Über Android Autoradios findest du unendlich viel im Internet. Es gibt Unmengen verschiedener Produkte. Hier nur kurz etwas zu meinen Erfahrungen:
Die Radios sind eigentlich prinzipiell Android Tabletts, die mit einer speziellen Firmware ausgestattet sind und einem Radio entsprechend Anschlüsse bekommen haben. Die Firmware ist eine abgespeckte Android „Billigversion“ die um einige Funktionen erweitert wurde. Was für unsere Zwecke wichtig ist, ist ein funktionierendes Bluetooth und USB. Leider können damit die meisten Modelle nicht aufwarten, trotz anders lautender Versprechen. Ich habe einige Modelle ausprobiert, bis ich ein Radio gefunden habe, das funktioniert! Mal nach 10.1“ Autoradio WIFI Android 8.1 GPS NAVI Touchscreen Bluetooth 2DIN DSP USB
suchen, die chinesischen Anbieter kommen und gehen….
Es hat 2 USB Anschlüsse und ein funktionierendes Bluetooth.
Die Bildschirmauflösung ist 1024x600px, Speicher 1GB RAM und 16GB ROM, 4 Lautsprecherausgänge und ein FM Radioempfänger. Der Chipsatz ist „8227L-DEMO„.
Ich habe 129 EUR bezahlt, mittlerweile bekommt man es wohl auch für 71 EUR, siehe Link!
Worauf man acht geben sollte, ist die Frontscheibe, sie ist aus Kunststoff und zerkratzt sehr leicht!
In Realdash Windows muss für die Bildschirmauflösung unter EINSTELLUNGEN -> ANWENDUNG -> BEARBEITUNG (5er Reiter) -> 16:9 eingestellt werden. Das entspricht 1024x600px am ehesten.
Hier ein Typ der NICHT funktioniert hat! Es war nicht möglich Bluetooth und USB zu aktivieren. Es hatte die Android Version 9.0 aufgespielt, das was funktioniert hat 8.1! Ein Nachteil war auch das große Gehäuse….
Radio Gehäuse
Um das Radio auf dem Kewet Armaturenbrett zu montieren, habe ich ein Gehäuse 3-D gedruckt. Da das Radio kein großes Gehäuse hat, ist es recht klein ausgefallen und passt gut hinter das Lenkrad:
Das Gehäuse wurde noch geschliffen und matt schwarz lackiert. Ein Beitrag über die richtige Farbe um PLA zu lackieren, findest du hier!
[canvasio3D width=“840″ height=“400″ border=“1″ borderCol=“#F6F6F6″ dropShadow=“0″ backCol=“#FFFFFF“ backImg=“…“ mouse=“on“ rollMode=“off“ rollSpeedH=“0″ rollSpeedV=“0″ objPath=“LCD-Box10“ objScale=“1.0″ objColor=““ lightSet=“2″ reflection=“on“ refVal=“2″ objShadow=“off“ floor=“off“ floorHeight=“42″ lightRotate=“off“ vector=“off“ mousewheel=“on“ Help=“off“] [/canvasio3D]
3D Datei, zum Drehen mit der Maus in das Bild klicken, zu zoomen Scrollrad benutzen.
Ich stelle es als STL Datei zum Download frei zur Verfügung: Autoradio-Gehäuse
Hier das Testsetup: Arduino, EMUS BMS, Top/Bottom Isolatoren und ein Cell Module mit Winston Akku. Die Top Bottom Isolatoren kann ich sehr empfehlen. Die sind preiswert, konfigurationsfrei (nur richtig anschließen) und recht robust. Nur keinesfalls falsch anschließen! Die EMUS CAN Module sind schwerer zu konfigurieren, mit ihnen können die Akkupacks aber überall (also weiter weg vom BMS) plaziert werden und auch aufgeteilt werden.
EMUS BMS Installation
Um die Funktion des BMS zu testen, reicht es, ein Akku mit den EMUS Top/Bottom Isolatoren zu verbinden. Alternativ (teurer) kann ein CAN Cell Group Module verwendet werden, das den Vorteil hat, das mehrere Akkublöcke verbunden werden können, und das Modul eine galvanische Trennung zu den Akkus hat. (Wer mal aus versehen, und das passiert im Eifer des Gefechts schneller, als man denkt, mit den Zell Modul Kabeln irgendwo gegen kommt, kann sich dann neue bestellen, sowohl die Isolatoren als auch die Module). Das CAN Cell Group Modul hat allerdings seine Tücken, wie ich schmerzhaft feststellen mußte. Es ist schwer zu konfigurieren und ich bin hatte einige Probleme mit dem nicht gut funktionierendem Steckverbinder des Moduls. So oder so empfiehlt es sich IMMER erst einmal einen Test mit einem Akku am Computer im Wohnzimmer zu machen, als tagelang einen Fehler in der Garage am Auto zu suchen…. glaubt mir….. !!
Auf folgende Dinge muß geachtet werden:
GND vom Arduino und EMUS müssen verbunden werden, damit das CAN Signal eine gemeinsame Masse hat.
CAN Devices sind in Reihe zu schalten, keinesfalls sternförmig. Dies führt unweigerlich zu Problemen.
CAN Leitungen benötigen an beiden Enden einen Abschlußwiderstand, am Arduino ist ein 60 Ohm CAN Abschlusswiderstand zwischen CAN H und CAN L geschaltet und am anderen Ende der CAN Leitung ebenfalls.
Wenn ein CAN Group Modul verwendet wird, muß dieses richtig konfiguriert werden. CAN Bus speed ist 250 kbps.
Es muß mindestens ein Akku mit einem Cell Module angeschlossen werden.
Verwendete Hardware und Software: Windows 10 mit Parallels Desktop 14 auf einem MAC, Arduino Mega 2560, Arduino IDE 1.8.9, EMUS BMS mit Software 2.4.11.1, CAN Group Module, CAN Shield Seedstudio V1.2, Bluetooth Module HC-05 (38400 Baud dataspeed), Realdash in Version 1.5.9

Arduino
Ich habe einen Arduino Sketch geschrieben, der die CAN Kommunikation sowohl für die Bluetooth als auch die USB Serial Kommunikation umsetzt. Praktischerweise kann man durch die Verwendung eines Arduino auch noch zusätzliche Sensoren einbinden, die das BMS nicht mitbringt, z.B. Temperatursensoren und 12V Überwachung, die Anzeige von Licht, Blinker, Heizung und anderen Verbrauchern. Das geht schon mit einem Arduino Uno, aber besser ist ein Mega, wegen des größeren Programmspeichers. Zusätzlich wird noch ein CAN Shield benötigt und ein Bluetooth Adapter. Alles für etwa 30 EUR zu bekommen. Für die bessere Verbindung von Sensoren, habe ich noch ein Screw Shield verwendet. Wenn die Kommunikation nur über USB stattfinden soll (was ich nach vielen Tests bevorzuge, da die Bluetooth Kommunikation hin und wieder instabil ist und unvermittelt abbricht), kann man sich das Bluetooth Modul natürlich sparen. Für die Programmierung ist es allerdings hilfreich, da man ansonsten den USB Anschluss des Arduino für Programmierung und Kommunikation mit Realdash immer umstöpseln muß. Das Tolle an Realdash ist, das man beide Kommunikationsprotokolle einspeichern kann, und es nimmt das jeweils verfügbare.
Bei der Komponentenauswahl ist darauf zu achten, keinen China Billigklon des Arduino Mega zu kaufen, die darauf verwendeten USB Seriell Chips sind nicht mit dem Bluetooth Modul kompatibel. Das hat mir einige Tage Kopfzerbrechen bereitet. Hier eine Liste der verwendeten Komponenten:
Arduino Mega
Bluetooth Modul HC-05
USB Shield
USB Dongle für Windows 10
Temperatursensoren (Optional)
Ein erster Test
Der Arduino ist für den Empfang und die Anzeige der CAN Befehle auf dem seriellen Monitor des Arduino zuständig. So kann man erst mal schauen, ob und was aus dem EMUS rauskommt.
Hier der -> Arduino Sketch.
Ein zweiter Test
Jetzt wollen wir versuchen, die CAN Daten vom EMUS an Realdash zu schicken!
Der Arduino fungiert hier prinzipiell als CAN – Serial / Bluetooth Bridge. Die CAN Befehle des BMS werden leicht modifiziert (ein Identifer für Realdash) gleichzeitig seriell über USB und Bluetooth weitergeleitet. Ganz praktisch, um beide Schnittstellen zu testen.
Die Daten können hier NICHT auf dem Seriellen Monitor der Arduino IDE angezeigt werden, da sie nicht für eine Anzeige formatiert sind sondern nur für die Ausgabe über USB/seriell.
Willst du nur CAN vom EMUS an Realdash schicken, reicht dieses kleine Programm eigentlich schon.
In Realdash kann die prinzipielle CAN Datenübertragung beobachtet werden, in dem man unter: WERKSTATT -> (auf die Tür klicken) -> (auf die blaue Anzeigetafel klicken) -> ANSCHLÜSSE -> auf CAN MONITOR geht.
Für das Realdash brauchen wir noch ein Datenübertragungsfile, damit Realdash weiß, welchen CAN Befehl es nehmen soll. Im .xml File ist ein einziger Wert eingetragen der den Wert „MIN CELL VOLTAGE“ empfängt, also bei einem einzigen angeschlossenen Akku seine Spannung.
Natürlich muß in Realdash noch eine Anzeige für den entsprechenden Wert integriert werden. Ich werde hierzu noch einen eigenen Beitrag schreiben, wie man Realdash programmiert. Weiter unten mehr über die Einrichtung von Realdash.
Arduino -> Arduino Sketch
Realdash -> Datenübertragungsfile
Realdash -> Dash File
Realdash einrichten
Windows 10: Reasldash aus dem Microsoft Store installieren
Realdash zu programmieren geht eigentlich nur auf Windows. Deshalb wird hier das Programmdesign erstellt und später auf ein Android Gerät übertragen!
Grundlegende Einstellungen: Die Einstellungen werden sichtbar, wenn man im Programmfenster oben auf den Rand klickt):
EINSTELLUNGEN -> DATENQUELLE -> „ANSCHLÜSSE“
Arduino Anschlüsse für Anzeige wählen: EINGANG & WERTE -> DATENQUELLE WÄHLEN -> „ECU SPEZIFISCH“ -> Anschluss wählen.
Dash aus Datei laden (dies ist die Datei, die das Design beinhaltet): BEARBEITEN -> DATEI -> LADEN -> (Ordner mit .rd Datei wählen)
Die Datei für den Kewet ist: Kewet_Test.rd, sie ist ein von mir modifiziertes Dash „Classic S2000“. (dieses Dash muß gekauft werden, sonst läuft auch die modifizierte Datei nicht!)
Kommunikationsdatei wählen: WERKSTATT -> (auf die Tür klicken) -> (auf die blaue Anzeigetafel klicken) -> ANSCHLÜSSE ->
Hier kann jetzt ein neuer Kommunikationsanschluss eingerichtet werden (USB oder Bluetooth)
HINZUFÜGEN: RealDash CAN (dies ist das Kommunikationsprotokoll), auf den Pfeil nach rechts klicken ->
Hier kann nun eine neue Schnittstelle ausgewählt werden: BLUETOOTH oder SERIELLE SCHNITTSTELLE(USB). Du kannst mehrere Schnittstellen definieren, auf den Pfeil nach rechts klicken -> Nun werden verfügbare Anschlüsse aufgelistet, also Bluetooth Devives oder USB Anschlüsse. Die Anschlüsse müssen natürlich verfügbar sein! Auf den Pfeil nach rechts klicken ->
Übertragungsrate wählen, bei mir sind es generell 38400. Auf den Pfeil nach rechts klicken ->
„CAN BESCHREIBUNGSDATEI WÄHLEN“ klicken: -> „realdash_can_example_mod.xml“
ERLEDIGT klicken! (Änderungen an der Kummunikationsdatei werden im laufenden Betrieb übernommen!)
Jetzt können unter „ANSCHLÜSSE“ z.B. 2 Anschlüsse aufgeführt sein, die je nach Verfügbarkeit genommen werden, Bluetooth oder USB!
Mit klick auf das Kreuz rechts oben den Dialog schließen.
Wenn REALDASH unten rechts im Fenster im 5 Sekunden Takt eine Meldung wie „Verbinden…. USB serial Device (COM7…“ bringt, ist der entsprechende Port nicht verfügbar oder die Kommunikation bricht ab.
Wichtig: Wenn es mit der Seral USB Verbindung Probleme gibt:
Dieser Anleitung folgen: Wichtig: Den alten Gerätetreiber wie in der Anleitung DEINSTALLIEREN, nicht nur aktualisieren!
Die Kommunikationsdatei
… hat mir schon einiges Kopfzerbrechen bereitet. Die .xml Datei fungiert als Filter, der die CAN Nachrichten nach einer bestimmten CAN ID durchsucht und dann eine Anweisung gibt, wie damit zu verfahren ist. Jede dieser Anweisungen (Frames) ist in die Bezeichner <frame …… </frame eingebettet.
Sehen wir sie uns mal genauer an:

Im obrigen Beispiel wird die Akkublock Zellspannung CAN Message vom EMUS BMS verarbeitet. Ein Frame beginnt mit der zu filternden CAN ID.
<frame canId „……“ >. Im Beispiel hat sie den Wert 0x1B6 (Hexadezimal). EMUS hat eine „Basis ID“ (bei mir 0x1B5), zu der ein Wert hinzugerechnet wird, in unserem Fall 1 (in Dezimal!!), was dann die ID 0x1B6 ergibt. Hier
Die Zahlen sind der EMUS CAN Dokumentation zu entnehmen.
Als nächstes (value) wird weiter der entsprechend Payload (also der Inhalt der CAN messages) gefiltert und aufbereitet.
name=“……“ ist die Variable die in Realdash einer Ausgabe zugewiesen wird, der Name kann frei gewählt werden.
units=“…“ ist die Einheit, mit der der Wert bezeichnet werden soll, macht aber nur für spezielle Berechnungen in Realdash Sinn. In unserem Fall „A“ für Ampere, hat keine Berechnung hinterlegt und dient nur als Hinweis.
offset=“…“ ist die Byte Stelle, an der die Auswertung beginnt. „0“ ist die erste Stelle! Ein CAN Datenfeld/Payload besteht immer aus 8 Bytes! (zumindest bei Classical CAN).
length=“…“ ist die zu verarbeitende Byte Anzahl. In unserem Beispiel sind es 2 Bytes, Byte B0 und B1. Wichtig hierbei: Der offset Wert wird von der Byte Stelle abgezogen. Wenn also z.B. das 4. Byte ausgewertet werden soll, ist der Offset „3“ und das Byte wird dann mit „B0“ bezeichnet, das 5. Byte mit „B1“ und so weiter.
conversion=….“ ist in unserem Fall eine mathematische Operation. Realdash kann anscheinend hier nur die Grundrechenarten. In unseren Fall werden 2 Bytes zusammengerechnet (B1+(B0+256))/10): Das 5. Byte + dem (4. Byte * 256). Der Dezimalwert 256 wird mit den 4. Byte multipliziert, weil das 4. Byte das höherwertige ist! Danach wird das ganze durch 100 geteilt, weil der Endwert zwei Nachkommastellen hat.
Etwas verwirrend? Hier ist die entsprechende Angabe in der EMUS CAN Dokumentation:

Wenn Bytes addiert werden, wird das 2. Byte mit 256 multipliziert, das 3. Byte mit 65536, das 4. Byte mit 16777216 u.s.w
Bit Werte

Im obrigen Beispiel werden EMUS Bit Werte gefiltert.
Realsdash stellt hierzu die Beschreibung units=“bit“ zur Verfügung und weiß mit dieser Angabe, das ein Bit aus einem Byte ausgefiltert werden soll. Mit conversion=“V>>2″ wird das 3. Bit des Bytes genommen!
Signed Word
Nun wird es etwas schwieriger:
Der Motorstrom ist vom EMUS als signed Word codiert. Ein unsigned Word hat den Wertbereich von 0 – 65.536, ein signed Word -32.768 – 32.767! Der negative Wert bezeichnet Stromentnahme aus dem Akku, ein positiver Wert Ladung in das Akku. Wir müssen nun also Realdash dazu überreden, den empfangen Wert als signed Word zu interpretieren.
Das wird mit dem Zweierkomplement gemacht. Auf die Grundrechenarten heruntergebrochen, siet die Formel so aus:

LSB und MSB werden in gewohnter Weise zu einem Word zusammengerechnet. Mit „-65536“ werden die Bits invertiert und dann mit „+1“ das Word als signed markiert. „/10“ ist dann noch der Divisor für eine Nachkommastelle.
Realdash gibt nun brav einen minus Wert an, wenn der Motor Strom zieht!
Nette Helferlein bei der Umrechnung von Zahlensystemen sind hier zu finden:
Binär-Dezimal-Hexadezimal Umrechner
Umrechnung von Zahlensystemen
Rechner für Hexadezimalzahlen
Rechner für das Zweierkomplement
Das Dash Design ändern
Animations-Design Datei laden: Im Bearbeiten Modus: DATEI -> IMPORTIEREN und .xml Datei auswählen. Diese Möglichkeit ist leider überhaupt nicht dokumentiert. Eine Beispiel Animations xml Datei kann hier herunter geladen werden und hier das Dash dazu.
Wert mit Nachkommastellen versehen: Optik -> Schriftart&Text -> Nachkommastellen = „2“.
Design: Leider können keine Design Elemente von einem Dash in ein anderes kopiert werden. Die einzige Möglichkeit ist hier ein Screenshot und die Grafik dann in das Zieldash einfügen.
Die Daten auf das Android Gerät übertragen
Das geht am besten mit Airdroid. Die erstellten Dateien über WLAN auf das Android Gerät kopieren und dann mit Realdash laden! Wie bereits geschrieben, müssen hier 2 Lizenzen von Realdash gekauft werden.
Die Lösung ist sehr angenehm, da das Realdash Autoradio nur über WIFI mit deinem Router verbunden sein muß und du so alles vom „Wohnzimmer“ aus übertragen werden kann, auch wenn alles schon eingebaut und verkabelt ist.
Der entgültige Arduino Sketch
Hier nun das endgültige Programm:
So richtig Sinn macht die ganze Sache mit einem Arduino natürlich erst, wenn wir auch noch andere Daten von Sensoren an Realdash übertragen können. z.B. Temperaturen, Spannungen usw.
Auf der Realsdash Seite kann man sich ein Beispiel Sketch für den Arduino herunterladen, mit dem man eine Kommunikation herstellen kann und Daten von und zum Arduino übertragen kann. (das ist aber leider fehlerhaft). Ich habe es umgeschrieben, so daß es mit USB und Bluetooth Verbindung läuft und CAN Daten vom EMUS direkt durchleiten kann.
Hier noch einmal die Funktionen im Überblick:
CAN Relais EMUS <-> Realdash, in beide Richtungen. Alle CAN Nachrichten werden mit einem Identifer versehen und über USB an Realdash gesendet.
CAN Nachrichten modifizieren, einzelne Nachrichten können verändert werden um sie für Realdash besser lesbar zu machen.
Anschlussmöglichkeit für Analoge und Digitale Sensoren. Die werte können ebenfalls per CAN Nachricht an Realdash gesendet werden. Dallas one wire DS18B20 Temperatursensoren können angeschlossen werden.
Umschaltmöglichkeit USB/Bluetooth.
Demowerte zur Funktionsüberprüfung.
Geplant:
Fahrzeuggeschwindigkeit über Motor/Getriebekontakt.
Erweiterte Servicefunktionen.
Arduino -> Sketch kann hier heruntergeladen werden.
Realdash -> Datenübertragungsfile
Realdash -> Dash File für den Kewet.
(Achtung: Es muß das kostenpflichtige Dash „Classic S2000“ gekauft werden auf dem das Demo beruht. Sonst läuft es nicht!)
Die fertige CAN Box
Dies ist nun die (fast) fertige CAN Box mit dem Arduino, CAN Shield, Screw Shield und einer kleinen Platine zum Anschluss der Digitaleingänge und eines Analogeinganges. Als Steckverbinder habe ich ODB2 Buchsen genommen, da diese Verkabelung günstig zu erhalten ist. und Vorverkabelte Stecker und Buchsen die Verkabelung einfach machen. Leider nicht gerade Wasserdicht, aber ich hoffe, das es hält.
CAN
Einige Worte zum CAN Protokoll. Nur wenige durchschauen, was CAN eigentlich ist. Da gibt es CAN, OBD2, CANOpen und diverse ISO Normen.
CAN beschreibt erst einmal den Hardware Layer und die Datenübertragung, einfach ausgedrückt.
OBD2 ist ein in nicht ganz alten Fahrzeugen integrierter Diagnoseport, der meistens auf das das CAN Protokoll aufsetzt, aber idr. von der internen Fahrzeugkommunikation isoliert ist. Wenn wir also über den OBD2 Diagnoseport uns mit dem Fahrzeug verbinden, haben wir idr. keinen Zugriff auf sicherheitsrelevante Funktionen wie z.B. die Motorsteuerung. Eine Ausnahme hiervon ist z.B. der Renault Twizy, der aus kostengründen den OBD2 Port nicht isoliert.
Das „Standard“ CAN Protokoll nach ISO 11898 ist recht simpel. Alle Teilnehmer am CAN Bus können prinzipiell Daten senden und empfangen. Jedes Datenpaket enthält eine CAN ID und jeder Teilnehmer kann anhand dieser ID schauen, ob die Message für ihn bestimmt ist. CAN nennt das das „Multi-Master-Prinzip“. Alle Teilnehmer sind gleichberechtigt.
Nun ist z.B. ein Fahrzeug aber darauf angewiesen, das ein Gaspedalwert auch am entsprechendem Steuergerät ankommt und ein Fehler im System nicht das Auto mit Vollgas weiterfahren lässt. Deshalb hat sich die Industrie CANopen ausgedacht. Das ist prinzipiell eine weitere Softwareschicht auf dem Standard CAN Protokoll. CANopen ist kein Multimaster Protokoll, sondern hat einen Master und beliebige Slaves, die über das Protokoll periodisch melden müssen, das sie noch da sind. Außerdem ist eine Rückmeldung integriert, das ein Befehl auch empfangen wurde. Das sind nur einige Beispielhafte Eigenschaften, die CANopen bietet.
Der SEVCON GEN4 Motorcontroller z.B. kommuniziert mit CANopen, was ihn zu einem sehr schwer zu konfigurierendem Kandidaten macht.
Prinzipiell können Daten von Teilnehmern mit CAN und CAnopen auf dem selben Bus kommunizieren (nicht miteinander) wenn es keinen CAN ID Adresskonflikt gibt. Die Hardwareschicht ist die selbe. Kommunikation kann aber über eigens zu konfigurierende TPDOs und RPDOs stattfinden. Hierzu mehr in diesem Beitrag!
Das von Realdash und EMUS verwendete Protokoll ist das simple, Standard CAN Protokoll. Wir können hier nur wählen, ob wir den CAN Identifier als Standard oder Extended Identifer haben wollen. Der Unterscheid ist, das der Identifer entweder 11 Bit lang ist oder 29 Bit. Das muß man allerdings explizit festlegen. (Im BMS Setup). Alle zur Verfügung stehenden CAN Werte werden ständig in einem festzulegenden Interwall gesendet. (100ms ist ein guter Wert).
Fazit:
Realdash ist ein hervorragendes Werkzeug, um eine eigene Anzeige für ein Fahrzeug zu realisieren, und das zu einem sehr günstigen Preis!
Nachteil: Die Dokumentation ist schlecht und das Programm erfordert einige Einarbeitung.
Das EMUS BMS ist ein ausgereiftes Produkt mit weitreichenden Funktionen.
Nachteil: Recht teuer und in der Einrichtung, speziell der CAN Control Units, sehr hakelig.
Und macht das alles Sinn?
Meine Besucher haben immer den „bastelst du noch, oder fährst du schon“ Blick in den Augen, aber man hat Lust dazu, oder eben nicht. Die Reise ist das Ziel.…. oder man kauft sich ein neues Auto. Teurer ist das nicht, so viel steht fest……. aber das ist eine ganz anderes Thema. Vielleicht bewerbe ich mich mal bei Tesla! 😉
Bei Fragen bitte die Kommentarfunktion nutzen!
Dies ist ein privater Blog. Brauchst du professionelle Hilfe zum GEN4, EMUS BMS, EV Umbau oder Programmierung? Dann bitte hier klicken!
Kommentare
Realdash und EMUS BMS Kommunikation über Arduino — Keine Kommentare
HTML tags allowed in your comment: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>