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