当前位置: 首页 > news >正文

CANopen基本理论

目录

一、CANopen简介

二、OD对象字典

2.1 OD对象字典简介

2.2 CANopen预定义连接集

三、PDO过程数据对象

四、SDO过程数据对象

五、特殊协议

5.1 同步协议

5.2 时间戳协议

5.3 紧急报文协议

六、NMT网络管理

6.1 NMT节点状态

6.2 NMT节点上线报文

6.3 NMT心跳报文

6.4 NMT模块控制报文


一、CANopen简介

本文对CANopen基本理论进行总结性的简单描述,面向初学者;

阅读本文须先掌握CAN基本知识,本文不再赘述。

CANopen基于CAN。在OSI的7层网络模型中,CAN仅规定了物理层和数据链路层,而CANopen作为其扩展,在此之上规定了应用层。


二、OD对象字典

2.1 OD对象字典简介

对象字典(Object Dictionary)是一个有序的对象组,举例具象化来说,每个对象就类似于一份身份信息表,记载着其具体信息:

每个对象采用一个16位索引值以寻址,类似于公民身份证。而每个公民都有其具体信息,如生日住址等,为了访问对象数据结构的单个元素,又采用了一个8位子索引值

下表为对象字典索引区域定义,其中通讯对象子协议区及其通用通讯对象为需要关注的区域:

Index RangeDescription

0000h

保留
0001h - 025Fh数据类型
0260h - 0FFFh保留
1000h - 1FFFh通讯对象子协议区
2000h - 5FFFh制造商特定子协议区
6000h - 9FFFh标准化设备子协议区
A000h - AFFFh网络变量
B000h - BFFFh路由网关系统变量
C000h - FFFFh保留

通讯对象子协议区:

通用通讯对象:

CANopen(NMT)主站在启动时,通常需要读取所有从站中通用通讯对象中的索引,所以所有的通用通讯对象都必须在CANopen从站中实现。

 

2.2 CANopen预定义连接集

对于PDO和SDO的报文ID分配,CANopen基于11位CAN-ID的标准帧格式,预定义了缺省标识符分配表:

CAN-ID / COB-ID

Function-ID

Node-ID

10

9

8

7

6

5

4

3

2

1

0

Node-ID:范围1~127(0不允许被使用)。

预定义的连接集定义表如下所示:

SDO服务器指CANopen从节点,SDO客户指CANopen主节点。

PDO分为TXPDO(发送PDO)和RXPDO(接收PDO),这里的发送和接收都以CANopen从节点为参考;而NMT错误控制包括节点守护报文,心跳报文和Boot-up协议。


三、PDO过程数据对象

PDO采用”生产者/消费者“模式,PDO数据传送以一对一/多的方式进行。每条PDO包含了TXPDO和RXPDO,其传送方式定义在PDO通讯参数对象字典索引:

所有的PDO传送数据须透过对象字典映像到对应的索引区上,如图(OD取值为举例需要,不具备实际意义):

PDO DLC为1-8 Bytes,其传输方式分为:

  • 同步传输(通过同步报文让所有节点同时互发);
  • 异步传输(通过特定事件触发)。

四、SDO过程数据对象

SDO特点为“服务确认”,对于每个“问”都会生成一个“答”。其DLC均为8 Bytes,通讯原则为:

  • SDO客户端发送(问)数据:COB-ID为580h+服务器Node-ID;
  • SDO服务器发送(答)数据:COB-ID为600h+服务器Node-ID。

快速SDO协议:

若读写数据不大于32位,可采用快速SDO,即一次问答完成数据发送:

若读写值超过32位,则须使用普通SDO协议进行分帧传输。


五、特殊协议

对于主站对从站的方便管理,CANopen中预定义了特殊报文,主要为:

  • 同步协议;
  • 时间戳协议;
  • 紧急报文协议。
5.1 同步协议

该报文对象主要实现整个网络的同步传输。

DLC

CAN-ID

0-1

80h(在OD索引1006h和1007h中分别约束同步帧循环周期和同步帧发送后从节点发送PDO的时效)

5.2 时间戳协议

NMT主机发送自身时钟,为各节点提供公共时间参考网络对时。

DLC

CAN-ID

