Als "Proxy" zwischen CAN und Ethernet dient eine selbstgeschriebene Software.
Der Quellcode steht auch auf der Download Seite zur Verfügung. Die
Software setzt socketCAN als Schnittstelle zum CAN Interface voraus. Es ist
aber auch eine Version für CAN4Linux und für die CC-Schnitte
vorbereitet. An Linux/Unix bzw. Posix spezifischen Funktionen wird nicht viel
benötigt. An zentraler Stelle werden die Sockets per select()
abgefragt. Die Verwaltung der z-lib gepackten Dateien fragt das Dateisystem
mittels stat()
ab. Wer die Software übersetzen möchte,
benötigt noch boolean.h, bytestream, finite state machine, Data Storage
aus dem Kurs über Algorithmen und bitmask.h für die Definition von
Bitmasken, den scanner für syntaktische Analyse und den ini parser.
Sämtliche dieser Libs finden sich im Quellcode in der Lib-Sektion der
Download Seiten. Zusätzlich wird als externes Paket die zlib
benötigt.
Um den client_gpios88
zur Abfrage des S88 Bus per GPIO auf dem BPi
zu übersetzen, muß das Projekt von Gerhard Bertelsmann parallel zu
dem mrsystem
liegen. Das Makefile greift direkt auf die
Originalsourcen zu. Dazu kann einfach eine Arbeitskopie des Repositorys
parallel zu mrsystem
angelegt werden. Dies ergibt dann die
folgende Verzeichnisstruktur:
|-- mrsystem | |-- client_cc | |-- client_cs2eth | |-- client_cs2sl | |-- client_gpios88 | ... | `-- www |-- railroad | |-- can2udp | | |-- config | | |-- files | | |-- msd | | |-- pictures | | `-- src | ...
Das System legt den Schwerpunkt auf Flexibilität. Dafür wurde der Overhead von Netzwerk Kommunikation und Konvertierung der Nachrichten in ein Zwischenformat in Kauf genommen. Dabei bleiben die einzelnen Programme recht klein und können auch getrennt entwickelt werden. Um das System um ein neues Protokoll zu erweitern, genügt es, einen entsprechenden Client zu entwickeln und zu starten.
Das System besteht aus einzelnen Daemonen, die per sockets miteinander kommunizieren. Die Kommunikation erfolgt sternförmig. Der Daemon drehscheibe ist dafür zuständig, die Nachrichten eines Clients an sämtliche anderen Clients weiterzuleiten. Wie bei dem CAN Bus des Märklin Digital Systems ist dabei jeder Client immer über alles informiert und kann entsprechend reagieren.
Skizze Netzwerkverbindungen Clients - Drehscheibe
Die Clients erfüllen unterschiedliche Aufgaben. Zum einen gibt es für jedes unterstützte Protokoll einen Client, der zwischen diesem Protokoll und dem interenen Protokoll vermittelt. Daneben können Clients die Aufgabe einer Zentrale erfüllen und z.B. eine Lokliste verwalten oder auch ein Steuerpult zur Verfügung stellen.