Der Quellcode

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.

Externe Links


Zurück zur Modellbahn Startseite - Zurück zur Homepage