详细介绍:EtherCAT 文章整理(自用)

原文链接:ethercat的移植 - ST MCU

一、研究背景与意义

在智能制造业高速发展的当下,节点间通信的实时性、可靠性及通信带宽面临着更高要求。工业现场通信技术作为智能制造的核心基础技巧之一,近年来涌现出诸多优秀的工业现场总线标准。其中,倍福公司研发的 EtherCAT 工业以太网科技,凭借组网简单、成本低廉、实时可靠等突出优势,在工业自动化领域崭露头角。

传统现场总线系统存在明显短板,其将控制系统按层次划分为现场总线系统、实际控制任务和本地固件周期,在控制周期内,框架响应时间过长,且数据量与传输速率较低,这些缺点使其成为自控系统发展的 “瓶颈”。而以太网技能以低成本、高传输速度的特点,有效弥补了传统现场总线的不足,在工业自动化领域发挥着愈发重要的作用。

工业以太网主站对硬件要求较为灵活,只需硬件提供标准网口即可运行于多种平台。成本低廉、简单灵活且高速实时的嵌入式平台,在硬件层面完全能够作为工业以太网主站使用,这为工业领域提供了一种全新的网络化、信息化、智能化解决方案。

二、EtherCAT 协议与不同平台应用分析

(一)EtherCAT 协议核心特性

EtherCAT 协议在通信架构、实时传输方式等方面具有独特优势,与其他主流以太网协议相比差异显著,具体对比如下表所示:

以太网协议EtherNet/IPModbus/TCPEtherCAT
管理推广组织ODVAModbus-IDAETG
通信结构客户 / 服务客户 / 服务主站 / 从站
通信方法面向信息的传输帧面向信息的传输帧主站发出总帧
实现实时传输的方法利用 CIP Sync 实现时钟同步与具体实施的技巧相关等时传输
是否支持分布式时钟不支持不支持支持
以太网素材传输速率10/100Mb/s10/100Mb/s100Mb/s
实时特性1~5ms10~500ms小于 1μs
支持的物理拓扑单一:星形星形,树形灵活多样:线性链型等
逻辑拓扑总线网络总线网络开放的环形网络
硬件应对办法不可以不可以可以
设备的规范CANCANOPEN、SERCOS

在协议层方面,EtherCAT 仅需物理层、数据链路层和应用层,OSI 七层协议体系结构中的另外四层并非必需。同时,EtherCAT 帧结构可封装在 IP/UDP 资料报中,上传至从站的应用层后,由从站控制器的硬件进行处理,其协助的协议层结构清晰,涵盖以太网应用、实时应用、TCP、UDP、IP、邮箱、过程数据、EtherCAT MAC/DLL 及物理层等部分。

(二)不同平台 EtherCAT 主站应用问题

PC 机 Windows 平台上的 EtherCAT 主站存在帧周期较长且不稳定的障碍,帧周期在 150-2000μs 之间波动;实时 Linux 平台虽在实时性上有所提升,最短帧周期可达 70μs,但仍存在 10μs 的偏差。为解决这些问题,本研究提出采用基于 ARM Cortex-M7 内核的 STM32F767 作为硬件平台来实现 EtherCAT 主站。

三、EtherCAT 主站在 STM32F767 平台的实现

(一)软件架构分析与优化

首先,深入分析 RT-LAB 的开源 EtherCAT 主站 SOEM1.3.1(Simple Open EtherCAT Master)软件架构,掌握其核心工作原理与模块组成。其次,针对 STM32F767 以太网设备驱动进行优化,摒弃对操作系统的依赖,将 SOEM1.3.1 成功移植到 STM32F767 平台下,简化了系统架构,降低了软件层面的延迟与不确定性。

(二)实验设计与结果

为验证嵌入式平台 EtherCAT 主站搭建的有效性,采用 500μs 插补周期,使用 2 台三洋公司 R 系列伺服驱动器和伺服电机作为从站设备,测试 CSP 模式下对 2 个伺服轴的位置控制。

实验结果表明,在 216MHz 主频的 ARM 平台下,经过适当软件优化,嵌入式平台上过程数据的帧周期稳定在 68μs±1μs。这一结果充分证明,该 ARM 平台完全有能力作为 EtherCAT 主站利用,并能提供 100μs 以下级别的实时性,为工业自动化、物联网及其他领域提供了更简单轻便的 EtherCAT 工业现场总线主站平台。

四、EtherCAT 关键技术细节

(一)帧结构与子报文

EtherCAT 帧结构由 Ethernet 头部、Ethernet 数据部分和 FCS(帧校验序列)组成,其中 Ethernet 头部涵盖 6 字节目的地址、6 字节源地址和 2 字节类型(值为 0x88A4);Ethernet 数据部分包含 2 字节 EtherCAT 头部、44-1498 字节 EtherCAT 数据(含一到多个子报文);FCS 为 4 字节。

EtherCAT 子报文头部结构复杂,囊括命令(8 位,定义寻址方式及读写方式,0 表示无操作)、索引(8 位,帧存放的临时缓冲区编号,0~15)、地址(32 位,要访问的从站内存地址,逻辑寻址时可访问 4GB 空间)、长度(11 位,子报文素材部分长度)、保留位(3 位)、C 位(1 位,是否阻止循环帧发送)、M 位(1 位,是否有后续子报文)、状态(1 位,中断到来标记,目前未使用)以及 2 字节 WKC(工作计数器,用于主从站建立通信时统计从站数量,也可记录 SDO 方式读写报文是否成功)。

