【转】CANOPEN总线的相关问题点整理分享*****
CANopen 是一個基于 CAN(控制局域網)串行總線系統和 CAL(CAN 應用層)的高層協議。CANopen 通訊協議 CiA DS-301 包括周期和事件驅動型通訊,不僅能夠將總線負載減少到最低限度,而且還能確保極短的反應時間。它可以在較低的波特率下實現較高的通訊性能,從而減少了電磁兼容性問題,并降低了電纜成本。
CANopen 所用的物理介質是符合 ISO 11898 標準,采用分驅動機制和公共反饋的雙線總線。總線的最大長度取決于通訊速度,具體規定如下:
?
從理論上來說,最多可以有 127 個節點。不過,在實際應用中,最大節點數量取決于所用 CAN 收發器的性能。CAN 總線線路必須用在 CAN-L 和 CAN-H 線之間每端連接的 120 歐姆(1%,1/4W)電阻來終接,如下所示。
?
總線電纜選用有兩對雙絞線的帶屏蔽層電纜:一對雙絞線分別接 CAN-L 和 CAN-H,另外一對雙絞線直接接GND。
CANopen 的核心概念是設備對象字典(OD:Object Dictionary),在其它現場總線(Profibus,Interbus-S)系統中也使用這種設備描述形式。CANopen 通訊通過對象字典(OD)能夠訪問設備的所有參數。
CAN 標識符分配表
?
注意:
1、 PDO/SDO 的發送/接受是由(slave)CAN 節點觀察的。
2、 一般的器件的 CANopen 支持 4 個發送 PDO,4 個接受 PDO。
服務數據對象SDO
SDO 用來訪問一個設備的對象字典。訪問者被稱作客戶 (client),對象字典被訪問且提供所請求服務的 CANopen 設備被稱作服務器(server)。客戶的 CAN 報文和服務器的應答 CAN 報文總是包含 8 字節數據(盡管不是所有的數據字節都一定有意義)。一個客戶的請求一定有來自服務器的應答。
過程數據對象 PDO
PDO 用來傳輸實時數據, 數據從一個生產者傳到一個或多個消費者。數據傳送限制在 1 到 8 個字節。PDO 通訊沒有協議約束(意味著數據內容已預先定義),因此消費者可以在很短的時間內處理完接受到的數據。PDO 數據內容只由它的CAN ID 定義,假定生產者和消費者知道這個 PDO 的數據內容。
PDO 消息的內容是預定義的(或者在網絡啟動時配置的),映射應用對象到 PDO 中是在設備對象字典中描述的。如果設備(生產者和消費者)支持動態映射,那么使用 SDO 報文可以配置 PDO 映射參數。PDO映射必須遵守以下 2 個規則:
1、 每個 PDO 最多可映射 4 個對象;
2、 每個 PDO 的長度必須不超過 64 位。
PDO 映射流程:
1、 設置 PDO 對應映射參數(如 1600 h或 1A00 h)子索引 0 的內容為 0;
2、 修改 PDO 對應映射參數(如 1600 h或 1A00 h)子索引 1~4 的內容,映射數據;
3、 設置 PDO 對應映射參數(如 1600 h或 1A00 h)子索引 0 的內容為合法的數字(該 PDO 映射的對象數)。
4、 PDO 映射完成。
SYNC 報文
同步對象用于控制數據在網絡設備間的同步傳輸,例如同步啟動多個軸。同步報文的傳輸是基于生產者—消費者模型的,所有支持同步 PDO 的節點都可以作為消費者(同時)接收到此報文,并使用該對象與其他節點進行同步。
一般應用方式為 SYNC 主節點定時發送 SYNC 對象,SYNC 從節點收到后同步執行任務。
CANopen建議用一個最高優先級的COB-ID以保證同步信號正常傳送。SYNC報文可以不傳送數據以使報文盡可能短。
Emergency 報文
設備發生報警時,CANopen 會啟動一條 Emergency 報文,告知消費者當前設備類型以及錯誤代碼。
總結
以上是生活随笔為你收集整理的【转】CANOPEN总线的相关问题点整理分享*****的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12人有偿删差评被抓涉案200万:现场查
- 下一篇: 俩巨头“开撕”!阿迪达斯起诉耐克专利侵权