文章目录

  • 一、前言
  • 二、实验的目的
  • 三、对象字典OD
    • 3.1、Slave.od
    • 3.2、Slave1.c
  • 四、CAN盒子(收发器)
  • 五、细节补充
    • 5.1、Slave1.od文件的作用

一、前言


通过修改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节点。

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

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

    文章目录 一.前言 二.实验的目的 三.对象字典OD 3.1.Slave1.od 3.2.Slave1.c 四.CAN盒子(收发器) 4.1.通过SDO方式修改CANopen从站的心跳时间 一.前言 ...

  2. CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)

    文章目录 一.前言 二.实验目的 三.对象字典 3.1.找到工程里的对象字典文件 3.2.创建映射变量 四.STM32代码 4.1.Slave1.c 4.2.main.c 五.CAN盒子(收发器) 5 ...

  3. CANopen | 对象字典OD 01 - canfestival对象字典编辑软件安装与使用

    对象字典编辑软件环境的搭建很简单.直接参考<硬石YS-H7Multi开发板开发手册>的第46.3章节-对象字典编辑器的环境搭建与第46.4章节-对象字典编辑器的使用,手册的下载地址我分享: ...

  4. canopen协议的介绍之NMT节点管理;

    耐心查看,必有所获!尽量别跳过,否则有些前面写了的,后面可不一定解释了. 一个系列的首页:https://blog.csdn.net/kissgoodbye2012/article/details/8 ...

  5. CanOpen 对象字典的理解

    CanOpen 对象字典的理解 我们知道,Canopen是在Can2.0B的数据链路层之上的应用协议,是在20世纪90年代基于CAL发展而来的子协议,由于其稳定性.实时性.抗干扰性非常优秀,被广泛应用 ...

  6. CANopen对象字典

    什么是对象字典(Object Dictionary) 想象CANopen的应用场景之一--电机控制 控制器通过CAN总线控制电机1和电机2.同时需要,电机1和电机2把实时的状态参数返回给控制器,两者之 ...

  7. CANopen | 网络管理NMT01 - 节点上线报文与心跳报文

    文章目录 一.前言 二.NMT节点上线报文 三.NMT心跳报文 一.前言 CANopen协议的NMT管理报文既是最简单又是最重要的知识点,为什么网络管理NMT这么重要? 1.CANopen从站上电后, ...

  8. canopen pdo通信c语言,CANopen通信之PDO通信

    过程数据对象(Process Data Object,PDO)是用来传输实时数据的,提供对设备应用对象的直接访问通道,它用来传输实时短帧数据,具有较高的优先权.PDO 传输的数据必须少于或等于 8 个 ...

  9. 如何修改 Kubernetes 节点 IP 地址?

    如何修改 Kubernetes 节点 IP 地址? ✨博主介绍 前言 环境 操作 master 节点 node 节点 推荐操作 个人总结 ✨博主介绍

最新文章

  1. oracle 提示:ORA-02292:integrity constraint(xxxxxxx) violated - child record found
  2. 设计模式之职责链模式(Chain of Responsibility)摘录
  3. 通过hibernate 查询出来的数据默认为持久状态,也就是说:你在后头作出的任何操作都会被hibernate自动同步更新到数据库
  4. 使用RNN神经网络自动生成名字 (不使用深度学习框架,源码)
  5. Java 读写Properties配置文件(转)
  6. 2018-2019 20165208 网络对抗 Exp3 免杀原理与实践
  7. LeetCode 1180. 统计只含单一字母的子串
  8. java中如何分隔字符串_Java中分割字符串
  9. 通过FTP备份IOS
  10. bzoj1015 [JSOI2008]星球大战 并查集
  11. python父类方法的装饰器_Python使用装饰器自动调用父类__init__
  12. Linux运维问题解决(2)——Linux设置定时重启系统的方法:定时任务crontab 和 编写脚本
  13. Java 1.1.4 检测字符串是否相等
  14. Vue学习笔记之04-computed计算属性
  15. 自然语言处理——语言模型(二)
  16. 附件 计算机 丢失,帮你找回Win7开始菜单附件丢失的工具
  17. php加载memcache模块
  18. php 判断来访客户端是否移动设备
  19. 趣谈网络协议学习笔记[计算机网络]
  20. 使用函数式编程优化代码

热门文章

  1. Python学习秘籍 这些窍门就连老司机都不一定知道 值得学习
  2. Effective objective-C 读书笔记 (第一部分)
  3. ubuntu安装kali工具包
  4. 设置ArcGIS的外观改回到出厂
  5. .NET 中String类功能分类概述
  6. 经典排序算法-MFC实现之2:问题
  7. 新三国 雷人台词----雷死一群程序员
  8. 50条大牛C++编程开发学习建议
  9. vue实战案例:用学过的知识做一个小demo
  10. matlab ode45求解齿轮动力学,Matlab拟合动力学参数遇到问题(ode45)