Translate

16 Februar 2011

rumschnüffeln in seriellen Schnittstellen und auf dem CAN-Bus

Wie ich neulich schon erwähnte, habe ich mich in
letzer Zeit mal ein bisschen intensiver mit dem
Thema CAN-Bus auseinandergesetzt.


Der CAN-Bus ist eine ganz spezielle serielle Datenschnittstelle,
die ich hier gar nicht allzu ausführlich beschreiben
möchte, da im WWW alles schon dutzende Male
beschrieben wurde.


Im modernen Fahrzeugbau werden inzwischen in
zunehmenden Maße Daten per CAN übertragen,
weil diese Schnittstelle in der Großserie recht universell
einsetzbar ist. Zwei verdrillte Leitungen quer durchs
Auto, und alle Geräte hängen einfach parallel da dran
und bekommen ihre Daten.

Jedes Gerät kann empfangen und senden.
Jedes Gerät hört alles mit und pickt sich die
Daten heraus die es haben möchte,
und alle quatschen irgendwie, aber doch
mit System durcheinander.
Irgendwie also wie an der Börse,
oder in einer Wirtshausküche,
nachdem ein Reisebus ankam...


Die Daten werden paketweise übertragen,
so ein Datenpaket besteht üblicherweise
aus einer "ID", also einer Zahl die aussagt,
für wen die Daten bestimmt sind, bzw.
um welche Daten es sich handelt.
Dann folgt eine Größenangabe, also
die Zahl der nachfolgenden Byte an
Nutzdaten.Dann die Daten.

Das kann dann z.B. so aussehen:
515 7 41 09 00 95 00 11 2C


Wenn man das entschlüsseln will,
dann muss man wissen oder
herausfinden, was der Header (ID)
bedeutet, und welche Daten in welchem
Byte stehen.Um da überhaupt irgendwas
zu verstehen braucht man etwas
Hard- und Software, die einem dabei
hilft.

Das größte Problem:
Auch wenn man schon mal mithorchen kann,
dann sieht man den Daten noch nicht an,
wer was gesendet hat oder wer es empfängt.


Ich wollte eigentlich (aber bisher vergeblich)
Daten in das Kombiinstrument eines Smart
schreiben, aber da gehört noch mehr dazu
als nur der Tacho......
...am Rande..... da hab ich was lustiges entdeckt:

Die Komponenten fragen erstmal gegenseitig
nach, ob auch wirklich alle da sind, und deshalb
kann das so noch gar nicht funktionieren.
Immerhin sendet das Ding schon ein paar Daten,
so dass zumindest klar ist, dass die Verbindung
zum Bus einwandfrei funktioniert.

Ich habe mir für meine Versuche einen
LAWICEL CAN232 -Adapter besorgt, weil ich
den notfalls auch mal mobil an der seriellen
Schnittstelle eines kleinen Atmega betreiben
kann.Man muss sich aber unbedingt im
Klaren darüber sein, dass die RS232-Schnittstelle
nicht reicht um große Datenmengen zu
übertragen.Für eine Auswahl oder zum
Senden einzelner Befehle sollte das aber genügen.
Wem es auf mehr Performance ankommt
sollte also unbedingt eine USB-Version
nehmen, und zusätzlich darauf achten,
dass hier zumindest eine parallele Anbindung
erfolgt.


Bei den dazugehörigen Auswerteprogrammen
will ich mich hier fürs Erste auf kostenlose
Programmversionen beschränken.

Das bislang beste Programm, das mit dem
LAWICEL CAN232 zusammenarbeitet
ist CANHACKER siehe http://www.canhack.de/

Leider verträgt sich die Grundeinstellung
des Adapters nicht mit dem Programm,
da muss man erst mal mit einem
Terminalprogramm den Adapter
etwas umkonfigurieren damit der
Empfang klappt. Da muss man erst mal
drauf kommen...........

Das CAN232.exe von http://www.can232.com/
ist eher nur als erster Funktionstest zu
gebrauchen. wirklich arbeiten kann man
damit nicht so recht.
Zusammen mit meinen "Lieblingsterminals"
half es mir aber, das Problem mit CANHACKER
zu lösen.

Deshalb will ich hier auch ein paar RS232
Terminal bzw Mithorchprogramme
vorstellen mit denen ich meist arbeite:

