2. EtherCAT系统架构:主站与从站、拓扑结构、数据帧结构

大家好,我是老张。今天咱们聊聊EtherCAT的系统架构。说白了,就是搞清楚这个系统里谁说了算、怎么连、数据怎么跑。我刚开始接触EtherCAT时,也被这些概念绕得头晕。但搞懂了,后面调试就顺了。

2.1 主站与从站:谁指挥谁?

EtherCAT系统里,主站是大脑,从站是手脚。主站通常是一台带网卡的PC或嵌入式控制器,运行实时操作系统。从站就是各种伺服驱动器、IO模块、编码器、阀岛等执行或采集设备。

主站的特点:

  • 唯一的数据发起者。只有主站能发报文,从站只能被动响应。
  • 不依赖专用ASIC,普通千兆网卡就能跑。我习惯用Intel I210芯片,稳定。
  • 软件栈是关键。比如TwinCAT、SOEM、IgH EtherCAT Master。

从站的特点:

  • 必须使用专用EtherCAT从站控制器(ESC),比如Beckhoff的ET1100、ET1200,或者AX58100。
  • 从站不处理IP协议,只识别EtherCAT帧头。说白了,它就是个高速转发器。
  • 每个从站有一个位置地址(由拓扑决定)和一个站地址(可配置)。

避坑指南: 我曾经遇到一个项目,主站死活扫描不到最后一个从站。查了半天,发现是从站的EEPROM配置错了,站地址重复了。记住:同一网段内站地址必须唯一!

2.2 拓扑结构:线型、星型、树型

EtherCAT的拓扑很灵活。你想想看,现场设备分布千奇百怪,一根线拉到底最省事。但有时候又需要集中布线。EtherCAT都支持。

线型拓扑:

  • 最常用,也最简单。从主站出来,一个接一个串下去。
  • 每个从站有两个网口:IN和OUT。数据从IN进,处理完从OUT出。
  • 优点:省线、布线方便。我做过一条产线,30个伺服串成一串,稳得很。
  • 缺点:中间一个从站断电,后面全断。嗯,这里要注意,如果从站支持“断电直通”功能,可以缓解。

星型拓扑:

  • 需要专用EtherCAT交换机或集线器。主站出来,分到多个分支。
  • 适合机柜内集中布线。比如一个控制柜里,主站连到多个驱动器。
  • 注意:普通交换机不行!必须用支持EtherCAT帧转发的设备。

树型拓扑:

  • 线型和星型的结合。主干是线型,分支处用从站模块分出子线。
  • 比如一个IO模块,除了IN/OUT口,还带一个分支口,可以再接一条线。
  • 灵活,但调试时逻辑要理清。我建议画个拓扑图,标清楚每个从站的物理位置。

我的经验: 现场布线时,线型拓扑最省心。但如果设备分布在多个机柜,星型或树型更合适。记得给每个从站贴标签,不然查线查到哭。

下面我画了一张图,帮你理清这三种拓扑的关系:

EtherCAT 三种拓扑结构示意图 线型拓扑 主站 从1 从2 从3 → 数据流向 → 星型拓扑 主站 从1 从2 从3 需要专用交换机 树型拓扑 主站 从1 从2 从3 分支从站带额外端口

2.3 数据帧结构:报文里藏着什么?

EtherCAT的数据帧,说白了就是以太网帧里塞了一个EtherCAT头。主站发一个帧,经过所有从站,最后回到主站。每个从站只处理属于自己的那一段数据。

帧结构如下:

字段 长度(字节) 说明
以太网帧头 14 目标MAC、源MAC、以太网类型(0x88A4)
EtherCAT头 2 数据长度 + 保留位 + 类型(1=命令,4=邮箱)
EtherCAT数据 44-1498 包含多个子报文(每个从站对应一个)
FCS 4 帧校验序列

子报文结构:

  • 命令(8位): 比如APRD(寻址读)、APWR(寻址写)、APRW(寻址读写)。我常用APRW,一次搞定读写。
  • 索引(8位): 主站用来匹配请求和响应。
  • 地址(32位): 从站地址 + 偏移地址。说白了就是告诉从站,你要操作哪个寄存器。
  • 长度(11位)+ 保留位(5位): 数据段长度。
  • 数据(最多1486字节): 实际要读写的内容。
  • 工作计数器(16位): 每个从站处理完数据后,会把这个计数器加1。主站通过它判断是否所有从站都正确响应了。

注意: 工作计数器(WKC)是调试时的关键指标。如果WKC不对,说明有从站没响应或数据没写进去。我曾经花了一整天,发现是一个从站的接线松了,导致WKC始终少1。

数据帧的流转过程:

  1. 主站发送一个以太网帧,里面包含所有从站的子报文。
  2. 第一个从站收到帧,找到属于自己的子报文,读取或写入数据,然后修改WKC。
  3. 从站把帧从OUT口转发给下一个从站。
  4. 最后一个从站处理完后,把帧返回给主站。
  5. 主站检查WKC,确认所有操作成功。

嗯,这里要注意:整个过程是流水线式的。主站发一个帧,所有从站同时处理自己的那一段。所以延迟极低,一个1000个IO点的系统,周期可以做到100微秒以内。

我的习惯: 调试时先用Wireshark抓包,看EtherCAT帧里的子报文顺序和WKC值。如果某个从站的WKC没变,那问题就出在那个站上。省时省力。

好了,这一章就到这里。记住:主站发令,从站执行;拓扑选型看现场;数据帧里WKC是关键。搞懂了这些,EtherCAT系统在你眼里就是透明的了。


专注资料整理