前言
本篇主要介绍objdictedit这个字典生成工具的使用。
实现Canopen的协议栈有Canfestival和Canopennode,其中Canfestival的配套字典生成工具是objdictedit,而Canopennode的配套字典生成工具是object dictionary editor。本篇主要针对Canfestival。工具后边会提供。
操作步骤
新建
新建一个工程,各个配置项后边介绍到。
注:描述这里不能出现中文,不然即使后边能导出EDS文件,那也是空的,用不了!
名字这里建议如Slave_0x01、Master_0x0F…这样子的格式,简单好记,个人建议。
配置
上边新建之后点击ok后,会出现这个界面。
我们在厂家自定义的索引段0x2000-0x5FFF里,添加我们自己的索引,地图变量那里不用管,因为只有这么一个选项。点击添加后会出现下边的弹窗
指标这里填写的范围只要在0x2000-0x5FFF都可以,名字这里随便填,但是要英文的,这个代码里是转化为实际的变量来的。关键是类型这里怎么选!上图,让我们直观的感受下。
可见如果选择
VAR类型:子索引只能配置为1,数据类型可选
ARRAY:子索引个数可以配置,数据类型只有第一个可以配置,其他的只能配置为UMSIGNED8
REC:子索引个数可以配置,数据类型也可以随便配置
保存导出
文件 -> 保存---------------------------------------------->.od文件
文件 -> 导出生成EDS文件---------------------------->.eds文件
文件 -> 建立词典---------------------------------------->.c和.h文件
配置项说明
Profile
第一篇有简单介绍到Cia301是基础协议,之后各个行业又在此基础上扩展出了其他的协议,这里我们配置成“毫无”跟“DS404”进行比较:
可见,“DS404”就比“毫无”多了圈起来的几个索引,“毫无”的是没法添加的,添加按钮是灰色的。可能不止这点区别,这里只是说明一下profile的作用,具体哪个行业再具体去了解吧。
节点护卫
可见,配置了节点守护之后,比没有配置的多出了0x100C、0x100D索引
心跳
配置了心跳之后,多了0x1017这个索引,表示的是多长时间发出一条心跳报文。但是如果是检测对方的心跳报文,就需要我们收到配置0x1016这个索引了。
生成SYNC
勾选了“生成SYNC”这个选项之后,会自动添加0x1005、0x1006索引。功能如描述。
紧急支援
配置“紧急报文”之后,新增了0x1014索引。该索引用于配置紧急报文的Cob-id
另外说明一点,上边的配置选中,只是比较方便,objdictedit自己给我们添加了相应的索引。我们也可以不选中,然后自己添加对应的索引,如果我们知道添加哪些索引的话。