CanOpen 对象字典的理解

CanOpen 对象字典的理解

       我们知道,Canopen是在Can2.0B的数据链路层之上的应用协议,是在20世纪90年代基于CAL发展而来的子协议,由于其稳定性、实时性、抗干扰性非常优秀,被广泛应用于运动控制、电机驱动、工程机械、船舶海运等行业。

       其基本数据层次如下图:

       Canopen是一种主从站协议,其数据传输的基础是对象字典。一个Canopen网络中有一个主站和若干个从站,没有给站点有一个ID、一个数据字典、4种工作状态,Canopen将Can2.0B做了进一步的封装和分类,以满足更高的总线通信需求。

       对象字典由于翻译的原因,理解可能不准确,实际上应该描述为“Canopen的命令码及其功能对象对照表“。对象字典(Object Dictionary)简称OD,就是一个有序的对象组,每个对象采用16位的索引寻址,并定义8位子索引,用于对象内元素的访问。下面是一个典型的对象字典:

索引

子索引

名称

类型

权限

1800h

00h

机械手角度

REAL

12.5

Ro

01h

机械手扭矩

REAL

124.3

Ro

02h

机械手臂号

U8

2

Ro

03h

运动状态

U8

1

Rw

04h

配置

U32

234

W

数对象字典由一系列的子协议来描述,按照协议的定义分为:

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

其他子协议:由不同行业起草,对DS301的补充和扩展,编号DS4xx。

       上表就是Canopen的几种典型的对象字典的典型属性。对象字典如果人工输入或者定义,工作量巨大,实际使用的时候,通过工具来操作,这就有了EDS文件,EDS文件是对对象字典的一个描述文件。

       下面这张图在很多地方被引用:

CanOpen 对象字典的理解_第1张图片

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

其中通信子协议区1000h~1ffffh:

CanOpen 对象字典的理解_第2张图片

这一部分是在数据通信过程中对通信对象、通信参数、通信模式、通信安全进行定义的区域。其中通用通信对象1000h~1029h已经在标准种定义好,遵照使用即可:

CanOpen 对象字典的理解_第3张图片下面就是一个简单的做对象字典的例子:

假设设计一个加速度传感器设备,首先第一步是设计他的对象字典:

索引

子索引

名称

类型

最大值

最小值

权限

2100h

00h

加速度

REAL

100.0

0.0

0.0

RW

01h

角度

REAL

90.0

0.0

0.0

RW

       然后录入,如果条件允许可以通过标准的工具生成标准的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、通信对象等。

你可能感兴趣的:(canopen,字典,即时通信)