Zal ik een poging doen om het onder de pet te krijgen?
En voor andere geïnteresseerden natuurlijk ook.
De basis vormt het onderdeel logische acties in Koploper.
Bij een logische actie wordt iets gesteld, waar maar twee uitkomsten mogelijk zijn, de stelling is waar of niet waar.
Die logische acties zijn in koploper in drie varianten te onderscheiden:
1. Logische acties waar iets op de baan gecontroleerd wordt, bijvoorbeeld is blok x bezet? Indien ja, dan is de actie waar, indien nee, dan is de actie niet waar. Continu wordt daarbij gekeken naar de baan, zodra er iets verandert in blok x (was vrij en wordt bezet of andersom) dan verandert de uitkomst van de logische actie ook.
2. Logische acties waar niet iets op de baan wordt gecontroleerd, niet direct tenminste. Maar je kunt wel aangeven dat zo'n actie waar of niet waar is. Het is een beetje lastig uit te leggen en ze lijken op het eerste gezicht vrij nutteloos, maar zijn vaak cruciaal om iets werkend te krijgen.
3. AND en OR vergelijkingen, waarbij je meerdere logische acties als input gebruikt. Bij de AND is de uitkomst waar als al die input logische acties waar zijn, anders is de uitkomst niet waar. En bij de OR moet minimaal een van die input logische acties waar zijn om als uitkomst waar te krijgen. Met AND en OR kun je dus meerdere voorwaarden samenvoegen om een bepaalde uitkomst te krijgen.
Om het ledje uit de vorige post vijf seconde te laten branden en de bediening van de spooraansluiting te beveiligen, heb ik de volgende logische acties gemaakt:
-
bl 1 vrijDeze actie kijkt of blok 1 vrij is, dus geen trein in het blok, ook niet gereserveerd voor een trein en ook niet geclaimd door een trein.
-
bl 1 tt 7,8,9Deze actie kijkt of er een trein van een bepaald treintype in het blok is. De treintypes zijn buurtgoederen, losse loc en rangeren. Reden dat ik hierop controleer is dat een trein die naar de spooraansluiting moet een van die treintypes is. Zou ik die controle niet uitvoeren, zou ik nooit toestemming krijgen de sleutel uit te nemen als de trein voor de spooraansluiting al in blok 1 staat.
-
Gla bl 1 vrij of tt 7,8,9Dit is een OR-actie met de twee hierboven genoemde logische acties als input. Als blok 1 vrij is of als er een trein van een van die treintypes in blok 1 staan, is de actie waar.
-
Gla drukknop aanvraag wisselvrijgaveDeze actie controleert de bezetmelder waar de drukknop op is aangesloten. Druk ik op de knop, is de actie waar, anders niet waar.
-
Gla wisselsleutel uitgenomenDeze actie controleert de bezetmelder waar het slot op is aangesloten. In de stand waar ik de sleutel uit het slot kan halen, drukt de schoot een contact in die voor een bezetmelding zorgt.
-
Gla wachtijd doven LEDDit is zo'n actie van de tweede variant. In een sequens (zie verderop) wordt de uitkomst waar/onwaar bepaald.
-
Gla blokkeer rijden naar bl 1Ook een actie van de tweede variant en ook hier wordt de waarde in een sequens bepaald.
-
Gla LEDHet wordt saai, ook hier wordt de waarde in een sequens bepaald.
-
Gla LED uitDit is een AND-actie die als input de acties
Gla bl 1 vrij of tt 7,8,9 en
Gla wachtijd doven LED.
Hierbij wordt als bijzonderheid naar de geïnverteerde waarde van
Gla wachtijd doven LED gekeken. Dus de actie is waar als
Gla bl 1 vrij of tt 7,8,9 waar is en
Gla wachtijd doven LED niet waar is.
Met logische acties kun je dus dingen doen die waar of niet waar
zijn.
Maar soms wil je juist iets doen als iets waar of niet waar
wordt, dus bij de overgang van waar naar niet waar en andersom.
Dan kun je gebruik maken van sequensen. Een sequens kun je een beetje vergelijken met dominostenen. Je duwt de eerste om, die vervolgens de volgende omduwt. In koploper zijn het alleen geen dominostenen, maar logische acties.
Ik heb hier drie sequensen gebruikt.
De eerste:
Zodra de logische actie
Gla drukknop aanvraag wisselvrijgave waar
wordt gaat de sequens lopen.
Er worden direct drie logische actie op waar gezet:
-
Gla LED moet zorgen dat de led gaat branden.
-
Gla blokkeer rijden naar bl 1 moet zorgen dat er geen trein meer naar blok 1 worden gestuurd.
-
Gla wachtijd doven LED zorgt voor de wachttijd waar de led in elk geval niet mag doven.
Na vijf seconde wordt
Gla wachtijd doven LED weer op niet waar gezet.
Om de led te doven is het niet voldoende dat die wachttijd voorbij is. Er mag ook geen trein meer in blok 1 zijn.
Die check zit in de logische actie
Gla LED uit. Om dan de led echt uit te krijgen is de volgende sequens:
Zodra
Gla LED uit waar
wordt, wordt de logische actie
Gla LED niet waar. Dit moet ervoor zorgen dat de led dooft.
Als de led dooft mag ik dus de sleutel uit het slot halen, maar de blokkade van blok 1 moet nog van kracht blijven tot die sleutel weer terug in het slot is.
Daarvoor zorgt de derde sequens:
Als de logische actie
Gla wisselsleutel uitgenomen niet waar
wordt (en dat kan dus alleen als hij daarvoor waar
was, dus de sleutel uit het slot was) wordt de logische actie
Gla blokkeer rijden naar bl 1 weer niet waar. De blokkade naar blok 1 kan worden opgeheven.
Nu zijn logische acties een heel leuk theoretisch geheel, maar ze doen verder niks.
Dus om de led echt te laten branden en blok 1 echt te blokkeren, zijn er nog twee dingen nodig.
In een variabele route kun je aangeven dat die alleen moet gelden als een logische actie waar is.
In dit geval maak je een variabele route aan waar blok 1 wordt uitgesloten voor alle treinen, maar alleen als de logsiche actie
Gla blokkeer rijden naar bl 1 waar is.
En met een speciale actie kun je een functiedecoder waar de led op is aangesloten, aansturen afhankelijk of
Gla LED waar of niet waar is.
Maar hier leiden zoals vaak meerdere wegen naar Rome. Die led kun je ook met een schakelaar in koploper aansturen, waarbij die schakelaar de uitkomst moet laten zien van
Gla LED.
En bij de speciale acties is er ook een mogelijkheid om treinen niet van blok a naar blok b te laten rijden.
Heel verhaal, maar ik hoop dat het een beetje duidelijk is.
En zoals vaak, zijn er meerdere mogelijkheden om hetzelfde te bereiken. Dit is vast niet de enige mogelijkheid om het voor elkaar te krijgen.
groet, Huub