15.DEC.2011/HvM; 08.JAN.2012/HvM; 15.APR.2012/HvM

 10. Onder- en bovengedrag en hardware detectiefout snel toetsen

Dit onderwerp behandel ik ook in de cursussen ‘Toolkit-CCOL’.
Voor meer informatie kunt u mij telefonisch of via het reactieformulier bereiken.

Van alle onderdelen van een verkeersregelinstallatie storen de detectoren het meest. Dat komt doordat nog steeds de inductieve massadetectielussen het meest worden toegepast en deze in het asfalt gezaagd zijn. Dat asfalt “kruipt” onder invloed van het verkeer. Dat gebeurt met name bij de stopstrepen waar de belasting het hoogst is als gevolg van het vele remmen dat juist bij de stopstreep gebeurt. Het asfalt kan dan misschien wel kruipen, maar de koperdraden van de detectielus zijn niet zo flexibel. Vooral daardoor ontstaan veel detectiestoringen.

Detectiebewaking versus detectiemaatregelen
De detectiefouten leiden tot een minder goed functionerend verkeersregelprogramma. Daarom is het zaak de fouten zo snel mogelijk te herkennen. Dit heet detectiebewaking. Zodra de detectiebewaking een detectiefout heeft herkend, moeten er maatregelen worden genomen. Deze bestaan uit het zo goed mogelijk opvangen van de defecte detectielus door de overige detectielussen anders in te stellen, dit heet detectiemaatregelen. Het verschil tussen detectiebewaking en detectiemaatregelen is erg belangrijk. Afgezien van het opvangen van de functionaliteit door andere detectielussen, is het repareren van de defecte lus natuurlijk de beste remedie.

