Techniek
De desktop-applicatie en de command line gebruiken dezelfde meet-engine, geschreven in Rust. Deze pagina beschrijft de architectuur, de dataflow van een meting, prestatiegegevens en de belangrijkste begrippen van voertuignetwerken.
Architectuur
Meten, decoderen, simuleren en loggen gebeuren in de engine. De gebruikersinterface ontvangt gebundelde data met een vaste maximale frequentie en kan de meting daardoor niet vertragen.
Doorgetrokken rand: onderdeel van Arnodiqa. Gestreepte rand: via de driver van de fabrikant.
Rust
Rust heeft geen garbage collector, dus geen pauzes bij hoge framerates. De engine is multithreaded.
Tauri 2 + React
Een native venster met een kleine installatie. Docking, gevirtualiseerde tabellen en canvas-rendering verwerken grote datavolumes.
YAML + JSON Schema
Projecten zijn tekstbestanden die u in git kunt vergelijken en samenvoegen. Het schema geeft autocomplete en validatie in de editor.
Logs en support
Elke binary schrijft een roterend logbestand; een crash levert een lokaal crashrapport op. De supportbundel (zip) bevat logs, versie, systeem- en hardware-informatie, met gebruikersnamen, hostnaam en serienummers geanonimiseerd. Sleutels, busdata en CAPL-bronnen gaan er nooit in. Er wordt niets geüpload.
Dataflow van een meting
- Frames komen van een interface, de virtuele bus of een logbestand. Elk event krijgt een tijdstempel in nanoseconden sinds de start van de meting.
- De I/O-thread sorteert events van meerdere kanalen op tijd (reorder-window) en bundelt ze in batches.
- De batches gaan in een begrensde queue. In real time wacht de meting nooit: bij overbelasting worden batches gedropt, geteld en gemeld. In de modus "zo snel mogelijk" wacht de producent en gaat er niets verloren.
- De analysethread werkt de statistieken bij en voert de Measurement Setup-graaf uit: filters, triggers met pre- en posttriggertijd, en takken naar logging en vensters.
- Elk logging-blok schrijft parallel in een eigen thread. De UI krijgt hoogstens 30 tot 60 batches per seconde; bij achterstand laat ze de oudste events vallen en telt ze die.
Prestaties
| Live Trace | 20 000 frames/s bij 60 fps weergave, ook met filter of in vaste-positiemodus |
|---|---|
| BLF lezen | > 6 miljoen frames/s; geheugengebruik onafhankelijk van de bestandsgrootte |
| BLF schrijven | 0,7 tot 1 miljoen frames/s (zlib-niveau 6) |
| DBC-decodering | < 1 µs per bericht met 20 signalen |
| Virtuele bus | 1 Mbit/s in real time zonder frameverlies |
Typische waarden op een actueel Windows-werkstation; de werkelijke waarden hangen af van hardware en configuratie.
Begrippenlijst
Een voertuig bevat tientallen regeleenheden (ECU's) die via bussystemen berichten uitwisselen. Dit zijn de begrippen die op deze site het vaakst voorkomen.
- ECU
- Electronic Control Unit: een regeleenheid, bv. motor-, rem- of batterijbesturing. Een auto heeft er 30 tot meer dan 100.
- CAN
- Controller Area Network: de meest gebruikte voertuigbus, in gebruik sinds de jaren '80. Twee draden, berichten met een ID van 11 of 29 bit en tot 8 bytes data. Typisch 500 kbit/s.
- CAN FD / CAN XL
- Snellere opvolgers. CAN FD draagt tot 64 bytes met een snellere datafase (bv. 2 Mbit/s); CAN XL tot 2048 bytes bij ongeveer 10 tot 20 Mbit/s.
- Arbitration
- Als twee ECU's tegelijk zenden, wint het bericht met het laagste ID zonder dat er iets verloren gaat. Het ID is daarom ook de prioriteit.
- Error frame, bus-off
- Ziet een ECU een fout, dan vernietigt ze het frame met een error frame. Wie te veel fouten maakt, wordt "error passive" en uiteindelijk "bus-off": de node koppelt zichzelf af.
- Bericht en signaal
- Een bericht (frame) bevat meerdere signalen, bv.
EngineDatametEngineSpeed(rpm) enCoolantTemp(°C), op vaste bitposities met factor en offset. - DBC
- Het de-facto bestandsformaat dat beschrijft welke berichten en signalen op een CAN-netwerk bestaan. Zonder DBC ziet u alleen hexbytes, met DBC leesbare waarden.
- LDF, ARXML, FIBEX
- Beschrijvingsbestanden voor respectievelijk LIN, AUTOSAR-netwerken (XML, alle bussen) en FlexRay/Ethernet.
- LIN, FlexRay, Automotive Ethernet
- Andere voertuigbussen. LIN is goedkoop en traag (ramen, stoelen), FlexRay deterministisch (chassis), Ethernet snel (camera's, centrale computers) met SOME/IP als middleware.
- J1939
- Een standaard bovenop CAN voor trucks, bussen, landbouw- en bouwmachines, met parameter groups (PGN's). Nodes claimen hun adres met een 64-bit NAME; berichten langer dan 8 bytes gaan via transportprotocollen (BAM, CMDT); DM1 meldt actieve foutcodes.
- Trace
- Het belangrijkste venster: een live lijst van elk frame op de bus, met tijd, kanaal, ID, naam, data en gedecodeerde signalen.
- Measurement Setup
- Een graaf van blokken die bepaalt wat er met de data gebeurt: filteren, triggeren ("log 50 ms vóór en 200 ms na 800 rpm"), loggen naar bestand en tonen in vensters.
- Restbussimulatie
- U test één echte ECU; de rest van de bus (alle andere ECU's) wordt in software nagebootst, zodat de ECU zich gedraagt alsof ze in een complete auto zit.
- Interaction Layer (IL), NM
- De IL zendt berichten volgens de regels uit de database (cyclisch, bij wijziging, counters, checksums). Network management (NM) regelt het samen inslapen en ontwaken van ECU's.
- CAPL
- Een event-gedreven, C-achtige scripttaal van Vector Informatik (
on message,on timer…), veel gebruikt op testbanken. De script-VM van Arnodiqa voert bestaande CAPL-programma's uit. - UDS, ISO-TP, DoIP
- Diagnose. UDS (ISO 14229) is het protocol om een ECU te ondervragen (foutcodes, sessies, flashen). ISO-TP knipt lange berichten op voor CAN; DoIP doet hetzelfde over Ethernet.
- BLF, ASC, MF4
- Logbestandsformaten. BLF is binair en compact (Vector), ASC is leesbare tekst, MF4/MDF is de ASAM-standaard voor meetdata.
- XCP
- Protocol om interne variabelen van een ECU te meten en te kalibreren tijdens het rijden.
- SIL / HIL
- Software-in-the-loop (alles virtueel, geschikt voor CI) en hardware-in-the-loop (echte ECU op een testbank met gesimuleerde omgeving).
- E2E, SecOC
- AUTOSAR-mechanismen om berichten te beveiligen. E2E voegt een teller en CRC toe tegen verminkte of verloren berichten; SecOC voegt freshness en een MAC toe tegen vervalsing en replay. In een restbussimulatie moeten beide correct berekend worden, anders verwerpt de ECU de berichten.
- Flashen
- Nieuwe software in een ECU laden, meestal via UDS: sessie wisselen, security access, geheugen wissen, data downloaden, controleren en resetten. Firmware komt als Intel HEX, S-record, binair bestand of ODX-F.
- Air-gapped
- Een netwerk dat fysiek is afgesloten van internet, bv. in test-, defensie- of securitylabs. Software moet daar volledig offline werken, ook voor installatie, licenties, updates en AI. Zie Offline gebruik.
- CI
- Continuous integration: bij elke codewijziging draaien tests automatisch op een server. Daarvoor is een tool nodig die zonder GUI en zonder internet werkt.