当前位置:网站首页>初识CANOpen
初识CANOpen
2022-06-25 12:08:00 【zhaodong_jack】
什么是CANOpen
CANOpen是位于CAN总线之上的一个应用层协议。CAN总线只规定了物理层和数据链路层,有了这两层,数据就可以在CAN总线上传输了。我们和哪个设备通信就和哪个设备约定好,哪个ID代表什么,哪个字节代表什么,但是这样一来,每个厂家的设备都定义一个自己的协议,岂不是乱套了。如果约定好一个开放的,标准化的协议,厂商都去遵循这个约定好的标准,那么设备之间互相通信就简单了。
CANOpen协议通常分为用户应用层、对象字典、通信这三个部分。
CANOpen协议
CANOpen 是由一系列协议组成的。比如CiA301、CiA401、CiA402协议等等。
CANOpen的基础协议是CiA 301协议。每个行业还有自己的设备子协议,
CANOpen协议报文分类
NMT网络管理报文,作用是管理网络,切换节点的状态。一般由主站发送NMT网络管理报文。
SDO服务数据对象报文,作用是设置设备参数,或者是一些关键数据的传输。一般由主站发起SDO报文,从站应答SDO报文。从站也可以发起SDO,主站响应,比如关键数据的传输。
PDO过程数据对象报文,作用是传输一些设备的过程数据,比如传输温度,速度等等。主站和从站都会发送。
EMCY紧急报文,作用是传输设备的故障信息。主站和从站都会发送。
SYNC同步报文,作用是同步数据,用来同步从站的TPDO数据。一般由主站发送。比如从站的TPDO传输类型是在同步模式下,当从站收到设定次数的SYNC报文后,从站会发送TPDO。这个在后续的文章中详细阐述。
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通信在下一篇文章中介绍。
边栏推荐
- Navicat premium view password scheme
- Thinkphp3 reinforcement i() function filter single quotation marks
- R language uses the multinom function of NNET package to build an unordered multi classification logistic regression model, and uses the lrtest function of epidisplay package to perform multiple model
- PHP appends the same elements to a two-dimensional array
- 按权重随机选择[前缀和+二分+随机target]
- [data midrange] what is the oneid of the data midrange? Isn't the master data fragrant?
- Does sklearex make your sklearn machine learning model training fly fast?
- Windows下MySQL的安装和删除
- Array reorder based on a field
- 2022 meisai D topic ideas sharing + translation
猜你喜欢

What is Flink? What can Flink do?

Full nanny tutorial of Market Research Competition (experience sharing)

刷入Magisk通用方法

GNSS receiver technology and application review

mysql FIND_ IN_ Set function

Embedded software development written examination and interview notes (latest update: February 17, 2022)
![[on]learning dynamic and hierarchical traffic spatiotemporal features with transformer](/img/58/d68112a3d019de66150e2f5102f436.png)
[on]learning dynamic and hierarchical traffic spatiotemporal features with transformer

Happy shopkeeper source code -- Introduction to happy shopkeeper system development mode

Jeecgboot startup popup configuration is still incorrect

揭秘GaussDB(for Redis):全面對比Codis
随机推荐
Yunfan mall -- Yunfan mall system development source code sharing
Arm V7 coprocessor
The whole page turns gray
Service charge and time setting code sharing involved in crmeb withdrawal process
Set the transparency of the picture to gradient from left to right
Go defer little knowledge
MySQL and excel tables importing database data (Excel for MySQL)
Matlab simulation of m-sequence
PHP numeric array sorting and associative array sorting
Draw the satellite sky map according to the azimuth and elevation of the satellite (QT Implementation)
Mind mapping video
GPS NMEA protocol, 0183 positioning data format dual mode positioning: gnxxx gps+bd full version
Fun pocket mall -- sharing the development source code of fun pocket app system
揭秘GaussDB(for Redis):全面对比Codis
Figure explanation of fiborache sequence
Go novice exploration pause
Embedded software development written examination and interview notes (latest update: February 17, 2022)
Execution order of MySQL query statements join, on and where
The source code of the hottest online disk money making system in 2022 imitates Lanzou online disk / Chengtong online disk / sharing money making cloud disk system / online disk VIP Download System
Some fields are ignored in tp6 query