IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 初识CANOpen -> 正文阅读

[嵌入式]初识CANOpen

什么是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通信在下一篇文章中介绍。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:19:04  更:2022-06-25 18:19:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:31:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码