一個CANopen的應(yīng)用樣例
在基本的運(yùn)行CANopen框架的演示項目中,除了一個已經(jīng)運(yùn)行CANopenNode組件程序的CANopen節(jié)點,還需要一臺運(yùn)行PCAN-View軟件的PC機(jī)和USB-CAN轉(zhuǎn)換器PEAK-CAN,模擬一個接入CAN總線的CANopen主站設(shè)備節(jié)點。在運(yùn)行演示項目時,可以使用PCAN-View軟件,通過CAN總線發(fā)現(xiàn)運(yùn)行了CANopen設(shè)備節(jié)點,并接收來自CANopen節(jié)點發(fā)出的心跳消息包,然后發(fā)送一系列網(wǎng)絡(luò)管理命令,控制CANopen從站節(jié)點對本機(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é)點發(fā)送控制命令,并觀察CAN總線上的消息。
這里用到了一個PEAK-CAN轉(zhuǎn)接設(shè)備,如圖x所示。
PCAN-CAN轉(zhuǎn)接設(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é)點已經(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é)點上電后接入CAN總線,會向總線發(fā)送上線消息。PCAN-View軟件將會收到上線消息如下:
CAN-ID | Length | Data |
---|---|---|
0x70A | 1 | 0x00 |
之后,該CANopen從站節(jié)點將以1000ms為時間間隔,持續(xù)向CAN網(wǎng)絡(luò)發(fā)送節(jié)點心跳報文。此時,PCAN-View軟件將以1000ms的時間間隔收到心跳報文如下:
CAN-ID | Length | Data |
---|---|---|
0x70A | 1 | 0x05 |
figure-canopen-msg-heartbeat-at-power-up
圖x CANopen節(jié)點發(fā)送上線報文和心跳包至此,可驗證該CANopen節(jié)點成功啟動,并開始正常運(yùn)行。
此處對心跳消息展開解釋一下。在本例中使用的心跳消息使用CAN-ID的值為0x70A
,二進(jìn)制碼為0b11100001010
,按照CANopen協(xié)議對COB-ID的規(guī)定,11位的CAN標(biāo)準(zhǔn)幀被拆分為前4位的功能碼(FUNCTION CODE)和后7位的節(jié)點地址碼(NODE ID CODE)。如圖x所示。此處心跳消息的功能碼對應(yīng)0b1110
,與圖x中表格列出的值一致。
figure-canopen-cob-id
圖x CANopen中的COB-ID本例中的節(jié)點地址碼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
};
其實對象字典里還配置了更多有用的屬性,例如,本節(jié)點的CAN總線通信的位速率就在對象字典中索引號為2102
的元素上,0x1F4
對應(yīng)十進(jìn)制數(shù)500
,表示500kbit/s
。
(未完待續(xù)。。。)
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8750瀏覽量
148188 -
CAN總線
+關(guān)注
關(guān)注
145文章
1956瀏覽量
131151 -
CAN
+關(guān)注
關(guān)注
57文章
2774瀏覽量
464491 -
程序
+關(guān)注
關(guān)注
117文章
3798瀏覽量
81468 -
CANopen
+關(guān)注
關(guān)注
8文章
272瀏覽量
43793
發(fā)布評論請先 登錄
相關(guān)推薦
CANopen協(xié)議學(xué)習(xí)筆記1
Canopen協(xié)議讀后感想
CANopen協(xié)議
canopen簡單提要
移通創(chuàng)聯(lián)CANOpen網(wǎng)關(guān)在制藥行業(yè)中的應(yīng)用
如何使用STM32單片機(jī)開發(fā)一款CANopen產(chǎn)品
CANopen協(xié)議講座(2)之CANopen協(xié)議簡介
CANopen協(xié)議講座(5)之CANopen從站模塊(XGa
CANopen主節(jié)點的設(shè)計方案
基于OpenHarmony開發(fā)樣例的步驟
一個CANopen的應(yīng)用樣例(下)
![<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>CANopen</b>的應(yīng)用<b class='flag-5'>樣</b><b class='flag-5'>例</b>(下)](https://file1.elecfans.com/web2/M00/89/F7/wKgaomSNZoeAfaC_AAGbHYuAis4214.jpg)
MindSDK應(yīng)用基礎(chǔ)—SPI模塊樣例簡介
MindSDK應(yīng)用基礎(chǔ)—ADC模塊樣例
制藥領(lǐng)域的技術(shù)革命:Profinet轉(zhuǎn)CanOpen網(wǎng)關(guān)大放異彩
![制藥領(lǐng)域的技術(shù)革命:Profinet轉(zhuǎn)<b class='flag-5'>CanOpen</b>網(wǎng)關(guān)大放異彩](https://file1.elecfans.com/web2/M00/C7/BA/wKgZomYWEACAeN1NAAEJAJ-3iQU515.png)
評論