一個(gè)CANopen的應(yīng)用樣例
Stop狀態(tài)
從PCAN-View軟件中發(fā)送如下命令,將NODE-ID為0x0A的節(jié)點(diǎn)設(shè)置為Stop狀態(tài):
| CAN-ID | Length | Data |
|---|---|---|
| 0x000 | 2 | 0x02 0x0A |
在PCAN-View軟件界面中菜單欄中選擇Transmit->New Message...,將會(huì)彈出發(fā)送新消息的對(duì)話框。如圖x所示。當(dāng)然,也可以直接單擊工具欄中的New Message按鈕,或者使用ins快捷鍵觸發(fā)對(duì)話框。

figure-pcan-view-new-msg
圖x 在PCAN-View中發(fā)送新消息在彈出的發(fā)送新消息對(duì)話框中填寫(xiě)Stop幀內(nèi)容。如圖x所示。

figure-pcan-view-new-msg-2
圖x 在發(fā)送新消息對(duì)話框中填寫(xiě)幀內(nèi)容確認(rèn)新建消息后,可以在PCAN-View窗口界面下半邊Transmit看到新建的消息幀,但此時(shí)尚未發(fā)送。如圖x所示。

figure-pcan-view-new-msg-3
圖x 新建發(fā)送消息幀此時(shí),需要人工觸發(fā)發(fā)送過(guò)程。可以選中即將發(fā)送的消息幀,再單擊菜單欄Transmit->Send。如圖x所示?;蛘咭部梢酝ㄟ^(guò)快捷鍵Space空格,或者直接雙擊即將發(fā)送消息幀的CAN-ID,也可以觸發(fā)發(fā)送過(guò)程。

figure-pcan-view-new-msg-4
圖x 觸發(fā)發(fā)送消息幀當(dāng)發(fā)送幀完成之后,在PCAN-View的界面中可以看到,CAN-ID為0x70A的心跳消息的值,已經(jīng)從05變成了04。說(shuō)明對(duì)應(yīng)的CANopen節(jié)點(diǎn)設(shè)備已經(jīng)收到停止命令并生效了。如圖x所示。

figure-pcan-view-new-msg-5
圖x CANopen節(jié)點(diǎn)識(shí)別停止命令并更新心跳消息在PCAN-View的Trace標(biāo)簽頁(yè)中,也可檢測(cè)到CAN網(wǎng)絡(luò)上有通信幀的變化,如圖x所示。

figure-canopen-msg-stop-node
圖x PEAK-View觀察到的Stop報(bào)文### Start狀態(tài)
從PCAN-View軟件中發(fā)送如下命令,將NODE-ID為0x0A的節(jié)點(diǎn)切換至Start狀態(tài):
| CAN-ID | Length | Data |
|---|---|---|
| 0x000 | 2 | 0x01 0x0A |
之后,可檢測(cè)到CAN網(wǎng)絡(luò)上有通信幀如圖x所示。

圖x PEAK-View觀察到的Start報(bào)文
Pre-operation狀態(tài)
從PCAN-View軟件中發(fā)送如下命令,將NODE-ID為0x0A的節(jié)點(diǎn)切換至Pre-operation狀態(tài):
| CAN-ID | Length | Data |
|---|---|---|
| 0x70A | 2 | 0x80 0x0A |
之后,可檢測(cè)到CAN網(wǎng)絡(luò)上有通信幀如圖x所示。

figure-canopen-msg-preoperaion-node
圖x PEAK-View觀察到的Pre-Operation報(bào)文### 復(fù)位應(yīng)用層
從PCAN-View軟件中發(fā)送如下命令,將NODE-ID為0x0A的節(jié)點(diǎn)復(fù)位,讓節(jié)點(diǎn)的應(yīng)用恢復(fù)初始狀態(tài),比如列車門都恢復(fù)打開(kāi)狀態(tài):
| CAN-ID | Length | Data |
|---|---|---|
| 0x70A | 2 | 0x81 0x0A |
之后,可檢測(cè)到CAN網(wǎng)絡(luò)上有通信幀如圖x所示。

