Ein bisschen Ingenieurspornografie

es gibt Neuigkeiten und die möchte ich natürlich niemandem vorenthalten. Aber zuvor möchte ich noch ein paar grundsätzliche technische Details zum CAN Bus loswerden und genauer erläutern, warum er für unsere Anwendung so hervorragend geeignet ist.
Der folgende Beitrag ist also nicht besonders spannend und bestimmt auch nicht vollständig, daher kann man ihn auch getrost überspringen.

Der CAN Bus ist als Multi-Master-Bus ausgelegt. Das bedeutet, dass nur gleichberechtigte Teilnehmer an der Kommunikation beteiligt sind. Es gibt keinen Busmaster, der die Regeln für den Datenverkehrt vorgibt. Damit nicht alle am Kabel wild durcheinander schreien, wird von jedem Busteilnehmer eine gewisse Disziplin erwartet.
Als weitere Besonderheit wird eine Nachricht in den Bus nicht etwa direkt Adressiert, sondern erstmal provokant in den Raum gestellt. Im Unterschied zu IP-Basierten Netzwerken, in denen immer eine Senderadresse und eine Empfängeradresse angegeben wird, um sicherzustellen, dass die gesendeten Datenpakete auch tatsächlich nur einen Empfänger etwas angehen, wird im CAN Protokoll nicht so großen Wert darauf gelegt, dass andere Teilnehmer ausgeschlossen werden. Alle können zuhören und alle Daten mitlesen. Außerdem wird nicht mit einer Senderadresse oder Identifikationsnummer gearbeitet, sondern die Datenpakete werden qualitativ beschrieben.
Um die ganze Angelegenheit zu vereinfachen, betrachten wir einfach kurz das Beispiel eines modernen Autos. Zig kleine Sensoren und Aktoren werden gesteuert und alle bringen irgendwie ein Mindestmaß an eingebauter Intelligenz mit (irgendwo muss ja der Preis für so ein Fahrzeug gerechtfertigt sein).
Alle Geräte (stimmt nicht ganz) hängen nun an einem gemeinsamen Netzwerk (stimmt so auch nicht). Nun entscheidet sich der Fahrer während der Fahrt das Bremspedal zu betätigen. Nehmen wir mal an, er rollt an eine rote Ampel heran.
Das Bremspedal wird nun einen Öldruck auf die Bremsleitung geben und die Bremse fängt an zu wirken. Im Stillen wird allerdings am Pedal selbst noch ein Poti oder Schalter betätigt, der einem Steuergerät sagt, dass eben eine Bremsung eingeleitet wurde.
Hätte der Hersteller des Autos ein IP-basiertes Netzwerk verbaut, würde jetzt eine physikalische Netzwerkadresse (MAC-Adresse) eine IP-Adresse zugewiesen bekommen (zum Beispiel irgendwas mit 192.168.bla.bla). Hinter dieser xxx.xxx.bla.bla verbirgt sich jetzt das Steuergerät des Bremspedals. Im Steuergerät müsste eine Liste hinterlegt sein, welche anderen Geräte im Netzwerk sich dafür interessieren könnten, dass gerade jemand gebremst hat. Nacheinander wird nun die Nachricht:
„Hallo 192.168.bla.blub;JEMAND_TRITT_MICH;Liebe Grüße 192.168.bla.bla;“
an die Geräte blub, blödsinn und bob gesendet.
Man erkennt gleich die Schwäche. Die Teilnehmer müssten schonmal anders heißen und die Belastung im Netz ist relativ hoch, weil viele Geräte genau die gleiche Botschaft erhalten.
Infrastrukturell müsste ein intelligentes Netzwerkgerät in der Mitte des Verkehrs sitzen und alle Nachrichten auf die richtigen Leitungen im Netz schicken. Die Teilnehmer, die die Nachricht empfangen haben, antworten jetzt vielleicht mit einem:
„Hi 192.168.bla.bla;“TUT_MIR_LEID“;Hochachtungsvoll 192.168.bla.blub“
Und die Netzlast vergrößert sich nochmals.
Der Hersteller des zuvor beschriebenen Autos war aber schlau und hat sich für ein anderes System entschieden. Die Kommunikation über den CAN-Bus
Wieder betrachten wir den Vorgang, dass der Fahrer an die Ampel heranrollt und die Bremse drückt. Das Steuergerät des Bremspedals schickt jetzt eine Nachricht an den Bus:
„Bremsen;20 %“
Man beachte den Unterschied. Das Bremspedal sagt nicht, dass es das Bremspedal ist, sondern nur, dass es berechtigt ist, eine Aussage zum Pedalweg zu machen. Zusätzlich könnte es vielleicht noch sagen, dass Der Fahrer Turnschuhe anhat oder dass er irgendwo reingetreten ist.
Die Nachricht wird nun in den Bus gerufen. Das Steuergerät für die Rückleuten schreibt mit und reagiert auf die Botschaft insofern, dass die Bremsleuchten eingeschaltet werden. Ein ABS Steuergerät macht sich bereit für ein mögliches Blockieren der Räder, weil es gerade gehört hat, dass jemand langsamer werden möchte. Ein Sensor am Bremsklotz hört die Botschaft ebenfalls und überprüft, ob sein anliegender Bremsdruck tatsächlich mit dem genannten Pedalweg übereinstimmt.
Die Botschaft wird auch vom Radio mit großem Interesse aufgenommen, da es generell als das neugierigste Bauteil im Auto gilt. Nach kurzem Überlegen entscheidet es sich aber dafür, die Nachricht zu ignorieren.
Der Inhalt der Nachricht wird also in der Identifizierung beschrieben. Diese kann je nach Busversion 11 oder 29 Bit lang sein. Darauf folgen die Nutzdaten, die bis zu 8 byte lang sein dürfen.
Um die Übertragungssicherheit zu gewährleisten wird die Nachricht mit einer Checksumme versehen, die jedes Gerät überprüfen lässt, ob das was gerade erzählt wurde valide ist. Außerdem gibt es verschiedene Mechanismen, die wiederholtes Stören des Busverkehrs unterbinden und einzelne Nachrichten quittieren.
Um eine Kommunikation der Teilnehmer zu ermöglichen muss also erstmal eine einheitliche Sprache gesprochen werden. Außerdem müssen alle im gleichen Tempo sprechen. Da wird keine Taktleitung haben (wie beispielsweise bei seriellen Computerschnittstellen nach RS232), muss man sich vorher einigen, mit welche Geschwindigkeit der Bus betrieben wird. Der Highspeed CAN kann bis zu 1 Mbit/s fahren, allerdings geht das zu Lasten der möglichen Leitungslänge. Das ist natürlich nach heutigen Maßstäben eine lächerliche Geschwindigkeit, wenn man bedenkt, dass Netzwerke zwischen 100 mbit und 10 gbit/s der Stand der Technik sind. (Es sei denn, man ist bei Unitymedia).
der Lowspeed CAN wird meistens bei 125 kbit/s laufen gelassen. Das ermöglicht eine Leitungslänge von bis zu 500 m. 125 kbit/s klingen jetzt erstmal nicht so schnell, aber man bedenke, dass wenn die SMS vom Mobilfunkanbieter kommt, dass man schon sein ganzes LTE-Volumen aufgebracht hat, surft man bei den meisten Providern nur noch bei 64kbit und das reicht ja für WhatsApp auch noch.

