2. EtherCAT协议基础:数据帧、寻址与通信模式
大家好,我是你们的老朋友。今天咱们来聊聊EtherCAT协议最核心的几个概念。说实话,我刚接触EtherCAT那会儿,也被这些术语搞得头大。但后来我发现,只要把数据帧、寻址和通信模式这三块吃透了,后面开发从站就像搭积木一样简单。
嗯,咱们先看一张总览图,把今天要讲的知识体系串起来。
2.1 EtherCAT数据帧结构
说白了,EtherCAT数据帧就是在标准以太网帧里塞了EtherCAT的专用数据。我刚开始看协议文档时,觉得这结构挺绕的。但后来我画了个图,一下就明白了。
一个完整的EtherCAT数据帧长这样:
+----------------+----------------+------------------+------------------+-----+
| 以太网帧头(14B) | EtherCAT头(2B) | 从站报文1(可变长) | 从站报文2(可变长) | FCS |
+----------------+----------------+------------------+------------------+-----+
以太网帧头里有个关键字段叫 EtherType ,值固定是 0x88A4。我当年调试时,用Wireshark抓包,第一件事就是看这个值对不对。如果不对,那说明数据根本没进EtherCAT协议栈。
EtherCAT头只有2个字节,但信息量很大:
- 长度字段(11位):表示后面所有从站报文的总长度
- 保留位(1位):一般置0
- 类型字段(4位):我见过最多的就是
0x01,表示这是EtherCAT命令
重点来了:EtherCAT数据帧的最大长度是1518字节(标准以太网帧)。这意味着所有从站报文加起来不能超过这个数。我在设计一个带32个伺服驱动器的系统时,就遇到过报文太长的问题。后来优化了PDO映射才搞定。
每个从站报文的结构是这样的:
+--------+--------+--------+--------+--------+--------+--------+--------+
| 命令(8b) | 索引(8b) | 地址(32b) | 长度(8b) | 数据(可变) | WKC(16b) |
+--------+--------+--------+--------+--------+--------+--------+--------+
这里有个概念叫 WKC(Working Counter),它记录了这个报文被多少个从站处理过。主站通过检查WKC就能知道数据有没有被正确读写。嗯,这个在调试时特别有用。
2.2 寻址方式
EtherCAT的寻址方式分两大类:设备寻址和逻辑寻址。你想想看,一个网络里挂了几十个从站,主站怎么找到特定的那个?靠的就是这两种方式。
2.2.1 设备寻址
设备寻址又分两种:
- 顺序寻址:从站按物理连接顺序编号。主站发一个广播帧,每个从站收到后把地址加1再转发。我习惯用这种方式做初始化配置。
- 节点寻址:每个从站有一个唯一的站地址(通过硬件拨码或EEPROM设置)。主站直接指定这个地址。
我的经验:在调试阶段,我建议先用顺序寻址。因为只要把从站按顺序接好,地址就自动分配好了,省去配置的麻烦。等系统稳定了,再改成节点寻址。
2.2.2 逻辑寻址
逻辑寻址就更有意思了。主站把整个网络映射成一段连续的虚拟地址空间,每个从站占用其中一段。主站读写这段地址,数据就会自动路由到对应的从站。
举个例子:
逻辑地址 0x0000 - 0x00FF → 从站1的输入数据
逻辑地址 0x0100 - 0x01FF → 从站2的输入数据
逻辑地址 0x1000 - 0x10FF → 从站1的输出数据
逻辑地址 0x1100 - 0x11FF → 从站2的输出数据
这样做的好处是,主站不需要知道每个从站的具体物理位置,只需要操作逻辑地址就行。我在做多轴同步控制时,特别喜欢用逻辑寻址,因为所有轴的数据都在一个连续的地址空间里,处理起来特别方便。
注意:逻辑寻址需要从站支持FMMU(现场总线内存管理单元)。我曾经遇到一个从站,FMMU配置错了,导致数据一直写不进去。排查了半天才发现是FMMU的起始地址没对齐。
2.3 通信模式
EtherCAT有两种通信模式,分别对应不同的应用场景。
2.3.1 周期性过程数据通信(PDO)
这种模式用于实时控制。主站以固定的周期(比如1ms)发送数据帧,每个从站在帧经过时,把自己的输入数据填进去,同时取出给自己的输出数据。
我举个例子:
// 主站发送周期:1ms
// 每个从站处理时间:约5μs
// 一个帧可以处理约100个从站(理论值)
这种模式的特点是:
- 确定性高:数据交换时间可预测
- 效率高:一个帧可以服务多个从站
- 适合实时控制:比如伺服驱动、IO控制
避坑指南:我曾经在调试一个高速抓取机器人时,发现PDO数据偶尔会丢包。后来查出来是因为从站的PDO映射配置和主站不一致。所以,我建议你在配置PDO时,一定要用EDS文件做校验。
2.3.2 非周期性邮箱数据通信(SDO)
邮箱通信用于参数配置、诊断等非实时任务。它采用请求-响应模式,主站发一个邮箱数据,从站处理完后回复。
邮箱数据通信的流程:
- 主站发送邮箱数据(比如写参数)
- 从站接收并处理
- 从站回复确认或错误信息
- 主站检查回复
这种模式的特点是:
- 非实时:响应时间不确定
- 可靠:有确认机制
- 适合配置:比如修改伺服驱动器的PID参数
我的习惯:在系统启动阶段,我用SDO配置所有从站的参数。等配置完成后,切换到PDO模式进行实时控制。这样既保证了配置的可靠性,又保证了控制的实时性。
好了,这一章的内容就到这里。数据帧结构、寻址方式和通信模式这三个概念,是理解EtherCAT的基石。下一章我们会深入讲从站的硬件设计,到时候会用到今天讲的知识。
公众号:蓝海资料掘金营,微信deep3321