Modbus vs CAN Bus (CANopen): Industrial Protocol vs Embedded Network
Modbus vs CAN Bus (CANopen): Industrial Protocol vs Embedded Network
TL;DR: Modbus RTU and Modbus TCP are open, register-based polling protocols widely used to connect PLCs to process instruments, drives, and sensors over RS-485 serial or Ethernet. CAN bus is a broadcast, message-based network originally designed for automotive systems; CANopen is the automation profile built on top of it, used primarily in motion control, robotics, and embedded machine networks. Modbus is pulled by a master. CANopen is event-driven and peer-capable. They rarely compete — they serve different machine layers.

A controls engineer encounters Modbus when connecting a PLC to a VFD, energy meter, or flow computer. They encounter CANopen when commissioning a servo drive system, a multi-axis robot joint, or a mobile machine hydraulic controller. The two protocols are rarely on the same decision list — but understanding how they differ helps when integrating systems that use both.
Modbus — The Industrial Register Protocol
Modbus was created by Modicon in 1979 for PLC-to-instrument communication. It remains the most widely deployed industrial protocol because it is simple, open, and royalty-free.
Architecture
Modbus is a master/slave (client/server in Modbus TCP) protocol. One master polls one slave at a time. Slaves respond only when addressed. The master controls all communication timing.
Data model
Modbus organises device memory into four tables:
- Holding registers (40001–49999): 16-bit read/write — motor speed setpoints, PID setpoints, mode commands.
- Input registers (30001–39999): 16-bit read-only — measured process values, fault codes.
- Coils (00001–09999): single-bit read/write — start/stop commands.
- Discrete inputs (10001–19999): single-bit read-only — limit switches, alarm bits.
Variants
- Modbus RTU: binary framing over RS-485 serial bus, up to 247 slaves, 9600–115200 baud.
- Modbus TCP: same register model over Ethernet TCP/IP on port 502. Concurrent connections, no baud-rate limit.
- Modbus ASCII: printable hex encoding over serial — rarely used in new installations.
CAN Bus and CANopen
CAN (Controller Area Network) was developed by Bosch in the 1980s for automotive wiring harnesses — replacing point-to-point wiring between ECUs. It was later adopted by industrial automation as the physical and data link layer for embedded machine networks.
CAN bus frame
CAN is a broadcast bus. Any node can transmit when the bus is idle. Messages carry an identifier (11-bit standard, 29-bit extended) that defines both the content type and the arbitration priority — lower numeric IDs win bus access over higher IDs without collision.
| Identifier | RTR | DLC | Data (0–8 bytes) | CRC | ACK |
- Identifier: message priority and content type — not a device address.
- DLC: data length code — number of data bytes in this frame (0–8).
- CRC: 15-bit CRC for error detection.
- ACK: all receivers acknowledge every valid frame simultaneously — the transmitter knows at least one node received it.
CAN supports multi-master — any node can initiate a message. Arbitration is non-destructive: the node with the lowest-priority ID backs off and retries.
CANopen — the automation profile
CAN defines only the frame format; it says nothing about what the data means. CANopen (CiA 301) is the application-layer profile that maps automation concepts onto CAN frames.
CANopen defines:
- PDOs (Process Data Objects): real-time, cyclic or event-driven exchange of I/O data — position, velocity, torque, digital I/O. No handshake, low overhead. Equivalent to Modbus register reads but pushed rather than polled.
- SDOs (Service Data Objects): confirmed parameter access — read or write any object dictionary entry. Used for configuration and commissioning (setting acceleration ramps, encoder resolution, current limits). Equivalent to Modbus write register, but with acknowledgement.
- NMT (Network Management): start, stop, and reset nodes. A master NMT node controls node state transitions.
- Heartbeat / node guarding: node health monitoring — a node broadcasts a heartbeat periodically; if the master misses it, the node is declared failed.
- Object Dictionary: every CANopen device has an object dictionary (OD) — a table of parameters (index 0x0000–0xFFFF), each with a data type and access rights. The EDS (Electronic Data Sheet) file describes the OD so a configuration tool can set up the device without knowing it in advance.
CANopen device profiles
CiA publishes device profiles for common equipment:
- CiA 402: drives and motion control — servo drives, stepper drives, frequency inverters.
- CiA 401: generic I/O modules.
- CiA 404: measurement devices.
- CiA 417: lift systems.
A servo drive conforming to CiA 402 exposes standardised objects for target position, actual position, control word, and status word — so the PLC motion program works regardless of which brand of drive is installed.
Side-by-Side Comparison
| | Modbus RTU/TCP | CANopen (CAN bus) | |---|---|---| | Origin | Process automation (1979) | Automotive, then industrial (1993) | | Architecture | Master/slave polling | Multi-master broadcast, event-driven | | Addressing | Slave address (1–247) or IP + Unit ID | Node ID (1–127) + object dictionary index | | Data unit | 16-bit registers, 1-bit coils | PDO: up to 8 bytes per frame; SDO: confirmed | | Frame size | Variable (function code dependent) | 8 bytes max payload per frame | | Speed | 9600–115200 baud (RTU); 100 Mbit (TCP) | 10 kbit/s–1 Mbit/s (standard CAN) | | Max cable length | 1200 m at 9600 baud | 40 m at 1 Mbit/s; 1 km at 50 kbit/s | | Max nodes | 247 (RTU), unlimited (TCP) | 127 nodes per segment | | Error handling | CRC; slave returns exception code | 15-bit CRC + ACK; hardware error counters | | Device profiles | None (register maps are device-specific) | Standardised CiA profiles (402, 401, etc.) | | Typical use | VFDs, meters, sensors, PLCs | Servo drives, multi-axis motion, mobile machines |
Decision Guide
Use Modbus RTU or TCP when:
- Connecting a PLC to process instruments — flow meters, pressure transmitters, energy meters, temperature controllers.
- The device's register map is documented and you can poll it.
- Cable runs are long (Modbus RTU handles 1200 m).
- You need to integrate equipment from many different vendors without a shared device profile.
- Your SCADA or PLC natively supports Modbus and does not have a CANopen master module.
Use CANopen when:
- Building a machine with multiple motion axes — multi-axis servo, rotary index table, robotic arm.
- Your servo drive specifies CiA 402 as its primary interface.
- You need synchronised cyclic real-time I/O across multiple nodes (PDO SYNC messaging).
- The machine is self-contained and does not need integration into a plant-wide Ethernet network.
- You are designing an embedded machine controller (mobile machinery, agricultural equipment, medical devices).
When you need both:
Many industrial machines have both: a CANopen network synchronising servo axes inside the machine enclosure, and a Modbus TCP interface exposing status registers to the plant SCADA. The machine PLC acts as a CANopen master internally and a Modbus TCP server externally.
Frequently Asked Questions
Q: Is CAN bus the same as CANopen?
A: No. CAN bus is the physical and data link layer — the electrical standard and frame format. CANopen is an application-layer protocol built on top of CAN, defining object dictionaries, PDOs, SDOs, NMT, and device profiles. CAN bus also carries other protocols — DeviceNet, J1939, CANaerospace — each with their own application layer.
Q: Can a PLC read a CANopen servo drive?
A: Yes, if the PLC has a CANopen master module or a CANopen fieldbus card. Many PLCs do not include CAN as a standard port — it must be added as an expansion module. Alternatively, some drive manufacturers provide a Modbus TCP or EtherNet/IP gateway above their CANopen internal bus, letting the PLC use standard Ethernet protocols while the drive uses CANopen internally.
Q: What is the speed difference between Modbus and CANopen?
A: At comparable baud rates, CANopen PDOs are faster because they are event-driven — data is pushed when it changes without a request/response cycle. Modbus RTU at 115200 baud can do roughly 200–500 register reads per second; CANopen at 1 Mbit/s with 127 nodes can exchange process data in under 1 ms per cycle for small PDOs. For motion control synchronisation, CANopen is significantly faster.
Q: Is CAN bus still used in industrial automation?
A: Yes, especially in machine building, mobile machinery, medical devices, and robotics. CANopen remains the dominant fieldbus for servo and stepper drives in compact machines. EtherCAT is its successor in high-performance multi-axis motion (microsecond synchronisation), but CANopen at 1 Mbit/s handles most motion applications at lower cost and simpler wiring.
Q: What is DeviceNet and how does it compare to CANopen?
A: DeviceNet is an Allen-Bradley/ODVA protocol that also runs on CAN bus, widely used in North American factory automation. CANopen is the European/international equivalent. Both use CAN as the physical layer but define different object models, device profiles, and network management. DeviceNet is common with Rockwell PLCs; CANopen is common with Siemens, Schneider, and European servo drive manufacturers.
Practise Modbus register reads — the most common way a PLC communicates with a VFD or drive status register — with the Modbus register read scenario. For drive commissioning concepts, the VFD conveyor speed scenario covers frequency reference, run commands, and speed feedback.