Ovestap van iTrain naar Rocrail Wie had gedacht dat er toch nog een aardig lang verhaaltje zou komen bij dit onderwerp. Maar ik wil je graag meenemen in mijn ontdekkingsreis langs de randen van de mogelijkheden van de besturingssoftware.
Ik realiseer me ook wel dat ik ver voorbij de lijntjes kleur als het gaat om de toepassing, maar ach, zolang het kan en doet wat moet doen, leuk toch?
En wie weet zit er iets leerzaams is, wat voor jou dan weer bruikbaar is.
En voor de goede orde: ik zet hier iTrain en RocRail niet tegenover elkaar om elkaar uit te spelen of - erger - te veroordelen, maar om te duiden waarom ik de overstap gemaakt heb en er erg tevreden over ben, ondanks dat ik dus mijn geld voor de iTrain licentie nu 'ongebruikt' laat.
1.2. Waarom de overstapNog even de achtergrond, hoe zat het ook al weer.
Ik heb een loc lift, met daarin 30 opstelblokken voor loc's. In eerste instantie aangestuurd met Koploper, met daarbij gebruikmakend van Dynamische Blokken per opstelblok loc's met verschillende lengte optimaal op te kunnen stellen. Dat zou betekenen bij een maximale vulgraad zo'n 60 loc's met hun sleep in depot, in de praktijk echter nooit een vulling die boven de 70% ligt, want ook de modelbouwwereld is niet de ideale wereld als het gaat om lengte optimalisatie.
Koploper kent niet zoiets als 'loc lift' als object, net zomin als rolbrug, maar met wat trucjes viel de boel toch goed te automatiseren.
Vanwege deze en overige (grafische) beperkingen, had ik - zeker toen de aankondiging kwam dat iTrain een lift zou ondersteunen - al een scherp oog op iTrain en met de komst van versie 5 daarvan ben ik overgestapt. Enfin, dat geheel staat hierboven al beschreven.
Ik kreeg het snel aan de praat, maar... Het is gewoonweg niet ontworpen om per blok in de lift meer dan 1 trein te kunnen plaatsen. Ook met wat navraag werk, bleek er geen oplossing denkbaar, tenzij je steeds handmatig dingen doet. Maar ja, dat was nou net niet de bedoeling.
Ook bleek het niet mogelijk om data op de een of andere manier op te kunnen halen, dus het aansturen van station displays etc. dat zit er gewoon (nog) niet in.
Ik ben wat om me heen gaan kijken en kwam toen op RocRail uit. En na een leercurve kan ik niet anders stellen dan dat het me past als een warme jas. De mate van ontsluitbaarheid via bv MQTT en zaken als 'leren remmen' op een manier zoals Koploper dat doet, spreken me erg aan. Ook het feit dat het grafisch er goed uit ziet (maar wel minder mooi dan iTrain) maar nog steeds schaalbaar is, zonder rafelig te worden, helpt enorm. Ook de mogelijkheid van de client server en ondersteuning op meerdere platforms (wat iTrain ook heeft) dat is super.
1.3. De eerste stappenUiteraard eerst proefbaantje gemaakt om zo de leercurve te doorlopen die bij een overstap horen. Je moet altijd weer even leren hoe de ontwerper het bedoeld heeft en als gebruiker moet je even de 'ballast' van hoe je het gewend bent loslaten. En dat leer je vooral door het te doen en eenvoudig te beginnen. Dus ovaaltje met inhaalspoor: als je die goed onder de knie hebt en snapt wat er gebeurt, dan ligt de wereld aan je voeten. En vergeet vooral de YouTube filmpjes van Albert niet, die zijn goud waard..
1.4. De loclift implementatieRocrail zelf heeft een loc lift (fiddle yard) implementatie, functioneel vergelijkbaar met die van iTrain. Maar die laat ik links liggen, ik ga voor een andere oplossing.
Ik heb de basis genomen zoals ik die ook voor Koploper bedacht had: een wisselstraat richting het blok op de desbetreffende etage. Rocrail voorziet in het vrijgeven van een wisselstraat door middel van een bezetmelder, dus die gebruik ik om vast te stellen of de beweging van de lift is voltooid en daarmee de goede etage voor staat. So far so good.
Meer loc's per opstelspoor Rocrail kent zgn. opstel blokken, met daarbij een aantal op te geven secties. En in iedere sectie kan dan een loc staan, mits hij qua lengte past. Is hij langer dan de opgegeven sectielengte, dan houdt hij ook de vorige sectie vast. Daarmee voorkom je dan kop staart botsingen. Dat is een prima oplossing. Maar het betekent wel per sectie een bezetmelder en daarmee een ingrijpende verbouwing in de lift (alle rails er weer uit, aanbrengen van detectie etc.). Dus maar even een nachtje of wat over geslapen welke keuze ik hier ging maken..
Bijkomende uitdagingenOp zich een prachtig gegeven dat er per sectie een loc kan komen te staan. En als ik mijn 220 CM beschikbare ruimte opknip in secties van ca. 40 CM kan ik heel wat loc's kwijt, zelfs veel meer dan twee. Maar... Het is een lift en dat suggereert dat deze omhoog en naar beneden moet gaan. En vooral niet te snel naar beneden omdat het gewicht van de loc's de bouten uit het plafond trekt.. Iets wat berekend is op 42 loc's + aanhang (70% van de vulgraad van maximaal 60 loc's) plotseling vullen met mogelijk 150 loc's (hoewel ik er uiteraard niet zoveel heb) leidt tot een reeel risico van overbelasting van de liftconstructie. Maar er is hoop: lang leve Rocrail..
ScriptsIn Rocrail kan je script koppelen aan een bezetmelder. Een script is een stukje xml dat een klein stukje code uitvoert en op grond daarvan een actie kan doen (lamp aan, of uit etc.).
Het geinige in Rocrail is dat bij de attributen van een trein(stel) ook het gewicht opgegeven kan worden. En wat ik nu dus doe, als er een trein de lift uitrijdt en deze een bezetmelder activeert en daarmee het script, dan tel ik in dat script het gewicht op van alle loc's die in de opstelblokken staan. Is het boven de kritische waarde, dan gaan de aanrijdblokken van de lift 'op slot' en komt er geen loc meer bij, ondanks dat er fysiek ruimte is.
Dynamische blokkenDynamische blokken maakt Koploper nog steeds uniek en in geen enkel pakket dat ik ken is er een dergelijke implementatie. En ook in Rocrail zal je in de index tevergeefs zoeken op dit begrip. Maar toch kan het! Niet helemaal zoals in Koploper, maar toch wel behoorlijk close. Ook hier zoek ik wel weer wat de randen op, maar no guts, no glory, tenslotte. Niet helemaal wil zeggen: Nee, de loc rijdt niet terug op de laatste bezetmelder (maar hoeft ook niet, maar daarmee is er geen gemeenschappelijke bezetmelder op de eindmelder. Het gaat buiten de scope van dit stukje om het helemaal te beschrijven hoe het werkt en hoe je het implementeert, maar mocht er interesse zijn, laat maar even weten.
1.5. Hoe het uiteindelijk geworden isIk heb gekozen voor een tussenvorm: een deel van de sporen heb ik fysiek aangepast en voorzien van extra bezetmelders. Andere sporen heb ik conform de aanpak met dynamische blokken met maar 2 bezetmelders uitgerust. Eigenlijk moet ik hier zeggen: met 1 melder uitgerust, want de binnenkomst melder ligt voor de lift en wordt - conform Dynamische Blokken - als gemeenschappelijke enter melder gebruikt. Voor mij is het dan goed genoeg zo: 42 dynamische blokken en 45 individuele blokken (9 sporen, met ieder 5 secties).
Hier dan een plaatje met hoe dit deel er nu uitziet.

Zoveel mogelijk staan er in het blok of de sectie van het blok de afbeelding van de desbetreffende loc.
In het kader, links van de 2 groene puntjes, staat het gewicht wat op dit moment gemeten wordt, in grammen. Dit is puur ter indicatie, het sluiten van de blokken 90 en 100 rechts onder (daar waar de lift wordt aangereden) wordt automatisch geopend of gesloten, al naar gelang het overschrijden van de kritische waarde.
1.6. ConclusieIk ben erg tevreden over Rocrail. Geen moment spijt gehad van de overstap, maar ook niet van - wat achteraf bleek - het experiment met iTrain. Veel geleerd, daar gaat het om.
Ik kan nog veel meer vertellen over Rocrail, ben er zo door de tijd heen aardig in thuis geraakt. Ook veel dingen over het vallen en opstaan. Maar ook over de mogelijkheden om het te ontsluiten door middel van bv MQTT vind ik een erg mooie en handige toepassing.
Natuurlijk realiseer ik me ook dat dit wat ik hier doe geen 13 in een dozijn is, sterker nog: een tikkie nerdy is. Maar Rocrail helpt me enorm om invulling te geven aan wat ik graag wil en voor ogen heb: probleemloos automatisch rijden incl. het volledig en veilig gebruik van mijn loc lift.
Groet,
Leendert