【CANopen】PDO進程數據對象


查找資料時,發現一個很好的博客,博主剖析的通俗易懂
 

PDO介紹:

英文名:Process Data Object ,過程數據對象。用來傳輸設備的實時數據。PDO消息的內容是預定義的,或者在網絡啟動時配置的。采用生產者/消費者模式進行通信,無確認模式的廣播(不去確認消費者是否收到,生產者只負責再總線上廣播生產出來的數據)。PDO消息的發送有幾種觸發方式,可以根據使用情況靈活選擇。其實,這幾種觸發方式具有普適性,也可以利用到DIY的通信機制里面去。

PDO的的觸發方式:

  • 事件觸發:
當數據變化時,立刻發送出去,不需要等待主機輪訓才發送,所以實時性好,而且避免重復數據占用大量總線占用資源,就像數據壓縮了一樣。事件驅動類型的RPDO可立即處 理收到的數據。
  • 遠程請求或輪詢:
此方式就像485通信一樣,主控主動遠程請求或者輪詢,子設備才發送PDO。因為市面上有一些不支持遠程幀的CAN控制器,不建議使用。
  • 同步傳輸:
CAN總線上有一個設備作為SYNC信號的生產者,其他設備作為消費者。生產者和消費者都又SYNC計數功能,消費者計數到一定時(1~240),自動發送PDO。
  • if(同步傳輸&&事件觸發):
顧名思義,不僅滿足定時還滿足事件觸發,才發送PDO。
 

圖1-PDO傳輸類型與傳輸方式(from周立功《CANopen協議介紹》)

 Tips:
  • 禁止時間:定義發送具有相同CAN標識符的兩個PDO之間至少要間隔的時間。圖1中,Event(數據變化等)一直發生時,PDO數據會一直發送,如果此值的優先級比較高,就會在總線仲裁后勝出,一直堵塞通信,所以,需要添加一個禁止時間,兩個PDO發送的間隔,避免這種情況發送。
  • 事件計時器:在沒有Event(數據變化等)發生時,PDO會不發送,為了讓它能夠發送。在第一次Event發送后,會計數,如果在計時器溢出之前,來了一個Event,此計數復位,如果一直沒有Event,溢出后,也會發送PDO.

綜上:這兩個小東西,保證了在事件驅動發送PDO的方式下,避免出現連續發送和不發送的兩種極端情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM