1寫在前面
該系列教程13、14講述了移植相關(guān)內(nèi)容,以及提供給大家可直接編譯、下載運(yùn)行的源碼工程,想必你已經(jīng)掌握了一些基礎(chǔ)的知識(shí)了。
在《CANOpen系列教程08_CANOpen通信接口引導(dǎo)學(xué)習(xí)》中,引導(dǎo)大家參看《CANopen輕松入門》通信接口的相關(guān)知識(shí)。而沒有在文中具體描述關(guān)于CANOpen通信接口的知識(shí)。
原因在于通信接口的內(nèi)容太多,單純的去看這些內(nèi)容,容易讓人產(chǎn)生更多困惑。
對(duì)于程序員來說,結(jié)合源代碼來理解相關(guān)理論知識(shí)更加容易。所以,我將其留在了這后面來講述。
下面結(jié)合移植好的源代碼,講述CANOpen網(wǎng)絡(luò)管理(NMT:Network management)的相關(guān)知識(shí)。
2
關(guān)于網(wǎng)絡(luò)管理NMT
在CANOpen網(wǎng)絡(luò)中,分主站和從站,而通常由主站來管理整個(gè)網(wǎng)絡(luò)。比如:復(fù)位、停止等。
《CANopen輕松入門》中軍隊(duì)的例子說的很好:一個(gè)軍隊(duì),如果沒有指揮員來管理,下面士兵豈不亂套了。
例子中指揮員就是CANOpen中的網(wǎng)絡(luò)管理主站,士兵就是從站。
重要的一點(diǎn):每個(gè) CANopen 從節(jié)點(diǎn)的 CANopen 協(xié)議棧中,必須具備 NMT 管理的相應(yīng)代碼。也就是說從站是被接收管理。
當(dāng)然,我們使用的Canfestival這套免費(fèi)框架,大家不必?fù)?dān)心,肯定是具有相關(guān)代碼,我們需要明白怎么使用這套源碼即可。
3
NMT網(wǎng)絡(luò)管理節(jié)點(diǎn)狀態(tài)
3.1 6種節(jié)點(diǎn)狀態(tài)
NMT網(wǎng)絡(luò)管理主要包含以下6種狀態(tài):
1.初始化(Initializing):節(jié)點(diǎn)上電后對(duì)功能部件包括 CAN 控制器進(jìn)行初始化;
2.應(yīng)用層復(fù)位(Application Reset):節(jié)點(diǎn)中的應(yīng)用程序復(fù)位(開始),比如開關(guān)量輸出、模擬量輸出的初始值;
3.通訊復(fù)位(Communication reset):節(jié)點(diǎn)中的CANopen通訊復(fù)位(開始),從這個(gè)時(shí)刻起,此節(jié)點(diǎn)就可以進(jìn)行CANopen通訊了;
4.預(yù)操作狀態(tài)(Pre-operational):節(jié)點(diǎn)的CANopen通訊處于操作就緒狀態(tài),此時(shí)此節(jié)點(diǎn)不能進(jìn)行PDO通信,而可以進(jìn)行SDO進(jìn)行參數(shù)配置和NMT網(wǎng)絡(luò)管理的操作;
5.操作狀態(tài)(operational):節(jié)點(diǎn)收到NMT主機(jī)發(fā)來的啟動(dòng)命令后, CANopen通訊被激活, PDO通信啟動(dòng)后, 按照對(duì)象字典里面規(guī)定的規(guī)則進(jìn)行傳輸,同樣SDO也可以對(duì)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)傳輸和參數(shù)修改;
6.停止?fàn)顟B(tài)(Stopped):節(jié)點(diǎn)收到NMT主機(jī)發(fā)來的停止命令后,節(jié)點(diǎn)的PDO通信被停止,但SDO和NMT網(wǎng)絡(luò)管理依然可以對(duì)節(jié)點(diǎn)進(jìn)行操作;
NMT網(wǎng)絡(luò)管理6種狀態(tài)如上圖所示,其中1 --- 15各處代表含義:
(1):Power on上電初始化
(2):Automatic switch to Pre-operational自動(dòng)切換預(yù)操作狀態(tài)
(3) 、(6):NMT switch to Operational網(wǎng)絡(luò)管理切換到操作狀態(tài)
(4)、(7):NMT switch to Pre-operational網(wǎng)絡(luò)管理切換到預(yù)操作狀態(tài)
(5)、(8):NMT switch to Stopped網(wǎng)絡(luò)管理切換到停止?fàn)顟B(tài)
(9)、(10)、(11):NMT switch to Application reset網(wǎng)絡(luò)管理切換到應(yīng)用層復(fù)位狀態(tài)
(12)、(13)、(14):NMT switch to Communication reset網(wǎng)絡(luò)管理切換到通訊復(fù)位狀態(tài)
(15):Power-off or hardware reset掉電或硬件復(fù)位
3.2 源碼說明
通過上面描述,需要知道兩點(diǎn)重要內(nèi)容:主站進(jìn)行網(wǎng)絡(luò)管理,網(wǎng)絡(luò)各個(gè)節(jié)點(diǎn)有多種狀態(tài)。當(dāng)然,一個(gè)時(shí)刻只能一種狀態(tài)。
在Canfestival框架源碼中,主站可通過masterSendNMTstateChange這個(gè)函數(shù)接口來管理網(wǎng)絡(luò)節(jié)點(diǎn)的狀態(tài)。可以理解為:主站控制,或切換從站節(jié)點(diǎn)的狀態(tài)。
這里需要理解masterSendNMTstateChange這個(gè)函數(shù)接口的用法,也就是說接口含義,以及參數(shù)。
比如:主站上電之后,讓網(wǎng)絡(luò)中節(jié)點(diǎn)0x01復(fù)位:
這里我們結(jié)合《CANOpen系列教程13》提供的代碼基礎(chǔ)上,添加一行管理節(jié)點(diǎn)0x01的代碼:
masterSendNMTstateChange(&TestMaster_Data, 0x01, NMT_Reset_Node);
第1個(gè)參數(shù)TestMaster_Data:主站對(duì)象字典
第2個(gè)參數(shù)0x01:節(jié)點(diǎn)(從站)ID
第3個(gè)參數(shù)NMT_Reset_Node:復(fù)位節(jié)點(diǎn)
第1,2個(gè)參數(shù)很好理解,第3個(gè)參數(shù)是通過宏定義在def.h中,總共5種狀態(tài),如下圖:
寫到這里,相信大家對(duì)網(wǎng)絡(luò)管理節(jié)點(diǎn)有一定認(rèn)識(shí)了,初學(xué)者可以多結(jié)合代碼理解。
4
NMT網(wǎng)絡(luò)管理節(jié)點(diǎn)上線報(bào)文
該教程上一篇文章末尾講述運(yùn)行效果時(shí),提供了一張運(yùn)行時(shí)CAN總線數(shù)據(jù)的截圖:
任何一個(gè) CANopen 從站上線后,為了提示主站它已經(jīng)加入網(wǎng)絡(luò)(便于熱插拔),或者避免與其他從站 Node-ID 沖突。這個(gè)從站必須發(fā)出節(jié)點(diǎn)上線報(bào)文(boot-up)。
節(jié)點(diǎn)上線報(bào)文的 ID 為:700h + Node-ID, 數(shù)據(jù)規(guī)定為0。 生產(chǎn)者(Producer)為 CANopen 從站。如下圖:
5
NMT網(wǎng)絡(luò)管理心跳報(bào)文
為了監(jiān)控 CANopen 節(jié)點(diǎn)是否在線與目前的節(jié)點(diǎn)狀態(tài)。 CANopen 應(yīng)用中通常都要求在線上電的從站定時(shí)發(fā)送狀態(tài)報(bào)文(心跳報(bào)文),以便于主站確認(rèn)從站是否故障、是否脫離網(wǎng)絡(luò)。
格式:
CAN-ID:700h + Node-ID
數(shù)據(jù):一字節(jié)狀態(tài)
在《CANOpen系列教程13》提供例程中,就是包含一個(gè)心跳報(bào)文。心跳報(bào)文比較簡單,請(qǐng)結(jié)合上圖理解。
注意:
1.CANopen從站按其對(duì)象字典中 1017h 中填寫的心跳生產(chǎn)時(shí)間(ms)進(jìn)行心跳報(bào)文的發(fā)送。
2.CANopen主站則會(huì)按其1016h 中填寫的心跳消費(fèi)時(shí)間進(jìn)行檢查,假設(shè)超過諾干次心跳消費(fèi)時(shí)間沒有收到從站的心跳報(bào)文,則認(rèn)為從站已經(jīng)離線或者損壞。
還有一些網(wǎng)絡(luò)管理相關(guān)內(nèi)容,大家可以結(jié)合這種思路去理解,建議參看:
1.CiA 301 V4.2.0網(wǎng)絡(luò)管理章節(jié)
2.周立功的CANOpen輕松入門
-
CAN
+關(guān)注
關(guān)注
57文章
2774瀏覽量
464477 -
源碼
+關(guān)注
關(guān)注
8文章
653瀏覽量
29516 -
CANopen
+關(guān)注
關(guān)注
8文章
271瀏覽量
43789 -
NMT
+關(guān)注
關(guān)注
0文章
7瀏覽量
3656
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
2025必備知識(shí),CANopen轉(zhuǎn)EtherCAT協(xié)議允許配備啥協(xié)議的電氣設(shè)備
![2025必備知識(shí),<b class='flag-5'>CANopen</b>轉(zhuǎn)EtherCAT協(xié)議允許配備啥協(xié)議的電氣設(shè)備](https://file1.elecfans.com//web3/M00/04/11/wKgZPGduj9SAdwRvAACTJL8T1qg173.png)
三格電子-MODBUS TCP轉(zhuǎn)CANOpen網(wǎng)關(guān)
![三格電子-MODBUS TCP轉(zhuǎn)<b class='flag-5'>CANOpen</b>網(wǎng)關(guān)](https://file1.elecfans.com//web1/M00/F5/50/wKgaoWc61jGAI9rRAABXg5vof-M30.jpeg)
canopen轉(zhuǎn)Profinet網(wǎng)關(guān)對(duì)于工業(yè)現(xiàn)場(chǎng)PLC與伺服之間的通訊重要性
![<b class='flag-5'>canopen</b>轉(zhuǎn)Profinet網(wǎng)關(guān)對(duì)于工業(yè)現(xiàn)場(chǎng)PLC與伺服之間的通訊重要性](https://file1.elecfans.com/web2/M00/08/BB/wKgZomb6QeiAARnIAAAkLpRcauU677.png)
canopen轉(zhuǎn)Profinet網(wǎng)關(guān)對(duì)于工業(yè)現(xiàn)場(chǎng)PLC與伺服之間的通訊重要性
![<b class='flag-5'>canopen</b>轉(zhuǎn)Profinet網(wǎng)關(guān)對(duì)于工業(yè)現(xiàn)場(chǎng)PLC與伺服之間的通訊重要性](https://file1.elecfans.com/web2/M00/09/A5/wKgaomb6P3-AH3G_AAHPkU3G070583.png)
MODBUS TCP 轉(zhuǎn) CANOpen
![MODBUS TCP 轉(zhuǎn) <b class='flag-5'>CANOpen</b>](https://file1.elecfans.com/web2/M00/08/97/wKgaombyRnmAZrAyAAGHzRG0j8s875.png)
【CANopen系列】CANopen從站為什么總不上傳PDO報(bào)文?
![【<b class='flag-5'>CANopen</b><b class='flag-5'>系列</b>】<b class='flag-5'>CANopen</b>從站為什么總不上傳PDO報(bào)文?](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
DeviceNet轉(zhuǎn)CANopen協(xié)議網(wǎng)關(guān)(DeviceNet轉(zhuǎn)CANopen)
![DeviceNet轉(zhuǎn)<b class='flag-5'>CANopen</b>協(xié)議網(wǎng)關(guān)(DeviceNet轉(zhuǎn)<b class='flag-5'>CANopen</b>)](https://file1.elecfans.com/web2/M00/05/DC/wKgZombfq6SAP3JlAAKyK2mvB_8691.png)
適用于標(biāo)準(zhǔn)化嵌入式網(wǎng)絡(luò),CANopen有什么不同?
常見的shell命令之網(wǎng)絡(luò)相關(guān)命令
EtherCAT從站轉(zhuǎn)CANopen主站協(xié)議網(wǎng)關(guān)(YC-ECT-COP)
![EtherCAT從站轉(zhuǎn)<b class='flag-5'>CANopen</b>主站協(xié)議網(wǎng)關(guān)(YC-ECT-COP)](https://file1.elecfans.com/web2/M00/03/DC/wKgaoma-zFOAAvrwAANf70K-FT0744.png)
EtherCAT從站轉(zhuǎn)CANopen主站協(xié)議網(wǎng)關(guān)(JM-ECT-COP)
![EtherCAT從站轉(zhuǎn)<b class='flag-5'>CANopen</b>主站協(xié)議網(wǎng)關(guān)(JM-ECT-COP)](https://file1.elecfans.com/web2/M00/02/C8/wKgZoma9yoyABunTAAaz3E2enmI577.png)
EtherNet轉(zhuǎn)CANopen協(xié)議轉(zhuǎn)化網(wǎng)關(guān)功能與配置詳解
![EtherNet轉(zhuǎn)<b class='flag-5'>CANopen</b>協(xié)議轉(zhuǎn)化網(wǎng)關(guān)功能與配置詳解](https://file1.elecfans.com/web2/M00/FE/5D/wKgZomahzoGANX7VAAB-bhgDuBQ343.png)
評(píng)論