CANopen是一種架構在控制局域網路(Controller Area Network, CAN)上的高層通訊協定,包括通訊子協定及設備子協定常在嵌入式系統中使用,也是工業控制常用到的一種現場總線。CANopen 實現了OSI模型中的網絡層以上(包括網絡層)的協定。CANopen 標準包括尋址方案、數個小的通訊子協定及由設備子協定所定義的應用層。 CANopen 支援網絡管理、設備監控及節點間的通訊,其中包括一個簡易的傳輸層,可處理資料的分段傳送及其組合。一般而言數據鏈結層及物理層會用CAN來實作。除了 CANopen 外,也有其他的通訊協定(如EtherCAT)實作 CANopen 的設備子協定。CANopen由非營利組織CiA(CAN in Automaion)進行標準的起草及審核工作,基本的 CANopen 設備及通訊子協定定義在 CAN in Automation (CiA) draft standard 301中。針對個別設備的子協定以 CiA 301 為基礎再進行擴充。如針對 I/O 模組的 CiA401 及針對運動控制的 CiA402。
本說明是CAN上層協議CANOpen協議的嵌入式簡化,較原始CANOpen版本簡單易用,且更適應嵌入式模塊通訊的需要,并且兼容CANOpen協議。
下面按照協議支持的功能分別進行說明:
NMT網絡管理服務
網絡管理狀態表:
終端主節點→從節點
COB-ID | 0-字節 | 1-字節 |
0 | 命令說明符 | 節點ID |
(16#000) | (CS) | (1) |
說明:一般終端主節點是指上位機,如上位用于網絡管理和監控的PC機,從節點是指被管理的各模塊。
如果節點ID是0表示命令會被廣播至所有從節點,從節點必須執行相應的命令。
命令說明符功能見下表:
命令說明符(CS) | 意義 |
1(16#01) | 啟動節點進入可操作狀態 |
2(16#02) | 停止遠程節點 |
128(16#80) | 使節點進入預操作狀態 |
129(16#81) | 復位節點 |
130(16#82) | 復位通訊 |
例:啟動節點1進入可操作狀態,
16#000 | 16#80 | 16#04 |
網絡管理狀態表:
狀態轉換 | 說明 |
(1) | 通電后自動初始化 |
(2) | 完成初始化自動進入預操作狀態 |
(3),(6) | 啟動遠程節點 |
(4),(7) | 進入預操作狀態 |
(5)(8) | 停止遠程節點 |
(9),(10),(11) | 復位節點 |
(12),(13),(14) | 復位通訊 |
根據節點的狀態提供以下服務:
初始化 | 預操作 | 可操作 | 停機 | |
PDO | √ | |||
SDO | √ | √ | ||
啟動引導 | √ | √ | ||
網絡管理 | √ | √ | √ | |
錯誤控制 | √ | √ |
過程數據對象(PDO)服務
過程數據對象用于在節點之間傳送過程數據,如I/O模塊I/O狀態讀取和設定,模擬量采集和模擬量輸出等等,本協議考慮從機硬件限制最多支持4組PDO,每組包含一個RPDO和一個TPDO,現已I/O模塊為例進行說明:
設I/O模塊有24輸入,24輸出,24輸入通過TPDO傳給監控終端或其他節點,24輸出通過RPDO由控制節點對其進行設定,采用發送和接收PDO1組,即標識符TPDO:0x180+NODE_ID,RPDO:0x200+NODE_ID,用3個字節就可以表示24個I/O量,因此發送和接收PDO可以表示如下(假設NODE_ID=1):
COB-ID | 0字節 | 1字節 | 2字節 |
385(0x181) | Data:輸入I/O狀態量 | ||
Input_Digital_1 | Input_Digital_2 | Input_Digital_3 |
COB-ID | 0字節 | 1字節 | 2字節 |
513(0x201) | Data:輸出I/O狀態量 | ||
Output_Digital_1 | Output_Digital_2 | Output_Digital_3 |
如果是8通道的模擬量采集模塊則需要兩個TPDO來傳送采集的數據,不需要RPDO,因為每個通道產生一個16位數據,一共是16字節,每個TPDO只能夠傳送8字節。兩個TPDO標識符分別為:0x180+NODE_ID,0x280+NODE_ID。
每幀數據格式如下表(設NODE_ID=2):
TPDO1
COB-ID | 0-1字節 | 2-3字節 | 4-5字節 | 6-7字節 |
385(0x182) | Data:輸入模擬量 | |||
Output_Anolog_1 | Output_Anolog_2 | Output_Anolog_3 | Output_Anolog_4 |
TPDO2
COB-ID | 0-1字節 | 2-3字節 | 4-5字節 | 6-7字節 |
385(0x182) | Data:輸入模擬量 | |||
Output_Anolog_5 | Output_Anolog_6 | Output_Anolog_7 | Output_Anolog_8 |
1. I/O節點←監控終端(RPDO)
2. I/O節點→監控終端(TPDO)
服務數據對象(SDO)服務
服務數據對象用于讀寫節點的對象字典,現 只實現SDO下載和上傳的全速模式,不支持正常模式也不支持塊下載和上傳,因為數據量不大,實現的功能足夠用,SDO全速下載和上傳采用應答式服務,由監控終端向節點發送服務請求,由節點返回應答。
現假設某節點NODE_ID=3,協議報文如下:
讀節點OD
假設,讀SDO index = 0x1018 subindex = 0x00,返回的是1字節data=0x04
監控終端→節點(終端請求)
COB-ID | 0字節 | 1字節 | 2字節 | 3字節 | 4字節 | 5字節 | 6字節 | 7字節 |
1539(0x603) | 命令 | index | subindex | Reserved(保留) | ||||
0x40 | 0x18 | 0x10 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
監控終端←節點(節點應答)
COB-ID | 0字節 | 1字節 | 2字節 | 3字節 | 4字節 | 5字節 | 6字節 | 7字節 |
1411(0x583) | 命令 | index | subindex | 數據 | 湊夠8個字節 | |||
0x4F | 0x18 | 0x10 | 0x00 | 0x04 | 0x00 | 0x00 | 0x00 |
寫節點OD
假設,寫SDO index=0x1017,subindex=0x00,寫數據為0x07D0
監控終端→節點(終端請求)
COB-ID | 0字節 | 1字節 | 2字節 | 3字節 | 4字節 | 5字節 | 6字節 | 7字節 |
1539(0x603) | 命令 | index | subindex | 要寫入的數據 | 湊8個字節 | |||
0x2B | 0x17 | 0x10 | 0x00 | 0xD0 | 0x07 | 0x00 | 0x00 |
監控終端←節點(節點應答)
COB-ID | 0字節 | 1字節 | 2字節 | 3字節 | 4字節 | 5字節 | 6字節 | 7字節 |
1411(0x583) | 命令 | index | subindex | 湊夠8個字節 | ||||
0x60 | 0x18 | 0x10 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
如果監控終端發送的請求,節點處理出錯,將返回SDO中止報文,報文如下:
COB-ID | 0字節 | 1字節 | 2字節 | 3字節 | 4字節 | 5字節 | 6字節 | 7字節 |
1411(0x583) | 命令 | index | subindex | 錯誤代碼 | ||||
0x80 | 0x18 | 0x10 | 0x00 | 0-7位 | 8-15位 | 16-23位 | 24-31位 |
節點返回的錯誤代碼如下:
SDO_ABORT_UNSUPPORTED 0x06010000UL 不支持該功能
SDO_ABORT_NOT_EXISTS 0x06020000UL 不存在的索引
SDO_ABORT_READONLY 0x06010002UL 只讀,不可寫
SDO_ABORT_TYPEMISMATCH 0x06070010UL 類型不匹配
SDO_ABORT_UNKNOWN_COMMAND 0x05040001UL 未知命令
SDO_ABORT_UNKNOWNSUB 0x06090011UL 未知子索引
注:命令字節含義請參考CANOpen協議文件DS301。
錯誤控制——心跳(或者叫脈動)協議(heatbeat)
錯誤控制用于了解總線上各節點的狀態,本文只實現心跳協議,由各節點向監控終端定期發送心跳報文,報告本節點的狀態,報文如下:
設節點NODE_ID=2
節點→監控終端
COB-ID | 0字節 |
1794(0x702) | 節點狀態 |
0x00 |
返回狀態如下:
狀態代碼 | 狀態含義 |
0x00 | BOOTUP啟動狀態 |
0x04 | STOPPED停止 |
0x05 | OPERATIONAL可操作 |
0x7F | PRE-OPERATIONAL預操作 |
節點在啟動之后發出BOOTUP心跳,然后按固定頻率發出脈動消息幀,監控終端接收該報文用以檢測該節點狀態。
編輯:hfy
-
CAN
+關注
關注
57文章
2757瀏覽量
463939 -
CANopen
+關注
關注
8文章
267瀏覽量
43617
發布評論請先 登錄
相關推薦
評論