dinsdag 24 oktober 2023

Automatisch rijden(6), Richting

De richting waarin een loc, trein gaat rijden. Lijkt eenvoudig, vooruit of achteruit. Maar een loc kan met zijn neus naar rechts staan of met zijn neus naar links. Met een baanplan in essentie een heen-en-weer nog steeds geen probleem, voor de start geef je de rijrichting en de stand van de loc op de rails aan.

Maar een baanplan met ovaal, rondgang of keerlus dan is een links/rechts aanduiding onvoldoende. Voor een rondgang kan dit nogwel, als we de richting niet links/rechts maar vanuit het midden bezien van het ovaal en dan denken als 'neus met de klok mee' of 'neus tegen de klok in'. Dit is zoals het in PenDelDCC is gedaan. 

Maar een keerlus dat gaat niet. Heeft de loc de keerlus gereden dan staat het op dezelfde rails in de zelfde rijrichting maar gekeerd op de rails en worden vervolg trajecten in de verkeerde richting gezocht.

De oplossing is gevonden in het bepalen van de trajecten, of routes. Een traject brengt de trein, loc van een beginmelder of station naar een doelmelder. Traject bestaat uit een rits railstukken aan elkaar, ieder railstuk in het traject heeft twee aansluitingen. Afhankelijk van de richting waarin dit traject wordt gereden, heeft een railstuk een aansluiting waar de trein erop komt en een aansluiting waar de trein het railstuk weer verlaat. Bepaald wordt de beginaansluiting van het hele traject en de eindeaansluiting. 

Van beide aansluitingen wordt bepaald of ze rechts of links ten opzichte van het centrum van het baanplan zitten. Zit een van de aansluitingen aan de ene kant en de andere aan de andere kant, dan wordt de stand van de loc door het rijden van dit traject niet gekeerd, zitten beide aansluitingen aan  dezelfde kant dan zal de loc na het rijden van dit traject gekeerd zijn.

Door dit mee te nemen in het bepalen van het volgende te rijden traject worden de juiste vervolgtraject gevonden in de goede rijrichting.

Mee eens, een ingewikkeld verhaal, inmiddels geïmplementeerd in WMapp en werkt perfect.

Een ander issue is het bepalen wanneer een trein het eindstation of doelmelder hoeft  bereikt.  Arduino project MelDers stuurt het bezet worden of weer vrij komen van een melder over de USB aan WMapp.

Periodiek testen we tijdens het rijden van het traject of de doel melder bezet is en is de loc op einde traject aangekomen. Maar...dat werkte niet goed, als de trein snel rijdt is de periode dat de melder actief is om meerdere redenen te kort. 

Oplossing is een lijst met melders. Als een route aan een loc wordt toegewezen dan wordt de doelmelder in deze lijst opgenomen. Wordt een melder actief, dan wordt gekeken of deze melder in de lijst voorkomt en als dat zo is dan wordt aangegeven dat deze bezet, actief is. Deze lijst wordt nu periodiek bekeken door het proces van het rijden van een loc op dit traject. ziet deze dat de melder bezet is, dus einde traject, onder nog veel meer wordt dan deze melder gewist uit deze lijst. Op deze manier onderbreekt het actief worden van de doelmelder het proces van rijden van een traject in plaats van dat af en toe wordt gekeken of de loc al in het doelstation is aangekomen. En dit werkt zonder fouten bij alle snelheden.

Wordt vervolgd....



Geen opmerkingen:

Een reactie posten

SchakelBord

Tijdje niet gepost. Werk aan WMapp staat even stil omdat ik aan andere projecten momenteel werk. Een robot schip, werknaam RoBoot waarmee st...