Every integration in MACS is a node: a separate process that publishes its data as named signals on the central signal bus and reads the signals it needs from there. Nodes don't need to know about each other. A CAN message decoded by one node can drive a Studio model, a Modbus device, and a dashboard gauge without any glue code.
Vehicle networks and CAN
| Node | What it does |
|---|---|
| CAN Bus | Encodes and decodes messages using DBC files and sends periodic messages. One node per CAN channel. |
| CAN Router | Routes frames between CAN buses through the Linux kernel gateway. |
| CAN Recorder | Records CAN traffic and plays it back for testing and analysis. |
| J1939 Diagnostics | Publishes DM1 and DM2 trouble codes and warning lamps from the ECUs on a bus as named signals. |
| CANopen | SDO and PDO communication with CANopen devices. |
MACS works with any CAN interface supported by Linux SocketCAN, including Kvaser USB and PCIe interfaces. Virtual CAN interfaces let you develop and test without hardware, and the CAN Sniffer tool in the desktop GUI captures raw frames and builds a DBC from live traffic.
Industrial and IoT
| Node | What it does |
|---|---|
| Modbus TCP | Reads and writes registers on industrial devices. |
| MQTT | Exchanges data with IIoT devices through an MQTT broker. |
| Advantech I/O | Digital and analog I/O cards through the Advantech DAQNavi SDK (x86_64). |
| HAN Meter | Reads P1/DSMR smart-meter telegrams from an MQTT topic and publishes the chosen OBIS values. |
Power electronics
| Node | What it does |
|---|---|
| Mean Well CAN | Controls a BIC-2200 bidirectional inverter or an NTN-5K inverter/charger over CAN, one unit per node. |
Energy markets
| Node | What it does |
|---|---|
| Nord Pool | Fetches day-ahead electricity spot prices. |
| ESS Optimizer | Calculates the optimal charge and discharge schedule from spot prices. |
Models and control
| Node | What it does |
|---|---|
| MACS Studio | Runs compiled MACS Studio models against live signals. |
| Simulink | Runs Simulink-generated C code at a fixed rate, with signals mapped to model inputs and outputs. |
| Event Manager | Monitors signals and triggers events when conditions are met. |
System and data
| Node | What it does |
|---|---|
| MDN Recorder | Records signals from the signal bus with zero data loss. |
| InfluxDB Sink | Ships every signal update to InfluxDB, spooling to disk while the database is unreachable. |
| System Monitor | Publishes CPU, memory, and other system metrics as signals. |
| API Node | REST and WebSocket access to live signals, with the browser dashboard. |
Build your own
Need something that isn't on the list? Custom nodes can be written in C or Python and plug into the signal bus exactly like the built-in ones. MACS scaffolds a node package from a template, so you start from a working node rather than a blank file. From there, any Python library is available, from device SDKs to PyTorch.


