MAN-Triebwagen

Drucktastenstellpult mit Mikrocontroller-Steuerung Teil 2

Programm und Projektierung
Die Software der Stellpultsteuerung setzt sich aus zwei Teilen zusammen: Das ablaufende Programm und die Projektierungsdaten. Es wurde großen Wert darauf gelegt, das Programm soweit wie möglich unabhängig von dem jeweiligen Stellpult bzw. dem zu steuernden Bahnhof zu halten. Dies hat den Vorteil, dass nur ein Programm existiert, dass gepflegt werden muss. Für das jeweilige Stellpult müssen nur die Daten entsprechend angepasst werden. Voraussetzung dazu ist natürlich, dass das Programm gründlich getestet ist. Als weiteres muss das Programm alle Funktionen anbieten, die benötigt werden. Es ist natürlich kaum möglich, alle speziellen Konfigurationen und Sonderwünsche vorauszuahmen, so dass es immer zu Erweiterungen kommen kann.
Bei Mikrokontrollern besteht immer das Problem des begrenzten Speichers, mit dem eine Anwendung auskommen muss. Bei dem gewählten Typ des C-Control I M-Unit 2.0 stehen 10k Speicher für Programmcode und nur 140 Byte Variablenspeicher zur Verfügung. Ein erster Ansatz war, die Daten in Variablen abzuspeichern, jedoch wurde damit sofort die 140 Byte-Grenze überschritten, was nicht nachvollziehbare Reaktionen des Programms zur Folge hatte.
Im zweiten und erfolgreichen Anlauf wurden Konstanten gewählt, in die Daten geschrieben werden. Um das Programm gegen versehentliche Änderungen zu schützen, wurden die Projektierungsdaten, das Programm und Variablendefinitionen auf drei verschiedene Dateien aufgeteilt. Die Projektierungsdatei bindet den Programmcode und die Variablendefinitionen ein, die letztgenannten Dateien haben einen Schreibschutz.

Grenzen
Es gibt eine Reihe von Begrenzung, die bei diesem Entwurf zu beachten sind: Der verwendete Baustein PCF8574 stellt jeweils 8 Digitaleingänge bzw. -ausgänge zur Verfügung. Dieser Baustein wird über den I²C mit einer bestimmten , voreingestellten Adresse angesprochen, insgesamt können 8 verschiedene Adressen gewählt werden. Mit dem Baustein PCF8574A sind weitere 8 Adressen möglich. Im Programm werden 8 Adressen für 64 Eingänge und 8 Adressen für 64 Ausgänge reserviert. In den Projektierungsdaten muss hinterlegt werden, wieviele Bausteine für Eingänge und wieviele für Ausgänge angeschlossen sind. Werden die Werte von einer Adresse abgefragt, zu der aber kein PCF8574 an den Bus angeschlossen ist, so wird der Wert 255 (alle Bits bzw. Eingänge gesetzt) gelesen, was zu Fehlern führen kann. Zudem wird Zeit gespart, wenn nur die vorhandenen Eingänge abgefragt werden. Jeder Zugriff auf einen Baustein dauert ca. 200ms. Dies ist insbesondere für die Eingänge wichtig, da diese zyklisch und so schnell wie möglich abgefragt werden müssen, damit der Bediener keine Zeitverzögerung in der Reaktion auf einen Tastendruck bemerkt.
In den Projektierungsdaten muss hinterlegt werden, was an den Ein- und Ausgängen angeschlossen ist: Eingänge für Weichen-, Gleis- und Signaltasten, Gleisbelegtmelder sowie Ausgänge zur Ansteuerung von Weichen, Hauptsignale, Vorsignale, Bahnübergänge, Halt- und Fahrtmelder. Es gibt folgende Begrenzungen:

Weichen
16
Fahrtmelder 16
Hauptsignale 16
Haltmelder
16
Vorsignale 4
Externe Bedingungen 4
Bahnübergänge 4



