9. april
Jeg var på DMJU udstilingen i Køge. Mange interessante ting og sager. Men jeg var helt ærligt en kende skuffet over kvaliteten og detaljerne i de modelbaneklubber, der udstillede. Men det er vel ikke så sært. De laver jo primært banerne for at have det sjovt, og ikke for at imponere. Hvis man vil det andet, skal man tage til Hamborg og se Miniatür Wunderland.
På udstillingen i øvrigt hæftede jeg mig ved disse ting:
Mck udstilledede røde Bn vogne, som vist nærmest er på vej hjem fra Kina. Desuden havde de en rå og umalet Bns (dvs. en styrevogn), hvor man kunne se lidt om lysfunktionerne. Han fortalte, at de en gang til efteråret vil komme med et belysningssæt til deres vogne inklusive en slæbesko til 3-skinne folket, og at dette belysningssæt allerede er indbygget i Bns vognen, som man derfor skal huske at bestille i AC udgave, hvis den skal være udstyret med slæbesko.
Derudover havde de en tidlig udgave af Q-maskinen, som blev fotograferet flittigt, men som han pointerede var en tidlig udgave – sikkert med masser af fejl.
Og endelig havde han et MR/MRD togsæt stående i en forkert grå/blå nuance. Men alligevel sikken en forskel på detaljeringen i forhold til den Lima model, jeg byggede om for nogle få måneder siden.
Märklin C skinner behøver ikke at larme. Både diverse klubber og Märklin selv havde tog kørende på C-skinner, der blot ligger løst ovenpå en spånplade, uden at de støjede af den grund. Måske bare fordi det var i en stor hal? Måske fordi der er forskel på lokomotiver? Eller måske fordi jeg bare skal have fundet ud af, hvad der er galt på min bane?
http://www.mollehem.se/ har nogen rigtigt fine danske og svenske signaler. Han har været så fiffig at lave hele signalet – både hovedet, masten (som er meget tynd – lige som den skal være) og foden som et sammenhængende print. Hovedet er så støbt ind i et plastikforstykke, der er en rigtig fin model af de rigtige signaler, og et plastikbagstykke, der blot er en pæn bagside, uden den helt store lighed med forbilledet. Masten er jo så i øvrigt også bare en sortmalet firkant. Vil man hellere have en gittermast skal man købe sine signaler hos Gentofte Togcenter. De ser bare lidt for tykke ud, synes jeg.
Samme sted har i øvrigt lavet nogle plaststykker til servoer, så de eromdannet til at kunne bruges sammen med vilkårlige sporskiftere. Ret smart. Og han sælger dem til 50 kroner. Derudover har han servodekodere og andet elektronik.
Togdillen var der også – bl.a. med de IC3 tog, som de har samlet af diverse hengemte dele fra Heljan. Jeg spurgte, om de kunne køre, og fortalte ham om mit togsæt. Han mente, at jeg bare skulle komme til dem. Så skal de nok få mit tog til at køre. Som han siger, så vil de helst have tilfredse kunder.
Lige før sengetid fik jeg rettet den XML fil til, hvori jeg for noget tid siden har defineret det nye layout i JMRI. Tilretningen gik ud på at substituere sensor navnene fra Loconet simulator syntaks til ECOS syntaks.
10. april
Jeg havde forventet en del problemer med at få layout XML filen med den deri indbyggede signal logik etc. til at fungere.
Men nej – overhovedet ingen problemer.
Derimod var der nogle få problemer med at få Warrants og mine Jython scripts til at fungere:
1. Der var et problem med SCWarrants, som var rigelig rundhåndet med at deallokere blokke for at undgå at den ene warrant spærrer for den anden. Så rundhåndet, så den blok, som et tog lige var kommet ind i, af og til blev deallokeret med det problem til følge at toget ganske enkelt stoppede midt i det hele.
2. Der skulle sættes debounce timere for alle ECOS sensorer. Jeg har sat det, så der er 25 ms delay, når en sensor går aktiv og 100 ms, når den går inaktiv. Der skal være en vis forskel for at undgå problemer med at sensoren for en blok, der forlades, går inaktiv lige før sensoren for den blok, toget kører ind i, går aktiv.
3. Den funktion, jeg har lavet til at Jython scripts kan afvente at toget kommer ind i næste blok, fungerede ikke hver gang, når en warrant afsluttedes.
Jeg har fikset disse småting samt omimplementeret mit Jython script for et af mine tog, defineret knapper i layout billedet til at starte/stoppe mine tog samt informationsfelter tilsvarende, og oprettet SCWarrants for dette ene tog – og brugt hele dagen på det.
Og JMRI rettelserne er naturligvis pushet ind, så de er med i næste release.
Og nu kører første tog ret så stabilt. Toget består af et gammelt Märklin Santa Fe (3060 for kendere) lokomotiv med motoren ombygget til 5-polet DC og isat en ESU dekoder, samt 3 stk. særdeles velbrugte Lima B-vogne. Se en lille film her.
Der sker lidt uheld indimellem, såsom at en vogn afsporer, eller bliver afkoblet. Eller ind imellem er der en sensor, der ikke reagerer korrekt. Og så går tingene naturligvis i “udu”. Men helt 110% bliver det nok aldrig. Og jeg har faktisk haft toget til at køre i en time uden nogen form for uheld. Men jeg går ud fra, at jeg sandsynligvis skal have en eller anden slags dobbelt sensor system, hvis tingene skal blive bedre.
Jeg forudser et problem, som jeg må have løst ret snart, hvis jeg vil køre med flere tog samtidig, hvilket jeg vil: Jeg bliver nødt til at sikre mig, at der findes en slæbesko bagerst på hvert tog. Og denne slæbesko skal bruge strøm, så JMRI kan detektere halen på toget. Som det er nu er bagenden usynlig for JMRI, som derfor frigiver blokkene for hurtigt, hvorved næste tog kan blive givet en blok, selvom halen af toget foran stadig befinder sig i blokken. Jeg bliver sandsynligvis reddet af signalsystemet, hvor det bagerste tog kommer til at holde for rødt. Men helt sikkert er det ikke.
11. april
Et enkelt sporskifte skulle lige justeres, idet servoen “sang” i den ene stilling. Det var nemt nok, idet det jo bare er et spørgsmål om at ændre den CV værdi i dekoderen, der bestemmer pågældende servo position.
Et andet sporskifte var en lidt større udfordring. Det handler om det ene af mine 3-vejs sporskifter:
Det opererer som to af hinanden uafhængige sporskifter. Men rent mekanisk er de ikke uafhængige, idet den ene lægger an på den anden. På billedet er det yderste sporskifte sat til “lige ud”, og det indre til “drej af”. Det går fint. Men hvis man nu også sætter det ydre til “drej af”, så vil det indre trykke så meget på det ydre, at der ikke skiftes ordentligt. Og så vil et tog afspore. Jeg forsøgte vha. at justere CV værdierne for begge servoerne, at få det til at fungere. Men uden held. Jeg har endda forsøgt forsigtigt at bøje det yderste sporskifte lidt, men det var heller ikke nok.
Jeg går ud fra, at hvis man bruger Märklins specialdekoder (74465) til dette sporskifte, så er det slet ikke en mulighed at sætte det ydre sporskifte til “drej af” uden at det indre samtidig går på “lige ud”. Og det er da også lige præcis den funktion, jeg nu har fremtryllet via Logix i JMRI. Denne logix reagerer, når det ydre sporskifte skifter til “drej af”. Og aktionen er at sætte det indre sporskifte til “lige ud”. Simpelt og effektivt. Da jeg nu var i gang, definerede jeg samme logix til begge 3-vejs sporskifterne.
Lidt research viser, at det ikke er Märklin 74465 dekoderen, der får 3-vejs sporskiftet til at fungere som ét sporskifte. Det er åbenbart ECOS’en, der kan det. Den er i stand til at bruge to på hinanden følgende sporskifte-adresser samlet, hvis man bruger 3-vejs sporskifteikonet.
Men det kan jeg ikke bruge til noget, for JMRI har ikke konceptet 3-vejs-sporskifte. I JMRI tegner og styrer man de to sammenbyggede sporskifter individuelt. Dvs., at min løsning med logix synes at være den rigtige.
15. april
Jeg fik defineret warrants for et par tog mere. Men uha o skræk. Den store katastrofe indtraf med alle vogne afsporet og styrtet ned. Jeg er nødt til at få gjort hele toget gjort detektérbart. Dvs. få sat slæbesko og lys på bagerste vogn, så den bruger strøm og/eller at få etableret noget med magneter og reed-kontakter.
Indtil videre kan det dog være, at jeg bare tager vognene af. Men det bliver altså hurtigt træls med lokomotiver uden vogne.
17. april
Det er blevet forår. Indkørslen er højtryksrenset. Men jeg har også fået kørt lidt tog via SCWarrants.
Det gav anledning til et par rettelser/forbedringer til SCWarrants (som endnu ikke er pushet til næste JMRI release):
1. Jeg har fjernet den funktion, der skal sørge for at frigive blokke længere fremme langs ruten, hvis de er optaget af et andet tog. Det bør for det første ikke være nødvendigt, og desuden er det sket, at funktionen er blevet udført i samme øjeblik som toget kørte ind i næste blok, hvorved den nye blok er blevet frigivet af warrant’en og optaget af toget – samtidig. Derved standser toget, dvs. alt går i stå.
2. Aldeles ved et uheld (eller mangel på omtanke) blev den første allokering af blokke foretaget af koden i Warrant klassen og ikke i SCWarrant klassen. Derfor moste den bare igennem og allokerede blokke, selvom de var optaget. Det var ikke helt heldigt i kombination med ovennævnte rettelse/ændring, idet et tog, der holder på ruten dermed ikke kan få lov til at køre vha. en (anden) Warrant / SCWarrant. Jeg har nu implementeret en noget simplere udgave af denne initielle allokering: Den allokerer kun start blokken. Og desuden sætter den hele listen af blokke. (Det var en skjult side-effekt i den originale funktion, som jeg var nødt til at beholde.)
Og så har jeg fiddlet lidt mere med debounce timere, fordi sensor 17 virker lidt ustabil, hvilket fik en warrant til at melde “LOST TRAIN”. Måske er skinnerne beskidte? Men jeg generelt sat timerne op fra 25 hhv. 100 ms til 50 hhv. 200 ms. Og specielt for sensor 17 til 100 hhv. 500 ms.
Desuden har jeg defineret signalmaster ved indkørslerne til vigesporene.
18. april
Mere højtryksrensning – nu terrassen.
Men jeg har da også fået lavet et par forbedringer på software siden:
1. Mit script til at køre tog / afvikle warrants havde den fejl, at throttle blev taget fra den af de warrants, der afvikles. Det betød, at lyset ikke blev slukket og motoren ikke standset ved enden af ruten.
2. SCWarrants kører nu langsommere i blokken før destinationsblokken.
3. Såfremt der blev modtaget to events om at destinationsblokken blev fri, og det ikke var lykkedes at allokere den, fordi den havde været optaget, så var der en race condition, som vist nok fik en tråd i programmet til at dø. Der var i hvert fald tale om en ikke-fanget null pointer exception. Og det er sjældent sundt.
4. Såfremt toget ikke bevæger sig (speed == 0) reageres der ikke længere på, at næste blok i ruten går aktiv. Måske var det i kombination med en af de andre rettelser, for jeg kan ikke fremprovokere det igen. Men i går var jeg ude for, at mit gamle Santa Fe i begyndelsen holdt pænt tilbage for et andet tog, som skulle passere i krydset. Men idet det andet tog havde passeret krydset med selve lokomotivet, men ikke med alle vognene, satte Santa Fe i gang og vædrede direkte ind i det andet tog, hvor den slog et hjul af. Ikke godt! Det må være fordi Santa Fe´s warrant fejlagtigt antog, at eftersom krydset var dets næste blok og eftersom det blev aktivt, så måtte det være Santa Fe, der nu var kommet derhen, og derved blev kontrolleret af næste signal. Men det er ikke helt forstået, hvorfor jeg så ikke kan få fejlreaktionen frem igen.
5. Jeg har sat tiden for at skifte et sporskifte op i ECOS. Før var alle sporskiftere sat til 250 ms. Nu er de sat til 2,5 sekund. Det passer meget godt med den tid, mine servoer er om at bevæge sig.
Derudover har jeg langt om længe fundet ud af, hvordan man skiller en Lima B-vogn ad. Jeg har forsøgt at google det uden held. Men ved at sidde og klemme lidt på den måske grimmeste af mine vogne fandt jeg ud af det: Tag og vinduer er støbt i et stykke og vognsider og vognbund i et andet. Så ved at vride lidt i side og vinduer, kan man hive de to stykker fra hinanden med den rette kombination af vold og forsigtighed. Ingen andre redskaber end fingrene:
Så kan jeg måske få sat slæbesko på og lys i.
19. april
Flere JMRI forbedringer:
1. Den meddelelse, der vises i det vindue, der indeholder listen af warrants, når toget kører, har jeg gjort specifik og relevant for SCWarrants.
2. Editering af TimeToPlatform er nu gjort virkbar.
Desuden fik jeg pushet de seneste rettelser til JMRI på Github, så de kan komme med i næste release.
22. april
Forsøgte mig med 3 tog i automatisk drift. Og det gik galt. Denne gang fordi blok 11 meldte UNOCCUPIED, selvom der var et tog i blokken. Efter 375 ms meldte den igen OCCUPIED. Eftersom debounce timerne er sat til 50 / 200 ms, så må den have været “ude” i over et halvt sekund.
Jeg tror jeg vil forsøge med 25 / 1200 ms på alle blokke. For der skal reageres rimeligt prompte på et tog, der er kommet ind i en ny blok, mens det ingen hast har med at deallokere den blok, der er forladt. Måske lige med undtagelse af når det skal afgøres at hele toget er inde i destinationsblokken. Men det må komme an på nogle forsøg.