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.

System architecture Layers from top to bottom: the desktop app (Tauri and React) with Trace, Write, Data, Graphics, Interactive Generator, diagnostics and test windows, and the headless CLI; the IPC boundary; the bf-engine measurement runtime with I/O, analysis, logging and pump threads; the crates bf-hw, bf-db, bf-log, bf-project, the script VM, bf-diag (UDS, DoIP, flashing), bf-j1939 and bf-test; the shared bf-core types; and the hardware backends: virtual bus and log files (available), SocketCAN, PCAN-Basic, Vector XL, Kvaser, SLCAN and gs_usb (via the manufacturer's driver). DESKTOP APP · TAURI 2 + REACT/TS Trace Write Data Graphics IG Diag Test Shelldock · palette HEADLESS Arnodiqa CLI run · test · capl check · hw JSON + exit codes → CI IPC · commands (JSON) · event stream (binary batches, 30-60 Hz, drop-oldest) BF-ENGINE · MEASUREMENT RUNTIME (RUST) · SESSION FACADE I/O threadchannels · replay · sim nodes (IL)reorder window · clockoffline: merge + pacing Analysis threadstatistics · sysvarssetup graph (DAG):filter → trigger → log/view Logging threadsone per logging blocktrigger · rolloverBLF / ASC writer Pump threadsone per subscriptionencode batches 16-33 ms UI blokkeert de engine nooit CRATES bf-hwdrivers · vbusbit timing bf-dbDBC · LDF · ARXMLFIBEX · codec bf-logBLF · ASC · MF4PCAPNG · export bf-projectYAML · schemavalidation script VMcompiler · VMbuiltins bf-diagUDS · DoIP · flash+ bf-j1939 bf-testtest unitsJUnit · HTML bf-core · CAN / CAN FD frames · Timestamp (ns) · channels · bus events · error frames · chip state HARDWARE / SOURCES Virtual busin-process, multi-ch. Log filesBLF · ASC (offline) SocketCANLinux kernel PCAN-BasicPEAK Vector XL · Kvaserdynamically loaded SLCAN · gs_usbserial · candleLight Eén BusDriver-trait · DLL/SO van de fabrikant geladen tijdens runtime (libloading), nooit meegeleverd

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

Data flow of a measurement Frames from the bus or log files enter the I/O thread, are sorted across channels and put in batches of up to 8192 events on a bounded main queue. The analysis thread updates statistics and runs the measurement setup graph: filter, then trigger, then logging blocks that write BLF or ASC files in their own threads, and view blocks that feed UI subscriptions through pump threads at 30 to 60 Hz. The CLI prints the report and exit code at the end. Bus / logCAN · CAN FD I/O threadsort · timestamp main queue≤ 8192 / batch Analysis statisticsfilter → trigger(setup graph) Loggingown thread/queue .blf / .ascfield codes Pumpbatch · 16-33 ms Trace / UIdrop-oldest Report → CLI / JSON / exit code bij stop: events, verloren, bestanden, statistiek
  1. Frames komen van een interface, de virtuele bus of een logbestand. Elk event krijgt een tijdstempel in nanoseconden sinds de start van de meting.
  2. De I/O-thread sorteert events van meerdere kanalen op tijd (reorder-window) en bundelt ze in batches.
  3. 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.
  4. 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.
  5. 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 Trace20 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 schrijven0,7 tot 1 miljoen frames/s (zlib-niveau 6)
DBC-decodering< 1 µs per bericht met 20 signalen
Virtuele bus1 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. EngineData met EngineSpeed (rpm) en CoolantTemp (°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.