PDO(Process Data Object)是CANopen里实时性最好的通信方式。
和SDO不同,PDO不采用问答模式,而是"同步发送接收同时进行"。
一、TPDO和RPDO的帧ID速算
TPDO(设备发送数据给主站):
TPDO1 = 0x180 + NodeID
TPDO2 = 0x280 + NodeID
TPDO3 = 0x380 + NodeID
TPDO4 = 0x480 + NodeID
RPDO(主站发送命令给设备):
RPDO1 = 0x200 + NodeID
RPDO2 = 0x300 + NodeID
RPDO3 = 0x400 + NodeID
RPDO4 = 0x500 + NodeID
NodeID=1时:
TPDO1 = 0x181,TPDO2 = 0x281
RPDO1 = 0x201,RPDO2 = 0x301
二、PDO的地址分配表
第一路 第二路 第三路 第四路
RPDO设置地址 0x1400 0x1401 0x1402 0x1403
RPDO映射地址 0x1600 0x1601 0x1602 0x1603
TPDO设置地址 0x1800 0x1801 0x1802 0x1803
TPDO映射地址 0x1A00 0x1A01 0x1A02 0x1A03
三、PDO设置地址的子索引说明(以0x1400/0x1800为例)
子索引0x00:Number Of Entries,记录有效子索引总数
子索引0x01:COB-ID used by PDO,帧ID定义,最高位为1时通道禁用
子索引0x02:Transmission type,触发模式(0=同步,其他值=异步)
子索引0x03:Inhibit time,最小发送间隔,单位100μs
子索引0x05:Event timer,事件触发定时器,单位ms
子索引0x06:SYNC start value,SYNC起始计数偏移(仅TPDO有效)
四、如何禁用一个PDO通道
方法:把帧ID的最高位设为1。
例如:TPDO1正常帧ID是0x181,
设为0x80000181即可禁用该通道。
五、每路PDO最多传多少数据?
每路PDO最大 8字节(64位)。
可以不满8字节,但不能超过。
超出64位会报错误码:0x06040002
六、实战场景
调试时看到报文里没有某个TPDO的帧,
先检查:通道是否被禁用(帧ID最高位),
再检查:TPDO触发类型是否设置正确(0x1800子索引2)。
—
作者:CANopen实战笔记
网硕互联帮助中心




评论前必须登录!
注册