ATC "Automatic Train Control" die Modellbahnsteuerung - Bedienoberfläche Softwaremodule zum betreiben der ATC Steuerung Die drei Basisplatinen: 1. Interface, 2. Fahrregler, 3. Weichen- oder Signalplatine in großer oder kleiner Bauform Viele Erweiterungen sind möglich. Hier zum Beispiel ein Bahnübergang, umgebaut zum Funktionsmodell mit ATC Erweiterungsmodul

Es wird der Schnelleinstieg am Beispiel einer kleinen Anlage erläutert.

Das Beispielmodell besteht aus einem Gleis mit drei Abschnitten und einem Ausweichgleis, bestehend aus einem Gleisabschnitt. An Hardware wird eine Interface-Karte, eine Fahrregler-Karte und eine Weichen-Signal-Karte benötigt. Das Ganze läßt sich fliegend auf dem Tisch oder einem Brett aufbauen.

Bevor man mit ATC-Main die Anlage steuern kann, muß ein Modell generiert werden. Das Modell enthält Informationen über die verwendeten Leiterkarten, Adressen und Anschlüsse. Außerdem werden Angaben zum Gleisnetz benötigt. Diverse Bedienelemente ergänzen das Szenario. Die Module sind wie in den Schaltbildern dargestellt an zu klemmen.

Mit dem Programm ATC-Config prüfen wir die Funktionsfähigkeit der Module. Die ermittelten Karten können konfiguriert und im Modell gespeichert werden.

Mit dem Programm ATC-Layout erstellen wir uns ein Gleislayout einschließlich der Bedienelemente zum Schalten von Weichen und Beleuchtung sowie zur Einstellung der Fahrspannung mit Gleisbesetztmeldern und Lichtschranken.

Kartenkonfiguration mit ATC-Config

Starten Sie das Programm ATC-Config ohne USB-Verbindung zur Interfacekarte. Im Eingabebereich Interface, COM öffnen Sie die Klappbox. Dort werden serielle Schnittstellen dargestellt, die nicht zu unserer USB-Verbindung gehören. Schließen Sie das Programm. Stellen Sie die USB-Verbindung zur Interfacekarte her. Wenn Windows den USB-Wandler erkannt hat starten Sie ATC-Config erneut.

       

Die neu hinzugekommene Schnittstelle, hier COM4, ist unsere Verbindung zur Interfacekarte.

Wahlen Sie die neue Schnittstelle aus und stellen Sie eine Verbindung her (Haken in Connect). Jetzt lassen wir die Module suchen (Knopf Fernglas). Die Modulübersicht zu IFC(0) wird gefüllt.

Speichern Sie das Modell unter Modell1\Model1.ini und schließen Sie das Programm.

 

Prüfung sämtlicher Anschlüsse mit ATC-Config

Starten sie ATC-Config neu. Standardmäßig wird Modell1 geladen.

Öffnen sie mittels Doppelklick auf den Karteneintrag jedes Eigenschaftsfenster und schalten Sie diese inaktiv. Anschließend stellen Sie die serielle Verbindung zur Interfacekarte her (Connect COM4).

 

Prüfung der internen Anschlüsse der Interface-Karte (IFCPorts)

Schalten Sie die Karte aktiv. Mit der Schaltleiste, die 8 Ports repräsentiert, können Sie die Ausgänge EIN und AUS schalten. Im realen Modell sehen Sie, welche Lampe an welchen Port geklemmt wurde.

 

Prüfung der Weichen- und Signalkarte

Schalten Sie die Karte aktiv. Mit der Schaltleiste "Impuls", die 16 Ports repräsentiert, können Sie die angeschlossenen Weichenantriebe testen.  Die Schaltleiste "Direkt" sollte bei Magnetartikeln nicht benutzt werden, da bei defekter Endabschaltung einer Weiche deren Antrieb durchbrennen kann.

                

 

Prüfung der Fahrreglerkarte

Schalten Sie die Karte aktiv. Polling muß eingeschaltet sein, um die Rückmeldungen zu sehen.

           

