【每周分享】EtherCAT是什么?看完这篇文章,你基本就知道了
2026/7/24 10:04:29 网站建设 项目流程
在工业自动化领域,EtherCAT可以说是无处不在,应用及其广泛。其实,简单一点来说,EtherCAT就是一种工业自动化的现场总线协议,被广泛应用在PLC主机和从站模块里面,用于实现两者的快速通信和数据交换,一般的EtherCAT产品上都会标注EtherCAT的总线丝印logo:

3411769894e6598a6d.png(34.5 KB, 下载次数: 0)

下载附件

2026-2-9 11:03 上传

EtherCAT协议Logo上的两个箭头其实是EtherCAT技术的一个核心视觉象征,它直接代表了EtherCAT的关键技术原理,即“On the Fly” processing(飞行中/实时处理),体现了其数据处理的实时性速度。
这篇文章的主要内容其实是自己学习的一个记录,简单总结一下,与大家分享和学习。
1、我们先来看下EtherCAT 的基本框架和协议栈结构。
EtherCAT的全称其实就是 Ethernet for Control Automation Technology,直译为用于控制自动化技术的以太网。
EtherCAT的基本框架如下图所示,看起来内容是比较多的:

大致可以分为应用层、数据链路层和物理层:
应用层一般由MCU处理,主要负责应用程序,对象字典和各种协议代码处理,而对象字典相关的如下图所示:

而4种邮箱协议如下描述;
COE:CANopen over EtherCAT,操作对象字典;
SOE: SERCOS over EtherCAT,Serial Real-timeCommunication Specification,用于伺服驱动器控制;
EOE:Ethernet over EtherCAT,支持IP标准的协议,传输以太网数据帧;
FOE:File Access over EtherCAT,该协议通过EtherCAT下载和上传固件程序和其他文件,其使用类似TFTP。
数据链路层一般由ESC(EtherCAT从站控制器,比如Microchip的LAN9252等)芯片处理,是实现EtherCAT 数据链路层协议的专用集成电路芯片,主要处理EtherCAT数据帧,并为从站控制装置提供数据接口。
物理层主要是硬件接口,比如MII接口,网络接口等,作为实际数据交互的介质。
而EtherCAT的协议格式类似于TCP/UDP这种,也是符合以太网标准的:

既然是协议,就肯定会有协议栈,我们可以通过SSC工具生成协议栈的基本代码:


协议栈代码框架如下所示:

下面这个是我将协议代码与协议代码框架建立的基本关系:

代码文件比较多,不过基本上看文件名称,就能猜测其大概的作用。

我们来看下EtherCAT协议栈的整个骨架:

初始化主要包括硬件初始化和协议栈初始化两个部分;主任务主要包括EtherCAT任务处理MainLoop循环。
其中的硬件初始化主要涉及EEPROM上电检测:

MCU和ESC通信成功检测:


这里会涉及两个重要的宏参数,使用的时候一定要注意:

而主任务MainLoop在main函数里被周期性循环调用,完成的工作主要包括:
根据相关全局变量标志位判断工作模式,并执行相关的数据读取和应用接口函数;如:bEscIntEnabled表示是否使能同步运行模式,否则就是自由运行模式;
读取AL 事件屏蔽寄存器,执行读取主站下发数据操作;
调用ECAT_Application接口执行应用外设控制,中断ISR中也会调用该函数;
根据是否使能硬件定时器进行相关操作;
调用ECAT_Main接口执行非周期性的数据操作,包括:MBX_Main邮箱数据操作和ECAT_StateChange状态机控制;
调用低优先级的应用程序部分COE_Main接口;
调用CheckIfEcatError接口检查通信和同步,如果发生错误,则更新AL状态/AL状态码;
调用EcatIsrCheckState判断PDI中断是否丢失,如果丢失,则调用PDI_isr进行处理.
而协议栈的核心模块主要如下所示:

EtherCAT状态机处理模块相关的如下图所示:

状态机的作用是负责协调主站和从站应用程序在初始化和运行时的状态关系,必须支持四种状态,另外一种是可选状态:
(1)Init:初始化,简写为I;
(2)Pre-Operational:预运行,简写为P;
(3)Safe-Operational:安全运行,简写为S;
(4)Operational:运行,简写为O;
(5)Boot-Strap:引导状态,简写为B;【可选】
而状态转换主要包括如下所示:

邮箱Mailbox服务模块主要如下图所示:

比较重要的是,协议栈需要MCU实现三个用于数据同步处理的中断服务程序以及一个硬件定时器中断服务程序:


此外,至于MCU芯片和ESC芯片通信方式,主要包括SPI和FSMC两种:

2、我们再来看下EtherCAT 的核心组成部分:对象字典。
对象字典是EthERCAT数据交互得到重要内容,SDO和PDO信息都以对象字典的形式保存,因此一定要了解对象字典的数据结构。
协议栈会对对象字典进行初始化操作:

对象字典的条目(Entry)结构及成员解释如下所示:

对象字典主要包括两类:通用的对象字典结构GenObjDic,主要包括厂商信息,设备信息和版本信息等:


还有一类就是应用对象字典ApplicationObjDic,主要是与每个产品的具体需求有关,内容因产品而异:


3、我们最后来看下EtherCAT 的核心组成部分:描述文件(xml文件)。
每个EtherCAT模块都对应一个xml文件或者描述文件,主要用于描述设备信息,主要包含了制造商信息和从站描述信息,内容如图所示:


ETG2000和ETG5001文档(ETG:EtherCAT Technology Group,EtherCAT技术协会;注册成为ETG会员,会给制造商分配一个 Vendor ID.)有详细的各种xml文件的字段说明和解释,以下仅为个人总结的部分:

以上便是EtherCAT的一些主要内容,有些地方没有展开详述,比如协议帧格式,对象字典怎么实现等等,后续会有继续的分享~~



---------------------
作者:dffzh
链接:https://bbs.21ic.com/icview-3506093-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询