《CAN总线的浅析CANopen协议.docx》由会员分享,可在线阅读,更多相关《CAN总线的浅析CANopen协议.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、CAN总线的浅析CANopen协议摘要:本文分析了CAN总线的一些特点和在国内的的应用状况,提出了引入国际上通用的CAN总线高层应用协议,以进步国内CAN系统应用程度的建议,并扼要介绍了一种CAN的高层协议CANopen协议。文章最后局部介绍了国际上一些较先进的CAN产品和开发方法。关键词:CAN-bus协议;CANopen协议;嵌入式软件中间件在设计嵌入式系统,尤其是分布式嵌入式系统时,解决好系统各单元间可靠、有效的通信是系统设计成败的关键,对实时性和平安可靠性要求高的网络而言就更是如此。解决这一问题有多种方案,如RS232/485串行总线、CAN、ProfitBus、FF、WorldFIP
2、、LonWorks等各类型的现场总线,还有嵌入式以太网等。其中,尽管RS485串行总线协议的性能不高,但由于其在硬件本钱和开发简便性上的宏大优势,目前仍然是国内广泛的总线应用。随着嵌入式系统应用的开展,RS485性能上的缺乏逐渐显露出来,已经不能知足设计一个高性能、高实时性系统的要求。尽管还需要理论的证明,但笔者经太多年度的观察和理论,感觉到CAN总线是其中最有祈望成功的。选择CAN总线实现通信的原因选择CAN总线作为最正确候选者,主要是基于以下几方面原因:CAN串行总线具有高性能CAN的传输间隔可以到达10公里;通信速率最高可达1Mbps;具有完善的错误检测机制;采用“多重访问冲突仲裁机制的
3、帧传输方式,可保证不丧失信息;每一帧中最多可以传输8个字节数据,可提供很高的实时性等等。性能上的优势保证了CAN可以应用在很多的领域,在汽车工业、船舶运输、机械控制、工厂自动化、楼宇自动化等都可以看到CAN的应用。CAN在硬件本钱上很具优势除了性能外,和其它现场总线相比,CAN总线在硬件本钱上也有很大优势。从硬件芯片上来讲,智能节点要收发信息需要一个CAN控制器和一个CAN收发器。经过20多年度的开展,CAN已经获得了国际上各大半导体制造商的大力支持,据CAN最主要的推广组织CIA自动化CAN统计,目前已经有20余种CAN控制器和收发器可供选择,片内集成CAN控制器的单片机更多达100余种。C
4、AN在开发本钱上的优势也很明显.目前,从广泛应用的8位/16位单片机,到DSP和32位的PowerPC、ARM等嵌入式处理器,均在芯片内部含有CAN总线硬件接口单元。因此,从硬件角度看,CAN具备其它现场总线无法比较的高集成化优势和广泛的市场支持根底。CAN的开发平台也比拟简单,用户假如选择普通单片机加上CAN控制器进展开发,那么CAN的开发平台和普通单片机的开发平台完全一样;假如选择带有片内CAN控制器的单片机进展开发,那么只要换用支持该单片机的仿真器就可以了,其他开发设备完全一样。开发CAN也需要相应的驱动程序。用户可以自行根据选择的CAN控制器开发驱动程序。ALIGN=CENTER图1C
5、ANopen协议通信模型/ALIGN通过采用高层协议将CAN的应用推向深化和其他的现场总线相比,CAN只定义了物理层和数据链路层的标准遵循OSI标准,这种设计和CAN标准定义时的历史条件有关,可以以使CAN可以更广泛地适应不同的应用条件,但必然给用户应用带来一些不便。用户在应用CAN协议时,必须自行定义高层协议。怎样将CAN协议的应用推向更深的层次,同时知足产品的兼容和互操作性?国际上通行的方法是开展基于CAN的高层应用协议,只用在应用层上,不同公司的产品才可能实现互操作,好的应用层协议更可以为用户带来系统性能的飞跃。在CAN总线协议飞速开展的20年度中,很多领域都制定了CAN在该领域应用时所
6、采用的高层协议标准。其中,比拟著名的有美国汽车工程师协会SAE制定的车内通信标准J1939等。这些协议和标准对CAN的推广起了很大的作用,但总体来讲,协议的模块化特性都不太好,一般只能应用于特定的领域。为了可以把CAN推广到更多的领域,欧洲一些公司推出了CAL应用层CAN协议,尽管CAL在理论上正确,并在工业上可以投入应用,但每个用户都必须设计一个新的子协议,因为CAL是一个真正的应用层协议。CAL可以被看作一个应用CAN方案的必要理论步骤,但在这一领域它不会被推广。从1993年度起,由Bosch公司指导的一个欧洲机构研究出一个协议原型,由此开展成为CANopen标准。CANopen是一个基于
7、CAL的子协议,采用面向对象的思想设计,具有很好的模块化特性和很高的适应性,通过扩展可以适用于大量的应用领域。在CANopen标准根本完成之后,Bosch将其移交给CIA组织,由其进展维护与开展。在1995年度,CIA发表了完好版的CANopen通信子协议;仅仅用了5年度的时间,它已成为全欧洲最重要的嵌入式网络标准。CANopen不仅定义了应用层和通信子协议,而且为可编程系统、不同器件、接口、应用子协议定义了大量的行规,遵循这些行规开发出的CANopen设备将可以实现不同公司产品间的互操作。另外,CANopen协议是免答应证的,任何组织和个人都可以开发支持CANopen协议的设备而不用支付版税
8、,这也是CANopen得到迅猛开展的重要原因之一。CANopen目前已在汽车工业控制系统,公共交通运输系统,医疗设备,海运电子设备和建筑自动化系统中获得了广泛的应用,是将CAN应用推向深化的理想选择。采用CANopen协议实现通信CANopen协议中包含了标准的应用层标准和通信标准,其通信模型如图1所示。在CANopen的应用层,设备间通过互相交换通信对象进展通信。良好的分层和面向对象的设计思想将带给用户一个明晰的通信模型。CANopen设备模型一个CANopen设备模块可以被分为3局部,如图2所示。通信接口和协议软件提供在总线上收发通信对象的效劳。不同CANopen设备间的通信都是通过交换通
9、信对象完成的。这一局部直接面向CAN控制器进展操作。对象字典描绘了设备使用的所有的数据类型,通信对象和应用对象。是一个CANopen设备的核心局部。对象字典位于通信程序和应用程序之间,向应用程序提供接口,应用程序对对象字典进展操作就可以实现CANopen通信。理解对象字典的概念是理解CANopen模型的关键。应用程序由用户编写,包括功能局部和通信局部。通信局部通过对对象字典进展操作实现CANopen通信,而功能局部由用户根据应用要务实现。CANopen网络的通信和管理都是通过不同的通信对象来完成的,为了可以实现通信,网络管理,紧急情况处理等功能,CANopen标准定义了四类标准的通信对象:进程
10、数据对象PDO第一类通信对象为进程数据对象。PDO被映射到单一的CAN帧中,使用所有的8个字节的数据域来传输应用对象。每个PDO有一个独立的标识符并且可能只被一个节点发送,但它可以被多于一个节点接收,这种形式被称之为消费者/消费者通信形式。PDO可以通太多种形式传送,内部事件,外部时钟,远程帧恳求和从特定节点接收到同步报文都可以启动PDO发送。效劳数据对象SDO第二类通信对象为效劳数据对象,该对象可以传输大于8个字节的配置信息。也就是讲,SDO传送协议允许传送任意长度的对象。接收者将确认收到的每个段信息,发送和接收者间将建立点对点的通信,称之为客户机/效劳器形式。将来,CANopen将允许快速
11、传输SDO,不必对传送的每个段都进展确认,只要在整个对象传送完毕后进展确认即可。网络管理对象NMT第三类通信对象是网络管理对象,包括节点戒备对象和NMT对象。节点戒备对象是由NMT主节点远程恳求发送的带有1字节数据的CAN帧,一个字节的数据中包含1个触发位和7个用于表示节点状态的数据位。NMT主节点将周期性地发送节点戒备对象。发送周期戒备时间的长度在对象字典中规定并且可以通过SDO进展配置。另外,系统还定义了生命戒备时间,NMT主节点要在生命戒备时间过后向NMT从节点发送远程恳求。这种机制保证了即使NMT主节点不在了,系统中的其他节点可以以通过用户定义的方式进展回应。特殊功能对象CANopen
12、还为同步,紧急状态表示和时间标记传送定义了三个特定的对象。同步对象由同步制造者向网络进展周期性播送,该对象将提供根本的网络时钟。当设备发生严重的内部错误时,相关的一个紧急状态客户机将发送一个紧急状态对象。时间标记对象将为应用设备提供公共的时间帧参考。要理解CANopen标准,核心是要理解CANopen的设备模型和各类型的通信对象。掌握了这两者后,通过利用各类标准的设备描绘就可以开发出符合国际标准的CANopen设备了。最近一段时期,国内开发、应用CAN系统的人员正在逐渐增多,对CAN协议的研究也在不断加深。在很多领域,如研制电动汽车和混合动力汽车的863重大课题,已经将CAN作为标准的车内通信
13、协议确定下来。电力,航天等部门也在CAN方面获得了不小的应用成绩。在CAN应用蓬勃开展的时候,我们也应当清醒地看到,尽管CAN协议在欧美已经开展了20年度,应用层协议的开展也差不多有10年度时间,但目前国内大多数的应用系统仍然基于CAN2.0B标准开发,还不能在应用层的程度上进一步深化,这不能不讲是很遗憾的事情。另外,国内研究、开发CAN协议,尤其是CAN高层协议的组织和人员还太少,这对CAN在中国的推广是特别不利的,笔者诚切祈望更多的有识之士可以参加这一行列。参考文献1CiADraftStandard301Version4.02.2Prof.Dr.-Ing.K.Etschberger,CAN-basedHigherLayerProtocolsandProfiles.0