Fasenlog: visualisatie eigen VLOG berichten

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).

Voor wat betreft het type data:

Binnen CCOL worden de volgende typen gedinieerd:

#define VLOGDATATYPE_STRING 1 /* no index - info message */ 
#define VLOGDATATYPE_BYTEARRAY 2 /* no index – byte array */
#define VLOGDATATYPE_INDEX1_BYTE 11 /* index1 + byte - 1+1 bytes */
#define VLOGDATATYPE_INDEX1_MULV 12 /* index1 + mulv - 1+2 bytes */
#define VLOGDATATYPE_INDEX2_BYTE 21 /* index2 + byte - 2+1 bytes */
#define VLOGDATATYPE_INDEX2_MULV 22 /* index2 + mulv - 2+2 bytes */

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:

{
  "CustomConfigurations": [
    {
      "StatusMessage": 201,
      "UpdateMessage": 202,
      "RowHeigth": 0,
      "ItemHeigth": 5.0,
      "ItemOffset": -7.4,
      "Color1": "MediumTurquoise",
      "Color2": "MediumAquamarine",
      "MessageDescription": "TDH actief",
      "EnumValues": null,
      "BelongsToType": 1,
      "DataType": 1
    },
    {
      ... evt. nog een object ...
    }
  ]
}

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.

Formaat voor enumeraties in de JSON:

{
  "CustomConfigurations": [
    {
      ...
      "EnumValues": {
        "0": "Test",
        "1": "Nog een test"
      },
      ...
    }
  ]
}

Fasenlog: info popups in de data

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.

Fasenlog: sortering van items

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.

Fasenlog: selectie in de tijd

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.

Fasenlog: weergave opties (toolbars)

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.

  1. Openen tabbladen (behorende bij de betreffende fasenlog)
    1. Openen analyse tabblad
    2. Openen tabblad ‘DSI op kaart’
    3. Openen configuratie tabblad
  2. Configuraties
    1. Openen opgeslagen configuratie
    2. Opslaan huidige configuratie
  3. GUS/WUS (gewenste en werkelijke aansturing IO)
    1. Werkelijke status signaalgroepen
    2. Gewenste status signaalgroepen
    3. Werkelijke status uitgangen
    4. Gewenste status uitgangen
  4. Weergave (sortering items en zoom)
    1. Signaalgroepen sorteren boven detectie
    2. Detectoren sorteren bij signaalgroepen
    3. Horizontale zoom
    4. Verticale zoom
  5. Item selectie
    1. Wel/niet weergeven popups
    2. Activeren plaatsen van popups
    3. Plaatsen popup bij geselecteerde status
    4. Plaatsen popup bij twee gerelateerde statussen
  6. Speciaal
    1. DSI weergeven bij signaalgroepen
    2. Weergeven multivalente IO
    3. Weergeven alternatieve realisaties
    4. Verbergen gefilterde detectie
      1. Middels het knopje naast de filter knop: opties voor verbergen of visualiseren van gefilterde detectie
    5. Via de kleine knop geheel rechts op de toolbar zijn nog extra opties beschikbaar:
      1. Weergave wachten voor niets
      2. Weergave reden voor wachttijd
      3. Weergave snelheidsmetingen (bij ingangen)
      4. Weergave hiaattijden
      5. Weergave bezettijden
      6. Weergave SWICO data
      7. Visualiseren “eigen” VLOG data
  7. Timings
    1. Visualisatie timings op de fasenlog
    2. Weergave accuraatheid voorspellingen roodtijd
    3. Weergave accuraatheid voorspellingen groentijd
  8. 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.
  9. Export
    1. Export naar .xlsx (Excel)
    2. Export naar PDF
    3. Export naar .csv (tekstbestand met daarin met ; gesepareerde data velden)
    4. Export .png (afbeelding)
    5. Zet .csv data op klembord
    6. Zet .png data op klembord