AutomotiveAnonymous EV OEM

EV battery data acquisition with a 4-channel Kvaser CAN rig

Posted: 28 Apr, 2026

Challenge

An electric-vehicle programme needed to capture and decode battery data over CAN and create a control panel for controlling contactors in the battery.

Solution

A SparkFrame rack with a Kvaser 4× PCIe CAN card plumbed straight into MACS over SocketCAN. All four buses stream into one DBC-decoded signal pipeline with synchronous timestamps; recording, decoding, monitoring, and live dashboards all run on the same node.

Results

All battery data captured and contactor control established through sending certain messages in a certain time period.

What the customer needed

Modern electric-vehicle battery packs publish hundreds of signals across multiple CAN buses — module voltages, cell temperatures, contactor states, isolation monitor readings, BMS state machines. To validate a pack across a test campaign, engineers need to capture all of those buses simultaneously and with synchronised timestamps. Recording one bus at a time and aligning logs in post is slow, fragile, and loses fidelity wherever the buses cross-reference each other.

This customer's previous setup didn't have enough channels per logger, so they were doing exactly that — capturing serially and merging. They wanted a single rig that could capture the whole pack at full bus load and feed downstream analysis tools immediately.

What we built

A SparkFrame 19" rack populated with:

  • A Kvaser 4× PCIe CAN card — four independent CAN channels in a single PCIe slot, exposed under Linux as standard SocketCAN interfaces (can0can3)
  • MACS running on the rack, configured through the CAN Network Configurator to bind all four channels at once
  • A DBC file per bus, loaded into MACS for live signal decoding
  • A web dashboard subscribing to the decoded signals for real-time monitoring
  • Recording nodes writing time-aligned logs to disk for later analysis

Because MACS treats every CAN interface the same way regardless of vendor, integrating the Kvaser card was a SocketCAN configuration step — no driver work, no special MACS plugin. The same pipeline would handle Vector, PEAK, Advantech, or virtual buses with one config change.

Why this combination

  • SparkFrame gives the customer a customisable 19" platform — they can add or swap I/O cards (Kvaser today, an Advantech analog card tomorrow) without rebuilding the rig.
  • Kvaser 4× PCIe is the densest CAN option per slot at this price point, with rock-solid Linux support — exactly what MACS's "runs on standard Linux" approach is designed for.
  • MACS handles the multi-bus routing, DBC decoding, recording, and dashboarding in one place, so the customer doesn't run three separate tools that don't talk to each other.

Got a similar challenge?

Get in touch for a demo or quote.