COE协议报文解析

参考1:https://blog.csdn.net/ethercat_i7/article/details/53186941
参考2:https://blog.csdn.net/qq923433160/article/details/83781812
参考3: 工业以太网现场总线EtherCAT驱动程序设计及应用

1 COE协议报文总体结构


以COE(CANopen over EtherCAT)的SDO服务为例,EtherCAT帧格式如下图所示:


从图中可看出CANopen、EtherCAT和Ethernet这几个协议的大致关系。



2 EtherNET头解析

在这里插入图片描述

2.1 前同步信号

1、大小:7个字节,56位;
2、作用:用来使接收端的适配器在接收 MAC 帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码为 7 个字节,1 和 0 交替,101010…1010。

2.2 帧开始定界符(SFD)

1、大小:1个字节,8位;
2、作用: 帧的起始符,为 1 个字节。前 6 位 1 和 0 交替,最后的两个连续的 1 表示告诉接收端适配器:“帧信息要来了,准备接收”。

2.3 目标地址

1、大小:6个字节,48位;
2、作用:接收帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。

2.4 源地址

1、大小:6个字节,48位;
2、作用:发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。

2.5 类型

1、大小:2个字节,16位;
2、作用:上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 IP 协议;字段位0x88a4时,表示将数据交付给EtherCAT协议。

3 EtherCAT帧头解析(Frame Header)

在这里插入图片描述

3.1 EtherCAT报文长度(Lenth)

1、大小:11位;
2、作用:EtherCAT所有子报文数据长度总和。

3.2 保留位

1、大小:1位;
2、作用:保留位;

3.3 数据类型

1、大小:4位;
2、作用:标识“EtherCAT头”后面数据的类型:
0x01:EtherCAT DLPDU;
0x04:network veriable;
0x05:mailbox。
显然,在EtherCAT模式下“数据类型”值为0x01;

4 EtherCAT子报文解析(Datagram Header)

在这里插入图片描述

4.1 寻址及读写方式(cmd)

1、大小:1个字节,8位;
2、意义:命令;
3、作用:确定寻址方式及读写方式。参数具体意思,见下图。
在这里插入图片描述

4.2 索引(idx)

1、大小:一个字节,8位;
2、意义:索引;
3、作用:索引编码。

4.3 从站地址区(Addres)

1、大小:4个字节,32位;
2、意义:地址区;
3、作用:从站地址。

4.4 报文数据长度(Lenth)

1、大小:2个字节,16位,其中11位表示报文数据长度,4位保留,1位表示后续报文标识,如下图。
在这里插入图片描述
2、意义:长度;
3、作用:表示报文数据长度。

4.5 中断表示(IRQ)

1、大小:2个字节,16位;
2、意义:表示;
3、作用:中断到来标志。

5 邮箱头文件(Mailbox Header)

在这里插入图片描述

5.1 数据长度

1、大小:2个字节,16位;
2、作用:后面报文数据的长度;

5.2 地址

1、大小:2个字节,16位;
2、作用:主站到从站通讯时,为从站地址;从站到从站通讯时,为目的从站地址;

5.3 通道

1、大小:6位;
2、作用:保留;

5.4 优先级

1、大小:2位
2、作用:保留;

5.5 类型

1、大小:4位:
2、作用:邮箱类型,即后续数据的应用层类型。参数具体意义,如下图。
在这里插入图片描述

5.6 计数器 (Ctr)

1、大小:4位;
2、作用:用于重复检测的顺序编号,每个新的邮箱服务将加1(为了兼容老版本而只使用1~7)。

注意:实际应用中“5.5类型”和“5.6计数器”位置互换。

6 CoE帧头

在这里插入图片描述
如果应用协议是CoE,就是CoE帧头;协议是SoE,就是SoE帧头…(应用程类型参考5.5类型)。本文使用CoE协议,只介绍CoE帧头。

6.1 PDO 编号

1、大小:9位;
2、PDO 发送时的PDO序号;

6.2 保留

1、大小:3位;
2、作用:保留;

6.3 CoE 服务类型

1、大小:4位;
2、作用:标识CoE服务类型,具体参数含义,如下图。
在这里插入图片描述

7 标准CANopen数据帧

在这里插入图片描述

7.1 SDO 控制