Stellen Sie zum Test des Gleisbesetztmelders eine Lokomotive  auf einen Gleisabschnitt. Am Beispiel steht auf Fahrregler 1 und 2 ein Verbraucher (rote LED). Testen Sie die Wirkungsweise des Fahrreglers und welcher Gleisabschnitt wirklich beaufschlagt wird.

Bei den Sensoren1..8 (Eingänge Lichtschranken) bedeutet die grüne LED, daß der Eingang auf Masse Low geschaltet ist, gelb bedeutet High. Eine beleuchtete Lichtschranke wird somit grün dargestellt, eine unterbrochene gelb. Nicht beschaltete Eingänge liegen auf High, also gelb.

Die Lichtschranken müssen mit den Reglern und dem Gleisabschnitt korrespondieren, da sie die Fahrspannung abschalten sollen (Sofortreaktion). Falls sie anders geklemmt haben, kann die Zuordnung zum Regler auf dem Reiter Einstellung geändert werden.

Es kann ein kleiner Fahrbetrieb durchgeführt werden, um die Sofortrektion der Lichtschranken zu testen.  

AUS - keine Reaktion

BSTOP - Halt, wenn unterbrochen (Belegt Stop)

FSTOP - Halt, wenn nicht belegt (Frei Stop). Wird am Entkupplungsgleis gebraucht.

Wenn Gruppe EIN ist, werden alle Regler gemeinsam bewegt.

 

Gleislayout mit ATC-Layout herstellen

Starten Sie das Programm ATC-Layout. Stellen Sie die Rastergröße auf 48 und den Hintergrund auf 24x4 Rastereinheiten ein. Stellen Sie den Modus "Gleisbild" ein.

Zeichnen Sie das Gleisbild unter Benutzung der Werkzeug-Buttons entsprechend der Vorlage.

Schalten Sie jetzt von der Ebene "Gleisbild" in die Ebene "Steuerung" um. Es erscheint eine andere Werkzeugleiste. Zur Übung platzieren Sie einen freien Text mit  . Wenn Sie den nun platzierten Text ("Freier Text") nochmal anklicken, bekommt dieser einen Markierungsrahmen und kann bei gedrückter Maustaste in beliebige Richtung verschoben werden. Mit Klick der rechten Maustaste öffnet sich ein Eigenschaftsfenster, wo Sie den Inhalt des Textes ändern können. Alle Objekte der Ebene "Steuerelement" können so bearbeitet werden.

Erstellen Sie die Steuerelemente-Ebene weiter nach dieser Vorlage und speichern sie diese.

Bedeutung der Werkzeuge

     Öffnet das Eigenschaftsfenster

     Bezeichnet einen Gleisabschnitt mit Status und Rückmeldung

     Platziert einen Fahrregler

     Platziert eine Lichtschranke mit Rückmeldung

     Platziert einen Taster für Weichenantrieb (Triggern)

     Platziert einen Taster für Antrieb Entkupplungsgleis (Triggern)

     Platziert einen EIN/AUS-Taster für Beleuchtung o.ä. (Kippen)

     Platziert einen freien Text  (keine funktionelle Bedeutung)

     Löscht das Steuerelement

Mit Hilfe der Eigenschaftsfenster stellen wir die Verbindung zur Hardware her.

 

Definition der Gleisabschnitte

Auf die Symbole für die Gleisabschnitte werden die Gleisbesetztmelder der Fahrreglerkarte geschaltet. Außerdem stellt darauf der Dispatcher von ATCMain die Gleisreservierung dar.

Der Bezeichner sollte kurz und aussagekräftig gewählt werden: GA11, GA12, GA13, GA22.

Die Gleisabschnittsnummer sollte dem auch folgen.: 11,12,13,22.

Die Zuordnung zum Fahrregler erfolgt über dessen Adresse und Nummer.

    

 

Zuordnung der Fahrregler

Wie bei den Gleisabschnitten erfolgt die Zuordnung per Moduladresse und Nummer. Die Bezeichnung ist nur Kosmetik. Im Zweifelsfall kann mit ATCConfig die richtige Adresse und Nummer ermittelt werden.  Wenn Sie anders geklemmt haben, muß hier nur anders zugeordnet werden.

    

 

Zuordnung der Lichtschranken

