De VLOG standaard biedt ruimte voor “eigen” ofwel “zelfgedefiniëerde” berichttypen. Deze hebben conform de standaard de nummers 129-253 (oneven, status) en 130-254 (even, update). Het is altijd raadzaam bij de keuze voor te gebruiken nummers te kiezen voor twee opeenvolgende berichtnummers: bv. 145 voor status en 146 voor update. Zo volgt de opzet zo veel mogelijk de opzet van de VLOG standaard.
Dit artikel voorondersteld dat de lezer kennis heeft van de VLOG standaard. De informatie refereert ook aan de toolkit CCOL, omdat hierin een standaardisering is opgenomen voor het werken met “eigen” VLOG berichten, die binnen YAVV/YAVC wordt gevolgd.
Zelfgedefiniëerde VLOG berichten
Bij de implementatie van zelfgedefiniëerde VLOG berichten binnen YAVV/YAVC is uitgegaan van de implementatie zoals die binnen CCOL is gedaan. Uiteraard is het wegschrijven van dit type berichten niet voorbehouden aan CCOL, maar kan elke regelapplicatie dit doen.
Binnen CCOL wordt middels de functie vlog_put_message() data weggeschreven in de logging buffer, zodat die in de VLOG data terecht komt. Daarbij geldt voor resulterende VLOG berichten:
Ze hebben het opgegeven nummer (bv. 145; één byte)
Ze krijgen de offset vanaf de meest recente timestamp mee (evenals alle andere reguliere berichten)
Het aantal elementen wordt weggeschreven (altijd in 1,5 bytes, zowel voor status als update, dus altijd overlappend met de offset, zoals bv. ook geldt voor berichttype 13 uit de VLOG standaard)
Het type data wordt weggeschreven (in één byte): dit wordt verderop nader toegelicht
Per element wordt data weggeschreven (lengte afhankelijk van type en aantal)
Op deze wijze houden de “eigen” berichten dus ongeveer het formaat aan zoals dat ook geldt voor bijvoorbeeld multivalente IO: <berichttype><offset><aantal-items><data-type><index-en-data-per-item>. Ten opzichte van de reguliere berichten is enkel het “data-type” gedeelte hier extra.
Binnen CCOL is de programmeur er zelf voor verantwoordelijk dat elke 5 minuten de status wordt weggeschreven (indien dat gewenst is).
Hiervan zijn de eerste twee binnen YAVV/YAVC niet beschikbaar, omdat de feitelijke inhoud niet bekend is
De overige 4 typen worden wel ondersteund
In het “data” gedeelte van een bericht dient per item zowel index als data te worden weggeschreven, en daarbij is belangrijk: dit geldt zowel bij update als status berichten! De data heeft afhankelijk van het type een andere vorm: er is ofwel één ofwel zijn er twee bytes beschikbaar voor de index, en idem voor de data. Per item worden dus afhankelijk van het type 2, 3 of 4 bytes gebruikt.
Dit levert bijvoorbeeld op (ASCII, hexidecimaal): 9100000315000005000107000205
Waarbij:
0x91 = 145 = bericht type (hier dus een status, want oneven)
000 = offset
003 = aantal items
0x15 = 21 = type data, ofwel “index2 + byte”
per item:
0000 = index 0
05 = data
0001 = index 1
07 = data
0002 = index 2
05 = data
Merk op dat niet per sé voor alle indices (dus bv. voor alle signaalgroepen of detectoren) data hoeft te worden weggeschreven, ook niet bij een status bericht.
Zie voor verdere informatie omtrent het werken met “eigen” VLOG binnen CCOL de handleiding van de toolkit (zoek op “vlog_put_message”).
Visualisatie in YAVV/YAVC
Merk op: YAVV biedt momenteel nog niet de mogelijkheid de eigen berichten in te stellen; dit staat op de todo-lijst (ambitie is implementatie in versie 1.19).
Binnen YAVV/YAVC is visualisatie van “eigen” VLOG data mogelijk middels het schilderen van rechthoekjes op de fasenlog. Zo kan de duur dat een bepaalde waarde actief is visueel worden verklikt. In de tooltip wordt net als voor overige VLOG data start/einde en inhoud weergegeven. Bij enumeraties wordt een numerieke waarde vertaald naar de bijbehorende tekst.
Om de “eigen” VLOG data binnen YAVV/YAVC te visualiseren is een configuratie nodig. Dit werkt door JSON data op te bouwen, waarin wordt gespecificeerd wat voor data het betreft, en hoe deze in de fasenlog moet worden geplot.
Binnen YAVC is deze configuratie te vinden onder: Systeem instellingen > YAVC instellingen > naar onder scrollen > uitklappen “Instellingen visualisatie gebruikers VLOG data”. YAVC geeft middels een rood/groene indicator aan of de JSON geldig.
Hieronder een voorbeeld van een JSON configuratie:
Het resultaat van bovenstaande configuratie is in de fasenlog te zien:
Wat precies te zien is, is natuurlijk vooral afhankelijk van de data die in de VLOG wordt weggeschreven.
Binnen de json configuratie kunnen onder “CustomConfigurations” meerdere object worden geplaatst (dit is een array); zie ook bovenstaand voorbeeld
De beschikbare instellingen van het object zijn:
StatusMessage – nummer van het statusbericht; dit moet een oneven nummer zijn, zodat zoveel mogelijk de VLOG standaard wordt gevolgd
UpdateMessage – nummer van het update bericht; dit moet een oneven nummer zijn; idealiter volgt dit nummer direct op het status nummer, om verwarring te voorkomen
RowHeight – de totale hoogte van de “regel” voor dit item in de fasenlog; deze is 0 als de visualisatie óver iets anders komt te liggen
ItemHeight – de hoogte van het te schilderen balkje; dit kan afwijken van de hoogte van het item, zodat er ruimt boven/onder het balkje kan worden gelaten
ItemOffset – de offset van dit item ten opzichte van de onderkant van het VLOG-item waar deze data bij hoort (bv. een signaalgroep of een detector)
Color1 – de kleur voor het te schilderen balkje
Color2 – indien de waarde van een item wijzigt, maar niet naar 0 gaat, wijzigt de kleur van het balkje naar deze kleur (en bij een volgende wisseling naar niet-0 weer naar kleur 1)
MessageDescription – beschrijving voor de tooltip in de fasenlog
EnumValues – de tekst-waarden die horen bij verschillende nummerieke waarden, zie ook het voorbeeld hieronder
BelongsToType – type VLOG-item waar deze data bij hoort, zoals detector, signaalgroep, etc.
0 – signaalgroep
1 – detector
2 – input
3 – output
DataType – dit geeft aan hoe de data per item geïnterpreteerd en weergegeven moet worden
0 – boolean
1 – decimale integer
2 – hexidecimale integer
3 – binaire integer
4 – bits, bv. BIT0 | BIT1 | BIT5
Merk op: voor boolean, integers en bits wordt bij een waarde 0 niets geplot
5 – enumeratie, bv.: tram, bus, trein, boot
Voor zowel 4 als 5 geldt dat in de json de enumeratie opties opgegeven moeten worden, in het formaat zoals onderaan te zien
6 – vlaggen enumeratie, dus met potentieel meerdere waarden, bv.: aanvraag detector, aanvraag knop, mee aanvraag, aanvraag richtinggevoelig
Let op! Voor de de bitwise enumeratie moet met machten van 2 worden gewerkt voor de mogelijke waarden; bv. 1, 2, 4, 8, 16, etc.
De fasenlog van YAVV biedt de mogelijkheid VLOG data in de fasenlog te voorzien van statische popups, met optioneel commentaar. De popups fungeren direct als bookmarks waarmee eenvoudig naar een speficiek moment in de fasenlog gemanouvreerd kan worden.
Merk op: gezien de verschillende wijze waarop data wordt geladen in YAVC-client, biedt deze momenteel geen mogelijkheden voor plaatsen van popups.
Ter info vooraf, een kort overzicht van gebruikte termen:
Wanneer hier wordt gesproken over een tooltip, wordt het ‘balonnetje’ bedoeld dat naast de muis zweeft wanneer die over de fasenlog beweegt. Hierin is informatie te zien over item/status onder de muis. Hieronder een voorbeeld:
Met een popup wordt bedoeld een statisch vakje met informatie over één specifieke status van een item. Dit is uitsluitend zichtbaar nadat het bewust in de fasenlog is geplaatst:
Plaatsen van popups gaat middels de toolbar “Item selectie”:
De toolbar bestaat uit vier knoppen:
Weergeven van popups
Dit is een aan/uit knop
Wanneer ingeschakeld, zijn in de fasenlog aanwezig popups zichtbaar. Het gedrag van de fasenlog bij bewegen met de muis, klikken en slepen is ongewijzigd – de muis gaat zeg maar ‘door de popups heen’.
Let op! enkel wanneer deze aan staat zijn de overige opties beschikbaar.
Plaatsen en bewerken van popups
Eveneens een aan/uit knop
Wanneer ingeschakeld, is een lichtblauw gestippeld rand zichtbaar rond de status die onder muis ligt:
Een muisklik zorgt nu voor selectie van de betreffende status, de status krijgs dan een rood gestippelde rand:
De fasenlog kan nu met klik+slepen niet meer worden verplaatst. Door de Shift toets in te drukken kan dit alsnog.
Plaats info popup bij item
Deze knop is enkel beschikbaar indien er een status is geselecteerd
Een klik zorgt ervoor dat een ‘info popup’ wordt geplaatst bij de geselecteerde status
Een info popup bevat precies dezelfde informatie als de tooltip die bij de status verschijnt als de muis eroverheen komt.
De popup kan middels klikken+slepen worden verplaatst.
Bevindt de muis zich op de popup, dan zijn rechts bovenin een aantal knopjes beschikbaar:
Een rondje: weergeven instellingen, met de mogelijkheid de doorzichtigheid in te stellen, en te kiezen voor een kromme of rechte verbindingslijn
Twee streepjes: tonen en kunnen bewerken van commentaar. Dit commentaar is direct de beschijving voor de bookmark.
Een kruisje om de popup mee te verwijderen
Deze knop heeft ook een sneltoets: Control+Shift+P
Plaats tijd/snelheid meting bij twee items
Deze optie is uitsluitend beschikbaar indien twee statussen zijn geselecteerd. Dit kan middels Control+klik
De popup toont informatie over de relatie tussen de twee statussen. In geval van twee detectoren op dezelfde rijbaan wordt ook een inschatting van de gereden snelheid weergegeven.
Let op! De configuratie qua ligging van de lussen moet goed staan, wil dit een zinvolle meting zijn. Zelfs dan: de snelheid is altijd een inschatting. VLOG heeft een resolutie van 0,1 seconden, en de ligging van lussen op straat wijkt vaak enigszins af. Zie ook de omschrijving hier.
Bij openen van data is de default volgorde van items:
alle signaalgroepen onder elkaar
gevolgd door alle detectoren
dan alle ingangen
en tenslotte alle uitgangen
Let op: indien een .yavv file gevonden wordt bij de data of in de default map met configuraties (zie hier) wordt de volgorde uit de configuratie direct ingeladen.
Let op 2: in YAVC-client worden wijzigingen in weergave of sortering momenteel na afsluiten van de fasenlog niet bewaard; opslag van weergave profielen staat op de wensenlijst.
Plaatsen van detectoren bij signaalgroepen
Bij aanwezigheid van een configuratie bestand bij de data kunnen detectoren bij de fasen worden geplaatst middels de betreffende knop op de toolbar:
Hoe dit precies werkt is afhankelijk van de informatie uit de configuratie:
Bij een CFG bestand doet YAVV een automatische match van detectoren bij fasen, op basis van namen van elementen
Bij een .yavv bestand zit de toedeling expliciet in de configuratie en wordt zo toegepast
De knop zorgt ervoor dat de detectoren die bij een bepaalde signaalgroep horen in de fasenlog direct onder de betreffende signaalgroep komen te staan.
Handmatig sorteren van items
Wanneer de automatische toedeling van detectoren niet klopt, of er moeten ingangen of uitgangen naar boven of onder worden geplaatst, moet dit handmatig. Hiervoor zijn twee manieren:
Door items te slepen direct in de lijst naast de fasenlog
Door gebruik van het dialoogvenster middels de vergrootglas knop boven de lijst met items Er verschijnt dan een dialoogvenster waarin ook gesleept kan worden.
Tip: het is mogelijk items in één geheel bovenaan de lijst te plaatsen. Dit kan op twee manieren:
Rechtermuisklik op geselecteerde item(s) > Omhoog plaatsen klikken
In het dialoogvenster zoals hierboven, middels de knop “Omhoog”
Nog een tip: zowel in de lijst als in het dialoogvenster kan middels Shift of Control een selectie van meerdere items worden gemaakt.
Verbergen en tonen van items
Middels rechtermuisklik op items in de lijst naast de fasenlog is het mogelijk items verbergen. Om verborgen items weer in beeld te krijgen kan gebruik worden gemaakt van het dialoogvenster via de vergrootglasknop rechts bovenaan de fasenlog (zie hierboven). Met de vinkjes in die lijst kunnen items worden verborgen of juist getoond.
Het is mogelijk in de fasenlog een verticale lijn te plaatsen op een bepaald punt in de tijd. Tevens is het mogelijk een tweede lijn te plaatsen, waarmee tevens het gebied tussen de twee lijnen geselecteerd wordt.
Dit gaat als volgt:
Klik in de tijdblak bovenaan de fasenlog, er verschijnt nu een bolletje, en daaronder wordt over de fasenlog heen een verticale lijn geplaatst
Tevens verschijnt nu in de toolbar sectie een nieuwe toolbar waarin de tijd van de verticale lijn wordt weergegeven Middels de “gum” knop geheel rechts op de toolbar kan de actuele lijn (of selectie) worden verwijderd
Middels een muisklik+slepen op he bolletje kan de verticale lijn worden verplaatst
Tip: houdt de Control toets ingedrukt tijdens het slepen om de verticale lijn heel precies op de juiste plek te kunnen plaatsen
Nog een tip: gebruik Control+muiswiel om snel in en uit te zoomen en zo beter te kunnen zien waar de verticale lijn precies staat
Klik elders in de tijdbalk: er wordt nu een tweede verticale lijn geplaatst en er ontstaat een selectie in de tijd. Tevens wordt in de toolbar nu ook de einde tijd van de selectie weergegeven, alsook de duur tussen start en eind.
De geplaatste lijn of gemaakte selectie kan worden gebruikt om in detail te kijken of bepaalde events al dan niet gelijktijdig optreden, of hoe ver ze uit elkaar liggen in de tijd. De selectie wordt ook gebruik (indien aangevinkt) bij het exporteren van data als nieuwe VLOG data of als ‘ruwe’ lijst met events.
Wanneer data is geopend in YAVV en de fasenlog wordt weergegeven, verschijnen er in de toolbar sectie (dat is de balk bovenin onder het menu) diverse knoppen. Middels deze knoppen is de weergave van data in de fasenlog precies af te stellen.
Fasenlog in YAVC
In YAVC zijn niet alle toolbars zoals hieronder beschreven beschikbaar. Dit betreft:
Tabs: binnen YAVC worden werkbladen geopend via de kaart of de lijst met kruispunten. Bij YAVV wordt vanuit de fasenlog andere tabbladen geopend, bij YAVC geldt dit niet
Config: configuratie verloopt in YAVC via de systeem instellingen
Item selectie: de fasenlog functioneert in YAVC client qua laden van data anders dan in YAVV. Hierdoor is de huidige implementatie van plaatsen van popups enkel geschikt voor YAVV.
Daarnaast geldt voor YAVC client, dat ‘wachten zonder reden’ uitsluitend beschikbaar is wanneer er conflicten zijn geconfigureerd, en de configuratie is gevalideerd. De fasenlog maakt hier namelijk gebruik van de achterliggende analyse data voor wachten-zonder-reden; dit werkt dus enkel wanneer die data beschikbaar is.
Fasenlog optie via menu & verbergen toolbars
Vooraf: sinds YAVV versie 1.12 zijn een groot aantal van de functies die via de toolbar toegankelijk zijn, ook ontsloten via het menu Fasenlog. Dit geeft sommige gebruikers mogelijk meer inzicht in de beschikbare functionaliteiten.
Daarnaast biedt dit de mogelijkheid om sommige toolbars te verbergen, en toch bij de betreffende functionaliteit te kunnen wanneer die nodig is. Bijvoorbeeld: stel je gebruikt de export opties zelden of nooit, dan kun je die toolbar verbergen (via menu Help > Instellingen YAVV > Toolbars). Wil je nu toch data van de fasenlog exporteren, dan kan dat alsnog via het menu Fasenlog > Export.
Indelen toolbars en toegang tot verborgen knoppen
De toolbar is eigenlijk een verzameling van toolbars: elke afzonderlijke toolbar heeft links vier stippen en rechts een klein pijltje omlaag. Dit is te zien in de afbeelding hieronder.
Door te klikken+slepen op de vier stippen (1), kan de toolbar worden verplaatst. Wanneer de toolbar niet voldoende plek heeft worden sommige knoppen verborgen. Deze kunnen dan kan via het pijltje omlaag (2) worden weergegeven en bediend. In sommige gevallen zijn bepaalde opties altijd op deze manier verborgen, om de toolbar overzichtelijk te houden.
Functionaliteiten
Hieronder wordt kort toegelicht welke opties beschikbaar zijn. De beschrijving van functionaliteiten gebeurt per afzonderlijke toolbar, zoals hieronder weergegeven. Per toolbar worden alle opties behandeld.
Let op: de toolbar “Speciaal” heeft een aantal extra opties die alleen via het knopje met het pijltje zichtbaar worden.
Openen tabbladen (behorende bij de betreffende fasenlog)
Middels het knopje naast de filter knop: opties voor verbergen of visualiseren van gefilterde detectie
Via de kleine knop geheel rechts op de toolbar zijn nog extra opties beschikbaar:
Weergave wachten voor niets
Weergave reden voor wachttijd
Weergave snelheidsmetingen (bij ingangen)
Weergave hiaattijden
Weergave bezettijden
Weergave SWICO data
Visualiseren “eigen” VLOG data
Timings
Visualisatie timings op de fasenlog
Weergave accuraatheid voorspellingen roodtijd
Weergave accuraatheid voorspellingen groentijd
Selectie in de tijd: hier wordt start, einde en duur van een selectie in de tijd in de fasenlog weergegeven. Middels de “gum” knop geheel rechts wordt de selectie verwijderd.
Export
Export naar .xlsx (Excel)
Export naar PDF
Export naar .csv (tekstbestand met daarin met ; gesepareerde data velden)