云计算百科
云计算领域专业知识百科平台

PDO的帧ID怎么算?TPDO/RPDO地址映射全攻略

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实战笔记
 

赞(0)
未经允许不得转载:网硕互联帮助中心 » PDO的帧ID怎么算?TPDO/RPDO地址映射全攻略
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!