figure-canopen-msg-reset-node
圖x PEAK-View觀察到的復(fù)位消息CANopen從站節(jié)點(diǎn)收到復(fù)位消息后,會(huì)復(fù)位本機(jī)執(zhí)行的CANopen協(xié)議棧,恢復(fù)或者刷新對(duì)象字典的默認(rèn)配置屬性。
復(fù)位通信層
從PCAN-View軟件中發(fā)送如下命令,將NODE-ID為0x0A的節(jié)點(diǎn)的通信層復(fù)位,讓節(jié)點(diǎn)的 CAN 和 CANopen 通訊重新初始化,一般用于總線收到 干擾,導(dǎo)致節(jié)點(diǎn)總線錯(cuò)誤被動(dòng),或者總線關(guān)閉時(shí):
| CAN-ID | Length | Data |
|---|---|---|
| 0x70A | 2 | 0x82 0x0A |
總結(jié)
本文介紹了實(shí)現(xiàn)CANopen協(xié)議棧的一個(gè)廣為使用的軟件組件CANopenNode。特別從實(shí)踐的角度上,詳細(xì)分析了在具體微控制器上移植CANopenNode組件的方法,以集成了FlexCAN外設(shè)的MM32F0140微控制器為例,詳述的移植過(guò)程,創(chuàng)建了一個(gè)運(yùn)行CANopen協(xié)議框架的樣例工程canopen_demo。為了演示CANopen協(xié)議棧的工作場(chǎng)景,同時(shí)驗(yàn)證移植工作已經(jīng)成功完成,本例使用運(yùn)行PCAN-View軟件和CAN轉(zhuǎn)接器PEAK-CAN,模擬一個(gè)CANopen的主站,向接入同一CAN網(wǎng)絡(luò)的CANopen從站節(jié)點(diǎn)發(fā)送NMT網(wǎng)絡(luò)管理命令,切換從站節(jié)點(diǎn)的狀態(tài),并使用PCAN-View軟件的觀察CANopen從站節(jié)點(diǎn)心跳包的變化。本文還簡(jiǎn)要說(shuō)明了PCAN-View軟件的使用方法,可以配置PEAK-CAN轉(zhuǎn)接器的通信速率、觀察CAN總線上的消息幀、發(fā)送自定義的消息幀、記錄歷史消息幀等。
-
微控制器
+關(guān)注
關(guān)注
48文章
8202瀏覽量
160565 -
CAN
+關(guān)注
關(guān)注
58文章
2979瀏覽量
470943 -
節(jié)點(diǎn)
+關(guān)注
關(guān)注
0文章
226瀏覽量
25346 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
8044瀏覽量
92446 -
CANopen
+關(guān)注
關(guān)注
8文章
444瀏覽量
47018
發(fā)布評(píng)論請(qǐng)先 登錄
請(qǐng)問(wèn)STM32官方筆記有CANopen協(xié)議嗎?
基于STM32的CANopen通訊協(xié)議的實(shí)現(xiàn)
CANopen協(xié)議
CANopen通信下CODESYS軟件操作使用
canopen簡(jiǎn)單提要
移通創(chuàng)聯(lián)CANOpen網(wǎng)關(guān)在制藥行業(yè)中的應(yīng)用
如何使用STM32單片機(jī)開(kāi)發(fā)一款CANopen產(chǎn)品
工業(yè)通訊中CANOPEN轉(zhuǎn)EtherCAT的轉(zhuǎn)換
基于OpenHarmony開(kāi)發(fā)樣例的步驟
一個(gè)CANopen的應(yīng)用樣例(上)
MindSDK應(yīng)用基礎(chǔ)—SPI模塊樣例簡(jiǎn)介
MindSDK應(yīng)用基礎(chǔ)—ADC模塊樣例
制藥領(lǐng)域的技術(shù)革命:Profinet轉(zhuǎn)CanOpen網(wǎng)關(guān)大放異彩

一個(gè)CANopen的應(yīng)用樣例(下)
評(píng)論