Free Serial Port Monitor
Ein geniales Programm, das alle Vorkommnisse
an einer seriellen Schnittstelle des lokalen
Rechners mitprotokolliert.
Ideal, um mitzuhorchen, was irgendwelche
Programme senden oder empfangen.

Terminal G-A-System
Ein auch in der kostenlosen Version schon
sehr gut ausgestattetes Programm.
Insbesondere kann man damit ganze
Befehlssätze zusammenstellen und
dann auch in einer Schleife senden lassen.
(diese SCRIPT-Funktion ist etwas versteckt,
ich hab sie eher zufällig mal entdeckt,
schade, denn genau das ist der entscheidende
Vorteil dieses Programms)
Die Demo-Version kann nur ein paar Scripts
speichern, aber das ist schon mal genug,
und man kann das Programm auch in
verschiedenen Verzeichnissen installieren ;-)

COM Terminal
ein sehr primitives Terminal ohne
Schnickschnack, aber ohne Schulung
sofort und intuitiv bedienbar.
Ideal, um einfach mal ein paar Zeichen
zu senden oder zu empfangen
( wenn ich da z.B. an Hyperterminal denke..........)

Nachtrag vom 12.Juni2012:
COM Terminal ist großartig, wenn es darum geht
Zeichenfolgen aus beliebigen Zeichen zusammenzusetzen
insbesondere, wenn diese nicht direkt per Tastatur
eingegeben werden können.Das geht hier
direkt als Dezimal und Binärwert Auch die etwas
ungewöhnliche Darstellung der empfangenen Zeichen
übereinander zusammen mit dem Binärwert geht in
diese Richtung.Ich mag dieses Programm vor allem
zum Senden von Steuersequenzen und zum
Empfangen binär codierter Messwerte.
Halt immer dann wenn alle Zahlen von 1 bis 255
als Zeichen verschlüsselt vorkommen
wenn es nur darum geht Texte per Tastatur zu
tippen und dann seriell zu senden, dann gibt es
andere Programme die besser dafür geeignet sind.
z.B.:

Termite Terminal
....auch ein sehr einfaches Terminal, mit ganz anderen Stärken.
Hier kann man besser tippen und auswählen welches
endzeichen bei Return mitgeschickt wird.
Auch die Anzeige der empfangenen Zeichen ist
viel besser lesbar, solange es sich um Text handelt.
Dafür ist eine Eingabe von Sonderzeichen gar nicht
eigens vorgesehen.
Es kommt halt auf den Einsatzzweck an!

wer noch viel mehr haben möchte, der sollte sich mal

RealTerm

anschauen!!!
.......so was wie die eierlegende Wollmilchsau
unter den Freeware-Terminalprogrammen........
da sind Sachen wie seltsame Zeichencodes,
Direktansteuerung einzelner Schnittstellenpins,
RS485 I²C 1-Wire, die Direktverbindung serieller
Daten übers Netzwerk und noch so manches das
ich noch gar nicht testen konnte reingepackt.
Kein Wunder, dass einen der Funktionsumfang erst
einmal regelrecht erschlägt, aber wenn man mal
ein bisschen eingearbeitet ist, dann ist man nur noch begeistert


und nicht zu vergessen:
BINTERM , eine Kombination aus einer kleinen
Schaltung und einem dazugehörigen Programm.
siehe http://www.mmvisual.de/ unter binterm
Das ist ein kleiner Adapter den ich mir mal
gebaut habe und der prima funktioniert!
Damit kann man beide Leitungen bzw
Richtungen einer seriellen Verbindung
mitschneiden.
im Gegensatz zu Free Serial Port Monitor
braucht hier aber keine der Schnittstellen
auf dem lokalen Rechner zu sitzen.
War schon oft sehr hilfreich, und auch das
Programm dazu ist hervorragend.
Der Entwickler antwortet sogar auf Mails!!!
(Ich hatte da mal ein kleines Problem bzw einen
Verbesserungs-Vorschlag für eine weitere Funktion)
"muss man haben"

Bildschirmaufnahmen etc demnächst.......
Ich habe gerade mit einem anderen Projekt zu tun,
deshalb gehts vorerst mal hier nicht weiter,
bzw,ich stelle das mal ein bisschen hinten an,
bis sich jemand meldet, den das auch interessiert.

Also: Kommentar abgeben, dann gehts hier weiter,
wenns keinen interessiert, dann brauch ich auch
nichts schreiben



mfG
Franz

Keine Kommentare:

Kommentar veröffentlichen