1. CiA 402 是什么
CiA 402 是 CANopen 的驱动与运动控制行规(Device Profile Drives and Motion Control)。它规定了伺服/变频/步进驱动器"长什么样":
- 状态机:统一的使能/运行/停机/故障流程,保证任何厂商的驱动器都"安全地动起来"
- 控制字 6040h / 状态字 6041h:主站下发命令、从站上报状态的标准位定义
- 工作模式:位置/速度/转矩/回零/同步插补等,操作模式由 6060h/6061h 选择
- 数据对象:目标位置 607Ah、目标速度 60FFh、轮廓加减速 6083h/6084h 等标准化参数
简单说:只要会操作一个 CiA 402 驱动器,换任何牌子都能上手——这正是行规的价值。
2. 状态机:驱动器的一生
CiA 402 定义了 8 个状态,任何时刻驱动器只处于其中一个。状态迁移由控制字 6040h 的低 4 位 + bit7 触发:
| 状态 | 含义 | 状态字特征位 |
|---|---|---|
| Not ready to switch on | 初始化/自检中 | — |
| Switch on disabled | 上电完成,主回路未使能,可配置 | bit6=1 |
| Ready to switch on | 等待合闸 | bit0=1 |
| Switched on | 主回路已合闸 | bit0+bit1=1 |
| Operation enabled | 正常运行,可执行运动指令 | bit0+bit1+bit2=1 |
| Quick stop active | 快速停机中 | bit5=1 |
| Fault reaction active | 故障响应中 | bit3=1 |
| Fault | 故障锁定 | bit3+bit6=1 |
2.1 控制字 6040h:主站发命令
bit0 Switch on · bit1 Enable voltage · bit2 Quick stop(0=请求停机) · bit3 Enable operation · bit7 Fault reset(0→1 上升沿)
| 命令 | 值 | 从状态 → 目标状态 |
|---|---|---|
| Disable voltage | 0x0002 | 任意 → Switch on disabled |
| Shutdown | 0x0006 | Switch on disabled → Ready to switch on |
| Switch on | 0x0007 | Ready → Switched on |
| Enable operation | 0x000F | Switched on → Operation enabled |
| Disable operation | 0x000F | Operation enabled → Switched on |
| Quick stop | 0x0003 | Operation enabled → Quick stop active |
| Fault reset | 0x0080 | Fault → Switch on disabled |
对!0x000F 在 Switched on 状态是"Enable operation",在 Operation enabled 状态是"Disable operation"。命令的含义取决于当前状态——这是状态机设计里最容易迷惑新手的一点。所以从站的命令处理必须先查当前状态,再看命令位。
2.2 状态字 6041h:从站报状态
| 位 | 含义 | 位 | 含义 |
|---|---|---|---|
| bit0 | Ready to switch on | bit5 | Quick stop |
| bit1 | Switched on | bit6 | Switch on disabled |
| bit2 | Operation enabled | bit7 | Warning |
| bit3 | Fault | bit10 | Target reached |
| bit4 | Voltage enabled | bit11 | Internal limit active |
常见组合值:Switch on disabled=0x0250 · Ready=0x0221 · Switched on=0x0223 · Operation enabled=0x0233 · Quick stop=0x0227 · Fault=0x0238。
3. 工作模式:怎么运动
操作模式对象 6060h(选择)/6061h(反馈)。常用模式:
| 模式号 | 名称 | 指令对象 | 适用 |
|---|---|---|---|
| 1 | 轮廓位置 PPM | 目标位置 607Ah、轮廓速度 6081h | 点到点定位,驱动内插补 |
| 3 | 轮廓速度 PVM | 目标速度 60FFh | 速度控制 |
| 4 | 转矩 PT | 目标转矩 6071h | 力矩/张力控制 |
| 6 | 回零 HM | 回零方式 6098h、回零速度 6099h | 上电找原点 |
| 7 | 插补位置 IP | 插补数据缓冲 | 复杂轨迹 |
| 8 | 周期同步位置 CSP | 目标位置 607Ah(每周期写) | EtherCAT/高性能同步 |
| 9 | 周期同步速度 CSV | 目标速度 60FFh(每周期写) | 同步速度 |
| 10 | 周期同步转矩 CST | 目标转矩 6071h(每周期写) | 同步转矩 |
3.1 轮廓模式 vs 周期同步模式
- 轮廓模式(1/3/4):主站只给目标值 + 速度/加速度,插补由驱动内部完成。适合点位运动、单个轴。
- 周期同步模式(8/9/10):主站每个 SYNC 周期通过 PDO 下发新目标,轨迹插补在上位机/主站完成,驱动只做电流环跟随。适合多轴联动、电子凸轮、机器人。
这正好接上上一课的 PDO:周期同步模式里,每个 SYNC 周期一个 TPDO/RPDO 交换——RPDO 带目标值下来,TPDO 把实际值传上去。
4. 同步机制:SYNC 与同步 PDO
主站周期发 SYNC(0x080),所有从站收到后同步执行/采样。同步 PDO(传输类型 1~240)挂在 SYNC 上:
- SYNC 到达 → 从站把 TPDO 数据打包发出 / 应用新 RPDO 目标
- 传输类型 1:每 1 个 SYNC 发一次;类型 n:每 n 个 SYNC 发一次
- 周期同步模式要求SYNC 周期 ≈ 电流环周期整数倍(如 1ms),且 PDO 的 COB-ID、映射在预操作阶段配好
CSP 模式如果连续几个周期没收到新目标位置,驱动器会进入同步丢失状态并可能触发故障。所以主站要监控 TPDO 的"心跳/实际位置是否在更新",一旦失联立即安全停机,而不是让位置悬空。
5. 交互式演示:状态机迁移
点击下方命令按钮,观察状态机怎么迁移、控制字/状态字怎么变。重点试:0x000F 在"Switched on"是使能、在"Operation enabled"是停机;以及从"Fault"只能靠 0x0080 复位。
观察要点:Fault reaction active 会短暂停留后进入 Fault;复位只在 Fault 状态有效;快速停机后可重新走 上电→合闸→使能 回到运行。
6. 代码实现(C语言)
6.1 状态机核心
6.2 周期同步 CSP 模式的一拍
7. 工程要点与常见误区
要点 1:使能顺序不能跳
必须按 上电(0x06) → 合闸(0x07) → 使能(0x0F) 的顺序走,跳步命令会被忽略。很多"为什么发 0x0F 没反应"其实是当前状态不对。
要点 2:故障复位是上升沿
0x0080 要在故障状态下由 0→1 触发一次。持续发 0x80 不产生重复复位;复位前先清掉故障源,否则复位后又立刻进故障。
要点 3:同步周期 vs 控制周期
CSP 的 SYNC 周期(如 1ms)要 ≤ 位置环周期,且最好是其整数倍;TPDO 把实际位置发回主站做闭环/监控。周期不匹配会出现"位置来回追"的振荡。
要点 4:回零是上电第一件事
增量编码器必须回零后才能用绝对位置;回零方式(限位/原点/力矩堵转)由 6098h 选择,回零未完成前不应下发定位指令。
误区 1:以为 0x000F 永远是"使能"
0x000F 在 Operation enabled 状态下是"Disable operation"(停)——命令含义由当前状态决定。
误区 2:故障后直接发使能
必须先 0x0080 复位回 Switch on disabled,再重新 上电→合闸→使能。跳过复位会一直卡在 Fault。
误区 3:轮廓模式和周期同步模式混用
轮廓模式由驱动内插补、主站只下目标;周期同步模式由主站逐周期下位置。混用会出现"位置被驱动自己改了,又被主站改回来"的打架。
8. 小结
- CiA 402 用状态机统一了驱动器的使能/运行/停机/故障流程,命令含义取决于当前状态
- 控制字 6040h 发命令(0x02/06/07/0F/03/80),状态字 6041h 报状态(bit0-6 组合)
- 工作模式分轮廓模式(驱动内插补)和周期同步模式(主站逐周期下目标)两大类
- 周期同步模式依赖 SYNC + 同步 PDO,是运动控制与 FOC 电流环对接的桥梁
- 回零、故障复位、同步丢失处理是现场最常踩的坑
下一篇我们把视角切回从站本身——CANopen 从站怎么在 STM32 上落地:CANopenNode 移植、PDO/SDO 配置、心跳与节点 ID,以及总线负载率的工程预算。