一個CANopen的應(yīng)用樣例
在基本的運(yùn)行CANopen框架的演示項(xiàng)目中,除了一個已經(jīng)運(yùn)行CANopenNode組件程序的CANopen節(jié)點(diǎn),還需要一臺運(yùn)行PCAN-View軟件的PC機(jī)和USB-CAN轉(zhuǎn)換器PEAK-CAN,模擬一個接入CAN總線的CANopen主站設(shè)備節(jié)點(diǎn)。在運(yùn)行演示項(xiàng)目時,可以使用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)對本機(jī)的CANopen協(xié)議棧程序停止、啟動、復(fù)位等操作。
- PCAN-USB驅(qū)動
- 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總線上的消息。
這里用到了一個PEAK-CAN轉(zhuǎn)接設(shè)備,如圖x所示。
PCAN-CAN轉(zhuǎn)接設(shè)備實(shí)物務(wù)必先將PEAK-CAN轉(zhuǎn)接設(shè)備接入電腦后,再啟動PCAN-View軟件。在剛啟動PCAN-View時,會彈出配置連接的對話框,其中顯示已經(jīng)識別到的PEAK-CAN設(shè)備,以及配置通信速率的對話框。在本例中,使用 500kbit/s,同剛移植的canopen_demo工程配置保持移植。配置連接對話框的界面如圖x所示。
figure-pcan-view-connect
圖x PCAN-View識別到的PEAK-CAN設(shè)備以及配置通信速率確認(rèn)之后,啟動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分類的,總會顯示當(dāng)前已經(jīng)出現(xiàn)的CAN-ID消息幀的最新狀態(tài)。如果想看每一幀按照時間順序排列的歷史信息,可在Trace
標(biāo)簽頁中,啟動記錄后查看。
上線和心跳消息
CANopen節(jié)點(diǎn)上電后接入CAN總線,會向總線發(fā)送上線消息。PCAN-View軟件將會收到上線消息如下:
CAN-ID | Length | Data |
---|---|---|
0x70A | 1 | 0x00 |
之后,該CANopen從站節(jié)點(diǎn)將以1000ms為時間間隔,持續(xù)向CAN網(wǎng)絡(luò)發(fā)送節(jié)點(diǎn)心跳報(bào)文。此時,PCAN-View軟件將以1000ms的時間間隔收到心跳報(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)成功啟動,并開始正常運(yùn)行。
此處對心跳消息展開解釋一下。在本例中使用的心跳消息使用CAN-ID的值為0x70A
,二進(jìn)制碼為0b11100001010
,按照CANopen協(xié)議對COB-ID的規(guī)定,11位的CAN標(biāo)準(zhǔn)幀被拆分為前4位的功能碼(FUNCTION CODE)和后7位的節(jié)點(diǎn)地址碼(NODE ID CODE)。如圖x所示。此處心跳消息的功能碼對應(yīng)0b1110
,與圖x中表格列出的值一致。
figure-canopen-cob-id
圖x CANopen中的COB-ID本例中的節(jié)點(diǎn)地址碼0b001010
,即0xA
,則來自于canopen_demo工程CO_OD.c文件中對對象字典的配置。
/***** 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í)對象字典里還配置了更多有用的屬性,例如,本節(jié)點(diǎn)的CAN總線通信的位速率就在對象字典中索引號為2102
的元素上,0x1F4
對應(yīng)十進(jìn)制數(shù)500
,表示500kbit/s
。
(未完待續(xù)。。。)
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8941瀏覽量
150637 -
CAN總線
+關(guān)注
關(guān)注
145文章
1973瀏覽量
132201 -
CAN
+關(guān)注
關(guān)注
57文章
2884瀏覽量
466669 -
程序
+關(guān)注
關(guān)注
117文章
3820瀏覽量
82360 -
CANopen
+關(guān)注
關(guān)注
8文章
341瀏覽量
44467
發(fā)布評論請先 登錄
CANopen協(xié)議學(xué)習(xí)筆記1
Canopen協(xié)議讀后感想
請問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)品
CANopen主節(jié)點(diǎn)的設(shè)計(jì)方案
基于OpenHarmony開發(fā)樣例的步驟
一個CANopen的應(yīng)用樣例(下)

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

評論