CANopen主要基于
CAN应用协议,它是属于OSI七层模型中的应用层以上的协议。相当于它对物理层CAN再进行了一次协议封装,作为一个标准并开放出来,这样每个厂家可以用这个协议彼此通讯,提高互操作性和兼容性。
基本介绍
从OSI网络模型的角度来看同,现场总线网络一般只实现了第1层(
物理层)、第2层(
数据链路层)、第7层(
应用层)。因为
现场总线通常只包括一个网段,因此不需要第3层(
传输层)和第4层(
网络层),也不需要第5层(会话层)第6层(描述层)的作用。
CAN(Controller Area Network)
现场总线仅仅定义了第1层、第2层(见ISO11898标准);实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件(Software)或固件(Firmware)。
同时,CAN只定义
物理层和
数据链路层,没有规定
应用层,本身并不完整,需要一个高层协议来定义CAN
报文中的11/29位标识符、8
字节数据的使用。而且,基于CAN总线的工业自动化应用中,越来越需要一个开放的、标准化的高层协议:这个
协议支持各种CAN厂商设备的互用性、互换性,能够实现在CAN网络中提供标准的、统一的系统通讯模式,提供设备功能描述方式,执行
网络管理功能。
应用层(Application layer):为网络中每一个有效设备都能够提供一组有用的服务与协议。
通讯描述(Communication profile):提供配置设备、通讯数据的含义,定义
数据通讯方式。
设备描述(Device proflile):为设备(类)增加符合规范的行为。
下面的章节将介绍基于CAN的高层协议:CAL协议和基于CAL协议扩展的CANopen协议。CANopen协议是CAN-in-Automation(CiA)定义的标准之一,并且在发布后不久就获得了广泛的承认。尤其是在欧洲,CANopen协议被认为是在基于CAN的工业系统中占领导地位的标准。大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述”的协议中进行描述;“设备描述”定义了不同类型的标准设备及其相应的功能。依靠CANopen协议的支持,可以对不同厂商的设备通过
总线进行配置。
在
OSI模型中,CAN标准、CANopen协议之间的关系如下图所示:
CAL 协议
CAL(CAN Application Layer)协议是目前基于CAN的高层通讯协议中的一种,最早由Philips医疗设备部门制定。现在CAL由独立的CAN用户和制造商集团CiA(CAN in Automation)协会负责管理、发展和推广。
CMS (CAN-based Message Specification)
CMS提供了一个开放的、
面向对象的环境,用于实现用户的应用。CMS提供基于
变量、事件、域类型的对象,以设计和规定一个设备(
节点)的功能如何被访问(例如,如何上载下载超过8字节的一组数据(域),并且有终止传输的功能)。
CMS从MMS (Manufacturing Message Specification)继承而来。MMS是OSI为工业设备的远程控制和监控而制定的
应用层规范。
NMT (Network ManagemenT)
提供网络管理(如初始化、启动和停止节点,侦测失效节点)服务。这种服务是采用主从通讯模式(所以只有一个NMT主节点)来实现的。
DBT (DistriBuTor)
提供动态分配CAN ID(正式名称为COB-ID,Communication Object Identifier)服务。这种服务是采用主从通讯模式(所以只有一个DBT主节点)来实现的。
LMT (Layer ManagemenT)
LMT提供修改层参数的服务:一个节点(LMT Master)可以设置另外一个节点(LMT Slave)的某层参数(如改变一个节点的NMT地址,或改变CAN接口的位定时和
波特率)。
CMS为它的消息定义了8个优先级,每个优先级拥有220个COB-ID,范围从1到1760。剩余的标志(0,1761-2031)保留给NMT,DBT和LMT,见表2-1。
注意这是CAN2.0A标准,11位ID范围[0,2047],由于历史原因限制在[0,2031]。如果使用CAN2.0B标准,29位ID并不改变这个描述;表中的11位映射到29位COB-ID中的最高11位,以至于表中的COB-ID范围变得增大许多。
CANopen
CAL提供了所有的网络管理服务和
报文传送协议,但并没有定义CMS对象的内容或者正在通讯的对象的类型(它只定义了how,没有定义what)。而这正是CANopen切入点。
CANopen是在CAL基础上开发的,使用了CAL通讯和服务协议子集,提供了
分布式控制系统的一种实现方案。CANopen在保证
网络节点互用性的同时允许节点的功能随意扩展:或简单或复杂。
CANopen的核心概念是设备对象字典(OD:Object Dictionary),在其它
现场总线(Profibus,Interbus-S)系统中也使用这种设备描述形式。注意:对象字典不是CAL的一部分,而是在CANopen中实现的。
下面先介绍对象字典(OD:Object Dictionary),然后再介绍CANopen通讯机制。
3.1 对象字典OD
对象字典(OD:Object Dictionary)是一个有序的对象组;……
由于篇幅关系,更多详细内容在这里无法展示,不过有兴趣的技术人员可以在我的文库里面下载,文档名称是:“CANopen源代码协议介绍”或者其他与CANopen有关的资料一共有三四篇文章。下载地址和参考资料地址在以下
地址栏中有提供。
注:什么是PDO,什么是SDO?
PDO是过程数据的发送,实时,速度快。
SDO则是服务数据的发送接收,实时性要求不高,主要用于从站的配置。
比如报警信息一般是PDO。如果要对一组对象字典赋值或读取,一般是SDO。
SO-877-VP
可以实现简单的主站功能,但是要求先将SDO服务设置好,而不能动态创建。比如SDO在接收到某个ID-A之后,发送到另外一个ID-B中去,这个ID A和B的地址都需要预先设置和固定,而不能动态分配和创建连接。
如果需要通过拨码开关给用户修改CANopen主站或者从站的节点地址,用SO-877-VP是没有问题的。只是SDO不能动态创建和对应连接的问题。
SO-1063的特性描述:
1、含有NMT Master功能
NMT提供了控制节点网络行为的服务,定义请参考/1/ DS-301。一个网络中的所有节点适用于以下情况:NMT主站提供的服务可以控制NMT从站,并且NMT主站的应用程序可以执行NMT从站。通常NMT主站应用也是应用主站的一部分。
简洁说来,就是:控制NMT从站包括从站的操作。
2、SDO Manager
SDO Manager是一个可选择的功能,它负责处理动态建立SDO连接。如果一个SDO Manager在系统中是存在的,它必须在同一个节点中同时与NMT主站功能一起存在。
简洁说来,就是:动态建立SDO连接。
3、Configuration Manager
Configuration Manager是可选择的功能,它提供了boot-up时在系统中配置节点的机制。这个机制叫做Configuration Management CMT配置管理。这个Configuration Management必须在同一个节点中与NMT主站和SDO Manager的功能同时存在。
简洁说来,就是:在boot-up时配置节点。包括节点ID/波特率等。
4、Boot-Up Procedure
当CANopen Manager在Power-On后启动,它会根据DS-301来执行状态机。在将状态从Pre-Operational(预操作)切换到 Operational(操作)状态前,它需要启动所有已分配从站。
CANopen程序设计流程图如下图。