Die Fahrreglerkarte FRK01 verfügt über 4 Fahrregler und 8 Lichtschranken. Standardmäßig sind immer 2 Lichtschranken einem Fahrregler zugeordnet, d.h.  Eingang 1 und 2 zum 1. Regler, Eingang 3 und 4 dem 2. Regler usw. Wenn Sie die Eingänge anders geklemmt haben, müssen Sie mit ATCConfig die Zuordnung LS-Regler entsprechend einstellen und dauerhaft im EEPROM speichern.

Wir gehen jetzt vom Standard aus.

    

 

Zuordnung der Schaltausgänge der Karten IFK und WSK

Es gelten die gleichen Regeln, wie bereits beschrieben. Also Weichenantrieb wie geklemmt auf Karte Adr=$35,  Portindex=0..15 oder z.B. Hausbeleuchtung auf Interface-Karte Adr=$01, Portindex=0..7.

Speichern nicht vergessen!

 

Überprüfung der Einstellungen in ATC-Layout

Laden sie in ATCLayout das gerade gespeicherte Modell erneut und überprüfen Sie mittels der Eigenschaftsfenster sämtliche Einstellungen.

Tipp: Ein geänderter Wert im Eigenschaftsfenster wird erst übernommen, wenn Sie das Feld innerhalb des Fensters verlassen haben.

 

Überprüfung der Einstellungen in ATC-Main

Starten Sie das Programm ATCMain und laden sie das Modell. Aktivieren Sie die Verbindung zum Interface indem Sie auf das Feld "Getrennt' in der Statusleiste klicken oder benutzen Sie das Haupt-menü "Einstellungen\Interface Active".  Wenn die Verbindung hergestellt wurde, steht in der Statuszeile "Verbunden".  Sollten jetzt im Hinweisfenster jede Menge Fehlermeldungen rollen, liegt ein Fehler beim Zugriff auf irgendeine Karte vor. In diesem Fall trennen, Einstellungen und Hardware kontrollieren.

Als Erstes prüfen wir die Funktion der Weichen. Lassen Sie eine Sekunde vergehen, ehe Sie diese in Gegenrichtung schalten.

Als Nächstes stellen wir auf den Gleisabschnitt 12 eine Lok. Das bisher gelbe Label wird dann rot dargestellt.  Der Gleisbesetztmelder hat das Fahrzeug erkannt. Jetzt schalten wir den Fahrregler zu. Ist nur ein Brummen zu hören, erhöhen wir den Reglerwert, bis die Lok langsam fährt. Wenn die Lok innerhalb  einer Lichtschranke zu stehen kommt, wird die zugehörige Combobox gelb dargestellt.  Ein Zeichen dafür, daß die Lichtschranke funktioniert.   Alle Fahrregler, Lichtschranken, Gleisbesetzt-melder sind zu prüfen,  ehe wir mit dem Fahrbetrieb beginnen können.

 

Kleiner Fahrbetrieb mit ATC-Main

Da wir erst mal nur mit einer Lok fahren sollten alle Fahrregler so eingestellt werden, wie die Lok mit mäßiger Geschwindigkeit fährt.

Wenn wir von GA12 zum Ende von GA13 fahren wollen, müssen die Weichen richtig gestellt sein.  Damit die Lok nicht über das Ziel hinaus fährt stellen wir die äußerste rechte Lichtschranke auf "BSTOP". Damit wird der Fahrregler von GA13 veranlaßt bei Unterbrechung des Lichtstrahls seine Fahrspannung abzuschalten.  Dann schalten wir beginnend vom Ziel zum Start je Regler die Fahrtrichtung nach rechts ein. Das Fahrzeug wird sich nun zum Ende von GA13 bewegen und dort anhalten.

Wollen wir anschließend  in die andere Richtung zum Ende von GA11 fahren, muß die rechte Lichschranke auf "AUS" in die Linke auf "BSTOP"  geschaltet werden.  Anschließend bedienen wir wieder die Knöpfe der Fahrtrichtung in Reihenfolge vom Ziel zum Start.

Die Bedienreihenfolge vom Ziel zum Start sollte man sich grundsätzlich angewöhnen, da dabei garantiert wird, daß sämtliche Stellelemente bereits gesetzt sind, bevor das Fahrzeug diese passiert.

