在上一篇文章中,我們介紹了CANopen協議的基礎知識和核心概念,而在本篇文章中,我們將繼續講解CANopen通信基礎知識。本系列文章主要介紹CANopen協議的基礎內容,包括對象字典、服務、SDO、PDO和主/從站節點等。如需CANopen軟硬件解決方案或培訓服務,可通過400-999-3848或support@hkaco.com聯系虹科工業控制團隊!
前文回顧:虹科干貨 | 最簡單實用的CANopen介紹,看完你就明白了(1)
1
CANopen框架
CANopen frame
為了理解CANopen通信,有必要對CANopen的CAN報文進行分解。如下圖,11位的CANID被稱為通信對象標識符(COB-ID),它被分成兩部分。前4位相當于功能代碼,接下來的7位包含節點ID。
為了理解COB-ID的工作原理,需要從簡單的CANopen網絡中如何使用標識符的預定義分配開始。
如上圖,COB-ID(381、581等)與通信服務(傳輸PDO3、傳輸SDO等)相關聯,因此,COB-ID詳細說明了哪個節點正在發送/接收數據,以及使用了什么服務。如下圖的例子,一個節點ID為5的CANopen設備將通過11位的CAN ID 585傳輸SDO,這對應于二進制功能代碼1011,節點ID 5(在二進制中為0000101)。
2
CANopen通信協議/服務
CANopen communication protocols/services
接下來,我們將簡要介紹CANopen的7種服務類型,以及它們如何利用8個CAN幀數據字節。
1. 網絡管理(NMT)
NMT服務用于通過NMT命令(如:啟動、停止、復位)來控制CANopen設備的狀態(如:預運行、運行、停止)。為了改變狀態,NMT主機發送一個帶有 CAN ID 0的2字節消息(即功能代碼0和節點ID 0)。所有從站節點都處理這個報文。第一個CAN數據字節包含請求的狀態,而第二個CAN數據字節包含目標節點的節點ID。節點ID 0表示廣播命令。
可能的命令包括轉換到運行(狀態01)、停止(狀態02)、預運行(狀態80)以及重置應用程序(81)和重置通信(82)。
例如:將節點0x06設置為運行模式:000 01 06
2. 同步(SYNC)
SYNC報文用于同步幾個CANopen設備的輸入和響應--通常由應用主站觸發。應用主機將SYNC消息(COB-ID 080)發送到CANopen網絡(帶或不帶SYNC計數器)。多個從節點可以配置為對SYNC做出反應,并通過傳輸同時捕獲的輸入數據或通過與參與同步操作的節點同時設置輸出來響應。使用SYNC計數器可以配置幾組同步操作的設備。
3. 緊急情況(EMCY)
緊急服務用于設備出現致命錯誤(如傳感器故障)時,允許它向網絡的其他部分指示這一點。受影響的節點以高優先級向網絡發送單個EMCY消息(例如,節點5的COB-ID 085)。數據字節包含有關錯誤的信息,可以查找詳細信息。
4. 時間戳(TIME) [PDO]
通過這種通信服務,可以分配全球網絡時間。時間服務包含一個6字節的日期和時間信息。應用主機發送 CAN ID 為100的TIME消息,其中最初的4個數據字節包含以毫秒為單位的午夜之后的時間,接下來的2個字節包含自1984年1月1日以來的天數。
5. 過程數據對象 [PDO]
PDO服務用于在設備之間傳輸實時數據,例如位置等測量數據或扭矩請求等命令數據。在這方面,它類似于J1939中的廣播數據參數。關于PDO服務,我們將在下一篇文章中進行詳細介紹。
6. 服務數據對象 [SDO]
SDO服務用于訪問/改變CANopen設備的對象字典中的值。例如,當應用主站需要改變CANopen設備的某些配置時,可以通過SDO服務來實現。關于SDO服務,我們將在下一篇文章進行詳細介紹。
7. 節點監控(心跳) [SDO]
心跳服務有兩個目的:提供一個“活動”的消息和確認NMT命令。NMT從設備周期性地(例如每100毫秒)發送心跳消息(例如節點5的CANID為705),在第一個數據字節中包含節點的“狀態”。如果在特定時間限制內沒有收到任何消息,心跳消息的“消費者”(例如 NMT 主設備和可選的任何其他設備)就會做出反應。
例如:節點5處于預運行模式,周期性發送:705 7F
在下一篇文章中,我們將繼續講解CANopen通信的相關知識,包括對象字典、SDO、PDO等,歡迎關注本公眾號以便第一時間獲取更新的內容。虹科在CAN、CANopen等領域深耕多年,有著深厚的技術實力,目前已面向國內市場推出了CANopen開發源代碼、CANopen數據記錄儀,和支持CANopen協議的網關、板卡、IO等產品。
-
CAN
+關注
關注
57文章
2744瀏覽量
463622
發布評論請先 登錄
相關推薦
評論