打印
[CAN-bus/DeviceNet]

现场总线CANopen学习总结笔记四---对象字典

[复制链接]
5941|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hongkechen|  楼主 | 2011-12-2 09:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hongkechen 于 2011-12-2 10:22 编辑

4.3 对象字典
对象字典是所有数据结构的集合,这些数据涉及设备的应用程序、通信以及状态机,对象字典利用对象来描述CANopen 设备的全部功能,并且它也是通信接口与应用程度之间的接口。
CANopen协议已经将对象字典进行分配,用户可以通过同一个索引和子索引获得所有设备中的通信对象,以及用于某种设备类别的对象。

4.3.1 对象字典的分配

在索引6000h~9FFFh中,可以找到用于标准化设备子协议的对象描述。一个复杂的现场设备包括多个CANopen设备,CANopen设备里又包含一个通信专用的设备状态机和多个逻辑设备,而每个逻辑设备又包含多个虚拟设备。
一个现场设备可以包含一个或多个CANopen设备,当然可以包含连接到其他总线系统和网络的接口,从而形成一个网关。

4.3.2 通信参数的描述
对象字典中的索引1000h~1FFFh描述设备在CANopen网络中通信及交换数据所必须具备的基本功能:
1.用于设备描述的对象
2.用于错误显示的对象
3.制造商状态寄存器
4.同步参数
5.设备监控
6.保存以及恢复默认参数
7.用于时间报文和紧急报文的参数
8.用于SDO服务器和SDO客户端的参数
9.PDO参数
10.保留参数

1.设备类型参数的结构(设备类型索引1000h)可用来描述所使用的设备子协议或应用规范。结构由设备子协议编号和附加信息组成。由以下对象也可用来描述设备属性:
  >索引 1008h :制造商设备名称
  >索引 1009h :制造商硬件版本
  >索引 100Ah:制造商软件版本,
此外,还有一个可以详细描述设备的对象-------相同对象,它属于一种结构,包含最多4个数据类型为Unsigned32 的条目。制造商ID为必选项。