Üben Sie noch etwas indem Sie auch das Gleis GA22 benutzen. Probieren Sie mal die "FSTOP" Funktion aus. Hier wird die Fahrspannung  abgeschaltet, wenn das Fahrzeug die Lichtschranke verläßt.

 

Zyklischer Fahrbetrieb mittels Fahrplan

Auf einer üblichen Kreisbahn ergibt sich die Wiederholung der Fahrstrecke von selbst., jedoch muß im Pendelzugbetrieb der Bediener für die Wiederholung der Fahrstrecke sorgen. Das überlassen wir jetzt dem Programm, indem wir einen Fahrplan erstellen.

Fahren Sie die Lok an das linke Ende von GA11. Öffnen Sie einen neuen Fahrplan über das Menü "Fahrplan\Neuer Fahrplan". Der Fahrplan ist noch leer. Schieben Sie den Fahrplandialog so auf den Bildschirm, daß Sie den Fahrbetrieb möglichst ungehindert durchführen können. Stellen Sie auch die Fahrspannungen so ein, daß Sie während der Aufnahme diese nicht ändern müssen.

Die Bedienknöpfe am oberen Rand haben folgende Bedeutung:

 - Fahrplan laden

 - Fahrplan speichern

 - Aufzeichnung starten (Code einfügen ab ausgewählter Zeile)

 - Ablauf Stoppen ( incl. Löschen von Rücksprungadressen)

 - Ablauf Starten (ab ausgewählter Zeile)

 - Pause, Ablauf anhalten (Rücksprungadressen bleiben erhalten)

 - Einen Schritt (eine Zeile ausführen)

-  Zustand des Zeitzählers beim Warten

In der  1. Spalte der Tabelle wird die aktuelle Zeile angezeigt, in der 2. die Zeilennummer.

Die Spalten Marke, Anweisung, Bemerkung  enthalten die Anweisungen, die zeilenweise abgearbeitet werden. Rechts neben der Tabelle stehen bereits vordefinierte Variablen.

Wir werden jetzt unsere Tastenaschläge aufzeichnen lassen, um sie dann erneut ablaufen zu lassen.

Starten Sie die Aufzeichnung.

Fahren Sie jetzt die Lok von GA11 nach GA13 indem sie erst allen Lichtschranken die Reaktionen mitgeteilt haben, anschließend die Weichen und zuletzt die Fahrtrichtungen, alles in Reihenfolge vom Ziel zum Start.

Dabei werden Anweisungen generiert, die in die Tabelle des Fahrplanes eingetragen werden:

                !SENSORSTOP(0,$21,4,BSTOP)  //hier soll die Lok anhalten        

                !SENSORSTOP(0,$21,3,AUS)

                !SENSORSTOP(0,$21,2,AUS)

                !SENSORSTOP(0,$21,1,AUS)      //hier soll die Lok losfahren

                !TRIGGERN(0,$30,5)                 //Weiche stellen

                !TRIGGERN(0,$30,6)

                !FAHRSTUFE(0,$21,3,14)           //Fahrregler 3, Fahrstufe 14

                !FAHRSTUFE(0,$21,2,14)

                !FAHRSTUFE(0,$21,1,14)

Mit "STOP" beenden Sie die Aufzeichnung.

Fahren Sie die Lok von Hand wieder zurück auf das linke Ende von GA11. Spielen Sie nun die Aufzeichnung ab, indem Sie den Cursor in der Tabelle auf den 1.Befehl setzen und den Startknopf betätigen. Wenn das Fahrzeug am Ende von GA13 angekommen ist, beenden wir mit "STOP" den Ablauf, weil wir noch die Gegenrichtung aufnehmen wollen.

Da das Programm schneller abläuft, als die Lok fährt, können wir die nächsten Tastenanschläge für die Rückfahrt nicht einfach dran hängen. Es würde sonst die Rückfahrt eingeleitet werden, während die Lok noch unterwegs ist.

Die Lok muß jetzt ganz rechts stehen. Stellen Sie den Programmzeiger auf die Zeile hinter dem letzten Befehl. Starten Sie die Aufnahme.

