Software

De software, die ik gebruikt heb voor de besturing heeft iedereen waarschijnlijk al in huis: MS Office. Hiervan gebruik ik Excel en Visual Basic, omdat de laatste geintegreerd is met Excel. Visual Basic is de taal, waarin de Excel macro's geschreven worden. Je hebt daarmee toegang tot alle mogelijkheden die Excel biedt. Het eigenlijke besturingsprogramma is dus Excel. Er zijn wel enige vaardigheden nodig om de macro's te maken en om te gaan met besturings elementen, zoals knoppen, tekenobjecten, e.d.
Daarnaast maak ik gebruik van de printerpoort (LPT1) van de PC om te communiceren met de hardware. Hiervoor heb je een plug-in module voor Visual Basic nodig, die vrij te downloaden is van het internet: IO.DLL. Lukt het niet, dan kan ik die per mail toesturen. Let op: deze plug-in werkt bij mij onder Windows XP goed, maar of dit ook bij latere Windows versies het geval is, durf ik niet te zeggen.

Op het scherm ziet mijn hoofdpagina er als volgt uit:

 

Het is mogelijk om handmatig te rijden, of om een van-naar traject te rijden of om een complete dienstregeling te rijden. Dit laatste is eventueel instelbaar met een bepaalde stoptijd aan het eind van de dienstregeling (per seconde instelbaar) zodat de trein een traject telkens opnieuw start totdat je de dienstregeling stopt.

De witte, groene en oranje hokjes stellen een baanbaknummer voor.

De wisselnummers staan direct naast de wissels.

Er zijn 3 speelmodi:

  • handmatig rijden zonder beveiliging via tabblad Hoofdscherm of tabblad TEST. Dit laatste is eigenlijk bedoeld voor testdoeleinden of om fouten te herstellen
  • van-naar rijden, b.v. van BV2 naar BV32. Dit gaat via BV3. De trein moet dan op BV2 staan dat voor de trein gereserveerd is. De beveiliging is actief. Klik je nu op BV32, dan worden ook BV3 en BV32 gereserveerd. Als 1 van deze 2 baanvakken al bezet is door een andere trein, dan zal jouw trein stoppen en het bezette baanvak(sein) wordt rood. De locsnelheid, wissels en seinen worden automatisch geregeld.
  • volgens een dienstregeling rijden. Er kunnen meerdere treinen gelijktijdig rijden met automatische beveiliging, samen met 1 handbediende trein. Hiertoe moet een achtergrond programma gestart worden met de knop RUN. Beëindig dit met de knop STOP. De treinen moeten dan wel eerst stilgezet zijn.


Het Excel programma heeft meerdere tabbladen, die ik nu zal bespreken:

 

  • Tabblad DA
    Dit is een belangrijk blad met basisgegevens voor het sporenplan. Hierin worden alle rijmongelijkheden uitgewerkt, om te bepalen wat er moet gebeuren als een trein van baanvak A naar baanvak B rijdt, zoals het zetten van de wissels, de gewenste rijsnelheid, welke baanvakken gecontroleerd moeten worden voordat ze bereden mogen worden, welke data verstuurd moet worden van de PC naar de hardware, en welke terugmelders uitgelezen moeten worden. Dit is alleen goed te doen, als je de baan tevoren in logische baanvakken hebt ingedeeld en de wissels en baanvakken hebt genummerd. Dit heeft alles te maken met de veiligheid die ten doel heeft om botsingen, ontsporingen en ongewenst doorrijden te voorkomen. Ik raad aan om dit stuk grondig en geduldig te doen, om te voorkomen, dat je dingen over het hoofd ziet. Het betekent ook dat je de nummeringen op papier moet hebben voordat je begint. Heb je dit karwei eenmaal geklaard, dan kun je de knop onderaan het tabblad 'DA' gebruiken om automatisch het blad 'DA-Lines' in te vullen, dat de te versturen data en adressen bevat om te rijden van baanvak 'A' naar baanvak 'B'. De codes op dit blad hebben een vast formaat:

    • wissels: 4 posities, hoofdletters te beginnen met 'W', daarna het wisselnummer (2 posities) en tenslotte 'L' of 'R' voor links of rechts
      Voorbeeld: 'W03R' = wissel 3 rechtsaf.
    • baanvakken: 5 posities, hoofdletters te beginnen met 'B', daarna het baanvaknummer (2 posities), dan 'V' (vooruit) of 'A' (achteruit) en tenslotte 'R' (rood sein),'O' (oranje sein),'G' (groen sein) of 'L' (oranje+lichtbak)
      Voorbeeld: 'B12AG' = baanvak 12, achteruit, groen licht.
    • kruisingen: 5 posities, hoofdletters te beginnen met 'K', daarna het kruisingnummer (2 posities), dan het aan te koppelen baanvaknummer (2 posities)
      Voorbeeld: 'K1713' = kruising baanvak 17 koppelen aan baanvak 13.
    • opstelsporen: 3 posities, hoofdletters, te beginnen met 'O', daarna het opstelspoornummer (2 posities)
      Voorbeeld: 'O35' = opstelbaanvak 35 aanzetten.
      Merk op dat de snelheid op de opstelsporen geregeld wordt op het hoofdscherm met 1 BVB, in mijn geval BVB 25.
      Merk ook op dat er nergens snelheidsinformatie wordt opgegeven. Dit gebeurt nl. op het tabblad 'Parameters': per baanvak is 1 basissnelheid nodig.

