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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于mysql 出现 1264 Out of range value for column 错误的解决办法

    关于mysql 出现 1264 Out of range value for column 错误的解决办法

    2021年10月27日
    64
  • 什么是SOA?

    SOA的定义SOA(Service-OrientedArchitecture),中文全称:面向服务的架构。SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA的基本特征可从企业外部访问  随时可用  粗粒度的服务接口分级 松散耦合 可重用的服务服务接口设计管理  标准化的服务接口  支持各种消息模式 精…

    2022年4月4日
    46
  • mysql 端口号_mysql的端口号(mysql常用端口号)「建议收藏」

    mysql的端口号(mysql常用端口号)2020-05-0721:58:15共10个回答mysql的默认端口号是多少mysql默认端口号为3306,修改端口号方法:修改配置文件/etc/my.cnf如何查看mysql的端口号1使用命令showglobalvariableslike’port’;查看端口号2修改端口,编辑/etc/my.cnf文件,早期版本有可能是my.conf文件名,增加端口参…

    2022年4月18日
    399
  • Java正则表达式语法规则(具体)

    Java正则表达式语法规则(具体)Java正则表达式语法规则(具体)

    2022年7月19日
    12
  • Android特效开发(仿zaker用手向上推动的效果(推动门效果))

    本文由manymore13原创,转载请标明出处 http://blog.csdn.net/manymore13/article/details/12219687     最近在商店下载了zaker ,闲暇时拿来看看新闻!发现每次打开软件进入主界面时有个界面,需要你把它往上滑到一定距离才能进入到主界面。每次进入软件时它的背景可能不一样,在往上拨的时候你会看见主界面,好似向上推的门一样!

    2022年3月10日
    33
  • NAT模式和桥接模式实现局域网其他物理机器与Vmware虚拟机互相访问

    NAT模式和桥接模式实现局域网其他物理机器与Vmware虚拟机互相访问 一般装完Vmware虚拟机都需要与局域网中其他机器互联互通,在安装虚拟机的时候就要先考虑好用哪种模式进行连接。Vmware支持3种网络连接模式,我们先简单介绍一下3种模式然后再说具体的配置。一、3种连接模式1、桥接模式: 所谓桥接就是把两个本来分开的网段连接起来,连接之后成为了一个更大的网络。vmware提供了一个虚拟的桥接器,他就像一座桥一样把虚拟机的网络环境和物理机的网络环境连在了一起…

    2022年6月29日
    46

发表回复

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

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