Mit einem Doppelklick auf die rechte Lichtschranke wird jetzt Code für eine Warteschleife an dieser Lichtschranke erzeugt. Fahren Sie die Lok zum linken Gleisende von GA11. Wenn das Fahrzeug dort angekommen ist, erzeugen Sie durch Doppelklick an dieser Lichtschranke eine weitere Warteschleife.

Beenden Sie die Aufzeichnung.  Durch die Aufzeichnung des Hin-und Rückweges ist die Lok wieder an ihrem Ausgangspunkt angekommen. Um diesen Fahrweg beliebig oft zu wiederholen müssen wir im Programm noch eine Sprungmarke und einen Sprungbefehl eintragen.

                                                                                                     //Meine erste eckige Runde             

:START                     !SENSORSTOP(0,$21,4,BSTOP)                         //Von GA11 nach GA13

                                   !SENSORSTOP(0,$21,3,AUS)

                                   ......

:M_2345209          LET LS = ?SENSOR(0,$21,4)                                  //An Lichtschranke warten

                                   IF LS = 0 THEN

                                   GOTO M_2345209

                                   WAIT(5)                                                     //5 Sekunden warten           

                                   !SENSORSTOP(0,$21,1,BSTOP)                     //Von GA13 nach GA11

                                   !SENSORSTOP(0,$21,2,AUS)

                                   !SENSORSTOP(0,$21,3,AUS)

                                   !SENSORSTOP(0,$21,4,AUS)

                                   !TRIGGERN(0,$30,6)

                                   !TRIGGERN(0,$30,5)

                                   !FAHRSTUFE(0,$21,1,-14)

                                   !FAHRSTUFE(0,$21,2,-14)

                                   !FAHRSTUFE(0,$21,3,-14)

:M_2346369          LET LS = ?SENSOR(0,$21,1)                                //An Lichtschranke warten

                                   IF LS = 0 THEN

                                   GOTO M_2346369

                                   RANDWAIT(5,10,15)                                   //zufällig 5, 10 oder 15 Sek.  warten               

                                   GOTO START

 

Außerdem wurden hier noch zwei Zeitzähler eingefügt (WAIT(5), RANDWAIT(5,10,15)).

Mit der rechte Maustaste in der Tabelle holt man ein Kontextmenü zum Einfügen/Löschen einer Zeile.

Speichern Sie den Ablauf zu Ihrem Modell, z.B.: "ErsteFahrt_G11_G13.txt"


Zufällige Streckenführung

An Stelle des Rückwegs von GA13 nach GA11 könnte das Fahrzeug auch von GA13 über GA22 nach GA11 fahren. Ein Zwischenhalt auf GA22 ist wünschenswert.

Laden Sie unsere " ErsteFahrt_G11_G13.txt" und speichern Sie diese unter Fahrt_Demo2.txt ab.

Fahren Sie das Fahrzeug auf GA13. Stellen Sie den Cursor im Fahrplan hinter die letzten Befehle. Wir erfassen jetzt die zwei Fahrabschnitte G13_22 und G22_11.

 

:G13_11            !SENSORSTOP(0,$22,2,BSTOP)               //Fahrt von G13 nach G11

                            !SENSORSTOP(0,$22,3,AUS)

                            !SENSORSTOP(0,$21,4,AUS)

                            !TRIGGERN(0,$30,4)

                            !FAHRSTUFE(0,$22,2,-14)

                            !FAHRSTUFE(0,$22,3,-14)

                            !FAHRSTUFE(0,$21,3,-14)

:M_2680523    LET LS = ?SENSOR(0,$22,2)

                            IF LS = 0 THEN

                            GOTO M_2680523

                            RETURN                                                          

                                                                                                       

:G22_11            !SENSORSTOP(0,$21,1,BSTOP)              

                            !SENSORSTOP(0,$22,2,AUS)

                            !TRIGGERN(0,$30,7)

                            !FAHRSTUFE(0,$21,1,-14)

                            !FAHRSTUFE(0,$22,2,-14)

:M_2680579    LET LS = ?SENSOR(0,$21,1)

                            IF LS = 0 THEN

                            GOTO M_2680579

                            RETURN                                                          