1、大小:1个字节,8位;
2、作用:CANopen数据传输控制,具体参数意义如下图。
在这里插入图片描述

7.2 索引

1、大小:2个字节,16位;
2、作用:数据对象索引号;

7.3 子索引

1、大小:1个字节,8位;
2、作用:操作参数体子索引;

7.4 CANopen 数据(千呼万唤始出来啊)

1、大小:4个字节,32位;
2、作用:如果是快速传输,本部分内容为数据;如果是常规传输,本部分为传输数据对象的总字节数,如果本次传输的有效数据数目小于总数据长度,则后续有分段传输数据。

7.4 可选扩展数据

1、大小:1~1470个字节;
2、作用:常规传输的扩展数据,传输有效数据。

<think>嗯,用户想了解COE协议的过程数据通信实现方式。首先,我需要回忆一下EtherCAT和COE的基础知识。COE是CANopen over EtherCAT,也就是说它把CANopen协议应用在EtherCAT网络上。过程数据通信(PDO)在CANopen中用于实时传输数据,分为发送和接收两种。 根据引用[2],EtherCAT的非周期性数据通信是邮箱通信,而周期性的是过程数据通信。COE的PDO应该属于周期性通信,但可能需要通过邮箱来配置。引用[4]提到主站通过读写邮箱数据实现COE通信,所以配置PDO可能使用邮箱,而实际数据传输走周期性过程数据通道。 接下来要明确过程数据通信的实现步骤。首先,主站需要通过邮箱配置PDO映射,告诉从站哪些对象需要周期传输。然后,在运行阶段,主站通过周期性报文读写这些PDO数据。同步管理器通道0和1用于邮箱,而通道2和3用于过程数据,这点可能来自引用[3]中的结构。 需要注意区分非周期和周期通信的区别。邮箱用于参数配置等非实时数据,而过程数据是实时、周期性的。可能还需要提到对象字典,因为COE依赖于对象字典来定义PDO映射的参数,比如索引和子索引。 用户的问题可能涉及到如何配置PDO以及数据传输机制,需要结合邮箱和过程数据通信两者的协作。此外,同步管理器的分配和缓冲区管理也是关键点。需要确保回答结构清晰,分步骤说明配置和运行阶段的不同实现方式,并引用相关的资料来支持。</think>### COE协议过程数据通信的实现方式 COE(CANopen over EtherCAT)协议通过结合邮箱通信和周期性过程数据通信实现非周期性与周期性数据传输的协同工作。具体实现方式如下: #### 1. **通信机制划分** - **非周期性通信**:通过邮箱数据通信实现,用于参数配置、对象字典读写等非实时操作[^2][^4]。 - **周期性过程数据通信**:通过预定义的PDO(过程数据对象)映射实现实时数据传输,使用EtherCAT的周期性数据帧[^3]。 #### 2. **过程数据通信实现步骤** **步骤1:配置PDO映射** - 主站通过邮箱通信向从站发送PDO映射配置命令,定义需要周期性传输的对象字典条目。例如: ```c // 配置PDO映射:将对象字典0x6000的子索引0x01映射到PDO CoE_PDO_Mapping(index=0x1600, subindex=0x01, object=0x60000101); ``` - 配置信息存储在从站的**同步管理器(SM)通道**中(通常SM2/SM3为过程数据通道)[^3]。 **步骤2:过程数据传输** - 主站在每个EtherCAT周期中通过**逻辑寻址**直接读写PDO数据区,例如: $$ \text{数据帧结构} = [帧头] + [PDO1数据] + [PDO2数据] + \cdots $$ - 数据长度和位置由前期映射配置确定,无需每次解析协议头[^3]。 #### 3. **关键组件协作** | 组件 | 功能 | |-----------------|----------------------------------------------------------------------| | 同步管理器(SM) | SM0/SM1用于邮箱通信,SM2/SM3用于过程数据缓存[^3] | | 对象字典 | 存储PDO映射参数(如索引0x1A00/0x1600)[^3] | | 分布时钟(DC) | 同步各从站时钟,确保过程数据周期性传输的时序精度 | #### 4. **示例:PDO数据流** ``` 主站周期帧 → [EtherCAT头][SM2数据区(输出PDO)][SM3数据区(输入PDO)] │ │ ▼ ▼ 从站执行器控制信号 从站传感器反馈信号 ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值