(二)寻址方式

EtherCAT 对从站的寻址方式分为设备寻址和逻辑寻址,设备寻址又可分为增量寻址和配置地址(节点)寻址。

  • 增量寻址:按设备连接顺序寻址,多用于上电后主站对从站的配置过程,每经过一个从站帧的 WKC 值加 1,可通过增量地址读的方式,根据 WKC 值判断 EtherCAT 网段内从站数量,也可使用广播地址读方式(地址 0 为读所有从站)。
  • 配置地址寻址:按设备配置地址寻址,从站 ESC(EtherCAT 从站控制器)集成 16 位设置寄存器,上电后寄存器内容为 0,表明从站未被赋予配置地址,此时无法进行配置地址寻址。主站在网络配置过程中,会将配置寄存器配置为 0x0001-0xFFFF 的唯一值,不同主站实现可能有不同设置地址设置方法,例如在 SOEM 上,每个从站的配置地址按 “0x1000 + 从站号” 公式计算。
  • 逻辑寻址:主站需先经过配置寻址方式对逻辑控制单元 FMMU(现场总线内存管理单元)进行配置,每个从站 ESC 部署 8 个 FMMU 单元,每个 FMMU 单元可建立一段逻辑地址到从站一段连续物理地址的映射。配置完成后,主站使用逻辑地址可同时操作多个从站,设置时需设定逻辑地址空间起始地址、从站物理空间起始地址、映射空间大小、逻辑起始地址开始位、物理空间起始地址开始位等参数。

此外,EtherCAT 还支撑广播寻址,不同寻址方式对应不同命令,具体如下表所示:

命令名寻址方式命令码WKC 值
CMD_APRD自动增量读管理寻址0x01读失败 /+0; 读成功 /+1
CMD_APWR自动增量写管理寻址0x02写失败 /+0; 写成功 /+1
CMD_APRW自动增量读写操作寻址0x03读写失败 /+0,读成功写失败 /+1; 读失败写成功 /+2; 读写成功 /+3
CMD_FPRD配置地址读操作寻址0x04+0/1
CMD_FPWR配置地址写操作寻址0x05+0/1
CMD_FPRW配置地址读写操作寻址0x06+0/1/2/3
CMD_BRD广播读操作寻址0x07+0/1
CMD_BWR广播写操作寻址0x08+0/1
CMD_BRW广播读写操作寻址0x09+0/1/2/3
CMD_LRD逻辑读操作寻址0x0a+0/1
CMD_LWR逻辑写处理寻址0x0b+0/1
CMD_LRW逻辑读写操作寻址0x0c+0/1/2/3
CMD_ARMW自动增量一读多写操作0x0d+0/1
CMD_FRMW部署地址一读多写运行0x0e+0/1

(三)通信机制

  1. 邮箱通信:邮箱通信多用于非周期数据传输,能保证发送数据被对方接收,无需担心数据覆盖或丢失,承受单缓冲模式。

    • 主站发信:主站将写给从站的信件封装到报文中,发送到从站 IN 邮箱,即发送设置寻址模式下的 EtherCAT 帧,子报文中打包发信内容。帧经过从站且寻址命中后,从站将邮箱内容从帧中读出写入 IN 邮箱,从站本地应用从邮箱读走内容,主站发送的邮件帧不关心也不等待从站本地应用的读取时间。
    • 主站读信:主站需主动发送配置地址读命令的 EtherCAT 帧,帧寻址到从站后,从站将 OUT 邮箱内容写入帧中,帧返回主站后,主站从帧中提取邮件内容。当邮箱通信出错时,应答信息帧包含 16 位命令(0x01 表示邮箱通信)和 16 位命令相关数据,命令相关数据对应不同错误类型,如 0x01 表示邮箱语法错误、0x02 表示不支持此邮箱协议等。
  2. 过程数据通信:主站对从站过程数据的读写具有周期性。

    • 周期性写过程数据:主站按固定周期发起写管理,从站 ESC 接收数据后,通过 PDI(过程数据接口)传递给本地应用,整个过程有明确的时间序列,确保数据及时、准确写入。
    • 周期性读过程数据:主站同样按周期发起读操作,从站本地应用将数据通过 PDI 传递给 ESC,ESC 将数据写入 EtherCAT 帧,帧返回主站后做完数据读取,保证主站能实时获取从站状态内容。

(四)时钟同步

EtherCAT 通过分布式时钟机制实现主从站时钟同步,主站作为参考时钟源,各从站框架时间需与参考时钟同步,即\(T_{system (i) }=T_{system (j) }=T_{system (k)}=T_{system (1) }\)(其中 i、j、k、l 代表不同从站)。

时钟同步的关键环节,具体步骤如下:就是传输延迟测量

  1. 主站广播测量帧,向每个从站写 0 到寄存器 DCTIME0 中。
  2. 测量帧到达每个从站的端口 n(n=0,1,2,3)及 ESC 处理器时,会在相应时间戳寄存器中记录到达时的本地时钟数值。
  3. 主站读取各从站端口本地时间,结合网络拓扑分析,计算每个从站的传输延迟时间。
  4. 主站将计算结果写入相应从站的系统时间延迟寄存器 ECT_REG_DCSYSDELAY,从而实现各从站与主站时钟的精准同步,确保整个系统时序一致性。
posted @ 2025-12-12 12:02  clnchanpin  阅读(49)  评论(0)    收藏  举报