第2章 EtherCAT通信原理:数据帧结构、寻址方式、通信模式与从站状态机
大家好,欢迎来到第二章。这一章我们聊聊EtherCAT的通信原理。说实话,这部分内容有点枯燥,但它是整个协议栈的基石。我当年刚接触EtherCAT时,就是被这些概念绕晕过。今天我用大白话给你讲清楚。
2.1 EtherCAT数据帧结构
EtherCAT的数据帧,说白了就是以太网帧里塞了个“小火车”。标准的以太网帧长这样:
| 前导码 | 目标MAC | 源MAC | EtherType | 数据 | FCS |
EtherCAT把“数据”部分重新定义了。它的EtherType是0x88A4。嗯,这个值你要记住,抓包时靠它识别EtherCAT报文。
数据部分的结构是这样的:
| EtherCAT头 | 数据报1 | 数据报2 | ... | 数据报n |
每个数据报又包含:
| 数据报头 | 数据 | 工作计数器(WKC) |
数据报头里有几个关键字段:
- 寻址方式:告诉从站怎么找到自己
- 命令:读、写、读写等操作
- 索引:用于匹配请求和响应
- 长度:数据部分的字节数
我在项目中遇到过一个问题:数据报长度设置错了,导致从站一直收不到正确数据。排查了半天,最后发现是长度字段多算了2个字节。这种低级错误,嗯,犯过一次就记住了。
重要提示:EtherCAT数据报的最大长度是1498字节。别问我为什么不是1500,因为EtherCAT头占了2个字节。
2.2 EtherCAT寻址方式
EtherCAT的寻址方式有几种,我按使用频率给你排个序:
- 设备寻址:每个从站有个唯一的站地址。主站直接喊“3号从站,请回答”。
- 逻辑寻址:把从站的内存映射到主站的内存空间。主站直接读写某个内存地址,从站自动响应。
- 广播寻址:所有从站都能收到。常用于初始化阶段。
- 多播寻址:一组从站能收到。用得不多。
你想想看,设备寻址就像你叫一个人的名字,逻辑寻址就像你直接往他的口袋里塞东西。哪个更快?当然是逻辑寻址,因为它省去了“找名字”的过程。
我个人习惯在初始化阶段用设备寻址,在正常运行阶段用逻辑寻址。这样既灵活又高效。
小技巧:逻辑寻址时,每个从站会分配一段连续的地址空间。我建议你画个地址映射表,不然调试时容易搞混。
2.3 EtherCAT通信模式
EtherCAT有三种通信模式,我分别说说:
2.3.1 周期性过程数据通信(PDO)
这是最常用的模式。主站周期性地发送数据,从站周期性地返回数据。就像心跳一样,一下一下的。
PDO又分两种:
- 同步PDO:所有从站同时采样和输出。精度高,但要求所有从站同步。
- 异步PDO:从站各自为政。精度低,但实现简单。
我记得有个项目要求100个轴同步运动,用的就是同步PDO。调试时发现有个从站总是慢半拍,最后发现是它的晶振精度不够。嗯,硬件选型很重要。
2.3.2 非周期性邮箱数据通信(SDO)
SDO用于配置和诊断。它像寄信一样,有来有回,速度慢但可靠。
SDO的通信流程:
- 主站发送请求
- 从站处理请求
- 从站返回响应
你可能会问:“为什么不用PDO做配置?”因为PDO是周期性的,而配置是一次性的。用SDO更合适。
2.3.3 分布式时钟(DC)
DC是EtherCAT的杀手锏。它能让所有从站的时间同步到纳秒级。
DC的原理:
- 主站发送一个参考时钟
- 每个从站测量自己的时钟与参考时钟的偏差
- 从站自动调整自己的时钟
我曾经用DC做过一个数据采集系统,64个通道同步采样,时间偏差小于100纳秒。效果非常好。
警告:DC对硬件有要求。不是所有从站芯片都支持DC。选型时一定要确认。
2.4 EtherCAT从站状态机
EtherCAT从站有四个状态,它们之间可以互相转换:
| 状态 | 说明 | 可执行操作 |
|---|---|---|
| Init | 初始化状态 | 只能进行SDO通信 |
| Pre-Operational | 预运行状态 | SDO通信 + 部分PDO |
| Safe-Operational | 安全运行状态 | SDO通信 + 输入PDO |
| Operational | 运行状态 | 所有通信 |
状态转换的路径:
Init → Pre-Operational → Safe-Operational → Operational
也可以反向转换:
Operational → Safe-Operational → Pre-Operational → Init
每个状态转换都需要主站发送命令,从站确认。如果从站拒绝转换,它会返回一个错误码。
我在项目中遇到过一个问题:从站卡在Pre-Operational状态,死活进不了Safe-Operational。排查后发现是某个SDO配置参数写错了。嗯,这种问题很常见,建议你写个状态机调试工具。
核心要点:状态机是EtherCAT从站的“生命线”。主站通过控制状态机来管理从站的生命周期。从站必须正确实现状态转换逻辑。
2.5 本章小结
好了,这一章的内容就这些。我们讲了:
- EtherCAT数据帧的结构,说白了就是以太网帧里塞了个“小火车”
- 四种寻址方式,设备寻址和逻辑寻址最常用
- 三种通信模式,PDO用于实时数据,SDO用于配置,DC用于同步
- 从站状态机,四个状态之间的转换逻辑
下一章我们开始实战,教你如何搭建EtherCAT从站的开发环境。到时候我会分享一些我踩过的坑,保证让你少走弯路。
记住:理论是基础,实践出真知。别光看书,动手试试。