Einfaches Fahrstraßenkonzept / Schrittsteuerung
Fahrwege für Züge werden durch eine Zweitasten-Bedienung eingestellt: Die erste Taste wird am Startsignal gedrückt, als zweite Taste muss ein Zielgleis gewählt werden. Die Tasten können aber auch doppelt belegt sein, also gleichzeitig als Start- und Zieltaste dienen. In den Projektierungsdaten wird in einer Tabelle abgelegt, welche Starttaste zusammen mit welcher Zieltaste eine gültige Kombination ergibt: Steht an der Stelle eine Zahl > 0, ist eine Fahrstrassennummer gefunden worden. Bei dem Wert 0 ergeben die gedrückten Start- und Zieltasten keine gültige Kombination. Die Anzahl von Fahrstrassen ist beschränkt auf 255, was für die Modelleisenbahn völlig ausreicht.
Eine bisher nicht genutzte Funktion ist die der "externen Bedingung": Es kann pro Fahrstraße einer von vier möglichen Eingängen abgefragt werden, ob dieser "gesetzt", also = 1 ist. Ist dies nicht der Fall, so wird das Einstellen der Fahrstrasse abgebrochen. 

Mit der Fahrstraßennummer wird über je eine weitere Tabelle bestimmt, welche Weichen umgestellt und welche Bahnübergänge zu schließen sind. Weichen und Bahnübergänge können aber auch einzeln durch Drücken der Weichentaste oder der Bahnübergangstaste umgestellt bzw. geöffnet oder geschlossen werden. Dies ist auch bei eingestellter Fahrstraße möglich, da eine Verschluss der Fahrwegelemente (bisher) nicht vorgesehen ist.

Nach einer einstellbaren Wartezeit wird das Startsignal in Fahrt gestellt, zusätzlich können Fahrtmelder für das Stellpult angeschaltet werden. Ein Bahnhof wird in Bahnhofsköpfe aufgeteilt, pro Bahnhofskopf kann je eine Fahrstrasse eingestellt werden. Dadurch werden bei eingleisigen Strecken bereits die meisten feindlichen Fahrstraßen ausgeschlossen. Maximal sind 4 Bahnhofsköpfe möglich.
Zweigleisige Strecken können damit nicht betrieben werden: Jeder Übergang zu einem Streckengleis ist als ein Bahnhofkopf zu betrachten, womit aber kein Ausschluß feindlicher Flankenfahrten gegeben ist. Werden beide Gleise zu einem Bahnhofskopf zusammengefasst, sind keine gleichzeitigen Ein- und Ausfahrten möglich. Um dies zu ermöglichen, müssten projektierbare Ausschlüsse von Fahrstraßen realisert werden. 
Weiterhin kann pro Bahnhofskopf ein Ausfahrvorsignal am Mast des Einfahrsignales projektiert werden: Solch ein Vorsignal kündigt den Signalbegriff des Ausfahrsignales an, aber nur wenn die Einfahrstrasse auf das ein fahrtzeigendes Ausfahrsignal führt, also wenn eine Durchfahrt eingestellt ist. Ein Lichtvorsignal an einem haltzeigenden Hauptsignal muss dunkelgeschaltet werden; diese Funktion wird aber von den Ansteuerplatinen des Vorsignal und des Hauptsignals vorgenommen.

Das Haltstellen eines Hauptsignals wird durch einen Gleisbelegtmelder ausgelöst. Pro Bahnhofskopf ist ein Gleisbelegtmelder vorzusehen, wobei entweder die äußerste Weiche des Bahnhofskopfs oder der gesamte zugehörige Weichenbereich überwacht wird. Über eine Liste wird festgelegt, welchem Bahnhofskopf dieser Gleisbelegtmelder zugeordnet ist. Wird bei eingestellter Fahrstrasse der Gleisabschnitt belegt, so wird das Hauptsignal in Halt gestellt und die Fahrstraßennummer wird gelöscht bzw. auf 0 zurückgesetzt. Es kann eine Zeitkonstante einstellt werden, so dass das Signal erst nach einer Verzögerungszeit in Halt gestellt wird. Somit kann verhindert werden, dass bei ungünstiger Lage von Gleisbelegtmelder und Hauptsignal das Hauptsignal vor einem langsam fahrenden Zug in Halt fällt.
Die Hauptsignale können auch von Hand wieder in Halt gestellt werden: Dazu muss eine Haltgruppentaste (HaGT) und die Signaltaste gedrückt werden. Eine eingestellte Haltfallverzögerungszeit wirkt in diesem Fall nicht.
Unmittelbar darauf kann bereits wieder eine Fahrstraße eingestellt werden; es wird nicht überwacht, ob der Zug vollständig in das Bahnhofsgleis eingefahren ist, aus dem Bahnhof ausgefahren ist bzw. den Weichenbereich geräumt hat.