前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >关于CANopen通信协议,这些基础点你知道吗?

关于CANopen通信协议,这些基础点你知道吗?

作者头像
Hello工控
发布2025-02-25 10:12:33
发布2025-02-25 10:12:33
1020
举报
文章被收录于专栏:Hello工控
背景介绍

CANopen 于 1993 年在博世公司领导下,由来自不同欧洲国家的大学和公司组成的研究团队在欧洲研究项目中开发。1994 年,开发完成的 CANopen 规范被移交给国际用户和制造商组织“CAN in Automation (CiA)”。从那时起,这个非营利协会一直负责维护这些文档,并开发和增强通信系统。如今,CANopen 规范包括超过 20,000 页的规范,涵盖不同行业的设备和应用配置文件。

除了嵌入式机器控制外,CANopen 最初被用于医疗设备,如 X 射线设备、计算机断层扫描系统等。在 90 年代末,CANopen 开始应用于非公路车辆,随后在电梯和铁路车辆行业也得到了应用。在深度嵌入式控制系统中也有应用,例如控制滑动或旋转门的典型应用。在模块化 I/O 设备中,CANopen 也被用作骨干总线系统。

CANopen 的应用场景几乎是无限的。只要有超过两个基于微控制器的单元需要通信,CANopen 就是一个候选方案。CAN 的底层鲁棒性和可靠性,结合 CANopen 应用层的灵活性以及由 CANopen 配置文件提供的互操作性,使得 CANopen 成为最成功的嵌入式控制网络之一。

CANopen 成功的原因之一是其基础服务和协议的相对稳定性。从 3.0 版本到 4.X 版本,只进行了一次重大改进——不考虑 1994 年到 1995 年原型阶段的前两个版本。这降低了 CANopen 设备供应商和系统设计者的投资成本。

CANopen 提供了服务和协议规范,以及设备和应用配置文件规范。符合这些规范的设备能够与其他 CANopen 设备互操作;实现相同功能甚至可以实现产品的互换性。

OSI参考模型

CANopen 是一种独立于设备和制造商的协议,用于 CAN 总线上的通信,并涵盖了 OSI 参考模型的应用层(第 7 层)。除了 Profibus 之外,CANopen 在欧洲的自动化技术和许多嵌入式控制领域已经得到了广泛应用。

CANopen 由“CAN in Automation (CiA)”在 EN 50325-4 标准中进行了标准化,定义了以下关键点:

  • 通过通信对象(COB)在 CAN 总线节点之间交换命令和数据,创建统一的基础。
  • 实现实时交换过程数据、传输大量数据或发送报警帧的机制。
  • 定义通过配置文件访问设备某些参数的标准化接口。

下图展示了 CANopen 在 OSI 参考模型中的分类:

每一层对应的文件标准参考下图:

CANopen设备结构

CANopen 标准描述了基于 CAN 的网络中数据的交换。该标准定义了基础通信机制(通信配置文件)和通信设备的功能(设备配置文件)。这意味着,通过总线传输的过程数据的解释也在 CANopen 中得到了定义。

下图描述了CANopen设备的基本通信结构:

在上图结构中,CANopen 基于层次化结构运行,使用多种通信对象进行数据交换。在一个 CANopen 网络中,设备通过以下方式通信:

  • 过程数据对象(PDOs):用于实时数据交换
  • 服务数据对象(SDOs):用于设备配置和参数更新
  • 网络管理(NMT)协议:用于控制和监控网络状态
  • 同步(SYNC)和紧急消息(EMCY):用于确保时间关键型过程的执行

当然,这些通信数据交互在实际运行过程中,CANopen设备可以处于不同的状态。根据所处的状态,仅允许使用某些特定的功能或通信对象。CANopen的网络管理状态机(NMT状态机)提供了可能的操作状态的概览,并展示了它们之间的关联。

以下是CANopen设备的主要状态及其支持的通信服务:

  1. 初始化状态(Initialization):设备上电后进入此状态,此时设备准备进入CAN总线通信。
  2. 预操作状态(Pre-operational):设备初始化完成后自动进入此状态,此时可以使用SDO(服务数据对象)进行设备配置。
  3. 操作状态(Operational):设备进入此状态后,PDO(过程数据对象)可以正常通信,设备处于正常工作模式。
  4. 停止状态(Stopped):在此状态下,设备停止通信,但配置的连接监控仍然有效。

状态之间的转换通常由NMT(网络管理)命令触发,这些命令通过特定的CAN ID(如0x000)发送。

下表是状态和可以使用的通信对象关系:

对象字典Object Dictionary

CANopen 应用层的核心是对象字典(Object Dictionary:简称OD),这是所有 CANopen 设备的关键组成部分:

  • 定义:OD 是一个结构化的表格,用于存储过程数据和配置设置,有助于定义 CANopen 节点的操作方式。
  • 结构:它具有 16 位索引和 8 位子索引,允许有大量的唯一条目(每个索引最多可达 65,536 个索引和 256 个子条目)。
  • 标准参数:OD 中的特定索引保留用于标准参数,如设备名称,使在网络中识别设备变得更容易。
  • 强制和可选条目:某些索引是所有 CANopen 设备所必需的(如设备类型),而其他则是可选的(如软件版本)。
  • 使用对象字典:设备使用 OD 来执行功能(如启动数据采集),主设备使用它来读取数据或检查设备设置。
  • 访问对象字典:通过服务数据对象(SDO)和过程数据对象(PDO)访问 OD,这是读取和写入字典的方法。
  • 数据类型:OD 包含基本数据类型(如整数和布尔值),也可以处理更复杂的类型,如字符串或自定义的 CANopen 特定类型。

OD 在管理 CANopen 设备中至关重要,确保网络操作有组织、标准化和高效。

OD对象字典的结构比较好,每个参数都可以通过一个16位索引和一个8位子索引来寻址。这个24位地址被一些通信服务用作多路复用器,以克服CAN数据链路层仅提供的2048个标识符的限制。这实际上是对所有CANopen协议默认使用的11位CANID的有效延长。

下图是16位索引的参数说明:

这些参数中的每一个都可以通过8位子索引寻址多达256个子参数。

CANopen对象字典支持多达八个逻辑设备,因此你可以在单个CANopen设备中实现多个设备配置文件。所以一个具有Canopen的控制器设备可能具有八个电机实例,或者有可能还是具备额外的输入/输出功能的运动控制器。

参考链接:

  1. https://cache.industry.siemens.com/dl/files/771/109479771/att_993267/v1/109479771_CANopen_Tutorial_V20_en.pdf
  2. https://regal.se/insights/canopen-an-introduction-overview/
  3. https://media.hms-networks.com/image/upload/v1701953901/Documents/Whitepapers/Ixxat_CANopen-Protocol-Whitepaper_EN.pdf?_gl=1*1ogznal*_gcl_au*NTI1NjkzOTEuMTc0MDEwNDcxMQ..
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hello工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档