canopen疑点解惑
1 设备上电后状态机详细描述:
- 设备上电即为Operational,初始化can控制器和对象字典后进入Pre-operational 状态。
- Pre-operational 状态是进行SDO的最佳时机和PDO映射设置的唯一黄金安全时机,因此时设备还未工作,设置后立即生效。但若从机设备PDO映射是默认的或已出厂整好则可以直接跳过PDO.
- 设备根据心跳是否设置(0x1017值是否=0)绝对是否开始发心跳包【(COB-ID = 0x700 + NodeID)】(没设置则不发),心跳包的目的:1用于主机判断设备是否离线;2 用于对主机TPDO时回应()
- 设备收到主机发送 NMT_Start_Node(0x01 + NodeID)后,从 Pre-operational 切换到 Operational,此时可以进行PDO.
2 Pre-operational 状态和Operational的SDO区别:
前者是配置设备行为(PDO 映射、控制参数、节点 ID 等);后者是在运行时调整或诊断(如在线改目标速度、读取错误日志),此时若进行PDO映射设备是拒绝的。
3 主从机的PDO(TPDO1~4;RPDO1~4):
- 主机TPDO主要用于发送控制命令(目标位置、速度)、多轴SYN同步命令、数字量输出命令(继电器开关指令);从机TPDO主要是主动上报传感器采集数据、设备状态等
- TPDO有4种发送方式:周期发送,同步发送(收到主机发来的sync后)、变化发送
- 主机的TPDO1对应设备的RRDO1(OB-ID +设备ID),设备TPDO(OB-ID +主机ID)对应到主机的RPDO1.
- 为何有4个PDO?:为了灵活性、实时性、数据分组和总线负载优化,也不是都须实现(常见的用2个:高频的紧急的同步触发事件触发的用1个,周期的低频的用另一个)。

4 COB_ID:
COB-ID其实就是11位CAN ID,它分两部分组成,高4位为功能码,低7位为从设备地址码,所以最多支持127个从设备。


能码和具体的通信服务相关(如下图所示):


浙公网安备 33010602011771号