2016 del 1 – Signal Controlled Warrants

Se denne video om Warrants. Han foretrækker dog de originale warrants og ikke mine signal styrede, men konceptet er det samme: https://youtu.be/50pplyRUfdc

Medio januar 2016: Plan for implementering af ny type warrant

Beslutningen er truffet: Jeg laver en specialudgave af Warrants, som ikke ramper farten op og ned, men som til gengæld styres 100% af signaler, sensorer og muligheden for at allokere blokke.

Algoritme:
WHILE start blok er fri
….wait()
fyr FORWARD kommandoen af
WHILE stop blok er fri
….juster hastighed efter signaler samt efter om næste blok kan allokeres og er fri
….wait()
stop toget

wait() kaldene afbrydes af events fra signaler og sensorer. Ved disse lejligheder opdateres current blok, hvorefter notify() eller notifyAll() afbryder wait() kaldet.

Objekter:
Der skal en tråd til at udføre while løkkerne og en anden til at lytte på events. Men betyder det to forskellige objekter? Det tror jeg ikke nødvendigvis.

Ny klasse eller attribut på Warrant?
Ideen er at lave meget få (helst slet ingen) ændringer i den eksisterende warrant implementering og lave en ny parallel implementering, der så til gengæld skal være meget simpel og kompakt ved ikke at understøtte mørke blokke, speed ramping eller andre specialiteter. I første omgang skal ikke engang bruge kommandolisten til andet end FORWARD/REVERSE.

Det virker renest at lave en ny klasse, der arver fra Warrant og bare overrider de metoder, der starter et tog, og som lytter på events. Men så skal WarrantManager.java, skrivning/læsning til/fra XML filer, diverse UI ting m.v håndtere to klasser.

Måske kan man i første omgang undlade at ændre i UI, og lade WarrantManager have både den ene og den anden klasse i samme liste af warrants? Så kan man jo omdanne nogle warrants til den nye klasse bare ved at editere XML filen. Det prøver vi.

Ultimo januar 2016: SCWarrants er nu en realitet

Efter et par uger med sammenlagt måske ti eller tyve timers indsats har jeg lavet SCWarrants. De kører og de kan gemmes i og hentes fra JMRI’s XML filer. Kun 500 linier Java indtil videre – inklusive kommentarer, tomme linier, log statements etc.

Jeg mangler dog stadig følgende i prioriteret rækkefølge (har kun tænkt mig at lave prioritet 1 – 7, for jeg vil hellere i gang med at bygge banen videre med signaler, biler, huse osv.):
1. Få bygget et Control Panel færdigt. Det er næsten gjort. Det passer sammen med warrants i modsætning til Layout panelet. DONE.
2. Mit Python script skal laves om til at anvende SCWarrants i stedet for Dispatcher. Påbegyndt. Men den skal lytte på warrant state og ikke på sensorer.
3. Jeg skal have lavet editor-delen til SCWarrants, så jeg kan få dem ind i JMRI.
4. Af samme årsag skal jeg have skrevet lidt om dem i HTML siderne for JMRI.
5. Tilføj (I ….\JMRI\Jython\) og forklar RunMyTrains.py som eksempel. Men ryd op I den først.
6. Tilføj evt. noget brug af Audio til RunMyTrains.py. (Platform Announcement). Eller henvis bare til Audio siden og eksemplet http://jmri.org/help/en/html/tools/Audio.shtml og http://jmri.org/jython/AudioExample.py
7. Samtidig kunne det nok være en god ide at få lidt flere af de eksisterende sider om Warrants og om Jython scripts til at fremgå af TOC: http://jmri.org/help/en/webtoc.shtml
8. Diverse throttle kommandoer, som almindelige warrants fyrer af for at styre lys og lyd i toget kunne også implementeres i SCWarrants. Jeg har det dog allerede i Jython scriptet. Men jeg kunne måske kort beskrive i HTML dokumentationen, hvordan jeg gør.
9. Speed ramping kunne implementeres. Men det kompromitterer ideen med hurtig reaktion i små blokke. Jeg kunne jo skrive i dokumentationen, at man kan programmere sine lokomotiver til at accelerere blødt.

Og dernæst skal der loddes igen. Jeg skal have bygget et par signaler.

Efterskrift: Januar/februar fik jeg inkluderet SCWarrants i JMRI inklusive dokumentation, editor ændringerne og også en udvidelse af automation klassen, så man kan bruge Warrants fra Jython scripts.

Men så gik der arbejde i den. Så udover lidt pilleri med fysiske signaler blev det ikke til meget futtog i første halvdel af 2016. Så ikke før til efteråret…….

Status sommeren 2016

Nu fungerer den automatiske styring af tog, takket være SCWarrants.

Signaler fungerer rent softwaremæssigt og dekodermæssigt (Paco’s dekoder).

De fysiske signaler fungerer, men er ikke pæne nok. Se de første prototyper her.

Så alt i alt er jeg så småt i gang med at overveje nogle elementer, som skal få det hele til at ligne en rigtig (model-)bane, f.eks. huse, græs, veje, biler, figurer, gadelygter osv. osv.

Og forresten – Faller bilen: Den er stadigvæk ikke pakket ud.

Det er atter sommer og drivhus-tid. Så ingen modeltog før en gang til efteråret.

Translate »