• » Abkürzungen
  • » Kontakt
  • » Datenschutz
  • » Impressum
  • » English French German Italian

SaMoBa Grundkonzept

Die Grundanforderungen

Es war anno 1987, einige Grundsatzentscheidungen mußte ich gleich am Anfang treffen:
  • es sollten keine Lokdecoder verwendet werden, da ich schon sehr viele gute Sammelstücke hatte, als ich anfing zu bauen
  • die Anlage sollte mit einem PC gesteuert werden; der PC-Bildschirm sollte das Stellwerk werden
  • es sollte Mehrzug-Betrieb möglich sein, ich stellte mir vor 4 Züge gleichzeitig sollte genug sein
  • es sollte ein Misch-Betrieb möglich sein, ein Teil der Züge fahren automatisch, der andere kann auch mit Handsteuerung unterwegs sein
  • die komplette Steuerung wollte ich selbst entwickeln und bauen, sowohl die Elektronik als auch die Steuerprogramme
  • Steuerfunktionen und -logik sollten nur in Software gebaut sein, um Betriebskonzepte ohne jegliche Hardwareänderungen später einbauen bzw. verbessern zu können
  • es sollte im Blockbetrieb gefahren werden sowohl im Automatik- als auch im Handbetrieb
  • bei Hp0 sollten die Züge sanft abgebremst bis zum Signal vorfahren, und nicht weit vor den Signalen stehen bleiben
  • jede Lok sollte mit ihren lokspezifischen Parametern fahren, Parameter sollten sein
  1. die maximal Geschwindigkeit
  2. die Kriechgeschwindigkeit
  3. die Anfahr- und Bremsbeschleunigung
  4. bei meinen neuen PWM-Fahrspannungsgeneratoren auch die PWM-Frequenz und die Impulshöhe


Daraus hab ich dann das folgende Grundkonzept abgeleitet:
  • die Loks 
  1. mußten nicht umgebaut werden ... keine Decoder eingebaut werden
  2. die Lokparameter werden im PC-Steuerprogramm abgelegt - der Lokdecoder jeder Lok liegt quasi im PC
  • die Steuerung entspricht einer Z-Schaltung:
  1. Fahrpulte werden den Zügen zugeteilt und "fahren" mit den Zügen durch die Anlage; 
  2. die Steuerung der Z-Schaltung erfolgt mit dem PC Programm
  3. die Z-Schalter selbst sind keine Relais sondern Transistoren, damit wird die Schaltung verschleißfrei
  • die Gleisanlage wird durch Trennschnitte in Gleisabschnitte geteilt:
  1. insgesamt 37 Blockstrecken
  2. und jeder Block nochmals in 3 Abschnitte: Fahren, Bremsen und Halt/Anfahren
  3. in Bahnhöfen werden die Vorfelder in Weichenfelder unterteilt, in denen nicht angehalten wird
  4. die Bahnhofsbereiche werden so entworfen, dass im Hauptbahnhof an beiden Enden gleichzeitig Ein- und Ausfahrten von 2 Zügen möglich sind, wenn diese sich nicht kreuzen oder tangieren
  • jeder Gleisabschnitt hat einen Gleisbesetztmelder (GBM)
  1. ein GBM ist ein kombinierter Widerstands- / Stromfühler
  2. es werden also stehende und fahrende Züge gemeldet
  • in Blöcken, die in 2 Richtungen befahren werden, 
  1. werden die 6 Fahrstrom Zu-/Rückführungen mit 6-poligen Polwende-Relais umgeschaltet; 
  2. die Relais konnte ich zuvor schon preiswert auf einem Elektronikflohmarkt erwerben
  • die Lokfahrspannungen
  1. werden immer vom PC-Steuerprogramm vorgegeben ... damit ist ein sicherer Blockbetrieb für Zugfahrten möglich
  2. mit einem Handregel-Poti kann die vom PC vorgegebene Fahrspannung gedimmt werden, d.h. reduziert werden ... damit kann eine Zuglok manuell angehalten werden, aber nicht an einem Hp0 zeigenden Signal vorbei fahren
  3. in einem speziellen Rangiermodus  wird mit fiktiven Rangiersignalen gefahren, an Hp0-Hauptsignalen kann also vorbeigefahren werden
  • Gleissperrungen
  1. falls ein Bahnhofsgleis nicht befahren werden kann oder soll, kann das Gleis gesperrt und somit von der Automatik ausgeschlossen werden.

Welche PC-Schnittstelle?

Ein wesentlicher Teil der Steuerung ist die PC-Schnittstelle.
 
Ich las damals 1987 viel über mögliche Konzepte.
Es gab zu der Zeit zwei Systeme auf dem Markt, die mich interessierten, weil sie für eine Steuerung von Analog-Loks geeignet waren:
  1. das Sytem MpC von Gahler+Ringstmeier, das es heute in ausgebauter Version auch für Digital-Loks immer noch aktuell am Markt gibt, und
  2. dasSystem CMA (Computer-Modellbahn-Adapter) von Berg+Broman; diese Firma gibt es heute (leider) nicht mehr

