一個(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ì)話框中填寫Stop幀內(nèi)容。如圖x所示。
figure-pcan-view-new-msg-2
圖x 在發(fā)送新消息對(duì)話框中填寫幀內(nèi)容確認(rèn)新建消息后,可以在PCAN-View窗口界面下半邊Transmit
看到新建的消息幀,但此時(shí)尚未發(fā)送。如圖x所示。
figure-pcan-view-new-msg-3
圖x 新建發(fā)送消息幀此時(shí),需要人工觸發(fā)發(fā)送過程。可以選中即將發(fā)送的消息幀,再單擊菜單欄Transmit->Send
。如圖x所示。或者也可以通過快捷鍵Space
空格,或者直接雙擊即將發(fā)送消息幀的CAN-ID,也可以觸發(fā)發(fā)送過程。
figure-pcan-view-new-msg-4
圖x 觸發(fā)發(fā)送消息幀當(dāng)發(fā)送幀完成之后,在PCAN-View的界面中可以看到,CAN-ID為0x70A
的心跳消息的值,已經(jīng)從05
變成了04
。說明對(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ù)打開狀態(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微控制器為例,詳述的移植過程,創(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)要說明了PCAN-View軟件的使用方法,可以配置PEAK-CAN轉(zhuǎn)接器的通信速率、觀察CAN總線上的消息幀、發(fā)送自定義的消息幀、記錄歷史消息幀等。
-
微控制器
+關(guān)注
關(guān)注
48文章
7573瀏覽量
151702 -
CAN
+關(guān)注
關(guān)注
57文章
2759瀏覽量
463983 -
節(jié)點(diǎn)
+關(guān)注
關(guān)注
0文章
220瀏覽量
24461 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7585瀏覽量
88989 -
CANopen
+關(guān)注
關(guān)注
8文章
267瀏覽量
43624
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論