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

一、前言


CANopen协议的NMT管理报文既是最简单又是最重要的知识点,为什么网络管理NMT这么重要?
1、CANopen从站上电后,首先往总线发送节点上线报文(这个是NMT),然后就会源源不断地发送心跳报文(这个也是NMT)。不了解NMT的话,你无法看懂CANopen网络上的这些CAN报文。一般的自动化设备上肯定不止一个CANopen从站,可能会有10几个,甚至几十个。当你用CAN分析仪去观察CANopen网络上的报文时,会有很多很多乱七八糟的CAN报文,你要了解NMT才能看懂那些CAN报文。
2、CANopen从站上电后,从心跳报文可以看到CANopen从站处于Pre-Operatonal(预操作状态),此时PDO功能是关闭的。需要用NMT报文才能让CANopen从站从Pre-Operational切换到Operational(操作状态),此时PDO功能才有效。
3、从上一点知道,CANopen从站需要进入Operational(操作状态)才能使用PDO功能,那PDO功能真的那么重要吗?老实说,它非常重要。总的来说,CANopen网络的实时性取决于PDO,多个CANopen节点实时且高效地通讯,依赖的就是PDO。后面的章节会专门讲解PDO的使用方法。
4、调试多个CANopen节点时,一般我是先对一个CANopen节点进行调试,说白了我只关注那一个CANopen节点发出来的CAN报文,我不希望其他CANopen节点往CANopen网络上发送CAN报文。遇到这种情况,有两种办法解决:1、关闭其他CANopen节点的电源(简单粗暴)。2、使用NMT报文,让其他CANopen节点进入停止状态,CANopen节点进入停止状态后,连最基本的心跳报文都停止了。
5、综上所述,一定要掌握NMT管理报文!!!
在这里插入图片描述
请研读《CANopen_easy_begin》的第6章-网络管理NMT(Network management)与CANopen主站,请看下面图片。其中,6.4章节简单略过即可,因为NMT节点守护已经被CANopen协议淘汰,基本不使用了。
在这里插入图片描述
准备好硬件:
1、STM32H743开发板(已经移植CANopen协议)
2、CAN分析仪
在这里插入图片描述

二、NMT节点上线报文


在这里插入图片描述
基于上一次已经完成CANopen的移植的开发板,它已经是一个标准的CANopen从站(从站ID : 0x05),那么我用CAN分析仪去看看CANopen从站发出什么报文。每当我按下开发板的复位键时,CAN分析仪就会收到一条CAN报文。没错,它就是CANopen从站0x05的“节点上线报文。
!!同学们不要误以为CAN-ID:0x705是CANopen节点的身份,CANopen节点的身份是0x05才对。那么0x705是什么意思?? 0x705 = 0x700(心跳报文)+ Node-ID(0x05),其中的Node-ID才是CANopen节点的身份。
在这里插入图片描述
符合CANopen对NMT节点上线报文的定义:CAN-ID = 0x700 + node-ID(0x05 = 0x705,然后长度01,接着数据段是0。
在这里插入图片描述

三、NMT心跳报文


在这里插入图片描述
看看刚移植的CANopen从站(Node-ID:0x05)在干什么吧。如下图所示,它在源源不断地发出同一个报文。没错,这个报文就是CANopen从站(0x05)的心跳报文,数据段是0x7F。
在这里插入图片描述
数据段0x7F的意思是这个CANopen从站处于Pre-Operational预操作状态,它就是节点的状态。CANopen从站处于预操作状态(7F)时,不会发送与接收PDO(PDO功能关闭),SDO功能是正常的。还有,CANopen从站的状态一般由CANopen主站去控制。
在这里插入图片描述
尝试一下这个功能吧,我用CAN分析仪往CANbus网络发送一个报文让CANopen从站(0x05)进入操作状态(0x05)。如下图所示,使用CAN分析仪发送报文后,CANopen从站(0x05)进入了操作状态。
在这里插入图片描述
最后,我用CAN分析仪再往CANbus网络发一条CAN报文,让CANopen从站(0x05)回到预操作状态(0x7F)。
在这里插入图片描述
为什么我用CAN分析仪发送一些报文就能控制CANopen从站的状态?这些是什么报文?请看下一章节吧。

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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、付费专栏及课程。

余额充值