1. Industry Pain Points & Technical Evolution Background
The CANopen bus is the mainstream industrial fieldbus for connecting automated equipment, widely used across servo drives, sensors, and PLC networking. However, most on-site deployment and debugging processes face severe technical bottlenecks due to a poor understanding of SDO and PDO application boundaries:
-
Mixed Communication Modes Degrade Real-Time Performance: Many engineers mistakenly use SDO for high-frequency real-time data transmission, such as tracking servo speed and position feedback. Due to the SDO handshake overhead and its acyclic nature, bus latency easily exceeds 50 ms, causing severe equipment jitter and desynchronized motion control.
-
PDO Misuse Causes Parameter Configuration Failures: Attempting to use PDO to write non-real-time static parameters—such as device node IDs, baud rates, and system protection thresholds—leads to unstable data writing, parameter loss, and initialization failures.
-
Blind Configuration Triggers Bus Congestion: Unregulated PDO mapping combined with excessive SDO polling loops hogs massive bus resources. This triggers frequent data collisions, unexpected node dropouts, and exceptionally low communication efficiency in multi-node CANopen networks.
-
Lack of Practical Reference Code and Application Examples: Traditional theoretical protocol documents are often obscure and lack concrete on-site operational examples, leading to elongated debugging cycles and high error rates during CANopen secondary development and equipment upgrades.
To overcome these issues, the CANopen bus standardizes two core data interaction frameworks under the CiA 301 standard: SDO for acyclic, point-to-point parameter configuration, and PDO for cyclic, high-speed real-time data streaming. Correctly separating and applying these two models is a strict prerequisite for a stable, high-efficiency industrial CANopen topology.
2. Core Technology & Underlying Architecture Analysis
From the perspective of the underlying CANopen protocol architecture, SDO and PDO possess entirely different data transmission mechanisms, addressing modes, and trigger logics. These characteristics dictate their distinct industrial application domains, with all performance differences tracing back to the protocol layer handshake rules defined by the CiA 301 standard.
1. SDO (Service Data Object) Core Mechanism
SDO is a point-to-point, handshake-based, acyclic communication channel. It operates strictly on a Client-Server model, requiring a complete "Request-Response" two-way handshake for every single data interaction. While this mechanism allows SDO to access every single parameter slot in a device's Object Dictionary (OD) with flexible payload lengths, it introduces high protocol overhead and low real-time performance. It is used primarily for device boot initialization, parameter modification, and error history queries.
2. PDO (Process Data Object) Core Mechanism
PDO is a one-way, handshake-free, cyclic or event-driven real-time data channel. It handles automatic transmission and reception of pre-mapped object dictionary variables via specialized TPDO (Transmit PDO) and RPDO (Receive PDO) pipelines. Because it bypasses the "Request-Response" handshake altogether, it features zero protocol overhead, high transmission frequencies, and sub-millisecond delays—making it perfect for real-time process values while machines are running.
The following multi-dimensional parameter comparison table provides an explicit breakdown of the core performance boundaries between SDO and PDO:
| Communication Mode | Transmission Mechanism | Handshake Mode | Real-Time Delay | Transmission Cycle | Data Length | Core Application Scenario |
| CANopen SDO | Point-to-Point Acyclic Transmission | Request-Response Two-Way Handshake | 20–50 ms | Manual trigger or initialization sequence; no fixed cycle | Arbitrary length (supports segmented/block streaming) | Static parameter configuration, equipment setup, object dictionary queries |
| CANopen PDO | One-Way Cyclic Process Streaming | Handshake-free; automatic asynchronous push | $\le$ 1 ms | Fixed cyclic intervals (1 ms / 10 ms configurable) or event-driven | Fixed at a maximum of 8 bytes per frame | Servo motion closed-loops, sensor cyclic data updates |
Core Mechanism Summary: SDO sacrifices real-time speed to guarantee full object dictionary accessibility and flexible data handling, acting as a configuration and debugging-oriented tool. PDO achieves ultra-low latencies via hardcoded data mappings and handshake-free transfers, acting as a control-oriented engine. These two modes are complementary and must be isolated to their respective roles.
3. Typical Simple Engineering Examples of SDO & PDO
The following practical examples demonstrate how SDO and PDO operate within a standard PLC-to-servo CANopen network layout.
Example 1: CANopen SDO Typical Application (Servo Static Parameter Configuration)
-
Scenario Description: Before a servo drive can run, the PLC must configure the servo's operating mode, update its network baud rate, define overcurrent limits, and read the hardware firmware version string. These are one-time, non-real-time configuration tasks handled via SDO.
-
Simple Operation Logic:
-
The PLC acts as the SDO Client and transmits a parameter write request targeting the SDO Server (the servo drive) to access explicit entries in the servo's Object Dictionary.
-
The PLC executes one-time configuration commands: it writes to index
0x6060to select the servo's Position Control Mode, writes to0x2001to adjust the device baud rate, and updates index0x6073to establish the overcurrent protection ceiling. -
Once the servo drive processes the commands and updates its registers, it returns a confirmation response code (
0x60) back to the PLC, completing the SDO handshake. -
The PLC sends a read command to index
0x100Ato query the firmware string, verifying that the node is active and properly versioned.
-
-
Engineering Characteristics: A single SDO operation takes approximately 30 ms to complete and has no fixed cycle. It can touch any index within the Object Dictionary, making it ideal for pre-operational tuning.
Example 2: CANopen PDO Typical Application (Servo Real-Time Motion Control)
-
Scenario Description: During active production line operations, the PLC must cyclically push target position commands and target velocity vectors to the servo drive every few milliseconds, while the servo drive continuously streams back its actual encoder positions, current speed, and error state registers. This requires high-speed PDO communication.
-
Simple Operation Logic:
-
Pre-Operational Stage: Before starting the machine, the engineer maps the servo's Target Position (
0x607A) and Target Velocity (0x60FF) registers straight into the drive's RPDO channels. -
Similarly, the servo's Actual Position (
0x6064), Actual Velocity (0x606C), and Error Code (0x603F) parameters are mapped directly into its TPDO channels. -
The bus cycle time is locked at 5 ms. Once operational, the PLC automatically pushes target values through RPDO every 5 ms without requiring any handshake confirmations.
-
The servo drive automatically pushes its real-time operational metrics back to the controller via its TPDO stream at the same 5 ms interval, establishing a tight, closed-loop control system.
-
-
Engineering Characteristics: PDO transmission latencies are stably maintained at $\le$ 1 ms on a 1 Mbps bus. By shedding all handshake overhead, it provides the deterministic execution needed for high-speed motion control loops.
Example 3: Mixed Application of SDO and PDO (Standard Industrial Workflow)
-
Scenario Description: Standardizing the initialization, execution, and troubleshooting phases of a CANopen node during a normal factory machine cycle.
[ Power-On Initialization ] ---> Use SDO to verify IDs, set limits, and map PDO channels.
|
v
[ Formal Operational Phase ] ---> Disable SDO polling. Depend 100% on high-speed PDO.
|
v
[ Failure Diagnosis Phase ] ---> Node flags an error. Trigger SDO to read error logs.
-
Standard Workflow:
-
Power-On Initialization Phase (SDO Dominated): The PLC boots up and uses SDO commands to verify device profiles, load calibration metrics, and configure custom PDO mapping configurations.
-
Formal Operational Phase (PDO Dominated): The master commands the network into the NMT Operational state. All background SDO polling is suspended, and the network relies entirely on PDO streams to execute real-time automation control.
-
Abnormal Debugging Phase (SDO Auxiliary): If a node issues an emergency flag, the PLC triggers an asynchronous SDO read command to extract the exact fault codes from the drive's error logs (
0x1003) for diagnostics, allowing real-time PDO traffic to continue running on unaffected nodes.
-
-
Actual Engineering Effect: Total bus bandwidth utilization is optimized to over 90%, control loops stabilize below 5 ms, and mechanical jitter caused by communication delays drops to zero.
4. Selection & Deployment Best Practices (Expert Guide)
To eliminate network latency spikes and data collisions, field engineers should strictly implement the following 3 core deployment specifications:
-
Strict Scenario-Based Protocol Boundary Enforcements: Unconditionally isolate all static adjustments—including device boot parameters, tuning variables, dictionary scans, and diagnostic log readouts—to SDO loops. Conversely, allocate all real-time process values—such as motion trajectories, status updates, and sensor arrays—exclusively to PDO frames. Never route cyclic operational control over SDO channels.
-
PDO Mapping Optimization & Bandwidth Throttling: Because a single PDO frame is structurally limited to 8 bytes by the underlying CAN layer, engineers must tightly pack variables. Group low-bit process indicators (such as 16-bit status words and discrete digital I/O) into a single PDO frame to maximize efficiency. Select a balanced cyclic transmission window (e.g., 2 ms to 10 ms depending on physical machine dynamics), and avoid mapping unneeded data objects to preserve bus headroom.
-
SDO Polling Suppression During Machine Cycles: Once the industrial bus enters its operational state, disable all cyclic or recurring SDO polling blocks. SDO diagnostics should be event-triggered (e.g., executing only when an error flag is raised) rather than continuously looping. This prevents configuration traffic from colliding with high-priority real-time process control data.
5. Frequently Asked Technical Questions (FAQ)
Q1: What is the simplest way to distinguish between CANopen SDO and PDO in the field?
A: The easiest rule of thumb: SDO is for settings; PDO is for running. Use SDO when you need to change a parameter, read a version number, or modify a threshold limit (slow, manual, one-time execution). Use PDO when you are streaming active encoder positions, velocity commands, or sensor readings (fast, automated, continuous cycling).
Q2: Why is it highly discouraged to use SDO for real-time servo motor control?
A: SDO relies on a strict, two-way "Request-Response" handshake mechanism. This introduces massive protocol overhead, pushing individual message delays up to 20–50 ms with no guarantee of timing determinism. Using SDO to handle motion loops causes immediate position lag, speed command desynchronization, and mechanical servo jitter. PDO operates without handshakes, enabling the stable, low-latency execution required for real-time motion control.
Q3: Can a PDO frame be used to modify a device's static parameters, such as its node ID or baud rate?
A: No. PDO can only read and write data objects that have been explicitly mapped into its active transmission registers beforehand. Non-mapped configuration registers—such as hardware node IDs, physical baud rates, and system safety ceilings—cannot be modified via PDO. These changes must be carried out using SDO point-to-point handshake transactions.
Q4: How should I structure my master program to optimize the coexistence of SDO and PDO?
A: Use a phased execution strategy. During the boot/standby phase, keep the network in a pre-operational state and use SDO commands to execute all parameter modifications and PDO mapping alignments. Once the system transitions to the operational running phase, suspend background SDO polling completely and let PDO handle the real-time runtime control loop. Only allow SDO channels to wake up on an asynchronous trigger to check diagnostics if an explicit error code is flagged by a node.