《三》canfestival系列教程之字典的分析
canfestival中记录数据和映射的关系的文档叫做字典.
字典是canopen中最重要的定义.
我生成了一个名为Master.h 和 Master.c的字典.

Master.c中:
调用头文件,


后面是一些全局变量的定义,
这些变量名字,可以在生成字典的时候按自己的喜好进行改变.
这些是全局变量.
主要是用于pdo发送和接收的数据.
后面都会带有索引,说明传输的数据最终都存入了字典里面.


后面是错误管理的函数,
可以不用.


下面就是字典的参数
重要数据

关于subindex是一个结构体.代表了子索引.
下面可以看一下pdo的那部分:
pdo有两个重要的配置,
一个是通讯参数,另一个是映射参数.
通讯参数决定了pdo发送的形式,
自动生成的字典很规则,这里依次是子索引00h,01h,02h,03h,04h,05h,06h.
各子索引,它们的意义在ds301上有规定.

这里pdo映射参数,映射到了速度上.
速度在字典中的索引是0x60ff0020. (遵循ds402协议)


再往下看:
上面是构建了多个子索引.
把子索引都存放入了一个数组里面.每个数组都是一个索引.
为了便于管理.
把上面的每个数组又整合到了一个数组里面.
后面的红色标号,就是里面配置的索引条目.


之后有一个遍历索引的函数:


接下来是索引个数的判断
会用在发送pdo,sdo等数据之前,进行检测.
防止字典中没有定义相应的pdo或sdo参数等.


之后重要的一步
进行字典的赋值

这个是把字典的内容,全部赋值给Master_Data结构体.
这个结构体是CO_Data类型的,也就是字典类型.
赋值过程应用了一个小技巧,
这里用的不是函数赋值,而是才用的define.
define中用到了##号,表示链接符,就是把##前后的两个东西了解到一起.然后你对照一下就会发现,把Master赋值给了Master_Data.

在主函数中会用Master_Data.