Herkennen van detectiestoringen
Er zijn grofweg de volgende soorten detectiefouten te onderkennen:

  • Algemene detectiefout, Hardware detectorstoring
    De hardware van de detectie-unit in de regelautomaat test met zeer korte intervallen of de detectielus nog intact is (de koperdraad mag niet gebroken zijn) en de weerstand ten opzichte van aarde niet te laag is (bijvoorbeeld bij een lekkende draadisolatie. Zodra zich zo'n defect voordoet, keurt de procesbesturing direct de lus af en geeft dit aan de applicatie door, door middel van het bit CIF_DET_STORING (= 0x0002) in de buffer CIF_IS[…] (“…” staat voor de index van de betreffende detector). Er is geen apart element in CCOL beschikbaar. Zie onderaan voor een mogelijk alternatief.

  • Bovengedrag
    “Bovengedrag” treedt op zodra een detectielus langer dan een vooraf in te stellen tijdsduur ononderbroken een bezetmelding afgeeft. In dat geval spreekt volgens de CVN-interfacebeschrijving de buffer CIF_IS[…] het bit CIF_BOVENGEDRAG (= 0x0004) en het bit CIF_DET_STORING (= 0x0002) aan, en in CCOL wordt de variabele BG[…] logisch ‘WAAR’.

  • Ondergedrag
    Ondergedrag treedt op zodra een detectielus langer dan een vooraf in te stellen tijdsduur geen enkele bezetmelding afgeeft. In dat geval spreekt volgens de CVN-interfacebeschrijving de buffer CIF_IS[…] het bit CIF_ONDERGEDRAG (= 0x0008) en het bit CIF_DET_STORING (= 0x0002) aan, en in CCOL wordt de variabele OG[…] logisch ‘WAAR’.

  • Fluttergedrag
    Het komt ook voor dat een deffecte detector gaat flutteren (ook wel ‘jutteren’ of ‘flipperen’ genoemd). Dit is het zeer snel opkomen en afvallen van de bezetmelding van de detectielus, ook al is er maar één, of zelfs géén voertuig aanwezig. In dat geval zal de herkenning op boven- en ondergedrag niet werken. Hierom is in CCOL de variabele FL[…] beschikbaar. Deze variabele zal logisch ‘WAAR’ zijn indien er flutter op de detectielus wordt herkend.

  • Plausibiliteitscontrole
    Een bijzondere vorm van detectiebewaking is de plausibiliteitscontrole. Hierbij worden de meldingen van een detectielus functioneel vergeleken met de informatie van andere detectielussen. Er zijn verschillende vormen van plausibiliteitscontrole:
    • De eerste methode is specifiek voor het openbaar vervoer in gebruik. Wanneer bijvoorbeeld een uitmeldlus voor selectieve detectie een melding afgeeft, terwijl de bijbehorende inmeldlus geen inmelding deed, dan kan er sprake zijn van een detectiefout. Wanneer dit vaker optreedt dan een vooraf ingesteld aantal malen, dan wordt de betreffende detectielus gekenmerkt als defect. Het kan uiteraard ook andersom het geval zijn: er treden wel inmeldingen op, maar de bussen melden zich nooit uit. Grote kans dat dan de uitmeldlus defect is.
    • Plausibiliteitscontrole kan ook worden gebruikt bij massadetectielussen, bijvoorbeeld wanneer een koplus normaal functioneert, terwijl de ervoor liggende detectielus geen meldingen afgeeft.
    • Ook kan plausibiliteitscontrole worden ingezet om de verkeersintensiteit af te zetten tegen het historische gemiddelde of de meting van een voorgaand tijdsinterval. Indien de meting teveel afwijkt wordt de detectielus eveneens gekenmerkt als defect.

  • Overspraak
    Er is sprake van ‘overspraak’ indien een detectielus reageert op de aanwezigheid van voertuigen op een naastgelegen detectielus. Dit treedt meestal op bij detectoren die te gevoelig staan ingesteld, of waarvan de frequentie interfereert met die van een andere detector. Ook kan het komen doordat een detectielus te dicht tegen een naastgelegen rijstrook is aangelegd, en dan met name bij vrachtverkeer.
    Softwarematig is deze vorm van detectiefouten (nog?) niet te ondervangen.

Bij zowel het bovengedrag als het ondergedrag veroorzaakt de ingestelde tijdsduur uiteraard ook een vertraging op het herkennen van dit type detectorfout. Het is daarom beter om niet alleen op boven- en/of onder­gedrag te toetsen maar tevens op de hardware detectie­storing.
De bewaking van de detectoren op detectiefouten kan in de applicatie (“AP”) of in de procesbesturing (“PB”) plaats hebben.

Tijdelijk uitschakelen bewaking op ONDERgedrag
Het is niet gebruikelijk om drukknoppen op ondergedrag te bewaken. Het komt namelijk vaak voor dat drukknoppen een etmaal lang niet worden bediend en dat dit een normale situatie is, met name voor drukknoppen op de middenberm van een oversteekplaats over gescheiden rijbanen.
In CCOL is er tevens de mogelijkheid om de bewaking op ondergedrag (tijdelijk) uit te schakelen. Door de CCOL-variabele DBOG logisch ‘ONWAAR’ te maken (statement: DBOG = FALSE; ) zal de timer die de bewaking op ondergedrag bijhoudt niet ophogen. Hiermee kunt u bijvoorbeeld de detectiebewaking van alle detectoren tijdens de nachtelijke uren uitschakelen:

 DBOG = klok_periode(7, 30, 23, 00);     /* periode waarin detectiebewaking op ondergedrag actief is */

Bovenstaande programmaregel onderbrengen in de functie system_application(…).

Let op: voor de herkenning van het ondergedrag houdt CCOL per detector in een timer (TOG_timer[d…]) bij, hoelang de detector inmiddels onbezet is geweest. Het uitzetten van de bewaking op ondergedrag door middel van de variabele DBOG zorgt níet automatisch voor een reset van die actuele waarde. En dus telt de timer voor het ondergedrag een volgende dag weer gewoon verder. Hierdoor kan het eventueel toch kan voorkomen dat een drukknop na verloop van enkele dagen alsnog een foutmelding op ondergedrag afgeeft! Dit kan heel zinvol zijn, maar als u dat niet wenst zult u aanvullende statements moeten programmeren die ook de actuele waarde van de timers resetten:

 /* resetten timers ondergedrag indien bewaking ondergedrag tijdelijk uitgeschakeld: */
  if (!DBOG && CIF_KLOK[CIF_SECONDE]==1 && CIF_KLOK[CIF_TSEC_TELLER]%5==0 ) {
    register count d;
    for (d=0; d<DP_MAX; d++)
      TOG_timer[d] = 0; }

Bovenstaande code onderbrengen in de functie system_application(…).
Indien de DetectieBewaking OnderGedrag is uitgeschakeld, dan wordt de loop met indexvariabele ‘d’ voor alle detectoren en drukknoppen doorlopen en reset de ‘Timer OnderGedrag’. De rood gedrukte code is bedoeld om deze functie niet onnodig vaak aan te roepen (zoals hier geprogrammeerd circa twee keer, aan het begin van elke minuut). Dat spaart rekentijd.

Snelle check op meerdere detectiefouten tegelijk
Het kan in een applicatie nodig zijn dat meerdere van bovenstaande soorten detectiefouten moeten worden getoetst. Deze detectiefouten kunnen gemakkelijk middels een macro worden getoetst. Maak daarvoor eerst een macro aan:
Een werkend voorbeeld treft u aan in het gratis ter beschikking gestelde bestand  defines.h  op deze website. Daarin ziet u de volgende regels staan:

 /* onder- of bovengedrag, of detectiefout uit procesbesturing: */
  #define OBG(i)  ( (bool)(   OG[i]    \
                           || BG[i]    \
                           || (CIF_IS[i] & CIF_DET_STORING)) ) 

 /* onder- of bovengedrag, detectiefout uit procesbesturing of fluttergedrag: */
 #ifndef NO_DDFLUTTER
  #define OBGF(i) ( (bool)(   OG[i]    \
                           || BG[i]    \
                           || FL[i]    \
                           || (CIF_IS[i] & CIF_DET_STORING)) )
 #endif /* NO_DDFLUTTER */

