今天阅读了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协议规范提出了PDO和SDO的操作对象,PDO对象最大数据传输量为8个字节,网络负载很轻,能够使得节点之间的数据高效交互。当需要大批量数据交互时,可以采用SDO对象,网络的数据负载会加重。为了最求控制实时性,控制网络一次数据交互量不能太长,CANopen协议充分利用了该特征,达到了数据传输实时性的目的。
2, CANopen协议提出了OD(object dictionary,对象字典)的概念。这个概念非常重要,其使得控制节点抽象化、标准化了。所有的控制节点都可以理解成“字典”,主控节点对控制节点的操作可以理解成字典查找的过程。对象字典由两部分构成,一部分是标准字典;另一部分为设备字典。标准字典提供标准功能号的检索,CANopen协议提供了15个标准功能号(Function Code),例如NMT Module Control功能、SYNC功能、PDO1功能等等。15个标准功能都存在标准的字典入口,通过字典可以了解到标准功能的参数。PDO对象用于进行控制数据的传输,因此,PDO对象需要进行重映射,在标准字典的PDO功能号处放置PDO的映射信息,该映射信息也就是设备字典的查询信息。设备字典通常在OD的Standardised device profile area位置中存放。PDO的映射就可以实现特定节点的功能。在CANopen协议集中,为常用的控制节点指定了标准的子协议规范,即IO控制节点拥有一个子协议规范,ADC数据采集系统也会拥有一个子协议规范,这种协议设计方法使得CANopen变得很通用、扩展性极好,应用程序都可以实现互操作性。子协议规范本质上就是要实现设备字典的功能。作为一个控制节点开发商,如果实现的产品能够与其他厂商的产品完全兼容,那么不仅要实现CANopen的CiA DS301协议,而且还需要实现符合开发模块需求的子协议规范,例如CiA DS401等,只有这样才是一个完备的CANopen设备。
3, CANopen协议提供了网络管理的功能,每个设备都存在工作状态,主控节点可以通过心跳信息去监测控制节点的状态,从而确保控制网络能够及时避免故障事件发生。另外,控制节点在上电初始化时,可以通过NMT对象向主控节点发送boot-up信息,使得网络自动构建,具有较高的智能化程度。
4, CANopen实现不是非常复杂,可以运行在普通的微控制器之上。CANopen协议通常架构在CAN-bus之上,其需要底层总线具备双向通信的能力,对于RS485之类的总线,似乎不太适合采用CANopen协议规范。
CANopen所采用的对象字典模型对控制节点功能进行了标准化,这种模型可以统一所有节点的操作方式,从而为一系列协议标准的制定奠定基础。需要考虑的是,是否存在更好的设备模型,从而使得控制网络的操作更加高效和简单呢?
总体来说,CANopen协议规范架构在CAN-bus之上,可以实现控制网络实时数据交互的目的;采用字典对象可以抽象所有控制节点功能,一类标准化的协议集可以使得整个控制网络标准化,并且可以不断进行扩展。CANopen协议规范达到了不同厂商设备之间互操作性、互交换性的目的。
用户1567494 2015-6-16 15:04