2.用于错误显示的对象(索引1001h1003h
错误寄存器是一个8位寄存器,其中所包含的错误信息可以通过紧急报文来发送。
错误存储器是一个包含多达254个基本单元的数据场,这些基本单元提供近期引发紧急报文的错误列表。子索引00h表示错误存储器中错误的个数。

3.同步参数(索引1005h1006h1007h1019h
同步报文COB标识符参数(1005h)是一个32位对象。包含有CAN标识符、3个控制位:
31位预留位,第30位确定设备为发送还是接收同步报文,第29位用来区分1129位标识符。
通信循环周期(索引1006h)是针对同步报文发送方面而言,该参数设置同步周期。
同步窗口长度(1007h),在同步窗口时间范围内,PDO传输必须在同步报文发送之后才能进行。
同步计数器溢出参数(1019h)包含一个8位值,该值可以用来同步报文中的计数器。

5.设备监控(索引100Ch100Dh1016h1017h
有两个参数可以用于配置心跳功能。
索引1017h: 生产者心跳报文时间间隔,表示的是发送心跳报文的周期。网络中的所有设备会对心跳报文进行分析,确定设备故障。
索引1016h:消费者心跳时间间隔,它最多可以包含127个条目,条目记录了被监控设备节点ID以及时间。
用来监控设备,我们引入2个新的参数“保护时间”(索引100Ch)和“寿命因子”(索引100Dh)。

6.保存以及恢复默认参数。
设备启动或通过NMT主机复位后,设备对象字典中的参数就会进行初始化。之后可以利用SDO把字典中的默认参数设备成新的参数,通常这就代表了PDO参数的设置以及设备监控和同步机制的建立。
下面有两种配置设备参数的方法 :
第一种是由配置管理器进行分配,好处是可以集中保存所有网络信息,并且用一个结构相同的设备替换另一个设备后,不再需要进行专门的设备配置。
第二种是配置信息分布在网络中。如果在网络调试过程中只对设备进行一次配置,将配置信息保存在非易失性存储器,则无需中央配置管理器集中保存信息,又可以缩短网络启动时间。
“保存参数”对象(索引1010h)中包含四个选项:
    子索引 01h     保存整个对象字典的参数
    子索引 02h     保存通信参数
    子索引 03h     保存子协议参数
    子索引04h~7Fh 保存制造商相关的参数组
“恢复默认参数”(索引1010h)是用来恢复设备默认的配置参数,即出厂设置。
为了防止意外恢复默认参数,便定义了一个恢复默认参数命令。默认值只有在设备复位之后才生效。

7.用于时间报文和紧急报文的参数
要想通过时间报文发送网络时间,就必须给时间报文分配一个CAN标识符。该CAN标识符记录在COB标识符参数1012h中。
与时间报文相似,在对象字典1014h 同样也给紧急报文设定一个CAN标识符。但COB-ID紧急报文参数中的第30位是不可用的,固定为0
为了避免总线因持续发送高优先级的紧急报文而无法进行通信,可以在对象字典1015h(禁止时间紧急报文)中设定一个禁止发送紧急报文的时间。仅当禁止时间结束之后,才允许重新发送紧急报文。

8.用于SDO服务器和SDO客户端的参数
SDO服务器和SDO客户端的参数的对象类型均为复杂数据类型,子索引01h包含客户端发往服务器报文的COB标识符,子索引02h包含服务器发往客户端报文的COB标识符。
    注意用于SDO报文的COB标识符参数的结构

9.PDO参数
一个CAN open设备最多可以有512TPDO512TPDO,PDO参数用两个参数来配置。
(1)PDO通信参数 ,PDO通信参数的数据类型索引为0020h
(2)PDO映射参数 ,PDO映射参数的数据类型索引为0021h
用于PDO消息的COB标识符参数的结构中,子索引01h除了包含所使用的CAN标识符之外,还包含有效位,远程帧,和11/29位标识符。
02h 定义了PDO的传输类型,03h定义PDO 禁止时间。禁止时间为100μs,作用是禁止PDO连续发送从而占用大量的总线资源,只有当PDO发送完成之后间隔一个禁止时间才能发送下一个PDO
PDO映射参数最多有64个数据类型为Unsigned32 的子索引。这些32位值包含索引和子索引以及待传输过程数据的长度。
注意PDO映射参数的结构。
如果支持可变映射,用户可以改写子索引。这意味着可以利用SDO访问来改变映射。有如下规定:
  1》对于总是定义有效子索引条目数量的子索引00h 来说,当子索引 00h的值为0时,映射关系取消,这时其他的子索引才能更改,这也是子索引00h 的另一个特点,即使子索引00h的值改为0,其他子索引也是可以访问的。
  2》用户向子索引写入新的值,即新的映射关系,写之前必须先检查要写的子索引是否存在和需要检查新的过程数据是否允许映射到PDO中。
  3》用户把新的映射参数的数目写到子索引00h 中,在应答SDO传输之前,CANopen协议栈还要检查写入的数目是否与映射条目的数目一致。

10.保留参数

4.3.3对象字典的实现
一般来说用户希望能够快速地访问索引,所以需要通过一种查找算法来找到合适的条目。有一种CANopen 结构,可以访问大多数的对象字典。
CANopen软件通过固定的索引/子索引来访问对象列表中的条目,对象列表提供一个指向存储器中某个变量的指针,应用程序可直接通过变量名称来访问所需的条目。对象字典列表就构成了索引/子索引与对应变量名称之间的接口。


广州虹科科技有限公司提供CANopen接口和CANopen源代码,了解更多有关CANopen信息,请联系我们:
广州虹科电子 http://www.hkaco.com  索取更多详细资料
陈工 020-38743030;3874 3032;3874 4528;38744538
  cqy@hkaco.com  QQ:353987010

相关帖子

沙发
murex| | 2012-4-12 15:49 | 只看该作者
先顶再学习

使用特权

评论回复
板凳
HYH563| | 2012-12-5 10:36 | 只看该作者
顶一下

使用特权

评论回复
地板
mochou| | 2016-8-23 13:00 | 只看该作者
学习下,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

9

帖子

0

粉丝