Den Fahrabschnitten wurde hier eine aussagekräftige Sprungmarke vergeben. Diese tragen Sie bitte jetzt auch ein. Außerdem wurde ein neues Schlüsselwort benutzt: "RETURN". Tragen sie das bitte wie oben dargestellt nach.

Unsere bisherigen Fahrabschnitte bearbeiten wir ebenso.  "START" ersetzen wir durch  ":G11_12_13" und das WAIT(5) ersetzen wir durch "RETURN".  Der Start der Fahrt GA13_12_11 und das Ende des  Fahrtabschnitts schließen wir ebenfalls mit einem "RETURN" ab.

 

:G11_12_13    !SENSORSTOP(0,$21,4,BSTOP)               //Fahrt von G11 nach G13 über G12           

                            .......

                            RETURN

:G13_12_11    !SENSORSTOP(0,$21,1,BSTOP)               //Fahrt von G13 nach G11 über G12           

                            .....

                            RETURN

:G13_22            !SENSORSTOP(0,$22,2,BSTOP)             //Fahrt von G13 nach G22

                            ....

                            RETURN

:G22_11            !SENSORSTOP(0,$21,1,BSTOP)             //Fahrt von G22 nach G11

                            .....

                            RETURN

 

Mit Einführung der Marken und dem abschließenden RETURN kann jeder dieser Fahrabschnitte als Unterprogramm genutzt werden.  Wie Sie bemerkt haben dürften, wurden die Anweisungen zum Warten stillschweigend entfernt., werden aber demnächst wieder eingebaut.

Fügen Sie am Anfang des Fahrplanes ca. 12 Leerzeilen ein. (rechte Maustaste in der aktuellen Zeile, es erscheint ein Kontextmenü zum Zeile einfügen/löschen)

Die Ersten  Zeilen des Fahrplans sollten immer für eigene Bemerkungen reserviert sein.

Fügen Sie ab der 1.Zeile folgenden Code ein:

                                                                                                  //Fahrt_Demo2, zufällige Fahrwege           

:Menue                                                                                            

                            GOTO R11                                                       //Zufallsfahrt ab GA11, Home

                            GOTO R13                                                       //Zufallsfahrt ab GA13       

                            GOTO R22                                                       //Zufallsfahrt ab GA22       

                            end                                                                   

:Zufallsfahrten

:R11                    GOSUB G11_12_13                                             //Aufruf Unterprogramm Fahrweg G11...G13

                            RANDWAIT(15,10,5)                                         //zuf. Wartezeit, Reihenfolge ohne Bedeutung

                            GOTO R13                                                       //Wir sind jetzt auf GA13, also weiter ab :R13

                            end

:R13                    RANDGOTO(Z13_12_11, Z13_22)                    //--- Gehe zu zufälliger Sprungmarke ---

:Z13_12_11     GOSUB G13_12_11                                                 //Fahre von G13 nach G11 über G12

                            RANDWAIT(5,10,15)                                  

                            GOTO R11                                                      //Wir sind jetzt auf GA11, also weiter ab :R11

:Z13_22             GOSUB G13_22                                           

                            WAIT(15)

                            GOTO R22                                                      //Wir sind jetzt auf GA22, also weiter ab :R22

                            end

:R22                    GOSUB G22_11                                                 //Fahre von GA22 nach GA11

                            WAIT(5,10,15)

                            GOTO R11                                                      //Wir sind jetzt auf GA11, also weiter ab :R11

                            end                                                                   

 

Die Marken ":Menü" und "Zufallsfahrten" dienen nur der optischen Untergliederung der Anweisungen und haben keine funktionelle Bedeutung. Der Befehl "end" verhindert unbeabsichtigtes "Hineinrutschen" in den nächsten Codeblock.

Erläuterung zu :R11 - GOSUB G11_12_13 - RANDWAIT(15,10,5) - GOTO R13 - end          

Wird der Fahrplan in der Zeile mit der Marke  :R11 gestartet, wird das Unterprogramm G11_12_13 gestartet. D.h. der Programmzeiger springt zur Marke :G11_12_13 und arbeitet dort alle Befehle ab.

