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文件是对对象字典的一个描述文件。

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

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

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

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

下面就是一个简单的做对象字典的例子:

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

索引

子索引

名称

类型

最大值

最小值

权限

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 对象字典的理解相关推荐

  1. CANopen | 对象字典OD 03 - 启动CANopen节点的服务数据对象SDO

    文章目录 一.前言 二.实验的目的 三.对象字典OD 3.1.Slave1.od 3.2.Slave1.c 四.CAN盒子(收发器) 4.1.通过SDO方式修改CANopen从站的心跳时间 一.前言 ...

  2. CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)

    文章目录 一.前言 二.实验目的 三.对象字典 3.1.找到工程里的对象字典文件 3.2.创建映射变量 四.STM32代码 4.1.Slave1.c 4.2.main.c 五.CAN盒子(收发器) 5 ...

  3. CANopen | 对象字典OD 02 - 修改CANopen节点的心跳报文发送间隔

    文章目录 一.前言 二.实验的目的 三.对象字典OD 3.1.Slave.od 3.2.Slave1.c 四.CAN盒子(收发器) 五.细节补充 5.1.Slave1.od文件的作用 一.前言 通过修 ...

  4. Canopen对象字典学习

    对象字典 The object dictionary shall be structurally divided into three parts: • [MandatoryObjects] shal ...

  5. CANopen对象字典

    什么是对象字典(Object Dictionary) 想象CANopen的应用场景之一--电机控制 控制器通过CAN总线控制电机1和电机2.同时需要,电机1和电机2把实时的状态参数返回给控制器,两者之 ...

  6. CANopen | 对象字典OD 01 - canfestival对象字典编辑软件安装与使用

    对象字典编辑软件环境的搭建很简单.直接参考<硬石YS-H7Multi开发板开发手册>的第46.3章节-对象字典编辑器的环境搭建与第46.4章节-对象字典编辑器的使用,手册的下载地址我分享: ...

  7. CANOpen系列教程02_理解CAN总线协议

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!https://www.cnblogs.com/captainbed 正文: CANOpen ...

  8. 嵌入式CANopen协议从入门到落地产品(更新2021.9.8)

    一.前言 我写CANopen系列博文的初衷是分享如何使用STM32单片机开发一款CANopen产品,所谓实战为主,理论为辅.只看CANopen协议的理论是很枯燥,而且根本看不会.我认为掌握CANope ...

  9. CANopen协议基础知识

    CANopen协议基础知识 资料: DS301协议中文文档:https://winshton.gitbooks.io/canopen-ds301-cn/content/chapter5.html 30 ...

最新文章

  1. Hitcon 2016 Pwn赛题学习
  2. mysql 资深dba_MySQL数据库专家分享资深DBA经验
  3. 【服务器】一次对Close_Wait 状态故障的排查经历
  4. Cantor表(洛谷P1014题题解,Java语言描述)
  5. POJ 3670 Eating Together
  6. Linux下安装spf13-vim
  7. python中的命名空间指什么_python中命名空间
  8. 芜湖机器人餐厅地址_自助餐哪家强?得看谁让你扶墙... 芜湖8家自助餐厅超强攻略来了...
  9. UINavigationController与UITabbarController的样式
  10. atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制
  11. django-rest-framework二--权限(转载)
  12. mysql关联查询语句
  13. 虚拟机Ubuntu18简易配置三(安装搜狗输入法)
  14. 关于ztree的使用
  15. 网站安全扫描工具,举荐6个网站安全扫描工具
  16. php实现数字英文验证码,php 英文、数字验证码的完整代码
  17. 那些会阻碍程序员成长的细节
  18. 如何用PPT画出好看的科研图
  19. 为什么程序员喜欢这些键盘?
  20. ios代码大全】代码例子区全区搜索索引

热门文章

  1. 《动物精神》书中的精髓:人类的非理性面影响经济决策,这些有可能是金融危机的根源。
  2. Qt +opencv 通过级联分类器训练的模型进行识别(车辆识别+人脸识别)
  3. jqgrid按钮、主题皮肤和弹窗
  4. 福利应用更新,这几款都是老司机喜欢的
  5. 聚类算法(无监督学习)
  6. 苹果地图副总裁_苹果地图导致多名高管离职背后的真实原因
  7. MATLAB实现用有限元方法解决下列方程,求助大神,谢谢
  8. 记录一次安卓app ssl证书绕过
  9. java线程池工作原理和实现原理
  10. 相对论通俗演义(1-10) 第四章