4. CiA402驱动行规核心
CiA402(CANopen Drive Profile)是CANopen协议体系中专门面向驱动与运动控制设备的行规,它定义了伺服驱动器、变频器、步进驱动器在CANopen网络中的标准化行为。对于伺服驱动开发者而言,理解CiA402的设备模型、状态机、控制字/状态字以及运行模式,是完成驱动器固件设计、上位机调试和系统集成的基石。本章将围绕这四个核心维度展开,帮助读者建立从“寄存器映射”到“实际使能运行”的完整认知链路。
4.1 CiA402设备模型:对象字典与通信架构
4.1.1 核心原理:对象字典的分区与映射
CiA402设备模型建立在CANopen对象字典(Object Dictionary, OD)之上。每个伺服驱动器在CANopen网络中表现为一个节点,其所有参数、命令、状态均通过OD中的索引(Index)和子索引(Subindex)进行寻址。CiA402行规对OD的地址空间做了明确划分:0x6000-0x9FFF为行规专用区域,其中0x6040(控制字)、0x6041(状态字)、0x6060(模式)、0x6061(模式显示)是驱动器的“神经中枢”;而0x607A(目标位置)、0x6083(轮廓速度)、0x60FF(目标速度)等则承载具体运动参数。此外,0x2000-0x5FFF区域允许厂商自定义参数,例如电流环PID增益、编码器分辨率、电子齿轮比等。
设备模型还定义了PDO(过程数据对象)与SDO(服务数据对象)的协同机制。SDO用于参数配置和诊断,采用“请求-响应”模式,适合非周期性数据;PDO则用于实时传输控制字、状态字和目标值,采用“生产者-消费者”模式,1ms甚至更短的周期内即可完成一次刷新。实际工程中,通常将0x6040和0x607A映射到同一个TXPDO,将0x6041和0x6061映射到同一个RXPDO,以实现“一发一收”的闭环控制。
4.1.2 判断方法:如何快速定位OD参数
在调试伺服驱动器时,工程师需要快速判断某个功能对应哪个OD索引。建议遵循以下步骤:
- 功能归类:先判断是“控制命令”(如使能、急停)、“状态反馈”(如当前位置、报警码)还是“配置参数”(如加速度、电子齿轮)。
- 行规查表:控制命令和状态反馈优先查0x6040/0x6041;模式相关查0x6060/0x6061;运动参数查0x607A-0x60FF区间。
- 厂商手册补充:若在标准区间找不到,则查阅厂商自定义区(0x2000-0x5FFF),例如某些驱动器将陷波滤波器参数放在0x2100。
4.1.3 案例拆解:电子齿轮比配置
某自动化产线需要将伺服电机每转脉冲数从默认的10000改为8000,以匹配上位机PLC的脉冲输出频率。操作过程如下:
- 初始现象:电机运行速度比设定值快25%,导致输送带位置偏差。
- 分析:PLC输出100kHz脉冲,电机实际转速=100kHz/10000×60=600rpm,而期望转速=100kHz/8000×60=750rpm。
- 操作:通过SDO写入0x6091(齿轮比分子)为1,0x6092(齿轮比分母)为0.8(或直接写入分子8000、分母10000)。
- 结果:电机转速恢复至750rpm,位置偏差消除。
此案例说明,OD参数配置必须结合机械传动比和编码器分辨率综合计算,不能盲目修改。
4.1.4 常见误区与总结
设备模型的核心价值在于“标准化接口+灵活扩展”。开发者应优先使用标准OD对象,仅在必要时扩展厂商自定义区,并做好文档记录。
4.2 CiA402状态机:从断电到运行的全生命周期
4.2.1 核心原理:状态定义与转换条件
CiA402状态机定义了驱动器从初始化到故障处理的完整状态流转路径,共包含8个状态:Not Ready to Switch On、Switch On Disabled、Ready to Switch On、Switched On、Operation Enable、Quick Stop Active、Fault Reaction Active、Fault。状态转换由控制字0x6040的低4位(Bit0-Bit3)驱动,同时状态字0x6041的低6位(Bit0-Bit5)反映当前状态。
关键转换路径包括:
- 上电初始化:驱动器完成自检后进入Switch On Disabled(状态字=0x0250)。
- 使能流程:依次写入控制字0x0006(Shutdown)→0x0007(Switch On)→0x000F(Enable Operation),状态字依次变为0x0221→0x0223→0x0227。
- 故障处理:任何状态下发生故障,驱动器进入Fault Reaction Active(状态字=0x002F),执行急停或减速停止,完成后进入Fault(状态字=0x0008)。
4.2.2 操作流程:标准使能与去使能步骤
以PLC通过CANopen控制伺服为例,标准使能流程如下:
// 伪代码示例:使能伺服
writeSDO(0x6040, 0x00, 0x0006); // Shutdown: 清除使能状态
writeSDO(0x6040, 0x00, 0x0007); // Switch On: 进入Switched On
writeSDO(0x6040, 0x00, 0x000F); // Enable Operation: 正式使能
// 去使能流程
writeSDO(0x6040, 0x00, 0x0007); // 回到Switched On
writeSDO(0x6040, 0x00, 0x0006); // 回到Ready to Switch On
writeSDO(0x6040, 0x00, 0x0000); // 回到Switch On Disabled
注意:每次写入控制字后,应读取0x6041确认状态字已更新,再进行下一步操作,避免时序竞争。
4.2.3 案例拆解:使能失败排查
某设备调试时,写入0x000F后状态字停留在0x0223(Switched On),无法进入Operation Enable。排查过程:
| 排查步骤 | 检查项 | 结果 |
|---|---|---|
| 1 | 读取0x6041 Bit3(Fault) | 0,无故障 |
| 2 | 读取0x6041 Bit5(Quick Stop) | 0,未激活 |
| 3 | 检查0x6060模式值 | 发现模式为0(无模式),导致无法使能 |
| 4 | 写入0x6060=1(PP模式) | 重新使能成功 |
此案例表明,状态机转换不仅依赖控制字,还受模式配置、硬件使能信号(如伺服使能端子)等外部条件制约。
4.2.4 常见误区与总结
状态机是驱动器的“安全逻辑”,任何应用开发都必须严格遵循状态转换表,不得跳过中间状态。
4.3 控制字与状态字:位定义与工程应用
4.3.1 核心原理:关键位功能详解
控制字0x6040的Bit0-Bit3是状态机控制位,Bit4-Bit6用于模式特定命令(如Bit4=0表示不使能新目标,Bit4=1表示使能新目标)。状态字0x6041的Bit0-Bit5反映状态机状态,Bit10(Target Reached)和Bit12(Drive Follows Command)是运动完成标志。下表列出常用位定义:
| 位 | 控制字0x6040 | 状态字0x6041 |
|---|---|---|
| Bit0 | Switch On | Ready to Switch On |
| Bit1 | Enable Voltage | Switched On |
| Bit2 | Quick Stop | Operation Enable |
| Bit3 | Enable Operation | Fault |
| Bit4 | 模式特定(如使能新目标) | Voltage Enabled |
| Bit5 | 模式特定(如立即修改) | Quick Stop |
| Bit6 | 模式特定(如/相对) | Switch On Disabled |
| Bit10 | - | Target Reached |
4.3.2 判断方法:通过状态字定位异常
当驱动器无法正常工作时,读取0x6041并解析各状态位是最高效的排障手段。例如:
- 状态字=0x0008:驱动器处于Fault状态,需读取0x603F(错误代码)定位具体故障。
- 状态字=0x0250:驱动器未使能,检查控制字是否写入正确。
- 状态字=0x0227但Bit10=0:目标未到达,检查运动参数是否合理。
4.3.3 案例拆解:PDO映射中的位操作
在PDO通信中,控制字和状态字通常以16位无符号整数传输。某项目需要将状态字的Bit10(Target Reached)和Bit12(Drive Follows Command)组合为一个“运动完成”信号,可在PLC中通过位掩码实现:
// PLC ST语言示例
IF (status_word AND 16#1400) = 16#1400 THEN
motion_done := TRUE;
ELSE
motion_done := FALSE;
END_IF;
这种位操作方式避免了逐个位判断的繁琐,提高了程序效率。
4.3.4 常见误区与总结
控制字与状态字是CiA402的“数字接口”,理解每一位的含义是进行高级运动控制的基础。
4.4 运行模式概述:位置、速度、力矩与同步模式
4.4.1 核心原理:模式分类与选择依据
CiA402定义了多种运行模式,通过0x6060写入模式号,0x6061显示当前激活模式。主要模式包括:
- 轮廓位置模式(PP, Mode 1):驱动器内部生成梯形或S型速度曲线,适合点到点定位。
- 轮廓速度模式(PV, Mode 3):驱动器按设定速度运行,适合恒速输送。
- 轮廓力矩模式(PT, Mode 4):直接控制输出力矩,适合压合、张力控制。
- 循环同步位置模式(CSP, Mode 8):上位机每个同步周期发送目标位置,适合多轴插补。
- 循环同步速度模式(CSV, Mode 9):上位机发送目标速度,适合电子齿轮同步。
- 循环同步力矩模式(CST, Mode 10):上位机发送目标力矩,适合力控应用。
- 回零模式(HM, Mode 6):执行找原点操作。
4.4.2 操作流程:模式切换与参数配置
以从PP模式切换至CSP模式为例:
- 将状态机切换至Switch On Disabled(控制字=0x0000)。
- 写入0x6060=8(CSP模式)。
- 读取0x6061确认模式已切换。
- 配置CSP相关参数:0x60C0(插补周期)、0x60C1(插补数据选项)。
- 重新使能并启动同步周期。
4.4.3 案例拆解:多轴同步控制中的模式选择
某印刷设备需要三个伺服轴同步运行,其中主辊轴采用CSV模式,两个从动轴采用CSP模式跟随主辊位置。系统架构如下:
| 轴 | 模式 | 同步方式 | 关键参数 |
|---|---|---|---|
| 主辊 | CSV | 作为同步主站 | 0x60FF目标速度 |
| 从动轴1 | CSP | 跟随主辊位置 | 0x607A目标位置 |
| 从动轴2 | CSP | 跟随主辊位置 | 0x607A目标位置 |
调试中发现从动轴2位置滞后,分析原因是其插补周期(0x60C0)设置为2ms,而主辊为1ms。将从动轴2的插补周期改为1ms后,同步误差从±0.5mm降至±0.05mm。
4.4.4 常见误区与总结
模式选择直接影响控制精度和系统复杂度。工程师应根据应用需求(定位精度、同步要求、通信周期)选择最合适的模式,并充分理解各模式的参数配置和时序要求。
本章系统梳理了CiA402驱动行规的四大核心要素:设备模型提供了标准化的参数访问接口,状态机确保了安全可控的运行流程,控制字/状态字实现了精确的指令交互,运行模式则覆盖了从简单定位到复杂同步的各类应用场景。掌握这些内容,开发者即可在此基础上进行驱动器固件开发、上位机通信调试和系统故障排查。