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个,周期的低频的用另一个)。

    image

 

 

4 COB_ID:

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

image

 

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

image

 

posted on 2025-12-04 18:23  杰瑞鼠  阅读(6)  评论(0)    收藏  举报