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