CANopen | 对象字典OD 02 - 修改CANopen节点的心跳报文发送间隔

一、前言


通过修改CANopen节点的对象字典,改变它发送心跳报文的频率。

测试硬件如下:
在这里插入图片描述
STM32工程文件:
链接:https://pan.baidu.com/s/13UsIJYrBbGjtSrTnlg5GdA
提取码:jntw

二、实验的目的


当前的CANopen节点0x05是每1秒时间往CAN总线发送一次心跳报文。
在这里插入图片描述
板子上电后,通过CAN盒子可以监控如下CAN报文:
1、从时间戳上看到,报文是每1秒发送1次。
2、从CANID = 0x705得到,这个是Node_ID = 0x05的CANopen节点发出来的心跳报文。
3、报文的数据段只有1个字节(7F),表示该CANopen节点处于预操作状态。(在该状态下,PDO功能是关闭的)
在这里插入图片描述
通过下面的步骤,CANopen节点0x05将每2秒时间往CAN总线发送一次心跳报文。
在这里插入图片描述

三、对象字典OD


3.1、Slave.od

使用对象字典软件Objdictedit打开工程上的对象字典文件Slave1.od(在我这个演示工程上的命名)。
在这里插入图片描述
接着,找到对象字典0x1000 ~ 0x1029 Communication Parameters里,地址0x1017的Producer Heartbeat Time。此时,Producer Heartbeat Time的值等于0x03E8(十进制:1000)。
在这里插入图片描述
0x1017 Producer Heartbeat Time是什么意思呢?它的单位是什么?查看《CANopen_meno.pdf》的1.13 General communication objects,找到0x1017 Producer Heartbeat。原来0x1017是生产者心跳时间间隔(单位ms)。
在这里插入图片描述
最后,将0x1017 Producer Heartbeat Time从1000ms改为2000ms,即十六进制的0x7D0。
在这里插入图片描述
修改它,改为0x7D0。
在这里插入图片描述
最后记得生成词典,即Slave1.c代码文件。
在这里插入图片描述
替换原来的Slave1.c文件。
在这里插入图片描述

3.2、Slave1.c

刚才在Slave1.od文件上修改了0x1017 Producer Heartbeat Time,然后生成了Slave1.c文件。看看工程上的Slave1.c里的0x1017是不是被修改了。
在这里插入图片描述
接着,编译新的代码,烧写到STM32单片机里。
在这里插入图片描述

四、CAN盒子(收发器)


从CAN盒子收到的CAN报文看来,CANopen节点变成每2S时间发送1次心跳报文,实验成功。
在这里插入图片描述

五、细节补充


5.1、Slave1.od文件的作用

Canfestival提供Objdictedit软件修改.od文件(对象字典文件),Objdictedit软件可以将.od文件转换为.c代码文件(单片机的程序),还可以转换为.eds文件(CANopen的设备描述文件)。
.eds文件有什么用?例如,我最近开发完一个CANopen节点,准备将它加入机器人的CAN网络上。进行电气连线之前,需要先生成.eds文件给PLC工程师,PLC工程师将我提供的.eds文件导入到PLC控制器里,让PLC(机器人的主控,同时也是CANopen主站)可以在CAN网络上识别出我设计的CANopen节点。
在这里插入图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wallace Zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值