对象字典

CANopen 对象字典(OD: Object Dictionary)是CANopen 协议最为核心的概念。所谓的对象字典就是一个有序的对象组,描述了对应CANopen 节点的所有参数,包括通讯数据的存放位置也列入其索引,这个表变成可以传递的形式就叫做EDS 文件(电子数据文档Electronic Data Sheet)

每个对象采用一个16 位的索引值来寻址,这个索引值通常被称为索引,其范围在0x0000到0xFFFF 之间。为了避免数据量大时无索引可分配,所以在某些索引下也定义了一个8 位的子索引,其范围是0x00 到0xFF 之间
每个索引内具体的参数(值),最大用32 位的变量来表示,即Unsigned32,四个字节

对象字典索引范围

对象字典索引范围

其中标绿色底纹的通讯对象子协议区制造商特定子协议区是用户需要关注的区域

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

通信对象子协议区

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

通用通信对象(General communication objects)

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

由于通用通讯对象十分重要,NMT 主站(CANopen 主站)在启动时,通常都全部或者部分读取所有从站中通用通讯对象中的索引,所以所有的通用通讯对象都必须在CANopen 从站中实现

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

对象字典索引2000h to 5FFFh 为制造商特定子协议,通常是存放所应用子协议的应用数据。而通讯对象子协议区(Communication profile area)是存放这些应用数据的通信参数

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

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

过程数据对象PDO (Process data object)

PDO的CAN-ID定义

PDO 通信比较灵活,广义上只要符合PDO 范围内的所有CAN-ID 都可以作为节点自身的TPDO 或者RPDO 使用,也称为COB-ID (Communication Object Identifier),不受功能码和Node-ID 限制

在PDO 预定义中,人为规定了TPDO 和RPDO,规定了Node-ID 在PDO中的位置,也规定了PDO 的编号。
PDO的CAN-ID定义

PDO 分为TPDO(发送PDO)和(接收RPDO),发送和接收是以CANopen 节点自身为参考(如果CAN 主站或者其他从站就相反)。TPDO 和RPDO 分别有4 个数据对象,每种数据对象就是1 条CAN 报文封装
其实所有的PDO的COB-ID 与Node-ID 无必然规则上的联系