一個(gè)CANopen的應(yīng)用樣例
在基本的運(yùn)行CANopen框架的演示項(xiàng)目中,除了一個(gè)已經(jīng)運(yùn)行CANopenNode組件程序的CANopen節(jié)點(diǎn),還需要一臺(tái)運(yùn)行PCAN-View軟件的PC機(jī)和USB-CAN轉(zhuǎn)換器PEAK-CAN,模擬一個(gè)接入CAN總線的CANopen主站設(shè)備節(jié)點(diǎn)。在運(yùn)行演示項(xiàng)目時(shí),可以使用PCAN-View軟件,通過CAN總線發(fā)現(xiàn)運(yùn)行了CANopen設(shè)備節(jié)點(diǎn),并接收來自CANopen節(jié)點(diǎn)發(fā)出的心跳消息包,然后發(fā)送一系列網(wǎng)絡(luò)管理命令,控制CANopen從站節(jié)點(diǎn)對(duì)本機(jī)的CANopen協(xié)議棧程序停止、啟動(dòng)、復(fù)位等操作。
- PCAN-USB驅(qū)動(dòng)
- PCAN-View 安裝包
- PCAN-View使用說明
figure-can-connection-between-pc-and-mcu
圖x PC模擬的CAN主站同CAN從站之間的連接之后,開發(fā)者可以試著通過PCAN-View軟件接入CAN總線的CANopen節(jié)點(diǎn)發(fā)送控制命令,并觀察CAN總線上的消息。
這里用到了一個(gè)PEAK-CAN轉(zhuǎn)接設(shè)備,如圖x所示。
PCAN-CAN轉(zhuǎn)接設(shè)備實(shí)物務(wù)必先將PEAK-CAN轉(zhuǎn)接設(shè)備接入電腦后,再啟動(dòng)PCAN-View軟件。在剛啟動(dòng)PCAN-View時(shí),會(huì)彈出配置連接的對(duì)話框,其中顯示已經(jīng)識(shí)別到的PEAK-CAN設(shè)備,以及配置通信速率的對(duì)話框。在本例中,使用 500kbit/s,同剛移植的canopen_demo工程配置保持移植。配置連接對(duì)話框的界面如圖x所示。
figure-pcan-view-connect
圖x PCAN-View識(shí)別到的PEAK-CAN設(shè)備以及配置通信速率確認(rèn)之后,啟動(dòng)PCAN-View軟件,即可在界面中看到CANopen節(jié)點(diǎn)已經(jīng)在CAN總線上發(fā)送的消息幀了。如圖x所示。
figure-pcan-view-startup
圖x 運(yùn)行PCAN-View軟件這里需要注意的是,在Receive/Transmit
標(biāo)簽頁中看到的消息幀是以CAN-ID分類的,總會(huì)顯示當(dāng)前已經(jīng)出現(xiàn)的CAN-ID消息幀的最新狀態(tài)。如果想看每一幀按照時(shí)間順序排列的歷史信息,可在Trace
標(biāo)簽頁中,啟動(dòng)記錄后查看。
上線和心跳消息
CANopen節(jié)點(diǎn)上電后接入CAN總線,會(huì)向總線發(fā)送上線消息。PCAN-View軟件將會(huì)收到上線消息如下:
CAN-ID | Length | Data |
---|---|---|
0x70A | 1 | 0x00 |
之后,該CANopen從站節(jié)點(diǎn)將以1000ms為時(shí)間間隔,持續(xù)向CAN網(wǎng)絡(luò)發(fā)送節(jié)點(diǎn)心跳報(bào)文。此時(shí),PCAN-View軟件將以1000ms的時(shí)間間隔收到心跳報(bào)文如下:
CAN-ID | Length | Data |
---|---|---|
0x70A | 1 | 0x05 |
figure-canopen-msg-heartbeat-at-power-up
圖x CANopen節(jié)點(diǎn)發(fā)送上線報(bào)文和心跳包至此,可驗(yàn)證該CANopen節(jié)點(diǎn)成功啟動(dòng),并開始正常運(yùn)行。
此處對(duì)心跳消息展開解釋一下。在本例中使用的心跳消息使用CAN-ID的值為0x70A
,二進(jìn)制碼為0b11100001010
,按照CANopen協(xié)議對(duì)COB-ID的規(guī)定,11位的CAN標(biāo)準(zhǔn)幀被拆分為前4位的功能碼(FUNCTION CODE)和后7位的節(jié)點(diǎn)地址碼(NODE ID CODE)。如圖x所示。此處心跳消息的功能碼對(duì)應(yīng)0b1110
,與圖x中表格列出的值一致。
figure-canopen-cob-id
圖x CANopen中的COB-ID本例中的節(jié)點(diǎn)地址碼0b001010
,即0xA
,則來自于canopen_demo工程CO_OD.c文件中對(duì)對(duì)象字典的配置。
/***** Definition for ROM variables *******************************************/
struct sCO_OD_ROM CO_OD_ROM = { //constant variables, stored in flash
CO_OD_FIRST_LAST_WORD,
...
/*2101*/ 0x0A, /* local NODE-ID. */
/*2102*/ 0x1F4, /* local bitrate. */
...
CO_OD_FIRST_LAST_WORD
};
其實(shí)對(duì)象字典里還配置了更多有用的屬性,例如,本節(jié)點(diǎn)的CAN總線通信的位速率就在對(duì)象字典中索引號(hào)為2102
的元素上,0x1F4
對(duì)應(yīng)十進(jìn)制數(shù)500
,表示500kbit/s
。
(未完待續(xù)。。。)
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
9065瀏覽量
151839 -
CAN總線
+關(guān)注
關(guān)注
145文章
1987瀏覽量
132875 -
CAN
+關(guān)注
關(guān)注
57文章
2920瀏覽量
467825 -
程序
+關(guān)注
關(guān)注
117文章
3826瀏覽量
82996 -
CANopen
+關(guān)注
關(guān)注
8文章
406瀏覽量
44901
發(fā)布評(píng)論請(qǐng)先 登錄
CANopen協(xié)議學(xué)習(xí)筆記1
Canopen協(xié)議讀后感想
請(qǐng)問STM32官方筆記有CANopen協(xié)議嗎?
基于STM32的CANopen通訊協(xié)議的實(shí)現(xiàn)
CANopen協(xié)議
canopen簡單提要
移通創(chuàng)聯(lián)CANOpen網(wǎng)關(guān)在制藥行業(yè)中的應(yīng)用
如何使用STM32單片機(jī)開發(fā)一款CANopen產(chǎn)品
基于OpenHarmony開發(fā)樣例的步驟
一個(gè)CANopen的應(yīng)用樣例(下)

MindSDK應(yīng)用基礎(chǔ)—SPI模塊樣例簡介
MindSDK應(yīng)用基礎(chǔ)—ADC模塊樣例
制藥領(lǐng)域的技術(shù)革命:Profinet轉(zhuǎn)CanOpen網(wǎng)關(guān)大放異彩

評(píng)論