Is het gehele blad ingevuld, dan kan knop 'Maak DA-regels' aangeklikt worden. Zorg wel eerst dat er een leeg blad met de naam 'DA-Lines' is en een leeg blad met de naam 'Ref'. Blad DA-Lines wordt dan ingevuld met de vereiste data en adressen die overeenkomen met de gegeven instructies en in blad 'Ref' wordt een verwijzing gemaakt naar de regel in 'DA'. Tip: vul op iedere regel eerst de wissels in, dan de baanvakken, daarna de kruisingen en tenslotte de opstelsporen. De kolommen zijn belangrijk:

kolom A = het 'van' baanvak
kolom B = het 'naar' baanvak
kolom C = het eerste 'via' baanvak
kolom D =het tweede 'via' baanvak
kolommen E..Q = opdrachtcodes voor wissels, baanvakken, kruisingen en opstelsporen
kolom S = V(ooruit) of A(chteruit) op dit baanvak

kolom T= de standaard snelheidstrap tussen (0 en 31)

    Op regel 160 lezen we b.v. we gaan van baanvak 32 naar baanvak 22 via baanvak 21 en via baanvak 3.
    Vervolgens worden 4 wissels gezet en 4 baanvakken ingesteld.
    Tabblad DA-Lines ziet er dan als volgt uit:

    Kijken we hier eveneens op regel 160, dan zien we getalparen van telkens data en een adres:
    Kolom A is het 'van' baanvak
    Kolom B is het 'naar' baanvak
    Kolom C is het aantal te verzenden getallen
    Kolom E en verder zijn de getalparen, dus de eerste data=10 en adres=19, de tweede data=0 en het tweede adres=16, enz.
    Het Excel programma vindt de juiste regel terug op het tabblad 'Ref'. Dit ziet er dan zo uit:

    We gingen van baanvak 32 naar baanvak 22. Zoek in het blad regel 32 en kolom 22 (=kolom V).
    Daar vinden we het getal 160.
    Het programma zoekt dan op tabblad DA-Lines naar regel 160 en begint daar vanaf kolom E dus 16 getallen te versturen.
    Zo werkt dat. ;)

    • MEMO
      Ook heb ik als geheugensteuntje een blad gemaakt, waarin de betekenis van data en adressen wordt aangegeven. Dit is onmisbaar, omdat dit de verbinding geeft naar de hardware. Dus ook deze lijsten moeten eerst geheel uitgewerkt worden om bij debuggen op tabblad Log voor de verzonden opdrachten te kunnen zien wat een combinatie van adres en data betekent. Hieronder zie je een voorbeeld:

      Kolom A bevat de te vergeven adressen, die je vrij kan kiezen, mits ze gedecodeerd worden in de adresdecoder AD.
      Kolom B geeft aan over welke unit het gaat.
      Kolommen C en D geven aanvullende informatie.
      Kolom E geeft de omschrijvingen voor de adressen als de data=0
      Kolom F geeft de omschrijvingen voor de adressen als de data=1
      ..
      Kolom T geeft de omschrijvingen voor de adressen als de data=15
      Zo zie je op regel 20, kolom F dat het adres = 17 en dat het gaat om baanvak 18. Kolom F staat voor data=1 of 17, dus snelheidstrap 1 of 17, afhankelijk van adres1 van de BVB.
      Gebruik je Tabblad 'Log' voor debugging doeleinden, dan vind je dit na klikken op de knop 'Interpreteer' als volgt terug op tabblad 'Log':

      • Tabblad KiesRoutes

      Dit tabblad geeft de mogelijkheid om een rijroute langs diverse baanvakken samen te stellen. Er zijn maximaal 19 posities per route. Een positie kan ingenomen worden door een baanvak of een wachttijd. Baanvakken zijn positieve getallen; wachttijden zijn negatieve getallen. Om een route te rijden moet het achtergrond programma via de knop 'Start route' op het hoofdscherm geactiveerd worden. Er zijn 3 mogelijkheden:

      Rijd een éénmalige route van een baanvak en weer terug naar dat baanvak, zoals 11, 1, 4, 6, 8, 11, 11
      De trein vertrekt van baaanvak 11 en rijdt vervolgens via 1, 4, 6 en 8 terug naar 11 en stopt daar. Dit stoppen wordt aangegeven door de dubbele 11 aan het eind van de route.
      Let op: de dubbele 11 is nodig om de trein te laten stoppen!

       

      Rijd een éénmalige route naar een ander baanvak, zoals 11, 1, 4, 6, 8, 13, 13
      De trein vertrekt van baanvak 11 en gaat via 2, 4, 6, en 8 naar 13 en stopt daar.

       

      Rijd een éénmalige route naar hetzelfde baanvak, zoals 11, 1, 4, 6, 8, 11
      De trein vertrekt van baanvak 11 en gaat via 2, 4, 6, en 8 terug naar 11 en atart de cyclus opnieuw.

       

      Rijd continu een route, zoals 11, 1, 4, 6, 8, 11, -20
      De trein vertrekt van baanvak 11 en gaat via 1, 4, 6 en 8 terug naar 11 en stopt daar 20 seconden.
      Na die 20 seconden vertrekt de trein opnieuw van 11 om de route opnieuw te rijden.

       

      Maak een pendelroute, zoals 18, 19, 20 -10, 19, 18, -10
      De trein vertrekt van baanvak 18 en gaat via 19 naar 20, waar hij 10 sec. stopt om daarna teug te gaan via 19 naar 18 en daar 10 sec. stopt. De cyclus herhaalt zich eindeloos.

       

      • Hoe maak je een route?
        • Kies het tabblad 'KiesRoute'.
        • Wis eerst de bestaande route, die zichtbaar is in de lijst rechts-boven door op de knop 'Verwijder route' te klikken.
        • Kies in de linker lijst het vertrek baanvak, b.v. 11
        • Klik op de knop 'Baanvak aan route toevoegen'. Rechts-boven verschijnt nu de 11.
        • Kies meer baanvakken en voeg die toe, b.v. 1, 4, en 6
        • Je wilt de trein daat permanent parkeren, dus voeg nog een 6 toe. Je lijst ziet er nu zo uit: 11, 1, 4, 6, 6.
        • Ben je tevreden, dan kies je rechts-onder in Routes een vrije route of een route die je wil vervangen.
        • Klik dan op 'Route opslaan'. Er verschijnt een pop-up venster waarin je een nieuwe naam voor je route kan opgeven.
        • Klik op OK. je route wordt nu bewaard op het tabblad 'Routes'. Om deze route te gaan rijden ga je terug naar het Hoofdscherm.
        • Kies daar in de kolom rechts-boven een locomotief uit de loc lijst (die je overigens zelf moet invullen, maximaal 19 stuks.
        • Klik dan op de knop 'Kies Route'. Je komt dan op tabblad 'KiesRoute'.
        • Klik eerst 'Verwijder route' en dan onder Routes jouw route.
        • Klik op 'Route laden' en 'Start Route'. Je gaat terug naar het Hoofdscherm en ziet in het midden onder Routes dat jouw route een gele achtergrond gekregen heeft.
        • Klik dan op 'Start route' en jouw trein zal gaan rijden volgens jouw route.

       

      • Routes
        Het tabblad Routes bevat de gegevens die nodig zijn om een route te rijden met 1 of meerdere treinen. Regel 1, kolom A bevat het nummer van de gekozen route in de keuzelijst Klik voor een voorbeeld hier.
      • Log
        Het komt soms voor dat er gekke dingen gebeuren. Dan is het handig om een mogelijkheid te hebben om te zien welke data en adressen er achtereenvolgens gedurende een bepaalde periode worden verzonden naar de elektronica. Wanneer je knop START LOGGING van het hoofdscherm  aanklikt, wordt vanaf dat moment alles op het tabblad Log gekopiëerd. Denk je genoeg gegevens te hebben, dan klik je knop Stop Logging. Indien verantwoord, mag het programma doordraaien of moet anders gestopt worden en je kunt tabblad Log bekijken. Klik in dit blad op de knop 'interpreteer', zodat naast de data- en adresgegevens de uitleg getoond wordt, zoals je die beschreven hebt op tabblad MEMO. Klik voor een voorbeeld hier.


      Tenslotte zijn er nog veel macro's in Visual Basic te maken om alles vlekkeloos te laten werken.
      Het gaat te ver om dit allemaal uit te leggen, maar voor de liefhebbers kan ik het hele programma toesturen, zodat je alle macro´s zelf kunt bekijken of eventueel aanpassen. De source code is vrij en mag vrij verspreid of aangepast worden.