目前,CANopen通訊協(xié)議已經(jīng)在工業(yè)領(lǐng)域得到了廣泛的使用,由于其面向?qū)ο蟮脑O(shè)計思路,CANopen協(xié)議已成為歐洲等國家的自動化公司標配的通訊接口之一。在本系列文章中,我們將介紹CANopen協(xié)議的基礎(chǔ)內(nèi)容,包括對象字典、服務、SDO、PDO和主/從站節(jié)點等。
1.1 CANopen框架
為了理解CANopen通信,有必要對CANopen的CAN報文進行分解。如下圖,11位的CAN ID被稱為通信對象標識符(COB-ID),它被分成兩部分。前4位相當于功能代碼,接下來的7位包含節(jié)點ID。
為了理解COB-ID的工作原理,需要從簡單的CANopen網(wǎng)絡中如何使用標識符的預定義分配開始。
如上圖,COB-ID(381、581等)與通信服務(傳輸PDO 3、傳輸SDO等)相關(guān)聯(lián),因此,COB-ID詳細說明了哪個節(jié)點正在發(fā)送/接收數(shù)據(jù),以及使用了什么服務。如下圖的例子,一個節(jié)點ID為5的CANopen設(shè)備將通過11位的CAN ID 585傳輸SDO,這對應于二進制功能代碼1011,節(jié)點ID 5(在二進制中為0000101)。
1.2 CANopen通信協(xié)議/服務
接下來,我們將簡要介紹CANopen的7種服務類型,以及它們?nèi)绾卫?個CAN幀數(shù)據(jù)字節(jié)。
1.2.1 網(wǎng)絡管理(NMT)
NMT服務用于通過NMT命令(如:啟動、停止、復位)來控制CANopen設(shè)備的狀態(tài)(如:預運行、運行、停止)。
為了改變狀態(tài),NMT主機發(fā)送一個帶有 CAN ID 0的2字節(jié)消息(即功能代碼0和節(jié)點ID 0)。所有從站節(jié)點都處理這個報文。第一個CAN數(shù)據(jù)字節(jié)包含請求的狀態(tài),而第二個CAN數(shù)據(jù)字節(jié)包含目標節(jié)點的節(jié)點ID。節(jié)點ID 0表示廣播命令。
可能的命令包括轉(zhuǎn)換到運行(狀態(tài)01)、停止(狀態(tài)02)、預運行(狀態(tài)80)以及重置應用程序(81)和重置通信(82)。例如:將節(jié)點0x06設(shè)置為運行模式: 000 01 06
1.2.2 同步(SYNC)
SYNC報文用于同步幾個CANopen設(shè)備的輸入和響應--通常由應用主站觸發(fā)。應用主機將SYNC消息(COB-ID 080)發(fā)送到CANopen網(wǎng)絡(帶或不帶SYNC計數(shù)器)。多個從節(jié)點可以配置為對SYNC做出反應,并通過傳輸同時捕獲的輸入數(shù)據(jù)或通過與參與同步操作的節(jié)點同時設(shè)置輸出來響應。使用SYNC計數(shù)器可以配置幾組同步操作的設(shè)備。
1.2.3 緊急情況 (EMCY)
緊急服務用于設(shè)備出現(xiàn)致命錯誤(如傳感器故障)時,允許它向網(wǎng)絡的其他部分指示這一點。受影響的節(jié)點以高優(yōu)先級向網(wǎng)絡發(fā)送單個EMCY消息(例如,節(jié)點5的COB-ID 085)。數(shù)據(jù)字節(jié)包含有關(guān)錯誤的信息,可以查找詳細信息。
1.2.4 時間戳(TIME) [PDO]
通過這種通信服務,可以分配全球網(wǎng)絡時間。時間服務包含一個6字節(jié)的日期和時間信息。應用主機發(fā)送 CAN ID 為100的TIME消息,其中最初的4個數(shù)據(jù)字節(jié)包含以毫秒為單位的午夜之后的時間,接下來的2個字節(jié)包含自1984年1月1日以來的天數(shù)。
1.2.5 過程數(shù)據(jù)對象 [PDO]
PDO服務用于在設(shè)備之間傳輸實時數(shù)據(jù),例如位置等測量數(shù)據(jù)或扭矩請求等命令數(shù)據(jù)。在這方面,它類似于J1939中的廣播數(shù)據(jù)參數(shù)。關(guān)于PDO服務,我們將在下文中進行詳細介紹。
1.2.6 服務數(shù)據(jù)對象 [SDO]
SDO服務用于訪問/改變CANopen設(shè)備的對象字典中的值。例如,當應用主站需要改變CANopen設(shè)備的某些配置時,可以通過SDO服務來實現(xiàn)。
1.2.7 節(jié)點監(jiān)控(心跳)[SDO]
心跳服務有兩個目的:提供一個"活動"的消息和確認NMT命令。NMT從設(shè)備周期性地(例如每100毫秒)發(fā)送心跳消息(例如節(jié)點5的CAN ID為705),在第一個數(shù)據(jù)字節(jié)中包含節(jié)點的"狀態(tài)"。如果在特定時間限制內(nèi)沒有收到任何消息,心跳消息的"消費者"(例如 NMT 主設(shè)備和可選的任何其他設(shè)備)就會做出反應。例如:節(jié)點5處于預運行模式,周期性發(fā)送:705 7F
在下一篇文章中,我們將繼續(xù)講解CANopen通信的相關(guān)知識,包括對象字典、SDO、PDO等,歡迎關(guān)注我們以便第一時間獲取更新的內(nèi)容。虹科在CAN、CANopen等領(lǐng)域深耕多年,有著深厚的技術(shù)實力,目前已面向國內(nèi)市場推出了CANopen開發(fā)源代碼、CANopen數(shù)據(jù)記錄儀,和支持CANopen協(xié)議的網(wǎng)關(guān)、板卡、IO等產(chǎn)品。