Ich entschied mich aus mehreren Gründen für das CMA-System von B+B:
  1. CMA war ein offenes System, das aus Hardware-Karten bestand, die man einfach nachbauen konnte,
  2. für die CMA lieferte B+B den Quellcode eines Muster-Steuerprogramms, bei dem man das Prinzip lernen konnte, wie die Karten gelesen und beschrieben werden konnten; die Ansteuerung war denkbar einfach mit "Memory-Mapped IO"; ich begann damals mit QuickBasic und freute mich riesig mit einem Computer Ausgabe-Signale zu generieren und gelesene Daten am Bildschirm anzeigen zu können,
  3. das MpC von G+R mußte mit Hardware und Steuerprogramm gekauft werden, und war damit nicht für Selbstprogrammierung geeignet. Damit war das MpC für mich ungeeignet. Außerdem war es damals für meinen Hobbyhaushalt zu teuer,
  4. bei CMA waren die Ein-/Ausgabe-Platinen so einfach gebaut, dass ich sie sofort verstand und nachbauen konnte; ich musste mir nur von 2 Platinen je ein Muster kaufen, die ich dazu nutzte meine Selbstbau-Platinen zu testen,
  5. mit der CMA kamen sehr schnell die ersten Erfolgserlebnisse und damit waren die Weichen für mich zu dem System gestellt,
  6. damals noch unter DOS konnte ich sehr schnell ein (noch sehr einfaches) Bildschirm-Stellpult für eine Testanlage selbst programmieren.

Welche Programmier-Umgebung?

Für das Steuerprogramm musste ich noch einige Grundsatzentscheidungen treffen, bevor die Programmierung richtig starten konnte:
  1. Ich stellte sehr schnell fest, dass ich mit QuickBasic meine große Anlage nicht steuern konnte; das Programm wurde sehr schnell unübersichtlich,
  2. Ich entschied mich für Turbo-Pascal, damals eine durchaus moderne Programmiersprache, die für moderne Programmierung geeignet war - Stichwort: Object-Oriented Programming,
  3. Ich merkte sehr schnell, dass noch etwas fehlte: eine Unterstützung um Echtzeit-Anforderungen zu erfüllen. Ein Beispiel: bei einer MoBa Steuerung hat das Steuern der Loks (Lesen der Besetztmelder und Ausgabe der Fahrspannungsbefehle) strengere Zeitvorgaben zu erfüllen als das Interface mit dem Gleisbild auf dem Bildschirm.
  4. Ich kaufte mir (damals noch zu erschwinglichem Hobby-Preis) also ein Realtime-Tasking Kernel und zwar das von der Firma On-Time, das zu meinem Turbo-Pascal System passte. 
  5. Damit hatte ich nun eine komplette Entwicklungsumgebung; den verschiedenen Programmen (die wurden jetzt "Tasks" genannt) konnte ich nun Prioritäten und Wiederholfrequenzen zuordnen und quasi parallel laufen lassen .... das Kernel kann das alles hübsch sauber zeitlich verwalten ....  schau hier mal, da wird's für einen Experten besser erklärt,
  6. Damit war die Zeit des Spagetti-Codes vorbei und ich programmierte nun sauber entlang von Tasks und Objekten, die bei einer MoBa sowas sind wie Weichen, Signale, Loks, Züge, Fahrstraßen, Blöcke, Fahrregler, IO-Karten, Gleisbild mit Gleisen, Buttons und Signalsymbolen  und steuerte die Zeitbedingungen mit Semaphoren (Events), Mailboxen, Delays und Prioritäten.

Leider wurde Turbo-Pascal bei Borland später bekanntlich eine Sackgasse, es gab nur Versionen für DOS und für Windows 98, Borland entwickelte etwas Neues, "Delphi".
Delphi war mit meinem inzwischen so geliebten Realtime-Kernel aber nicht kompatibel. Es hat zwar eine eigene Zeitsteuerung eingebaut und wäre durchaus für so ein Projekt anwendbar, aber ein Schwenk auf Delphi hätte für mich bedeutet "alles neu programmieren". Ich ließ es sein und blieb damit bei Turbo-Pascal hängen, und damit auch bei Windows 98.
Wenn ich heute anfangen würde, würde ich mit Delphi programmieren.

Welche PC-Schnittstelle?

Für schnelle Prozesssteuerungen gibt es eigentlich nichts besseres als den ISA-Bus. Nur leider hat sich die PC-Industrie inzwischen auch davon verabschiedet.
Trotzdem werden heute noch PC-Motherboards für Windows 98SE und moderne Windows mit ISA-Steckplätzen hergestellt. In Industrieanwendungen ist Bedarf, weil es noch viele gut laufende Steuerungen mit ISA-Steckkarten-Interfacen gibt 
Mein neuester MoBa-PC, eine Pentium-4 Maschine, bootet heute im Dual-Boot und ich kann entscheiden, ob es mit Windows 98SE (für MoBa) oder dem neuen Windows 7 (ohne Moba) weiter gehen soll. Der PC hat ein Motherboard mit 3 ISA Steckplätzen, in einem steckt die ISA-Karte für die SaMoBA-Steuerung.