CANopen | 对象字典OD 02 - 修改CANopen节点的心跳报文发送间隔
文章目錄
- 一、前言
- 二、實(shí)驗(yàn)的目的
- 三、對象字典OD
- 3.1、Slave.od
- 3.2、Slave1.c
- 四、CAN盒子(收發(fā)器)
- 五、細(xì)節(jié)補(bǔ)充
- 5.1、Slave1.od文件的作用
一、前言
通過修改CANopen節(jié)點(diǎn)的對象字典,改變它發(fā)送心跳報文的頻率。
測試硬件如下:
STM32工程文件:
鏈接:https://pan.baidu.com/s/13UsIJYrBbGjtSrTnlg5GdA
提取碼:jntw
二、實(shí)驗(yàn)的目的
當(dāng)前的CANopen節(jié)點(diǎn)0x05是每1秒時間往CAN總線發(fā)送一次心跳報文。
板子上電后,通過CAN盒子可以監(jiān)控如下CAN報文:
1、從時間戳上看到,報文是每1秒發(fā)送1次。
2、從CANID = 0x705得到,這個是Node_ID = 0x05的CANopen節(jié)點(diǎn)發(fā)出來的心跳報文。
3、報文的數(shù)據(jù)段只有1個字節(jié)(7F),表示該CANopen節(jié)點(diǎn)處于預(yù)操作狀態(tài)。(在該狀態(tài)下,PDO功能是關(guān)閉的)
通過下面的步驟,CANopen節(jié)點(diǎn)0x05將每2秒時間往CAN總線發(fā)送一次心跳報文。
三、對象字典OD
3.1、Slave.od
使用對象字典軟件Objdictedit打開工程上的對象字典文件Slave1.od(在我這個演示工程上的命名)。
接著,找到對象字典0x1000 ~ 0x1029 Communication Parameters里,地址0x1017的Producer Heartbeat Time。此時,Producer Heartbeat Time的值等于0x03E8(十進(jìn)制:1000)。
0x1017 Producer Heartbeat Time是什么意思呢?它的單位是什么?查看《CANopen_meno.pdf》的1.13 General communication objects,找到0x1017 Producer Heartbeat。原來0x1017是生產(chǎn)者心跳時間間隔(單位ms)。
最后,將0x1017 Producer Heartbeat Time從1000ms改為2000ms,即十六進(jìn)制的0x7D0。
修改它,改為0x7D0。
最后記得生成詞典,即Slave1.c代碼文件。
替換原來的Slave1.c文件。
3.2、Slave1.c
剛才在Slave1.od文件上修改了0x1017 Producer Heartbeat Time,然后生成了Slave1.c文件。看看工程上的Slave1.c里的0x1017是不是被修改了。
接著,編譯新的代碼,燒寫到STM32單片機(jī)里。
四、CAN盒子(收發(fā)器)
從CAN盒子收到的CAN報文看來,CANopen節(jié)點(diǎn)變成每2S時間發(fā)送1次心跳報文,實(shí)驗(yàn)成功。
五、細(xì)節(jié)補(bǔ)充
5.1、Slave1.od文件的作用
Canfestival提供Objdictedit軟件修改.od文件(對象字典文件),Objdictedit軟件可以將.od文件轉(zhuǎn)換為.c代碼文件(單片機(jī)的程序),還可以轉(zhuǎn)換為.eds文件(CANopen的設(shè)備描述文件)。
.eds文件有什么用?例如,我最近開發(fā)完一個CANopen節(jié)點(diǎn),準(zhǔn)備將它加入機(jī)器人的CAN網(wǎng)絡(luò)上。進(jìn)行電氣連線之前,需要先生成.eds文件給PLC工程師,PLC工程師將我提供的.eds文件導(dǎo)入到PLC控制器里,讓PLC(機(jī)器人的主控,同時也是CANopen主站)可以在CAN網(wǎng)絡(luò)上識別出我設(shè)計的CANopen節(jié)點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的CANopen | 对象字典OD 02 - 修改CANopen节点的心跳报文发送间隔的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Keil | 解决Keil双击工程名无法
- 下一篇: RTX5 | 线程标志组01 - 线程同