CANopen的相關學習

CANopen是一種架構在控制局域網路(Controller Area Network, CAN)上的高層通信協定,包括通信子協定及設備子協定常在嵌入式系統中使用,也是工業控制經常使用到的一種現場總線。服務器

因爲CAN總線只定義了物理層和數據鏈路層,並無定義應用層,所以須要CANopen通訊協議來統一度量,把各類設備標準化。CANopen 實現了OSI模型中的網絡層以上(包括網絡層)的協定。網絡

 

標準的 CANopen 頁框:數據結構

CANopen 將 CANbus 的 11 位元 ID 稱爲通信對象 ID (COB-ID)。分爲 4 位元的功能碼及 7 位元的 CANopen 節點 ID。架構

7 位元的 ID 共有 128 種不一樣的組合,其中 ID 0 不使用,所以一個 CANopen 網絡上最多容許 127 臺設備。對象

 

應用CANopen時,須要傳遞的配置信息和應用信息都放在過程數據對象PDO(Process data object)和服務數據對象SDO(Service data object)blog

過程數據對象(PDO)服務索引

PDO分爲TPDO和RPDO事件

 

PDO屬於過程數據,單向傳輸,無需接收節點回應CAN報文來確認,屬於「生產消費」模型資源

一個節點分別有 4 個 TPDO 及 4 個 RPDO 。同步

 

PDO的觸發方式:

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

 

 

服務數據對象SDO

服務數據對象用於讀寫節點的對象字典,現只實現SDO下載和上傳的全速模式,不支持正常模式也不支持塊下載和上傳,由於數據量不大,實現的功能足夠用,SDO全速下載和上傳採用應答式服務,由監控終端向節點發送服務請求,由節點返回應答。

SDO屬於服務數據,「服務器客戶端」模型,輪詢式

SDO傳送機制:

        加速傳送(Expedited transfer):最多傳輸4字節數據

        分段傳送(Segmented transfer):傳輸數據長度大於4字節

        塊傳送(Block transfer):當傳送數據長度大於4字節時,多個分段只由一個確認報文應答以增長總線吞吐量

 

 

對象字典OD

CANopen 設備都須要具有對象字典(Obiect Dictionary),用來設定設備組態及進行非即時的通信。

是一個有序的對象組,每一個對象採用一個16位的索引值來尋址,爲了容許訪問數據結構中的單個元素,同時定義了一個8位的子索引。

三個子協議:

通訊子協議描述對象字典的主要形式,以及對象字典中的通訊對象和參數。適用於全部的CANopen設備,索引值範圍爲0x1000~0x1FFF

製造商自定義子協議根據需求定義對象字典項,索引值範圍爲0x2000~0x5FFF

設備子協議爲各類不一樣類型的設備定義對象字典中的對象,其索引值範圍爲0x6000~0x9FFFF

相關文章
相關標籤/搜索