Kommt dort der Befehl RETURN an die Reihe, springt der Programmzeiger zurück auf die Zeile hinter GOSUB G11_12_13, wo nun RANDWAIT(15,10,5) ausgeführt wird. Da wir annehmen können, daß das Fahrzeug auf GA13 angekommen ist, muß nun der nächste Programmblock abgearbeitet werden, der der Situation auf GA13 entspricht.

Der Abschnitt ab :Menue erleichtert die Bedienung, da nach Laden des Fahrplans nicht die Eintrittspunkte gesucht werden müssen.

Speichern Sie den Fahrplan" Fahrt_Demo2" und starten Sie die jeweilige Fahrt je nach Standort der Lok ab Zeile GOTO R11 oder, oder, ....

 

Kollisionsfreies Fahren mit dem Dispatcher

Es können mehrere Züge gleichzeitig fahren, wobei  jeder Zug seinen eigenen Fahrplan haben kann. Kreuzen sich die Züge auf Grund ihrer Streckenführung, ist eine Kollision unvermeidlich.

Der Dispatcher hat Kenntnis über die vorhandenen Gleisabschnitte und die aufgestellten Züge.

Er reserviert nach Anfrage die Gleise und gibt sie auf Kommando wieder frei.

Rufen Sie den Dispatcher auf.  (Einstellungen/Dispatcher)


 

Wenn Sie im ATCLayout-Programm alles richtig gemacht haben, erscheinen in der linken Tabelle die vorhandenen Gleisabschnitte.

Falls diese nicht vollständig sind, müssen sie im ATCLayout die GA-Nummern der gelben GA-Labels mittels Eigenschaftsdialog noch setzen und das Modell dort erneut speichern sowie in ATCMain das Modell erneut einlesen.

Die rechte Tabelle enthält die Gleisbenutzer, die beim Erststart von Ihrem tatsächlichen Reichtum an Fahrzeugen noch nichts wissen kann. Tragen Sie nach obigem Beispiel die Gleisbenutzer ein.  Rechte Maustaste in dieser Tabelle öffnet ein Kontextmenü für Benutzer Hinzufügen/Löschen/Speichern.

Speichern Sie die Tabelle.Mit dem Dispatcher-Dialog kann man von Hand diverse Gleisabschnitte für einen Zug reservieren oder freigeben. Im Fahrplan wird das per Befehl erledigt, z.B.:

                            LET LOK = 1001                                              //Definition und Belegung der Variable LOK

                            !ANMELDEN(LOK,11,12,13)                               //Dispatcher soll für LOK die Gleise reservieren

                            !FREIGEBEN(LOK,-11)                                       //Alles freigeben außer GA11

 

oder abfragen, ob eine angegebene Reservierung erfolgreich war, z.B.:

:FRAGEN          LET FREI = ?ANMELDEN(LOK,11,12,13)    

                            IF FREI = 0 THEN                                          

                            GOTO FRAGEN

Die Schleife wird solange wiederholt, bis der Dispatcher die Gleisabschnitte 11,12,13 reservieren konnte.

Holen Sie sich den ersten AHA-Effekt durch Spielen mit dem Dispatcher-Dialog. Ein Doppelklick auf den Gleisbenutzer der rechten Tabelle schreibt dessen UserNr in das Eingabefeld links unten.

99           11,12,13            Anmelden, reserviert falls möglich 11,12,13

99           -11                      Abmelden, gibt alle frei, außer 11

99                                       Abmelden, gibt alle wieder frei

1001      11,12,13            Anmelden, reserviert für Lok 1001

3333      11,22,13            Anmelden, schlägt fehl, da bereits 11,13 für Lok 1001 reserviert.

usw.

Geben Sie jetzt alle Gleise frei, da wir nun 2 Fahrpläne zum kollisionsfreien Fahren erstellen und testen wollen.

Laden sie Fahrplan Fahrt_Demo2 und speichern sie Ihn unter Fahrt_Zug1001.txt.

Am Anfang des Fahrplans definieren wir das Fahrzeug und den üblichen Aufstellungsort.

                                                                                                 // Fahrt_Zug1001 mit Anmeldung/Freigabe

                            LET LOK = 1001                                              //Fahrplan für Schienenbus

                            !FREIGEBEN(LOK,-11)                                       //Alles freigeben außer GA11                       

                            !ANMELDEN(LOK,11)                                        //Zug hier aufstellen

                            end

 

Den Abschnitt Zufallsfahrten "bohren" wir mit Befehlen für Anmeldung und Freigabe auf.

:Zufallsfahrten                                                                               

:R11                                                                                               //keine Alternative

                            LET FREI = ?ANMELDEN(LOK,11,12,13)

                            IF FREI = 0 THEN

                            GOTO R11

                            GOSUB G11_12_13                                             //Aufruf Unterprogramm Fahrweg G11...G13

                            !FREIGEBEN(LOK,-13)

                            RANDWAIT(5,10,15)                                           //zufällige Wartezeit

                            GOTO R13                                                         //Wir sind jetzt auf GA13, also weiter mit R13

                            end                                                                   

:R13                                                                                             //mehrere Wege

                            RANDGOTO(Z13_12_11, Z13_22)                        //--- Gehe zu zufälliger Sprungmarke ---  

:Z13_12_11     LET FREI = ?ANMELDEN(LOK,13,12,11)

                            IF FREI = 0 THEN

                            GOTO R13

                            GOSUB G13_12_11                                            //Fahre von G13 nach G11 über G12

                            !FREIGEBEN(LOK,-11)

                            RANDWAIT(5,10,15)                                  

                            GOTO R11                                                       //Wir sind jetzt auf GA11, also weiter mit R11

:Z13_22             LET FREI = ?ANMELDEN(LOK,13,22)    

                            IF FREI = 0 THEN                                          

                            GOTO R13

                            GOSUB G13_22

                            !FREIGEBEN(LOK,-22)

                            WAIT(15)                                                        

                            GOTO R22                                                       //Wir sind jetzt auf G22, also weiter mit R22

                            end                                                                   

:R22                                                                                            //keine Alternative

                            LET FREI = ?ANMELDEN(LOK,22,11)

                            IF FREI = 0 THEN

                            GOTO R22

                            GOSUB G22_11

                            !FREIGEBEN(LOK,-11)

                            WAIT(5,10,15)                                              

                            GOTO R11                                                      

                            end                                                                         

Speichern Sie den neuen Fahrplan und starten sie diesen. Sie können an den Gleisbezeichnern sehen, wie diese während der Fahrt reserviert und wieder freigegeben werden.

Wie man sieht ist GA22 durch Zug 1001 belegt, GA11 wurde für Zug 1001 bereits reserviert.

Halten Sie den Fahrplan an, wenn das Fahrzeug auf GA11 steht und alle anderen Gleisabschnitte gerade freigeben wurden.

Wir werden jetzt den Fahrplan für einen weiteren Zug erstellen und einsetzen.

Speichern Sie den aktuellen Fahrplan unter  Fahrt_Zug3333.txt.

Modifizieren Sie die Variable LOK und den Aufstellungsort für LOK 3333. Anschließend Speichern dieses Fahrplans.

                                                                                          //Fahrt_Zug1001 mit Anmeldung/Freigabe

                            LET LOK = 3333                                       //Fahrplan für Rangierlok

                            !FREIGEBEN(LOK,-22)                                //Alles freigeben außer GA22                       

                            !ANMELDEN(LOK,22)                                 //Zug hier aufstellen

Schließen Sie alle Fahrpläne und geben Sie per Dispatcherdialog alle Gleise frei oder starten Sie einfach ATCMain mit ihrem Modell neu.

Stellen sie die 1.Lok auf Gleisabschnitt 11 und die 2.Lok auf Gleisabschnitt 22.

Laden sie die beiden Fahrpläne Fahrt_Zug1001 und Fahrt_Zug3333.

Starten Sie beide Fahrpläne und kontrollieren Sie die Aufstellungsorte. Wenn alles OK, dann losfahren mit  Cursor bei lfd. Fahrplan in Zeile GOTO R11 bzw. GOTO R22.

 

Viel Spaß! Es sind noch längst nicht alle Varianten ausgeschöpft!

FDSoft; Stand20150209