31.JUL.2013/HvM;
11. Slim gebruik maken van Uitgaande Berichtenbuffer (“UBER”)
Dit onderwerp behandel ik ook in de cursussen ‘Toolkit-CCOL’.
Voor meer informatie kunt u mij telefonisch of via het reactieformulier bereiken.
De CVN-interfacedefinitie is voorzien van een ingaande en een uitgaande berichtenbuffer. Deze buffers zijn primair bedoeld voor de communicatie tussen de gebruiker/bediener (u dus) en de CCOL-verkeersregelapplicatie (de “kruispuntregeling”).
In CCOL is de commandoparser verantwoordelijk voor de communicatie en voor het opvragen en eventueel wijzigen van allerlei instellingen van de regelapplicatie (“AP”; tijden, softwareschakelaars, parameters, …), overigens níet van de procesbesturing (“PB”; SWICO, …).
Daarnaast is de UBER heel goed bruikbaar om andere informatie uit te voeren, zoals de resultaten van voertuigtellingen of tussenberekeningen van ingewikkelde rekentechnische processen (bijvoorbeeld van doseeralgoritmes).
Denk er echter aan dat er wel ‘ontvangende apparatuur’ op de RS232-poort of anderszins aanwezig moet zijn, anders gaat de output van de UBER verloren.
De informatie die op deze manier naar buiten wordt gebracht kan een enorme omvang aannemen. Toch is de output naar de UBER niet de belangrijkste taak van een verkeersregelautomaat. Het regelen van het verkeer blijft natuurlijk prioriteit nummer één. De output naar de UBER kan dusdanig omvangrijk worden dat de verkeersregelautomaat het niet meer allemaal binnen de ± 0‚1 seconde kan afhandelen (zie ook het CCOL-onderwerp 10 rondjes per seconde). We spreken dan van een “rekentijdprobleem”. Wanneer een rekentijdprobleem optreedt liggen er heel vervelende consequenties op de loer, zoals GUS-WUS-fouten. En vergist u zich er niet in hoe snel dit al kan voorkomen zodra u de UBER voor extra informatie gaat gebruiken!
In CCOL zijn diverse voorzieningen aanwezig om dit proces, hoe omvangrijk ook, in goede banen te leiden. Onderstaand ziet u een voorbeeld hoe u een geellichtrijderstelling zou kunnen maken, waarvan de output op commando naar de UBER wordt gestuurd (door met de commandoparser schakelaar sch_output_geeltelling
op 1
te zetten). Daarbij wordt per systeemronde de informatie van slechts één fasecyclus naar de UBER gestuurd. Zo zal de applicatie nooit in rekentijdproblemen komen en kunt u deze telling zelfs uitlezen tijdens de toestand REGELEN.
U dient deze code op te nemen in de systeemfunctie system_application()
(zie het CCOL-onderwerp Slim gebruik functie system_application(…) ).
Om de essentiële programmacode duidelijk herkenbaar te houden gaat het onderstaande voorbeeld er gemakshalve van uit dat er alleen voertuigsignaalgroepen zijn, dat elke signaalgroep alleen een koplus heeft en dat er voor elke fasecyclus een geheugenelement is aangemaakt, die alle dezelfde volgorde hebben als de fasecycli (te regelen in het CCOL-sourcebestand *****SYS.H).
|
Dit onderwerp behandel ik ook in de cursussen ‘Toolkit-CCOL’.
Voor meer informatie kunt u mij telefonisch of via het reactieformulier bereiken.