Und da hat der Frosch auch schon die Locken. Der CAN-Bus kann fantastische Leitungslängen überbrücken und ist sehr übertragungssicher. Die Hardware ist spottbillig (Bustreiber und Transciever kosten zusammen unter 2 Euro) und der Verkabelungsaufwand ist durchaus überschaubar.
Um die Fantasie anzuregen möchte ich kurz ein paar Denkanstöße in den Raum werfen.
-RF-Identifikation (hatten wir ja schon mal angesprochen)
-Rückmeldung von allem was nicht bei ‚drei‘ auf’m Baum ist (Weichen, Gleis, Endlage, Achsenzahl)
-Ausgabe der Rückmeldung auf Schaltausgängen (optische Rückmeldung mit LEDs oder so)
-Macroauslösung per externem Schalter (Nothaltbuzzer, Besucheraktionen wie im Miwula, Gleisbildstellwerk)
-optische Geschwindigkeitsmessung(mit CCD Chips wie in optischen Mäusen oder so)
-usw.

Man merkt es vielleicht, ich bin schon ganz aus dem Häuschen.

One thought on “Ein bisschen Ingenieurspornografie

  1. Watten Glück, daß der CAN-Bus nicht im Menschen zu finden ist.
    Ansonsten würde „Milz an Auge, Milz an Auge: Ich sehe was, was Du nicht siehst““ ja nicht funktionieren. 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert