CanOpen 对象字典的理解

CanOpen 对象字典的理解

我们知道,Canopen是在Can2.0B的数据链路层之上的应用协议,是在20世纪90年代基于CAL发展而来的子协议,由于其稳定性、实时性、抗干扰性非常优秀,被广泛应用于运动控制、电机驱动、工程机械、船舶海运等行业。
其基本数据层次如下图:
在这里插入图片描述
Canopen是一种主从站协议,其数据传输的基础是对象字典。一个Canopen网络中有一个主站和若干个从站,没有给站点有一个ID、一个数据字典、4种工作状态,Canopen将Can2.0B做了进一步的封装和分类,以满足更高的总线通信需求。
对象字典由于翻译的原因,理解可能不准确,实际上应该描述为“Canopen的命令码及其功能对象对照表“。对象字典(Object Dictionary)简称OD,就是一个有序的对象组,每个对象采用16位的索引寻址,并定义8位子索引,用于对象内元素的访问。下面是一个典型的对象字典:
在这里插入图片描述
数对象字典由一系列的子协议来描述,按照协议的定义分为:

核心描述子协议:由CIA组织编写,描述Canopen协议应用层和通信结构,编号DS301。

其他子协议:由不同行业起草,对DS301的补充和扩展,编号DS4xx。
上表就是Canopen的几种典型的对象字典的典型属性。对象字典如果人工输入或者定义,工作量巨大,实际使用的时候,通过工具来操作,这就有了EDS文件,EDS文件是对对象字典的一个描述文件。
下面这张图在很多地方被引用:
在这里插入图片描述

在标准中,16位索引被分配成11个区域,实际在使用的时候最常用的是1000~FFFF区域,其他是数据类型的定义。

其中通信子协议区1000h~1ffffh:
在这里插入图片描述
这一部分是在数据通信过程中对通信对象、通信参数、通信模式、通信安全进行定义的区域。其中通用通信对象1000h~1029h已经在标准种定义好,遵照使用即可:
在这里插入图片描述
下面就是一个简单的做对象字典的例子:

假设设计一个加速度传感器设备,首先第一步是设计他的对象字典:
在这里插入图片描述
然后录入,如果条件允许可以通过标准的工具生成标准的EDS(电子数据表)文件:

[2100 sub0]

ParameterName = Acceleration

ObjectType=0x7

DataType=0x6

AccessType=rw

DefaultValue=0.0

LowLimit=0.0

HighLimit=100.0

[2100 sub1]

ParameterName = Angle

ObjectType=0x7

DataType=0x6

AccessType=rw

DefaultValue=0.0

LowLimit=0.0

HighLimit=90.0

对象字典的描述过程就是这里了。下一步就是通信配置及数据的通信,这涉及到PDO、SDO、TPDO、通信对象等。
————————————————
版权声明:本文为CSDN博主「qingting88」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qingting88/article/details/117064361

猜你喜欢

转载自blog.csdn.net/wojiuguowei/article/details/120366948