1.CoE(CANopen over EtherCAT)
CANopen 最初是为基于 CAN(Control Aera Network)总线的系统所制定的应用层协议。EtherCAT 协议在应用层支持 CANopen 协议,并作了相应的扩充,其主要功能有:
- 使用邮箱通信访问 CANopen 对象字典及其对象,实现网络初始化;
- 使用 CANopen 应急对象和可选的事件驱动 PDO 消息,实现网络管理;
- 使用对象字典映射过程数据,周期性传输指令数据和状态数据。
1.1 CoE 对象字典
CoE 协议完全遵从 CANopen 协议,其对象字典的定义也相同,如表 1.1 所列。表 1.2 列出了 CoE 通信数据对象。其中针对 EtherCAT 通信扩展了相关通信对象 0x1C00-0x1C4F,用于设置存储同步管理器的类型、通信参数和 PDO 数据分配。
| CoE 对象字典定义 | |
|---|---|
| 索引范围 | 含义 |
| 0x0000~0x0FFF | 数据类型描述 |
| 0x1000~0x1FFF | 通信对象,它包括:・设备类型、标识符、PDO 映射,与 CANopen 兼容・CANopen 专用数据对象,在 EtherCAT 中保留・EtherCAT 扩展数据对象 |
| 0x2000~0x5FFF | 制造商定义对象 |
| 0x6000~0x9FFF | 行规定义数据对象 |
| 0xA000~0xFFF | 保留 |
| CoE 通信数据对象 | |
|---|---|
| 索引号 | 含义 |
| 0x1000 | 设备类型,32 位整数位 0-15:所使用的设备行规位 16-31:基于所使用行规的附加信息 |
| 0x1001 | 错误寄存器,8 位位 0:常规错误 位 1:电流错误位 2:电压错误 位 3:温度错误位 4:通信错误 位 5:设备行规定义错误位 6:保留 位 7:制造商定义错误 |
| 0x1008 | 设备商设备名称,字符串 |
| 0x1009 | 制造商硬件版本 |
| 0x100A | 制造商软件版本 |
| 0x1018 | 设备标识符,结构体类型子索引 0:参数体数目子索引 1:制造商 ID(Vendor ID)子索引 2:产品码(Product Code)子索引 3:版本号(Revision Number)子索引 4:序列号(Serial Number) |
| 0x1600~0x17FF | RxPDO 映射,结构体类型子索引 0:参数体数目子索引 1:第一个映射的输出数据对象......子索引 n:最后一个映射的输出数据对象 |
| 0x1A00~0x1BFF | TxPDO 映射,结构体类型子索引 0:参数体数目子索引 1:第一个映射的输入数据对象......子索引 n:最后一个映射的输入数据对象 |
| 0x1C00 | 同步管理器通信类型,子索引 0 定义了所使用 SM 的数目,子索引 1-32 定义了相应 SM0-SM31 通道的通信类型,相关通信类型有:0:邮箱输出,非周期性数据通信,1 个缓存区写操作1:邮箱输入,非周期性数据通信,1 个缓存区读操作2:过程数据输出,周期性数据通信,3 个缓存区写操作3:过程数据输入,周期性数据通信,3 个缓存区读操作 |
| 0x1C10~0x1C2F | 过程数据通信同步管理器 PDO 分配子索引 0:分配的 PDO 数目子索引 1-n:PDO 映射对象索引号 |
| 0x1C30~0x1C4F | 同步管理器参数子索引 1:同步类型(见 2.5 节的 "1. 从站设备同步运行模式")子索引 2:周期时间,单位为 ns子索引 3:AL 事件和相关操作之间的偏移时间,单位为 ns |
1.2 周期性过程数据通信
周期性数据通信中,过程数据可以包含多个 PDO 影射数据对象,CoE 协议使用数据对象 0x1C10~0x1C2F 定义相应 SM 通道的 PDO 映射对象列表。以周期性输出数据为例,输出数据使用 SM2 通道,由对象数据 0x1C12 定义 PDO 分配,如图所示。表 1.3 列出了其取值实例。

(图 PDO 分配示意图:以太网帧头→EtherCAT 头→命令头→EtherCAT 数据→WKC;EtherCAT 数据逻辑寻址映射到各个从站的 SM2;0x1C12 定义 SM2 的 PDO 分配;从站数据对应 PDO 映射 0/1/2,再映射到数据对象 0/1)
| SM2 通道 PDO 分配对象数 0x1C12 举例 | |||||
|---|---|---|---|---|---|
| 子索引 | 数值 | 子索引 | 数值 | 数据字节数 | 含义 |
| 0 | 3 | - | - | - | PDO 映射对象数目 |
| 1 | PDO0(0x1600) | 0 | 2 | 1 | 数据映射对象数目 |
| 1 | 0x7000:01 | 2 | 电流模型输出数据 | ||
| 2 | 0x7010:01 | 2 | 电流模型输出数据 | ||
| 2 | PDO1(0x1601) | 0 | 2 | 1 | 数据映射对象数目 |
| 1 | 0x7020:01 | 2 | 电流模型输出数据 | ||
| 2 | 0x7030:01 | 2 | 电流模型输出数据 | ||
| 3 | PDO2(0x1602) | 0 | 2 | 1 | 数据映射对象数目 |
| 1 | 0x7040:01 | 2 | 电流模型输出数据 | ||
| 2 | 0x7050:01 | 2 | 电流模型输出数据 |
根据设备的复杂程度,PDO 数据映射又有以下几种形式:(1) 简单的设备不需要映射协议・使用固定的过程数据;・在从站 EEPROM 中读取,不需要 SDO 协议。(2) 可读取的 PDO 映射;・固定过程数据映射;・可以使用 SDO 通信读取。(3) 可选择的 PDO 映射・多组固定的 PDO 通过 PDO 分配对象 0x1C1x 选择;・通过 SDO 通信选择。(4) 可变的 PDO 映射・可通过 CoE 通信配置;・PDO 内容可改变。
1.3 CoE 非周期性数据通信
CoE 协议邮箱数据结构图 所示,其各元素定义如表 1.4 所列。

| CoE 命令定义 | |
|---|---|
| 数据元素 | 描述 |
| PDO 编号 | PDO 发送时的 PDO 序号 |
| 类型 | CoE 服务类型,0:保留1:紧急事件信息2:SDO 请求3:SDO 响应4:TxPDO5:RxPDO6:远程 TxPDO 发送请求7:远程 RxPDO 发送请求8:SDO 信息9-15:保留 |