[应用相关]

CANOPEN协议解析

[复制链接]
5788|9
手机看帖
扫描二维码
随时随地手机跟帖
goodluck09876|  楼主 | 2018-9-18 12:48 | 显示全部楼层 |阅读模式
如果我是控制网络的协议制定者,那么我会考虑什么内容呢?通常我会考虑如下几个方面的内容:

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

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

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

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

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

评论
科技君 2018-11-30 19:15 回复TA
CANopen在本质上是CAL子集加上一系列尚未完成的配置文件。通过kvaser查找CANopen软件: www.kvaser.cn/about-can/higher-layer-protocols/canopen/ 
goodluck09876|  楼主 | 2018-9-18 12:48 | 显示全部楼层
CANopen对上述几方面的考虑都进行了处理,达到了比较满意的效果:

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

使用特权

评论回复
goodluck09876|  楼主 | 2018-9-18 12:49 | 显示全部楼层
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设备。

使用特权

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

使用特权

评论回复
goodluck09876|  楼主 | 2018-9-18 12:49 | 显示全部楼层
4,  CANopen实现不是非常复杂,可以运行在普通的微控制器之上。CANopen协议通常架构在CAN-bus之上,其需要底层总线具备双向通信的能力,对于RS485之类的总线,似乎不太适合采用CANopen协议规范。

使用特权

评论回复
goodluck09876|  楼主 | 2018-9-18 12:50 | 显示全部楼层
CANopen所采用的对象字典模型对控制节点功能进行了标准化,这种模型可以统一所有节点的操作方式,从而为一系列协议标准的制定奠定基础。需要考虑的是,是否存在更好的设备模型,从而使得控制网络的操作更加高效和简单呢?

使用特权

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

使用特权

评论回复
磨砂| | 2018-10-9 09:44 | 显示全部楼层
can和canopen是一个东东?

使用特权

评论回复
一路向北lm| | 2018-11-30 21:40 | 显示全部楼层
周立功的CANopen 轻松入门

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

220

主题

5843

帖子

20

粉丝