Industrial automation systems rely on efficient communication between devices — sensors, drives, PLCs, and controllers must continuously share configuration data and real-time process values. One of the most widely used communication standards for this is CANopen, a protocol built on the CAN (Controller Area Network) bus.
If you've ever worked with CANopen, you've probably heard terms like Object Dictionary, SDO, and PDO. In this article, we'll break these concepts down into plain language.
The Object Dictionary: The Device's Blueprint
At the heart of every CANopen device is the Object Dictionary (OD).
Think of it as a catalog of parameters that defines everything the device knows and can do.
Each parameter has an index (like an address in memory).
Some entries have sub-indices if multiple elements are grouped together.
Each entry has a data type (integer, float, Boolean, etc.) and access rights (read-only, write-only, or read/write).
The OD is what makes devices interoperable: a PLC or engineering tool can look at the OD and instantly know what parameters are available.
Here you can see both configuration entries (like heartbeat time) and process data entries (like actual velocity).
SDO: Service Data Object
The SDO is the “configuration channel” for CANopen devices. It follows a client/server model: one device requests, the other responds. It allows reading or writing to the Object Dictionary. Any parameter can be accessed, regardless of size.
Example: Setting a motor's acceleration limit via SDO.
PLC → Drive: “Write 0x6083 (Acceleration) = 1000 rpm/s”
Drive → PLC: “Confirmed.”
SDOs are mostly used during startup, commissioning, or diagnostics.
PDO: Process Data Object
The PDO is the “real-time channel.” It has been designed for speed and efficiency. PDO can transmit up to 8 bytes of process data in a single CAN frame. Data is sent cyclically (on a timer) or event-driven (when a condition changes). There is no request/response (PDOs are simply broadcast for any node to consume.)
Example: A drive continuously broadcasting its speed and torque every 10 ms. PDOs are mapped to Object Dictionary entries. For instance, Actual Velocity (0x606C) and Torque could be packed into one PDO and sent out periodically.
For more information check the link for CAN basic to advanced.
Summary for General SDOs to identify the device
Example of usage: Suppose the device id is 0x08:
request for device type: 608#40 00 10 00 00 00 00 00
response: 588#43 00 10 00 2D 01 00 00
meaning that the device type is 0000012D which is cia-301 basic device.