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

canopen协议的介绍之NMT节点管理;耐心查看 必有所获 尽量别跳过 否则有些前面写了的 后面可不一定解释了 一个系列的首页 https blog csdn net kissgoodbye2 article details canopen 需要掌握的知识 1 对象字典 OD 最重要 需要了解 2 NMT 节点管理 主节点来操作 3 PDO 过程数据传输 4 SDO 对象字典配置

耐心查看,必有所获!尽量别跳过,否则有些前面写了的,后面可不一定解释了。

 

一个系列的首页:https://blog.csdn.net/kissgoodbye2012/article/details/

canopen需要掌握的知识:

1.对象字典OD——最重要,需要了解。

2.NMT节点管理——主节点来操作;

3.PDO过程数据传输;

4.SDO对象字典配置;

 

参考文章:

这篇写得比较好:https://blog.csdn.net/iamplane/article/details/

 

写在前面的话(必看)

一个canopen网络,有且仅有一个NMT主机节点,可以配置包括自身在内的所有canopen网络的节点。

而后设备再canopen网络中发送Boot-up信号,自动进入预操作状态,此状态为主要的配置节点状态。

完成配置后,节点需要NMT 主机发送NMT 报文进入操作状态。操作状态是CANopen 正常工作时的状态
各个模块都应正常工作。

当NMT 主机发送停止节点报文时,设备进入停止状态,CANopen 子设备的通信只有NMT 模块正常工作。

NMT功能

  1. 初始化、启动和停止CANOPEN网络中的设备;
  2. 查询CANOPEN网络中设备的状态;

 CANOPEN节点控制

一个canopen子设备的状态及其转换关系,如图1所示,有如下几种:

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

                                            图1   NMT状态执行图

  • 状态有三种:预操作状态(pre-oprational),运行状态(oprational)和停止状态(Stopped)
  • 可以随时复位节点和复位通信操作;
  • 可以从预操作状态到运行或者停止状态;
  • 可以从运行到预操作状态或者停止状态;
  • 可以从停止到预操作状态,但不能到运行状态

(canopen命令)——can标准帧的发送格式

(数据帧,非远程帧)0x000+CS(命令字节)+Node-ID

其中的CS命令字节:

            0x01(1)——启动节点

            0x02(2)——停止节点

            0x80(128)——进入预操作状态

            0x81(129)——复位节点

            0x82(130)——复位通信

通俗的讲:就是标准帧头为0x000的节点,发送两个字节的数据。

                                                                      表1     各种状态下可以进行的服务

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

查询节点的状态(也称NMT错误控制)

两种方式:

第一种——主节点发送 节点保护 命令,查询节点的当前状态;

第二种——子节点每隔一段时间发送 心跳包 ,报告自身状态给主节点。

 

注1:不允许同时使用寿命保护和心跳。
注2:节点保护、寿命保护和心跳的时间不宜设置过短,以免增大网络负载!

这里的寿命保护,是针对从节点而言的。防止主节点掉线,所以主节点必须间隔一定时间发送节点保护指令。

当然,推荐且最常用的是心跳方式。

 

(1)节点保护

节点保护是NMT 主机通过远程帧,周期地查询NMT 从机的状态。节点保护遵循的是主从模型,每个远程帧都必须得到应答

———-主节点发送指令:0x700+Node-ID;(远程帧)

由于是远程帧,没有数据,所以只需要标准帧的帧头,指示想要查询的节点。

———-从节点应答指令:0x700+Node-ID   Byte1(状态字节) ;(数据帧)

状态字节是一个字节,包括一个触发位( bit7),触发位必须在每次节点保护应答中交替置“ 0”或者“ 1 ”。触发位在第一次节点保护请求时置为“ 0”,下一次应答就会置“ 1 ”。

位 0 到位 6( bits0~6)表示节点状态,可为下面的数值。

状态字节有如下几种值:

         0x00(0)——正在初始化

         0x01(1)——未连接

         0x02(2)——连接中

         0x03(3)——准备中

         0x04(4)——停止状态

         0x05(5)——开始状态

         0x7F(127)——预操作状态

注意:

  • 其中主节点发送中和从节点发送中的Node-ID都是从节点的节点号。
  • 0x01,0x02,0x03的状态只有支持扩展 boot-up 的节点才提供。
  • 0x00从不在节点保护应答中出现,因为一个节点在这个状态时并不应答节点保护报文。

(2)心跳

