原创 Canopen协议读后感想

2009-11-26 12:53 7441 6 7 分类: 通信

    今天阅读了CiA组织发布的CANopen协议规范摘要《CANopen High-level protocol for CAN-bus》,对CANopen协议规范有了一个总体上的了解和把握。在此,有一些想法需要记录一下。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


       如果我是控制网络的协议制定者,那么我会考虑什么内容呢?通常我会考虑如下几个方面的内容:


1、  数据传输的实时性。控制网络通常是一个实时网络,需要数据传输的实时性,因此,在协议制定过程中,需要考虑传输的实时性。


2、  数据传输的可靠性。控制网络在数据交换的过程中,需要保证数据传输的可靠性,如果发生数据传输故障,需要保证网络的正常工作并且能够及时纠正传输故障。


3、  网络的智能性。控制网络中的局部节点存在故障时,网络中的主控节点通过一定的机制能够及时发现故障节点,并对其进行处理。另外,网络节点需要能够动态识别、配置。


4、  协议实现的简便性。网络协议不能过于复杂,很多控制网络节点资源有限,通常采用一些微控制器实现节点功能,因此,协议实现不能过于庞大和复杂。


5、  协议的通用性。控制网络中的节点类型多样化,设计的协议需要兼容多种控制节点类型,使协议本身具有通用性。


 


CANopen对上述几方面的考虑都进行了处理,达到了比较满意的效果:


1,  CANopen协议基于CAN-bus总线,CANbus总线在数据传输上采用了优先级仲裁的方式,优先级高的报文会吞没优先级低的报文,优先级低的报文会主动让出总线,这种方式可以保证高优先级报文的实时性,非常适合控制网络的应用。另一方面,为了保证数据传输的实时性,在考虑了控制网络数据交互特点的基础上,CANopen协议规范提出了PDOSDO的操作对象,PDO对象最大数据传输量为8个字节,网络负载很轻,能够使得节点之间的数据高效交互。当需要大批量数据交互时,可以采用SDO对象,网络的数据负载会加重。为了最求控制实时性,控制网络一次数据交互量不能太长,CANopen协议充分利用了该特征,达到了数据传输实时性的目的。


2,  CANopen协议提出了ODobject dictionary,对象字典)的概念。这个概念非常重要,其使得控制节点抽象化、标准化了。所有的控制节点都可以理解成“字典”,主控节点对控制节点的操作可以理解成字典查找的过程。对象字典由两部分构成,一部分是标准字典;另一部分为设备字典。标准字典提供标准功能号的检索,CANopen协议提供了15个标准功能号(Function Code),例如NMT Module Control功能、SYNC功能、PDO1功能等等。15个标准功能都存在标准的字典入口,通过字典可以了解到标准功能的参数。PDO对象用于进行控制数据的传输,因此,PDO对象需要进行重映射,在标准字典的PDO功能号处放置PDO的映射信息,该映射信息也就是设备字典的查询信息。设备字典通常在ODStandardised device profile area位置中存放。PDO的映射就可以实现特定节点的功能。在CANopen协议集中,为常用的控制节点指定了标准的子协议规范,即IO控制节点拥有一个子协议规范,ADC数据采集系统也会拥有一个子协议规范,这种协议设计方法使得CANopen变得很通用、扩展性极好,应用程序都可以实现互操作性。子协议规范本质上就是要实现设备字典的功能。作为一个控制节点开发商,如果实现的产品能够与其他厂商的产品完全兼容,那么不仅要实现CANopenCiA DS301协议,而且还需要实现符合开发模块需求的子协议规范,例如CiA DS401等,只有这样才是一个完备的CANopen设备。


3,  CANopen协议提供了网络管理的功能,每个设备都存在工作状态,主控节点可以通过心跳信息去监测控制节点的状态,从而确保控制网络能够及时避免故障事件发生。另外,控制节点在上电初始化时,可以通过NMT对象向主控节点发送boot-up信息,使得网络自动构建,具有较高的智能化程度。


4,  CANopen实现不是非常复杂,可以运行在普通的微控制器之上。CANopen协议通常架构在CAN-bus之上,其需要底层总线具备双向通信的能力,对于RS485之类的总线,似乎不太适合采用CANopen协议规范。


 


CANopen所采用的对象字典模型对控制节点功能进行了标准化,这种模型可以统一所有节点的操作方式,从而为一系列协议标准的制定奠定基础。需要考虑的是,是否存在更好的设备模型,从而使得控制网络的操作更加高效和简单呢?


 


总体来说,CANopen协议规范架构在CAN-bus之上,可以实现控制网络实时数据交互的目的;采用字典对象可以抽象所有控制节点功能,一类标准化的协议集可以使得整个控制网络标准化,并且可以不断进行扩展。CANopen协议规范达到了不同厂商设备之间互操作性、互交换性的目的。


 


 

文章评论1条评论)

登录后参与讨论

用户1567494 2015-6-16 15:04

好东西啊
相关推荐阅读
用户411565 2012-12-18 12:58
我的存储之道博客
大家好,最近一直在做存储方面的工作,所以我在51CTO上专门开辟了一个空间讨论存储相关的问题,喜欢存储的朋友可以可以访问我的存储博客: 存储之道 (http://alanwu.blog.51cto...
用户411565 2012-04-06 21:39
SAS Cable可以有多长?
SAS接口是高端硬盘的主流接口,是存储系统的理想选择。我们知道高速信号的传输距离和传输线相关的,那么SAS作为外部通信接口,其Cable线具体可以有多长呢? 我在网上找到上图所示的眼图测...
用户411565 2012-04-06 21:38
对TRIM SCSI命令的一些分析
前一段时间做了一些对SSD方面进行优化的工作,SSD最大的问题在于长时间使用之后,IO性能会急剧下降。其主要问题在于为了防止“写放大”问题的产生,SSD的firmware采用了类似于log方式的算...
用户411565 2012-04-06 21:35
惊叹!我们的跨洋网络
  每次地质自然灾害的时候,总会伴随着网络的问题,这是由于我们的越洋光纤网络出了故障,受到自然力的破坏而导致断裂。越洋光纤,听起来的确是件非常不可思议的事情,工程量非常的巨大,但正是如此伟大的...
用户411565 2012-04-06 21:33
科学仪器网络模型
科学仪器概述     科学仪器发展趋势 科学是从测量开始的,科学仪器是信息技术的源头,是信息产业的重要组成部分,是现代科学与工业的基石。科学仪器产业的发展关系到国家科学研究实力、生...
用户411565 2012-04-06 21:16
谈谈RAID产品与技术
说起RAID,学计算机的同学马上会说RAID技术简单啊,就是将数据条带化,然后计算一些冗余数据,一并写入磁盘。通过RAID技术一方面提高系统的IO性能;另一方面提高系统的可靠性。单纯从RAID的原...
我要评论
1
6
关闭 站长推荐上一条 /2 下一条