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 标准中进行了标准化,定义了以下关键点:
下图展示了 CANopen 在 OSI 参考模型中的分类:
每一层对应的文件标准参考下图:
CANopen设备结构
CANopen 标准描述了基于 CAN 的网络中数据的交换。该标准定义了基础通信机制(通信配置文件)和通信设备的功能(设备配置文件)。这意味着,通过总线传输的过程数据的解释也在 CANopen 中得到了定义。
下图描述了CANopen设备的基本通信结构:
在上图结构中,CANopen 基于层次化结构运行,使用多种通信对象进行数据交换。在一个 CANopen 网络中,设备通过以下方式通信:
当然,这些通信数据交互在实际运行过程中,CANopen设备可以处于不同的状态。根据所处的状态,仅允许使用某些特定的功能或通信对象。CANopen的网络管理状态机(NMT状态机)提供了可能的操作状态的概览,并展示了它们之间的关联。
以下是CANopen设备的主要状态及其支持的通信服务:
状态之间的转换通常由NMT(网络管理)命令触发,这些命令通过特定的CAN ID(如0x000)发送。
下表是状态和可以使用的通信对象关系:
对象字典Object Dictionary
CANopen 应用层的核心是对象字典(Object Dictionary:简称OD),这是所有 CANopen 设备的关键组成部分:
OD 在管理 CANopen 设备中至关重要,确保网络操作有组织、标准化和高效。
OD对象字典的结构比较好,每个参数都可以通过一个16位索引和一个8位子索引来寻址。这个24位地址被一些通信服务用作多路复用器,以克服CAN数据链路层仅提供的2048个标识符的限制。这实际上是对所有CANopen协议默认使用的11位CANID的有效延长。
下图是16位索引的参数说明:
这些参数中的每一个都可以通过8位子索引寻址多达256个子参数。
CANopen对象字典支持多达八个逻辑设备,因此你可以在单个CANopen设备中实现多个设备配置文件。所以一个具有Canopen的控制器设备可能具有八个电机实例,或者有可能还是具备额外的输入/输出功能的运动控制器。
参考链接: