CANopen系列文章【1】--SYNC【4】-同步RPDO & 同步TPDO
然後遠方大俠同意這個觀點。
我的問題是:假設主站傳送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就是這樣。