CANopen | 对象字典OD 03 - 启动CANopen节点的服务数据对象SDO

一、前言


在这里插入图片描述
当设计一个CANopen节点(从站)时,必须必须打开SDO服务器功能。只有CANopen从站打开SDO服务器功能后,CANopen主站才能读写CANopen从站的对象字典。

为什么CANopen主站要修改CANopen从站的对象字典?以前我调试过一个CANopen伺服驱动器,品牌是德国ELMO。伺服驱动器上电后只发出一个上线报文,接着并没有定期发送心跳报文。此时,就需要使用SDO指令去修改ELMO伺服驱动器对象字典里的0x1017 Producer Heartbeat Time为0x7D0,让它每隔2S时间往总线上发送心跳报文。有一些CANopen产品需要在它上电之后,CANopen主站通过SDO指令配置它们的对象字典,让它们达到控制要求。比如心跳报文的频率,还有PDO映射对象,PDO的发送参数等(这些知识后续会用实验讲解)。我也调试过上海鸣志的CANopen伺服驱动器,上海鸣志的CANopen产品支持对象字典掉电保存。这样的好处是CANopen主站不需要每一次在CANopen从站上电后对它们的对象字典进行设置(通过SDO指令),CANopen主站的程序就变得更加简单了。总之,CANopen从站一定要开启SDO服务器。

测试的硬件如下:
在这里插入图片描述
STM32工程:
链接:https://pan.baidu.com/s/1dtuJnqIoSHlPIBpWKJmyhw
提取码:n1se

二、实验的目的


使用Objdictedit软件修改.od对象字典文件,打开CANopen节点的SDO服务器功能。接着,使用CAN盒子发送SDO报文指令修改CANopen从站的0x1017 Producer Heartbeat Time(从0x7D0改为0x3E8)。最后通过CAN盒子观察CANopen从站发送心跳报文的频率是不是1秒1次。

三、对象字典OD


3.1、Slave1.od

使用对象字典软件Objdictedit打开工程上的对象字典文件Slave1.od(在我这个演示工程上的命名)。
在这里插入图片描述
从下图看到,这个对象字典已经打开了SDO服务器功能。
在这里插入图片描述
为了演示如何开启SDO服务器功能,我将当前的SDO服务器删除。
在这里插入图片描述
开始在对象字典文件上创建SDO服务器把。首先,在下面的“添加”栏目上选择“SDO服务器“。
在这里插入图片描述
然后点击“添加”按钮,完成SDO服务器的创建。
在这里插入图片描述
最后,生成Slave1.c文件。
在这里插入图片描述

3.2、Slave1.c

在Slave1.c里,找到“index 0x1200 :Server SDO Parameter"的备注,表示已经打开SDO服务器功能了。
在这里插入图片描述
然后编译代码,将新的代码烧录到STM32里。
在这里插入图片描述

四、CAN盒子(收发器)


4.1、通过SDO方式修改CANopen从站的心跳时间

在这里插入图片描述
查看心跳时间在对象字典里的位置与信息。
在这里插入图片描述
接着,使用CAN盒子充当CANopen主站,使用SDO报文修改CANopen从站的心跳间隔时间。
在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Wallace Zhang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值