CANopen系列文章【1】--SYNC【4】-同步RPDO & 同步TPDO

在本论坛,有网友说:同步RPDO是由主站发送给从站的PDO,主站在发送SYNC之前,将所有从站的RPDO发送给从站,然后再发SYNC,此时所有从站同时处理此RPDO。

然后远方大侠同意这个观点。

我的问题是:假设主站发送SYNC
(1)那么假设这个同步RPDO的ID号是0x308,那么主站发送0x308的快慢可以任意由主站来决定么?
比如这个RPDO的传输type是2,那么 主站发送0x308的周期可以小于2个SYNC?可以大于2个SYNC,比如10个SYNC?比如可以由主站对该pdo进行周期触发和事件触发?
也就是说所谓同步,是不是都是针对于从站的同步,而对于主站发送和接收的PDO没有关系?


(2)第二个问题是关于同步TPDO

比如有20个从节点,从节点的TPDO的发送TYPE都设置成1,那么就是所有的从站接收到SYNC后马上采样然后发送TPDO。那么岂不是都堵在一起了,尽管可以仲裁,但堵在一起肯定不是什么好现象。那么请问CANopen有没有相关的协议解决这个问题,让同步TPDO尽量在同一个同步窗口内尽量的分散开,以降低瞬间负载?


=========================================================

[yuanfang]

1)同步RPDO有不同的做法,有些主站会遵循同步机制,按传输类型来发送RPDO,有些主站会采用异步方式来发送RPDO,但对于使用没有影响,因为重点是从站要同时执行他们收到的PDO。
但在运动控制主机中,RPDO是要按同步机制来严格发送的,不然从站伺服驱动器会报错

2)TPDO的同步发送机制,原本就是利用了CAN的仲裁能力,可以使数据包在最短的时间内(同步窗口)发送完毕,因为此时数据量很大,总线不会有空闲,因此你不用再去费心仲裁的事情。
也因此,CAN的数据刷新是不确定的,有时候这台先发送数据,有时候那台先发送数据,但都在一个同步周期发送,对应用没有影响。后来的协议为了发送这种因仲裁带来的不确定性,使用了时间片轮转方法,先在配置 的时候就分配好每台从站数据更新的时机和占用总线时间,后面就按这个分配的时机来刷新数据,所以数据刷新的时机是一定的。像后来的FlexRay就是这样。


你可能感兴趣的:(CANopen系列文章【1】--SYNC【4】-同步RPDO & 同步TPDO)