轻松掌握CANOpen最难理解的对象字典

[导读]摘要:CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协议,其中对象字典是协议中最为核心的概念,透彻掌握其相关内容,运用CANOpen将会如鱼得水,游刃有余。

摘要:CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协议,其中对象字典是协议中最为核心的概念,透彻掌握其相关内容,运用CANOpen将会如鱼得水,游刃有余。

CANopen对象字典(OD: Object Dictionary)是CANopen协议最为核心的概念。所谓的对象字典就是一个有序的对象组,描述了对应CANopen节点的所有参数,包括通讯数据的存放位置也列入其索引,这个表变成可以传递形式就叫做EDS文件(电子数据文档Electronic Data Sheet)。对象字典,就像体检表,具备这个人每个功能的参数,便于用人单位(主站)进行合理分配工作。如图 1所示。
在这里插入图片描述
图 1 对象字典与体检表

每个对象采用一个16位的索引值来寻址,这个索引值通常被称为索引,其范围在0x0000到0xFFFF之间。为了避免数据大量时无索引可分配,所以在某些索引下也定义了一个8 位的索引值,这个索引值通常被称为子索引,其范围是0x00到0xFF之间。

每个索引内具体的参数,最大用32位的变量来表示,即Unsigned32,四个字节。

每个CANopen设备都有一个对象字典,使用电子数据文档(EDS文件)来记录这些参数,而不需要把这些参数记录在纸上。对于CANopen网络中的主节点来说,不需要对CANopen从节点的每个对象字典项都访问。

CANopen对象字典中的项由一系列子协议来描述。子协议为对象字典中的每个对象都描述了它的功能、名字、索引、子索引、数据类型,以及这个对象是否必需、读写属性等等,这样可保证不同厂商的同类型设备兼容。

CANopen协议的核心描述子协议是DS301,其包括了CANopen协议应用层及通信结构描述,其它的协议子协议都是对DS301 协议描述文本的补充与扩展。在不同的应用行业都会起草一份CANopen设备子协议,子协议编号一般是DS4xx 。

对象字典概述
如表 1所示,为对象字典索引区域定义,其中标绿色底纹的通讯对象子协议区和制造商特定子协议区是用户需要关注的区域。

表 1 对象字典概述

Index range索引范围Description描述
0000hReserved保留
0001h to 025FhData types数据类型
0260h to 0FFFhReserved保留
1000h to 1FFFhCommunication profile area通讯对象子协议区
2000h to 5FFFhManufacturer-specific profile area制造商特定子协议区
6000h to 9FFFhStandardized profile area标准化设备子协议区
A000h to AFFFhNetwork variables网络变量(符合IEC61131-3)
B000h to BFFFhSystem variables用于路由网关的系统变量
C000h to FFFFhReserved保留

通讯对象子协议区(Communication profile area)

通讯对象子协议区(Communication profile area)定义了所有和通信有关的对象参数,如表 2所示,标绿色底纹的索引范围1000h to 1029h为通用通讯对象,所有CANopen节点都必须具备这些索引,否则将无法加入CANopen网络。其他索引根据实际情况进行分配与定义。

表 2 通讯对象子协议区

Index range索引范围Description描述
1000h to 1029hGeneral communication objects通用通讯对象
1200h to 12FFhSDO parameter objects SDO参数对象
1300h to 13FFhCANopen safety objects 安全对象
1400h to 1BFFhPDO parameter objects PDO参数对象
1F00h to 1F11hSDO manager objects SDO管理对象
1F20h to 1F27hConfiguration manager objects配置管理对象
1F50h to 1F54hProgram control object程序控制对象
1F80h to 1F89hNMT master objects网络管理主机对象

通用通讯对象(General communication objects)

由于通用通讯对象十分重要,NMT主站(CANopen主站)在启动时,通常都全部或者部分读取所有从站中通用通讯对象中的索引,所以所有的通用通讯对象都必须在CANopen从站中实现,使用者也必须熟知这些索引地址与其含义。如表 3所示。

表 3 通用通讯对象

Index索引Object对象Name名字
1000hVAR变量Device type设备类型
1001hVAR变量Error register错误寄存器
1002hVAR变量Manufacturer status register制造商状态寄存器
1003hARRAY数组Pre-defined error field预定义错误场
1005hVAR变量COB-ID Sync message同步报文COB标识符
1006hVAR变量Communication cycle period同步通信循环周期(单位us)
1007hVAR变量Synchronous windows length同步窗口长度(单位us)
1008hVAR变量Manufacturer device name制造商设备名称
1009hVAR变量Manufacturer hardware version制造商硬件版本
100AhVAR变量Manufacturer software version制造商软件版本
100ChVAR变量Guard time守护时间(单位ms)
100DhVAR变量Life time factor寿命因子(单位ms)
1010hVAR变量Store parameters保存参数
1011hVAR变量Restore default parameters恢复默认参数
1012hVAR变量COB-ID time stamp时间报文COB标识符(发送网络时间)
1013hVAR变量High resolution time stamp高分辨率时间标识
1014hVAR变量COB-ID emergency紧急报文COB标识符
1015hVAR变量Inhibit time emergency紧急报文禁止时间(单位100us)
1016hARRAY数组Consumer heartbeat time消费者心跳时间间隔(单位ms)
1017hVAR变量Producer heartbeat time生产者心跳时间间隔(单位ms)
1018hRECORD记录Identity object厂商ID标识对象
1019hVAR变量Sync.counter overflow value同步计数溢出值
1020hARRAY数组Verify configuration验证配置
1021hVAR变量Store EDS存储EDS
1022hVAR变量Storage format存储格式
1023hRECORD记录OS command操作系统命令
1024hVAR变量OS command mode操作系统命令模式
1025hRECORD记录OS debugger interface操作系统调试接口
1026hARRAY数组OS prompt操作系统提示
1027hARRAY数组Module list模块列表
1028hARRAY数组Emergency consumer紧急报文消费者
1029hARRAY数组Error behavior错误行为

制造商特定子协议(Manufacturer-specific Profile)

对象字典索引2000h to 5FFFh为制造商特定子协议,通常是存放所应用子协议的应用数据。而上文所描述的通讯对象子协议区(Communication profile area)是存放这些应用数据的通信参数。比如广州致远电子的XGate-COP10从站模块规定了:

lRPDO的通讯参数存放在1400h to 15FFh 映射参数存放在1600h to 17FFh 数据存放为2000h 之后厂商自定义区;
lTPDO的通讯参数存放在1800h to 19FFh 映射参数存放在1A00h to 1BFFh 数据存放为2000h 之后厂商自定义区。

对于在设备子协议中未定义的特殊功能,制造商也可以在此区域根据需求定义对象字典对象。因此这个区域对于不同的厂商来说,相同的对象字典项其定义不一定相同。

标准化设备子协议(Standardized profile area)

标准化设备子协议,为各种行业不同类型的标准设备定义对象字典中的对象。目前已有十几种为不同类型的设备定义的子协议,例如 DS401、DS402、DS406等,其索引值范围为0x6000~0x9FFF。同样,这个区域对于不同的标准化设备子协议来说,相同的对象字典项其定义不一定相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值