U kunt vervolgens per detector snel toetsen op een of meerdere van de genoemde detectiefouten, bijvoorbeeld:

 A[fc..] = DB[d..1] || OBG(d..1);        /* check hardware-detectiefout EN onder-/bovengedrag */
Merk op: In dit programmastatement is DB een array en is OBG een macro. Daarom schrijven we achter DB een index tussen blokhaken, en achter OBG een argument en gebruiken we daar dus ronde haken.

of

 A[fc..] = DB[d..1] || OBGF(d..1);       /* check hardware-detectiefout EN onder-/bovengedrag EN fluttergedrag */

of

 MK[fc..] =  (TDH[d..2] && !OBGF(d..2))  /* lus d..2 uitgeschakeld bij elk soort detectiefout */
          || (TDH[d..3] && !OBGF(d..3)); /* lus d..3 uitgeschakeld bij elk soort detectiefout */

Plausibiliteitscontrole
De plausibiliteitscontrole wordt bij het gebruik van de bovenstaande macro's niet vanzelf meegetoetst. Daarvoor is geen algemeen aanvaarde standaard beschikbaar doordat er zoveel varianten van plausibiliteits­controle zijn. Eventueel kunt u zelf uw plausibiliteits­controle in een van de vrijgebleven bits in de buffer CIF_IS[…] wegschrijven, waarna de macro eenvoudigweg dat bit kan meenemen. Het is in ieder geval niet aan te raden om standaard ALLE bits uit deze buffer te checken op ‘detectiefout’ omdat van de officieel nog vrije bits niet bij voorbaat bekend is welke betekenis er in latere versies van de CVN-interface aan gegeven gaat worden.

Dit onderwerp behandel ik ook in de cursussen ‘Toolkit-CCOL’.
Voor meer informatie kunt u mij telefonisch of via het reactieformulier bereiken.


Index van CCOL-onderwerpen


Reageer op dit bericht