周立功閱讀筆記-CANopen輕鬆入門基於DS301(二)

8. 服務數據對象 SDO(Service data object)

SDO 主要用於 CANopen 主站對從節點的參數配置。服務確認是 SDO 的最大的特點, 爲每個消息都生成一個應答,確保數據傳輸的準確性。

在一個 CANopen 系統中,通常 CANopen 從節點作爲 SDO 服務器,CANopen 主節點 作爲客戶端(稱爲 CS 通訊) 。SDO 客戶端通過索引和子索引,能夠訪問 SDO 服務器上的對 象字典。這樣 CANopen 主節點可以訪問從節點的任意對象字典項的參數,並且 SDO 也可以 傳輸任何長度的數據(當數據長度超過 4 個字節時就拆分成多個報文來傳輸) 。

SDO 的通訊原則非常單一,發送方(客戶端)發送 CAN-ID 爲 600h+Node-ID 的報文, 其中 Node-ID 爲接收方(服務器)的節點地址,數據長度均爲 8 字節; 接收方(服務器)成功接收後,迴應 CAN-ID 爲 580h+Node-ID 的報文。這裏的 Node-ID 依然是接收方(服務器)的節點地址,數據長度均爲 8 字節。如圖 8.2 所示

8.2 快速 SDO 協議(Expedited SDO protocol) 
最常用最常見的 SDO 協議是快速 SDO,所謂快速,就是 1 次來回就搞定。前提是讀取 和寫入的值不能大於 32 位。如圖 8.3 所示,爲快速 SDO 協議的示意圖。命令中直接包含了 要讀寫的索引、子索引、數據。可謂直接命中。 快速 SDO 的難點在於 CS 命令符的記憶,需要讀者收藏這個示意圖

 

通過快速 SDO,可以直接對 CANopen 節點的對象字典中的值進行讀取和修改,所以在 做參數配置之外,也經常作爲關鍵性數據傳輸之用。比如 CANopen 控制機器人的電機轉動 角度時,就使用 SDO 來傳輸,保證可靠到達。

 

8.3 普通 SDO 協議(Normal SDO protocol)

當需要傳輸的值超過 32 位時,就不能使用快速 SDO 傳輸。必須使用普通 SDO 進行分 幀傳輸。在應用中較少用到,一般用於 CANopen 節點的程序固件升級,或者做網關轉換 MVB 總線之類數據最大可達 256 位的應用。 普通 SDO 協議難點在於分包邏輯與 CS 命令符的變化。依然難以記憶,需要讀者將以 下示意圖進行收藏。

2. 上傳協議 upload protocol 如圖 8.5 所示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章