广州周立功单片机发展有限公司、介绍.....................................................................................................................................................................12、CAL协议............................................................................................................................................................23、CANopen.............................................................................................................................................................33.1对象字典OD........................................................................................................................................33.2CANopen通讯.....................................................................................................................................43.3CANopen预定义连接集.....................................................................................................................63.4CANopen标识符分配.........................................................................................................................83.5CANopenboot-up过程........................................................................................................................83.6CANopen消息语法细节.....................................................................................................................94、总结...................................................................................................................................................................185、说明...................................................................................................................................................................191广州周立功单片机发展有限公司、介绍从OSI网络模型的角度来看同,现场总线网络一般只实现了第1层(物理层)、第2层(数据链路层)、第7层(应用层)。因为现场总线通常只包括一个网段,因此不需要第3层(传输层)和第4层(网络层),也不需要第5层(会话层)第6层(描述层)的作用。CAN(ControllerAreaNetwork)现场总线仅仅定义了第1层、第2层(见ISO11898标准);实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件(Software)或固件(Firmware)。同时,CAN只定义物理层和数据链路层,没有规定应用层,本身并不完整,需要一个高层协议来定义CAN报文中的11/29位标识符、8字节数据的使用。而且,基于CAN总线的工业自动化应用中,越来越需要一个开放的、标准化的高层协议:这个协议支持各种CAN厂商设备的互用性、互换性,能够实现在CAN网络中提供标准的、统一的系统通讯模式,提供设备功能描述方式,执行网络管理功能。应用层(Applicationlayer):为网络中每一个有效设备都能够提供一组有用的服务与协议。通讯描述(Communicationprofile):提供配置设备、通讯数据的含义,定义数据通讯方式。设备描述(Deviceproflile):为设备(类)增加符合规范的行为。下面的章节将介绍基于CAN的高层协议:CAL协议和基于CAL协议扩展的CANopen协议。CANopen协议是CAN-in-Automation(CiA)定义的标准之一,并且在发布后不久就获得了广泛的承认。尤其是在欧洲,CANopen协议被认为是在基于CAN的工业系统中占领导地位的标准。大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述”的协议中进行描述;“设备描述”定义了不同类型的标准设备及其相应的功能。依靠CANopen协议的支持,可以对不同厂商的设备通过总线进行配置。在OSI模型中,CAN标准、CANopen协议之间的关系如下图所示:CommunicationProfileCiADS-301CiADSP-401CiADSP-404CiADSP-xxxApplicationLayerDataLinkLayerChipCAN2.0APhysicalLayerISO11898Cable图1.1CAN、CANopen标准在OSI网络模型中的位置框图1广州周立功单片机发展有限公司、CAL协议CAL(CANApplicationLayer)协议是目前基于CAN的高层通讯协议中的一种,昀早由Philips医疗设备部门制定。现在CAL由独立的CAN用户和制造商集团CiA(CANinAutomation)协会负责管理、发展和推广。CAL提供了4种应用层服务功能:CMS(CAN-basedMessageSpecification)CMS提供了一个开放的、面向对象的环境,用于实现用户的应用。CMS提供基于变量、事件、域类型的对象,以设计和规定一个设备(节点)的功能如何被访问(例如,如何上载下载超过8字节的一组数据(域),并且有终止传输的功能)。CMS从MMS(ManufacturingMessageSpecification)继承而来。MMS是OSI为工业设备的远程控制和监控而制定的应用层规范。NMT(NetworkManagemenT)提供网络管理(如初始化、启动和停止节点,侦测失效节点)服务。这种服务是采用主从通讯模式(所以只有一个NMT主节点)来实现的。DBT(DistriBuTor)提供动态分配CANID(正式名称为COB-ID,CommunicationObjectIdentifier)服务。这种服务是采用主从通讯模式(所以只有一个DBT主节点)来实现的。LMT(LayerManagemenT)LMT提供修改层参数的服务:一个节点(LMTMaster)可以设置另外一个节点(LMTSlave)的某层参数(如改变一个节点的NMT地址,或改变CAN接口的位定时和波特率)。CMS为它的消息定义了8个优先级,每个优先级拥有220个COB-ID,范围从1到1760。剩余的标志(0,1761-2031)保留给NMT,DBT和LMT,见表2-1。表2-1映射到CAL服务和对象的COB-ID(11位CAN标识符)COB-ID服务或对象0NMT启动/停止服务1-220CMS对象优先级0221-440CMS对象优先级1441-660CMS对象优先级2661-880CMS对象优先级3881-1100CMS对象优先级41101-1320CMS对象优先级51321-1540CMS对象优先级61541-1760CMS对象优先级71761-2015NMT节点保护2016-2031NMT,LMT,DBT服务注意这是CAN2.0A标准,11位ID范围[0,2047],由于历史原因限制在[0,2031]。如果使用CAN2.0B标准,29位ID并不改变这个描述;表中的11位映射到29位COB-ID中的昀高11位,以至于表中的COB-ID范围变得增大许多。2广州周立功单片机发展有限公司、CANopenCAL提供了所有的网络管理服务和报文传送协议,但并没有定义CMS对象的内容或者正在通讯的对象的类型(它只定义了how,没有定义what)。而这正是CANopen切入点。CANopen是在CAL基础上开发的,使用了CAL通讯和服务协议子集,提供了分布式控制系统的一种实现方案。CANopen在保证网络节点互用性的同时允许节点的功能随意扩展:或简单或复杂。CANopen的核心概念是设备对象字典(OD:ObjectDictionary),在其它现场总线(Profibus,Interbus-S)系统中也使用这种设备描述形式。注意:对象字典不是CAL的一部分,而是在CANopen中实现的。下面先介绍对象字典(OD:ObjectDictionary),然后再介绍CANopen通讯机制。3.1对象字典OD对象字典(OD:ObjectDictionary)是一个有序的对象组;每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8位的子索引,对象字典的结构参照表3-1。不要被对象字典中索引值低于0x0FFF的‘datatypes’项所迷惑,它们仅仅是一些数据类型定义。一个节点的对象字典的有关范围在0x1000到0x9FFF之间。表3-1CANopen对象字典通用结构索引对象0000Notused0001-001F静态数据类型(标准数据类型,如Boolean,Integer16)0020-003F复杂数据类型(预定义由简单类型组合成的结构如PDOCommPar,SDOParameter)0040-005F制造商规定的复杂数据类型0060-007F设备子协议规定的静态数据类型0080-009F设备子协议规定的复杂数据类型00A0-0FFFReserved1000-1FFF通讯子协议区域(如设备类型,错误寄存器,支持的PDO数量)2000-5FFF制造商特定子协议区域6000-9FFF标准的设备子协议区域(例如“DSP-401I/O模块设备子协议”:ReadState8InputLines等)A000-FFFFReservedCANopen网络中每个节点都有一个对象字典。对象字典包含了描述这个设备和它的网络行为的所有参数。一个节点的对象字典是在电子数据文档(EDS:ElectronicDataSheet)中描述或者记录在纸上。不必要也不需要通过CAN-bus“审问”一个节点的对象字典中的所有参数。如果一个节点严格按照在纸上的对