Help
RailScript (as of 12.01)
RailScript is de ingebouwde automatiseringstaal van RailKernel. De taal leest de actuele toestand van de modelbaan, wijzigt ondersteunde waarden, wacht op gebeurtenissen en start of queue opgeslagen routes zonder de routerings- en veiligheidsregels van RailKernel te omzeilen.
Wat RailScript kan
Een RailScript kan centrales, terugmelders, accessoires, seinen, blokken, treinen, locomotieven, treintypen, routes, variabelen, tellers, timers en de systeemtoestand bekijken. Scripts kunnen beslissingen nemen, op een voorwaarde wachten, handelingen herhalen, naar de scriptlog schrijven, schrijfbare attributen bedienen en een bestaande Route Move starten. Projectscripts en hun taal worden in het project opgeslagen.
De scripteditor
Elk script heeft een naam, een enabled-vlag, een taal en brontekst. Validate controleert het volledige programma zonder het uit te voeren. Run start de huidige bron en Stop annuleert de uitvoering. Wisselen tussen Engels, Nederlands en Duits vertaalt de RailScript-keywords maar behoudt objectnamen, teksten en commentaar. Tab of Ctrl+Spatie opent contextgevoelige aanvulling voor keywords, objecten en attributen.
Uitvoering en veiligheid
ALS en ZOLANG worden direct geëvalueerd. VOOR ELK doorloopt een momentopname van alle objecten in een collectie, zoals block[] of feedback[]. De lusvariabele biedt de normale namespace-attributen van dat object. WANNEER wacht zonder RailKernel te blokkeren en gaat verder zodra de voorwaarde waar wordt of de optionele TOTDAT-voorwaarde wint. PROMPT pauzeert alleen het huidige script terwijl de gebruiker om bevestiging of een ingevoerde waarde wordt gevraagd; RailKernel en andere scripts blijven actief. De newFeedback-gebeurtenis van een trein wordt geconsumeerd door de succesvolle WANNEER die haar leest en wordt daarna weer ONWAAR. RIJD gebruikt de normale Route Move-engine en behoudt de veiligheidsregels. RESERVE en RELEASE reserveren of geven blokken, accessoires of routes atomair vrij voor een geplaatste trein en retourneren WAAR wanneer de gevraagde wijziging slaagt. SWITCH bedient rechtstreeks één decoderadres; DCC en de enige aangesloten centrale zijn de standaardwaarden. RUN start een ander projectscript; RUN THIS herstart het huidige script, voltooit de oude uitvoering onmiddellijk en negeert alle volgende opdrachten.
Voorbeeld: vertrek uit een station
Dit uitgebreide voorbeeld toont een volledige vertrekprocedure: een trein op het perron herkennen, stoppen, de stationstimer afwachten, de conducteursfluit laten klinken en een opgeslagen vertrekroute starten. Vervang de objectnamen en het functienummer door waarden uit uw eigen project.
-- Vertrek uit het station met een conducteursfluit
WANNEER train["Intercity 1200"].currentBlock = "Perron 1"
EN train["Intercity 1200"].placed
DOE
LOG "Intercity 1200 is aangekomen op perron 1"
ZET locomotive["NS 1200"].speed = 0
ZET timer["stationsstop"].durationMillis = 30000
ZET timer["stationsstop"].running = WAAR
WANNEER timer["stationsstop"].expired
DOE
-- Functie 3 bevat in dit voorbeeld de conducteursfluit.
ZET locomotive["NS 1200"].function[3].active = WAAR
ZET timer["fluit"].durationMillis = 1500
ZET timer["fluit"].running = WAAR
WANNEER timer["fluit"].expired
DOE
ZET locomotive["NS 1200"].function[3].active = ONWAAR
LOG "Vertreksein gegeven"
RIJD "Intercity 1200" VIA "Vertrek perron 1"
EINDE
EINDE
EINDE