donderdag 2 november 2023

Automatisch rijden(7), snelheden en afstanden

 Locs rijden nu met de laatste versie van WMapp automatisch routes. Nog heel veel fouten onderweg, verkeerde afslagen en deadlocks bij meerdere locs, maar voor een eenvoudig baanontwerp werkt het. 

Natuurlijk moeten de locs langzaam beginnen met rijden en op tijd afremmen om langzaam aan te komen in het volgende station. Zeker niet abrupt starten en stoppen. Al snel ga je dan denken aan snelheid en afstanden op een of andere manier meten. En een heel circus optuigen om deze waardes te gebruiken om versnellingen en afremmen te berekenen en deze waardes opslaan voor vervolgsessies. Veel treinenprogrammaas gebruiken dit principe. 

De snelheid per snelheidstap nauwkeurig bepalen met bv. mijn SpeedMeter arduino project of met een ander een hulpprogramma of een functie in het treinenprogramma. Deze gevonden waardes daarna in het programma ingeven. De afstanden tussen de meldpunten kunnen dan door het programma worden berekend. 

Maar goed bekeken, de lengtes van de trajecten zijn natuurlijk ook niet 'op schaal'.  Een wisselstraat in het echt bij grootspoor met een overall lengte van een kilometer is op H0 altijd nog een metertje of 9, en zoveel ruimte hebben we meestal niet op zolder. Dus snelheden op schaal resulteerd in treinen die veel te snel rijden. De snelheden instellen op dat het er gewoon zo realistisch als mogelijk uitziet is de praktijk.

Zeker hebben programma's als koploper en Itrain bewezen dat het op deze manier wel perfect kan werken. Maar kan het niet simpeler?

De hele reden waarom ik WMapp aan het maken ben is, afgezien van het feit dat het gewoon hartstikke leuk is om te doen en dat je apetrots bent op jezelf als het überhaupt lukt, dat het eenvoudig moet worden, en dat meten van snelheden en afstanden is zo een gedoe.  Ik wil gewoon een baan plan tekenen, loc op de rails en op start drukken en de rest moet vanzelf gaan. 

Dus wat heb ik bedacht. WMapp werkt met PenDelDCC als centrale. (Of met een door jezelf te maken USB>DCC interface). Geen multiprotocol centrale, alleen DCC en alleen 28 snelheidsstappen. Zeker kun je met CV instellingen curves maken in de relaties tussen deze 28 stappen. Maar, we houden het eenvoudig, in WMapp nemen we de verschillende snelheidsstappen alsof ze volledig lineair oplopen. 

In WMapp kun je voor een loc in het locvenster een max, med en min snelheidsstap instellen. Max de maximale snelheidsstap waarin de loc mag rijden, komt voor als een loc een route, traject rijdt en het opvolgende traject, route is al bepaald en gereserveerd. De loc gaat dan niet vertragen  en stoppen  maar rijd op volle snelheid het volgende traject in. Min is de minimale snelheidsstap die de loc kan rijden, dit wordt dus eigenlijk de eerste snelheidsstap. Gebruikt vooral in het laatste stukje van een traject wachtend tot de melder actief wordt en de loc stopt. Med, medium of gemiddeld. Is de lengte van een route, traject bepaald, waarover later meer, dan rijdt de loc in snelheidsstap med +2 extra stappen tot het punt waar het afremmen moet beginnen. Is de lengte van het traject nog niet bepaald dan rijdt de loc in de snelheidsstap med -2 stappen totdat de melder van het station waar de loc naar  op weg is actief wordt en stopt de loc. 

Het automatische rijden wordt aangestuurd door een klok. 2x Per seconde wordt gekeken of er iets aan het auto-rijden van een loc moet veranderen.  Als voorbeeld stoppen als de loc het doel heeft bereikt, of sneller of langzamer gaan rijden als dat mag of moet. Bij begin van een traject wordt een variabele die de lengte van het te rijden traject voorsteld op nul gezet. Zolang de loc rijdt, en dus nog niet het eindstation van dit traject heeft bereikt, wordt deze waarde op iedere klik van de klok, 2x per seconde dus, verhoogd met de snelheidsstap waar de loc dan in rijdt. Bij het bereiken van het eindstation wordt deze waarde als de lengte/snelheid van het zojuist gereden traject opgeslagen. De rijrichting wordt hierin meegenomen, een traject heeft voor iedere loc twee waardes vooruit en achteruit rijdend. Wordt  hetzelfde traject later weer een keer gereden dan wordt de nieuwe waarde met de eerder gemeten waarde gemiddeld en dit wordt dan als de nieuwe lengte/snelheid waarde voor deze loc in deze richting rijdend onthouden.

Lengte/snelheid. Stel een gemeten waarde is 112. In snelheidsstap 28 rijdend is de loc dan 4 seconde onderweg op dit traject. Rijdend in snelheidsstap 1 duurt deze rit dan 112 seconden. In snelheidstap 8 112/8=14 seconden. De snelheid van de loc wisseld voortdurend en het gereden deel van het traject wordt in mindering gebracht op de totale afstand/snelheid. Op ieder moment is dus bekend hoever er nog moet worden gereden op dit traject. Van de huidige snelheid kan worden berekend hoeveel van deze afstand/snelheid nodig is om de loc met de minimale snelheid op het station te laten aankomen, dus wanneer het afremmen moet beginnen. 

En dit werkt dus. Al geïmplementeerd in WMapp. Versnellen, vertragen en stoppen wordt volledig automatisch bepaald. Wat je als gebruiker nog wel moet doen is de snelheden max, med en min instellen zodanig dat het er allemaal gewoon goed en realistisch uitziet.

Deze versie heb ik gepubliceerd en kun je downloaden van de website. Zoals vermeld zit nog vol met fouten, bugmeldingen naar mij hebben nu nog geen nut, er wordt aan gewerkt. Wel ben ik geïnteresseerd in hoe het installatie proces is verlopen of het überhaupt is gelukt, een mailtje hierover wordt op prijs gesteld.

Ik ga nu beginnen aan een 'afstand' bediening op de baan, om accessoires te kunnen schakelen zonder dat ik achter ' de computer' hoef te zitten. Ja ik weet er zijn prachtige digitale oplossingen voor als loconet of allerlei WiFi gedoe met apps, maar ook hier geldt ik wil iets eenvoudigs..

Wordt vervolgt....






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...