初识CANOpen

初识CANOpen什么是 CANOpen CANOpen 是位于 CAN 总线之上的一个应用层协议 CAN 总线只规定了物理层和数据链路层 有了这两层 数据就可以在 CAN 总线上传输了 我们和哪个设备通信就和哪个设备约定好 哪个 ID 代表什么 哪个字节代表什么 但是这样一来 每个厂家的设备都定义一个自己的协议 岂不是乱套了

大家好,我是讯享网,很高兴认识大家。

什么是CANOpen

CANOpen协议

CANOpen协议报文分类

NMT网络管理报文,作用是管理网络,切换节点的状态。一般由主站发送NMT网络管理报文。
SDO服务数据对象报文,作用是设置设备参数,或者是一些关键数据的传输。一般由主站发起SDO报文,从站应答SDO报文。从站也可以发起SDO,主站响应,比如关键数据的传输。
PDO过程数据对象报文,作用是传输一些设备的过程数据,比如传输温度,速度等等。主站和从站都会发送。
EMCY紧急报文,作用是传输设备的故障信息。主站和从站都会发送。
SYNC同步报文,SYNC在CANOPEN网络中的作用是提供同步机制,用来同步数据,比如用来同步从站的TPDO数据。一般由主站发送。假设从站的TPDO传输类型是在同步模式下,当从站收到设定次数的SYNC报文后,从站会发送TPDO。至于PDO如何传输数据在后续的文章中详细阐述。SYNC同步报文的格式:COB-ID是0x80,数据帧,数据长度是0。SYNC报文的优先级仅次于NMT报文的优先级,SYNC的报文没有数据,足够短小,其目的就是为了快,减小抖动。
NODE GUARDING节点保护报文,作用是主站请求从站的状态,主站询问,从站应答。这种模式逐渐已被淘汰,因为太占CAN总线网络带宽。
HeartBeat心跳报文,作用是设备主动发送心跳,表示自己在线。主站和从站都可以发送。

CANOpen状态机

CANOpen节点共包括:初始化、预操作、操作、停止这四个状态。状态机可以通过NMT服务相互切换。如下图:
在这里插入图片描述
讯享网

NMT报文

只有CANOpen主站才会发送NMT报文。NMT报文不需要应答,是生产者消费者模型的。NMT报文的ID固定是0,数据域有两个字节,第一个字节是命令,第二个字节是Node-ID。Node-ID为0表示所有的从站。如下图
在这里插入图片描述

节点保护报文

通过节点保护报文主站可以监视每个从节点的当前状态。主站周期性的发送节点保护报文询问从站的状态,从站收到主站的询问后将自己的状态返回给主节点。
主站发送的是远程帧,请求从站的状态。从站应答的数据只有一个字节,这个字节bit7是交替0、1出现的。bit0~bit6表示从站的状态。
主站请求格式和从站应答格式如下图:
在这里插入图片描述
从站应答的状态字如下图:

在这里插入图片描述
节点保护报文是0x700+Node-ID ,这个Node-ID是从站的Node-ID,每个节点都要请求一次应答一次。节点保护相对于心跳来说太占用网络带宽了。

心跳报文:

心跳报文是从节点主动发送报文给主节点。心跳报文是周期性的,主节点为每一个从节点设置一个超时时间,如果超时时间到的时候还没有收到从节点的心跳报文,主站将对从站进行相应的动作。

节点上线报文

从站主动发送节点上线报文通知主站它已经从初始状态进入到了预操作状态。启动报文如下:
在这里插入图片描述

SYNC同步报文

同步报文的CAN-ID固定是0x80,数据长度是0或1。同步报文是生产者消费者模型,由主站发出,同步从站的TPDO。
在这里插入图片描述

在这里插入图片描述

EMCY紧急报文

当设备内部发生错误,触发该对象,紧急报文的格式如下:

在这里插入图片描述

紧急报文的COB-ID存储在0x1014的索引中,一般会定义为0x80+Node-ID。
紧急报文的ECC(紧急错误代码)如下:
在这里插入图片描述
紧急报文的错误寄存器位于0x1001索引中。
紧急报文的生产禁止时间,存储在索引0x1015中,防止一直发送紧急报文,占用CAN总线带宽。

SDO报文

SDO是客户端服务器模型的。通过使用索引子索引SDO客户机能访问设备对象字典中的对象。
SDO通常情况下传输的数据长度不超过4个字节,当数据长度超过4字节是分拆成几个报文发送的。
在这里插入图片描述

SDO读报文如下:

在这里插入图片描述
在这里插入图片描述

SDO写报文如下

在这里插入图片描述
在这里插入图片描述
如果使用SDO读取或写入的时候返回0x80错误的话,可以查询返回数据帧的后4个字节,后4个字节是被称为是中止代码,通过中止代码能得知出错的原因。中止代码如下:
在这里插入图片描述

关于PDO通信在下一篇文章中介绍。

小讯
上一篇 2025-02-09 09:16
下一篇 2025-02-10 19:43

相关推荐

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