CANopen PDO(过程数据对象)是实时数据传输的核心机制,但很多工程师在配置时总被“同步”“事件驱动”“RTR”这些术语绕晕。
本文将从TPDO与RPDO的基本概念出发,深入解析同步传输与事件驱动传输两种模式的工作原理、配置要点和适用场景,帮你理清PDO传输模式的来龙去脉。
一、先分清两个方向:TPDO 和 RPDO
CANopen PDO的传输模式分为两种:同步传输和事件驱动传输。同时,按照数据流向,PDO又分为:
TPDO(发送PDO):驱动器或IO设备把自身状态、实际转速、反馈点位等数据发到总线上,传给主站。
RPDO(接收PDO):接收主站下发的指令,比如目标转速、开关量等。
RPDO通过对象字典索引 0x1400 到 0x15FF 的子索引 0x02 控制传输模式;TPDO则通过对象字典索引 0x1800 到 0x19FF 的子索引 0x02 控制传输模式

二、RPDO 传输模式解析
同步模式
对于RPDO,同步模式意味着CANopen设备在收到紧接着的一帧 SYNC(同步帧) 后,接收的数据才生效。

SYNC帧由总线中任意一台设备产生,通常由PLC产生,通过索引0x1005的对象字典定义SYNC帧ID信息与使能配置,默认使用标准帧ID 0x80。通过索引0x1006的对象字典控制SYNC帧的发送间隔和消费时间。
同步窗口超时处理:
如果PDO错过了同步窗口时间,所有的TPDO将被丢弃并产生 EMCY(紧急报文) ,所有的RPDO也将被丢弃,直到下次同步消息接收后恢复。
同步窗口时间通过索引0x1007的对象字典控制,配置为0表示禁用该功能,其他值表示对应时间,单位为微秒(μs)。
事件驱动模式
对于RPDO,事件驱动意味着任何时候都可以接收PDO,且数据立即生效。
为避免频繁更新数据占用总线,CANopen协议定义了抑制时间(Inhibit Time),可通过RPDO对象字典的子索引0x03配置,单位为100μs。配置为0表示禁用该功能。
同时,为了保持连接活跃,子索引0x05定义了事件时间(Event Timer) ——发送方超过事件时间未进行通讯,接收方会触发事件超时错误(产生EMCY消息)。配置为0表示禁用该功能。
三、TPDO 传输模式解析
同步发送模式
TPDO的同步发送模式可分为非周期(Type = 0) 和周期(Type = 1~240) 两种。
同步(非周期):每收到1个SYNC就发送1帧TPDO(1:1同步)。收到SYNC的瞬间立刻采样当前实时数据并在窗口内发送,采样和发送同步,反馈的是SYNC到来瞬时的真实值——伺服闭环控制首选。
同步(周期N):每收到N个SYNC才发送1帧TPDO(分频系数N=1~240)。在上一次TPDO发送后到N个SYNC触发前,持续缓存最新变化数据,等到凑够N个SYNC时发送缓存的最新值。采样和发送不同步——当N=1时,本SYNC发送的是上一周期已经更新完毕的数据。

事件驱动模式
TPDO的事件驱动模式指PDO的发送由CANopen设备内部事件触发(如数据变化),数据变化即发,无需等待SYNC帧。
但这种模式存在一直占用总线的可能。为保证低优先级通信对象不被“饿死”,协议设置了两个关键参数:
抑制时间(子索引0x03,单位100μs):限制两次传输服务间的最小时间间隔,配置为0表示禁用。
事件定时器(子索引0x05):定义设备的最大发送间隔,避免长期无报文导致主站控制失联。

远程帧触发(RTR)
除了同步模式和事件模式,TPDO还支持远程帧触发(RTR),分为两种方式:
事件驱动方式:CANopen设备在收到RTR请求后,立即采样并直接生成PDO发送。
同步方式:CANopen设备在SYNC接收后开始采样并缓冲进PDO,收到远程帧后才发送。
总结
CANopen PDO的传输模式选择,本质上是实时性与总线负载之间的权衡:
同步模式适合对时间确定性要求高的场景(如伺服控制),数据在SYNC时刻统一刷新,保证整个网络的动作一致性。
事件驱动模式适合状态变化、报警等需要即时响应的数据,但也需要通过抑制时间和事件定时器来防止总线被“淹没”。
RTR模式则为主站提供了按需查询的灵活性。
理解TPDO与RPDO的方向差异,掌握同步窗口、抑制时间、事件定时器这几个关键参数的含义,配置PDO时就不会再“凭感觉”了。
全部0条评论
快来发表一下你的评论吧 !