6

100h(存于OD索引1012h中)

5.3 紧急报文协议

设备内部发生错误触发,以提示NMT主站,但不影响CANopen通讯。

DLC

CAN-ID

8

80h+Node-ID

(存于OD索引1014h中)

0 - 1

2

3 - 7

EEC(紧急错误代码)

ER(错误寄存器)

MEF(厂商自定义错误代码)


六、NMT网络管理

6.1 NMT节点状态

一主多从,每个CANopen从节点的CANopen协议栈中必须具备NMT网络管理的相应代码。

NMT网络管理涉及CANopen节点的六种状态:

  1. 初始化(CAN控制器初始化);
  2. 应用层复位(对象字典索引范围2000h - FFFFh复位);
  3. 通讯复位(对象字典索引范围1000h - 1FFFh复位);
  4. 预操作状态(该节点CANopen通讯就绪,可通过SDO参数配置和NMT网络管理操作,但不能PDO通信);
  5. 操作状态(可通过SDO参数配置和NMT网络管理操作,也可根据OD规定进行PDO通信);
  6. 停止状态(PDO通信停止,但能SDO参数配置和NMT网络管理操作)。

NMT网络中的任一CANopen节点的状态可自行切换,亦可接收NMT主机发送的NMT命令切换。

6.2 NMT节点上线报文

NMT从节点上线时必须发布NMT节点上线报文以通知NMT主节点,表示自身状态已从初始化进入预操作。

COB-ID

DLC

Byte0

0x700 + Node-ID

1

0

6.3 NMT心跳报文

NMT从节点可通过向主站发送NMT心跳报文以确认自身是否在线和自身目前的节点状态。

COB-ID

DLC

Byte0

Description

0x700 + Node-ID

1

04h

停止状态

05h

操作状态

7Fh

预操作状态

NMT节点守护报文:NMT主站通过轮询模式监视从站状态,主从一应一答, 与心跳报文模式二者不能并存。

由于远程帧在CAN发展中逐渐被淘汰,而节点守护由于需要更多的主站开销与增加网络负载,CiA协会已经不建议使用,被心跳报文所取代。

6.4 NMT模块控制报文

只有NMT主节点能发送NMT模块控制报文以切换NMT从节点状态。

COB-ID

DLC

Byte0

Byte1

Description

0x000

2

0x01

Node-ID

启动命令(进入操作状态)

0x02

停止命令(进入停止状态)

0x80

进入预操作状态

0x81

复位节点应用层

0x82

复位CANopen通讯

相关文章:

  • 2025年- G27-Lc101-542. 01 黑客帝国--java版
  • 2024年认证杯SPSSPRO杯数学建模B题(第二阶段)神经外科手术的定位与导航全过程文档及程序
  • 欧拉角与法向量之间的相互转换(附代码)
  • Cursor+Claude-3.5生成Android app
  • HuggingFace Transformers
  • 【算法笔记】图论基础(二):最短路、判环、二分图
  • Python-金融相关代码讲解
  • 详解Redis 核心特性与基础
  • 【C】高效的 GPIO 读取编码方式
  • 深入理解智能家居领域中RS485、Modbus、KNX 和 Zigbee协议概念
  • AI编程工具
  • 从切图仔到鸿蒙开发01-文本样式
  • 如何查看Unity打包生成的ab文件
  • 2024年MathorCup数学建模A题移动通信网络中PCI规划问题解题全过程文档加程序
  • c++ (8) string类
  • 灵茶山艾府基础算法精讲
  • 享元模式(Flyweight Pattern)
  • Federated learning client selection algorithm based on gradient similarity阅读
  • 《鸿蒙携手AI:解锁智慧出行底层逻辑》
  • 高速工业相机的核心特点及多领域应用
  • 看纪录片抵学分,贺桂梅:纪录片是对抗低质碎片信息的好媒介
  • 山东省委组织部办公室主任吴宪利已任德州市委常委、组织部部长
  • 北方旱情持续,水利部:大中型灌区春灌总体有保障
  • 央行4月开展12000亿元买断式逆回购操作
  • 山西太原小区爆炸事故已造成17人受伤
  • 住房和城乡建设部办公厅主任李晓龙已任部总工程师