CAN总线开发一本全(5) -CANopen协议概述
本文精翻了CiA对CANopen协议的背景知识介绍,并根据个人的理解,调整了组织方式。
文章目录
引言
CAN总线外设驱动程序能够提供基本的操作硬件电路系统的服务,但在具体的应用系统中,更多是基于协议栈开发上层应用,而不是针对某个具体的芯片平台编写定制的应用程序。目前CANopen是工业自动化领域最常用的CAN协议栈标准之一,它包含了高层的交互协议和配置文件规范,用于构建高度灵活配置能力的标准化嵌入式网络。CANopen使开发人员从处理CAN硬件特定细节(如位计时和接收过滤)中解脱出来,它使用标准化的通信对象(Communication Objects, COB),处理关注时效的进程、配置过程以及管理网络。
CANopen的发展历史
1994年11月,CiA发布了CANopen规范的第一个版本,CiA 301。这是最成功的Esprit研究项目之一。CANopen成功的故事是独一无二的,因为它不是由一家大型供应商推动的,而是由许多中小型公司以及机器制造商共同推动的。
最初,CANopen规范被命名为“工业系统基于CAL的通信配置规范”。它是在Esprit(欧洲信息技术研究战略计划,European Strategic Program on Research in Information Technology)的支持下开发的。编号为7302项目的标题是ASPIC,是“使用接入总线概念的生产单元的自动化和控制系统(Automation and Control Systems for Production Units using an Installation Bus Concept)”的缩写,目标是开发控制体系结构和设备,可以将现有的制造单元以灵活和模块化的方式组合起来。由Mohammad Farsi博士(纽卡斯尔大学)和Stefan Reitmeier博士(博世)领导的研究团队决定使用由CiA开发的CAN应用层(CAL)协议作为基础。CAL是一种基于OSI(Open Systems Interconnection)的纯应用层的模型。然而,在某些方面,它仅仅是一种来自不同方向的设计人员提出的学术方法,它的主要贡献来自Tom Suters(飞利浦医疗系统),以及Konrad Etschberger教授博士和Wolfhard lawrence教授博士,他们都在德国大学从事应用科学工作。当然,其他CiA成员也提出了想法。
ASPIC项目的目标是开发一个易于实现的应用层,专门用于控制嵌入式设备。在Bosch的领导下,几家公司(Moog、ADL Automation和J.L. Automation)和研究所(纽卡斯尔大学和Reutlingen应用科学大学)定义了今天被称为CANopen的第一个版本,主要贡献者是Mohamad Farsi博士和Gerhard Gruhler教授。第一个版本已经定义了PDO(流程数据对象,Process Data Object)和SDO(服务数据对象,Service Data Object),引入了PDO的同步传输以及网络管理(NMT)和紧急消息。
在CANopen发展过程的早期,使用CAN远程帧发起数据请求的方式仍然是做常用的做法,CAN网络管理中的节点保护机制(Node Guarding)就是基于它实现的,不过节点保护机制在后来被心跳机制所取代。最初的CANopen网络也使用远程请求实现PDO。现在,CiA建议完全不要使用远程帧。
CANopen可以看作是中小供应商的应用层,它是一个不是由一个市场主导的、独立的工业通信系统。它也可以被看作是系统设计人员的解决方案,因为一些设备制造商已经选择了独立于供应商的这种方法完成设计,这些机器制造商包括了Heidelberger和Siemens Healthcare。1995年,CiA在其汉诺威博览会上展示了最早的CANopen演示方案,整合了Moog、Selectron和其他供应商的产品。
作为CiA 301发布的CANopen规范,是最成功的Esprit研究项目之一。该规范被移交给CiA进行进一步的开发和维护。一开始,一些公司在现实应用中实现了高层协议。后来,经过进行一些审查和更新,CANopen逐渐成为一个稳定的规范。3.0版本是第一个用于产品和系统的版本。这个版本从1996年到1999年有效,一些应用程序至今仍在使用这个版本。
| 时间 | 事件 |
|---|---|
| 1993年 | Bosch领导的Esprit项目开始启动对CANopen的早期开发。 |
| 1994年 | 发布基于CAL的通信规范,作为CANopen的最初版本 1.0 |
| 1995年 | 发布CiA 301,CANopen应用层和通信规范 2.0 |
| 1996年 | 发布CiA 301,CANopen应用层和通信规范 3.0 |
| 1999年 | 发布CiA 301,CANopen应用层和通信规范 4.0(EN 50325-4) |
| 2007年 | 发布CiA 301,CANopen应用层和通信规范 4.2(仅面向CiA成员) |
| 2011年 | 发布CiA 301,CANopen应用层和通信规范 4.2(面向公众) |
CANopen的底层
CANopen的数据链路层基于ISO 11898-1的CAN总线。CiA 301中指定了CANopen位计时规范,允许数据速率从10k bsp调整到1M bps。虽然所有指定的CAN-ID寻址模式都基于11位的CAN-ID,但CANopen也支持29位的CAN-ID。CANopen根据ISO 11898-2对物理层进行了抽象,但同时,CANopen也并不排除其他可能使用的物理层。
CANopen的数据链路层基于ISO 11898-1的CAN总线。尽管大多数寻址模式都基于基本帧格式,但CANopen也支持扩展帧格式。直到CANopen版本CiA 301 V4.2, CANopen只支持经典的CAN。从CiA 301 V5.0版本开始,CANopen是基于CAN FD的。
表x罗列了CANopen位时间对应总线最大长度和设备间电缆接线最大长度。总线网络中的所有CANopen设备必须至少支持定义的比特率之一 ,当然,CANopen设备可以支持更多的比特率。采样点的位置必须尽可能接近87.5%的位时间周期中。
| 比特率 | 总线长度 | 设备间电缆接线最大长度 | 设备间电缆接线累计最大长度 | <
|---|

CANopen是工业自动化领域广泛应用的CAN协议栈标准,它基于ISO11898-1的CAN总线,提供了高层交互协议和配置文件规范。CANopen协议栈包括SDO、PDO等,简化了设备集成和网络管理。CANopen设备通过对象字典进行配置,支持网络管理、错误控制等功能,实现灵活的嵌入式网络通信。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



