Hilfe

RailScript (as of 12.01)

RailScript ist die integrierte Automatisierungssprache von RailKernel. Sie liest den aktuellen Anlagenzustand, ändert unterstützte Werte, wartet auf Ereignisse und startet oder reiht gespeicherte Routen ein, ohne die Routing- und Sicherheitsregeln von RailKernel zu umgehen.

Was RailScript kann

Ein RailScript kann Digitalzentralen, Rückmelder, Magnetartikel, Signale, Blöcke, Züge, Lokomotiven, Zugtypen, Routen, Variablen, Zähler, Timer und den Systemzustand auswerten. Scripts können Entscheidungen treffen, auf Bedingungen warten, Abläufe wiederholen, in das Scriptprotokoll schreiben, schreibbare Attribute bedienen und einen vorhandenen Route Move starten. Projektscripts und ihre Sprache werden mit dem Projekt gespeichert.

Der Scripteditor

Jedes Script besitzt einen Namen, einen Aktiviert-Schalter, eine Sprache und Quelltext. Validate prüft das vollständige Programm, ohne es auszuführen. Run startet die aktuelle Quelle, Stop bricht die Ausführung ab. Beim Wechsel zwischen Englisch, Niederländisch und Deutsch werden RailScript-Schlüsselwörter übersetzt; Objektnamen, Texte und Kommentare bleiben erhalten. Tab oder Strg+Leertaste öffnet die kontextsensitive Vervollständigung für Schlüsselwörter, Objekte und Attribute.

Ausführung und Sicherheit

WENN und SOLANGE werden sofort ausgewertet. FÜR JEDEN durchläuft eine Momentaufnahme aller Objekte einer Sammlung wie block[] oder feedback[]. Die Schleifenvariable stellt die normalen Namensraumattributen dieses Objekts bereit. SOBALD wartet, ohne RailKernel zu blockieren, und setzt die Ausführung fort, sobald die Bedingung wahr wird oder die optionale BIS-Bedingung gewinnt. PROMPT pausiert nur das aktuelle Script, während der Benutzer um Bestätigung oder einen eingegebenen Wert gebeten wird; RailKernel und andere Scripts laufen weiter. Das newFeedback-Ereignis eines Zuges wird von der erfolgreichen SOBALD-Anweisung verbraucht und danach wieder FALSCH. FAHRE verwendet die normale Route-Move-Engine und behält deren Sicherheitsregeln bei. RESERVE und RELEASE reservieren oder geben Blöcke, Magnetartikel oder Routen atomar für einen platzierten Zug frei und liefern WAHR zurück, wenn die angeforderte Änderung gelingt. SWITCH schaltet direkt eine Decoderadresse; DCC und die einzige verbundene Zentrale sind die Standardwerte. RUN startet ein anderes Projektscript; RUN THIS startet das aktuelle Script neu, schließt die alte Ausführung sofort ab und ignoriert alle nachfolgenden Anweisungen.

Beispiel: Abfahrt aus einem Bahnhof

Dieses ausführliche Beispiel zeigt einen vollständigen Abfahrtsablauf: einen Zug am Bahnsteig erkennen, anhalten, die Aufenthaltszeit abwarten, den Schaffnerpfiff auslösen und eine gespeicherte Abfahrtsroute starten. Ersetzen Sie Objektnamen und Funktionsnummer durch Werte aus Ihrem Projekt.

-- Abfahrt aus dem Bahnhof mit Schaffnerpfiff

SOBALD train["Intercity 1200"].currentBlock = "Bahnsteig 1"
       UND train["Intercity 1200"].placed
TUE
    LOG "Intercity 1200 ist an Bahnsteig 1 angekommen"

    SETZE locomotive["NS 1200"].speed = 0

    SETZE timer["Bahnhofsaufenthalt"].durationMillis = 30000
    SETZE timer["Bahnhofsaufenthalt"].running = WAHR

    SOBALD timer["Bahnhofsaufenthalt"].expired
    TUE
        -- Funktion 3 enthält in diesem Beispiel den Schaffnerpfiff.
        SETZE locomotive["NS 1200"].function[3].active = WAHR

        SETZE timer["Pfiff"].durationMillis = 1500
        SETZE timer["Pfiff"].running = WAHR

        SOBALD timer["Pfiff"].expired
        TUE
            SETZE locomotive["NS 1200"].function[3].active = FALSCH

            LOG "Abfahrsignal gegeben"
            FAHRE "Intercity 1200" MIT "Abfahrt Bahnsteig 1"
        ENDE
    ENDE
ENDE