心跳模式采用的是生产者——消费者模型。CANopen 设备可根据生产者心跳间隔对象0x1017h (从节点)设置的周期来
发送心跳报文,单位为ms。网络总具有消费者心跳功能的节点,根据对象0x1016h(主节点) 设置的消费者时间监视该
生产者,一旦在消费者心跳时间范围内未接收到相应节点的生产者心跳,则认为该节点出现故障。

配置方法:通过SDO对象通信方式,这是一种应答模式的配置方法。具体看看SDO通信。

配置生产者心跳时间间隔1017h 后,节点心跳功能激活开始产生心跳报文。

配置消费者心跳1016h 的有效子索引后,接收到相应节点发出的一帧心跳即开始监视。

1016h 某子索引时间≥主机生产者时间×1.8,否则易误报从机认为主机掉站。对于伺服控制的建议:心跳生产者的时间不要低于20ms,而消费者心跳时间不要低于40ms,且为相应生产者心跳时间的1.8 倍以上。还是那句话,节点保护、寿命保护和心跳的时间不宜设置过短,以免增大网络负载!

心跳报文的格式:0x700+Node-ID Byte1(状态字);(数据帧)

状态字节是一个字节,包括一个触发位( bit7),触发位必须在每次节点保护应答中交替置“ 0”或者“ 1 ”。触发位在第一次节点保护请求时置为“ 0”,下一次应答就会置“ 1 ”。

位 0 到位 6( bits0~6)表示节点状态,可为下面的数值。

状态字节有如下几种值:

         0x00(0)——正在初始化

         0x01(1)——未连接

         0x02(2)——连接中

         0x03(3)——准备中

         0x04(4)——停止状态

         0x05(5)——开始状态

         0x7F(127)——预操作状态

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234021.html原文链接:https://javaforall.net

(0)
上一篇 2025年6月2日 下午12:01
下一篇 2025年6月2日 下午12:22


相关推荐

  • vue 高德地图标记_如何在vue里面调用高德地图「建议收藏」

    vue 高德地图标记_如何在vue里面调用高德地图「建议收藏」1.修改webpac.base.conf.js文件与module同一级添加externals:{‘AMap‘:‘AMap‘,‘AMapUI‘:‘AMapUI‘}配置。然后在index页面引入文件接着下载包vue-amap,然后在vue页面中importAMapfrom‘AMap‘//在使用地图的页面引入该组件varmapexportdefault{mounted:functio…

    2022年5月21日
    43
  • 波束形成算法综述

    波束形成算法综述作者 凌逆战地址 https www cnblogs com LXP Never p 12051532 html 波束成型 Beamforming 又叫波束赋形 空域滤波作用 对多路麦克风信号进行合并处理 抑制非目标方向的干扰信号 增强目标方向的声音信号 原理 调整相位阵列的基本单元参数 使得某些角度的信号获得相长干涉 而另一些角度的信号获得相消干涉 对各个阵元输

    2026年3月26日
    1
  • GOBY扫描篇[通俗易懂]

    GOBY扫描篇[通俗易懂]喜欢大概就是:在我们俩对视的一瞬间,我突然就避开了你的视线,而当你走过去的时候,我却在你背后看了你好久。。。—-网易云热评一、软件简介新一代网络安全技术,通过为目标建立完整的资产数据库,实现快速的安全应急。二、下载地址:https://gobies.org/三、使用方法1、资产扫描自动探测当前网络空间存活的IP2、端口扫描涵盖近300个主流端口,并支持不同场景的端口分组,确保最高效地结果输出;3、显示重扫说明扫描完毕,共存活I…

    2025年8月7日
    4
  • 2005中文博客排名报告「建议收藏」

    2005中文博客排名报告「建议收藏」2005中文博客排名报告发布机构:时代财富科技公司 摘要:2004年11月时代财富科技公司推出了中文Blog排行榜,得到了大众及媒介的广泛关注,也成为众多同行和资本市场了解中文博客网站的重要参考。历经2005年上半年中文Blog托管网站的飞速发展时期,博客网站也正经历着重新的洗牌和残酷的市场竞争。经过长时间的调查和分析,结合大量的用户体验,时代财富科技公司于2005年8月隆重推出《

    2022年7月12日
    20
  • pagehelper,pageinfo用法[通俗易懂]

    pagehelper,pageinfo用法[通俗易懂]pagehelper,从pageinfo中取到的total不正确的处理。最近在使用pagehelper时遇到一些问题。2个类似的查询都用的PageHelper.startPage进行分页,A方法pageinfo中取出来的total,pages是正确的,B方法取出来的确不对,pages始终等于1,total始终等于pageSize。很奇怪!仔细对照了两个方法之后找到了原因。方法A:这是se…

    2025年6月20日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号