1.概述
CANopen协议是在20世纪90年代末,由总部位于德国纽伦堡的CiA组织—一CAN-in-Automation,(http://www.can-cia.org )在CAL (CAN Application Layer)的基础上发展而来。
CANopen是一种架构在控制局域网络(Controller Area Network, CAN)上的高层通信协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
CANopen优势
首先是布线简单,只需要CAN_H和CAN_L信号即可,更少出错,减少布线成本和后期维护成本。
采用多主工作方式,采用可靠的错误处理和检错机制。CAN报文通常只有8个字节,非常短的数据帧,这样也相对减少了干扰。
成本低廉,CAN外设基本在现在主流的嵌入式芯片都可以找到,如stm32
CANopen与CAN的关系
首先看一下CAN协议和OSI的参照模型
根据OSI 网络模型的角度来看,CAN总线只是定义了OSI网络模型的第一层(物理层〉和第二层(链路数据层)。现场总线通常只包括一个网段,在总共7层的OSI协议中,一般只需要第一层(物理层)、第二层(数据链路层)和第七层(应用层)。CANopen建立在CAN总线的基础上,利用CAN提供的物理层和数据链路层服务来实现高层通信。
换句话说,CANopen协议使用CAN总线作为传输媒介,但增加了应用层的定义和规范,以实现更复杂的功能和互操作性。
因此,CANopen可以被视为CAN总线的一个扩展或增强版本,提供了更高级别的通信服务。总结来说,CAN是一种物理层和数据链路层的通信协议,而CANopen是一种基于CAN总线的高层通信协议。CANopen利用CAN总线的基础功能,并增加了应用层的定义和规范,以实现更复杂的数据传输和控制任务
CANopen协议分层
根据上图所示,CANopen协议通常分为用户应用层、对象字典以及通信三个部分。其中核心是对象字典,描述了应用对象和 CANopen报文之间的关系。另外通讯接口也是本文的关键部分,定义了CANopen 协议通信规则以及与CAN控制器驱动之间对应关系。
关于对象字典,之后详解。