# 总览

### 概述

EtherCAT全称EtherNet Control Automation Technology，是由德国倍福（Beckhoff）公司提出的一种实时以太网技术，用于工业自动化的现场总线通信协议。EtherCAT是一种开放但不开源的技术，从站使用专属ASIC芯片或是FPGA的形式。

IGH EtherCAT是一种EtherCAT协议主站协议栈的开源实现，是一个完全符合EtherCAT标准的库，能够在实时操作系统上运行。与传统总线相比，EtherCAT的优点在于减少了总线通信的延迟时间，从而提高了实时性。IGH EtherCAT实现了这一协议，并对其进行了优化和改进。

EtherCAT的主站开发是基于EtherCAT工控制系统的开发中非常重要的环节。EtherLab的the IgH EtherCAT® Master是目前常见的一种开源的主站协议栈。IgH EtherCAT Master比SOEM复杂一些，但对EtherCAT的实现更为完整。

目前用的最多的开源ethercat主站是igh和soem。igh主站功能更多，结构较为复杂。soem功能相对没有那么完善，实现更为简单一些。主站实现在带有处理器的硬件平台上，带有完整或较为完整的操作系统时用igh；如果主站实现在单片机平台上，则推荐使用soem。igh主站依赖操作系统，而soem很容易可以移植到单片机上。

SOME支持Windows和Linux平台，功能相对简单。IGH的EtherCATMaster基于Linux平台，从发布至今已经将近10年并进行了多次更新，功能相对完善，还支持RTAI、RT-Preempt、xkernel等多种实时扩展，并且支持DC分布时钟，支持COE、SOE、EOE等多种通信协议。

IGH的EtherCAT 主站由三部分组成，包括主站协议栈、控制应用程序、支持EtherCAT的网卡驱动模块。IGH提供了两种网卡驱动方式：generic驱动和native驱动，generic驱动适用于所有网卡，通过调用Linux网络协议栈实现数据包的收发，并不能直接对硬件进行操作，实时性较难保证。native驱动针对主站支持的一些特定网卡，可以对底层硬件进行操作，可以支持RATI、xkernel等实时扩展，可以保证EtherCAT主站的实时性。

### IGH EtherCAT主站介绍

IGH EtherCAT 主站（IgH EtherCAT Master for Linux）是一个专门针对 Linux 平台的 EtherCAT 主站实现。它是一个开源项目，旨在为 Linux 系统提供完整的 EtherCAT 主站功能。

#### 主要特点和功能

- 适用于 Linux 平台：IGH EtherCAT 主站专门设计用于在 Linux 操作系统上实现 EtherCAT 主站功能。它利用 Linux 内核的实时性能和特性来实现对实时控制系统的支持。

- 完整的 EtherCAT 主站功能：IGH EtherCAT 主站支持 EtherCAT 协议的完整功能和特性，包括实时数据通信、分布式时钟同步、监视和配置等。

- 高性能和实时性：基于 Linux 实时内核的特性，IGH EtherCAT 主站能够提供可靠的实时通信和控制能力，适用于实时控制系统的要求。

- 开源和免费：IGH EtherCAT 主站是开源项目，基于 GPL 协议发布，用户可以免费使用、修改和定制它。

- 支持各种 EtherCAT 从站设备：IGH EtherCAT 主站能够与各种符合 EtherCAT 标准的从站设备进行通信，为用户提供了在 Linux 平台上实现 EtherCAT 控制网络的解决方案。

### 使用场景

IGH EtherCAT 主站主要适用于对实时控制系统有高要求的应用场景。它能够提供高性能、实时性和完整的 EtherCAT 功能，在需要在 Linux 系统中实现 EtherCAT 控制网络的工业自动化、机器人控制、运动控制等领域发挥重要作用。

此外，由于其开源和免费的特性，IGH EtherCAT 主站还可以被广泛应用于研究和教育领域，为从业人员和学生提供了一个了解和探索 EtherCAT 技术的平台，同时市场上也有很多基于它的专利和市场商业应用。

### IGH 主站 和 SOEM对比

IGH EtherCAT 主站（IgH EtherCAT Master for Linux）和 SOEM（Simple Open EtherCAT Master）都是开源的 EtherCAT 主站实现，用于在各种平台上实现 EtherCAT 主站功能。以下是它们之间的一些对比：

#### 1. 功能和复杂性

- IGH EtherCAT 主站：

  - 功能较为丰富，支持 EtherCAT 主站的各种特性和功能。
  - 结构相对复杂，适用于复杂的系统和对 EtherCAT 功能有较高要求的应用场景。
  - 针对 Linux 平台设计，依赖于 Linux 操作系统的功能和特性。

- SOEM：

  - 设计简单、轻量级，专注于提供基本的 EtherCAT 主站功能。
  - 适用于嵌入式系统和实时控制应用，资源消耗较低，易于移植到不同的硬件平台。
  - 对实时控制系统提供基本但稳定的 EtherCAT 支持。

#### 2. 资源消耗和移植性

- IGH EtherCAT 主站：

  - 由于功能较为丰富且结构复杂，可能会消耗更多系统资源，对硬件和操作系统可能有更高的要求。
  - 针对 Linux 平台设计，对于在 Linux 系统中实现 EtherCAT 主站功能提供了良好的支持。

- SOEM：

  - 设计目标是轻量级和易于移植，适用于资源受限的嵌入式系统和实时控制应用。
  - 容易移植到不同的硬件平台，包括单片机等资源受限的设备。
  - 对实时控制系统提供基本但稳定的 EtherCAT 支持。

#### 3. 使用场景

- IGH EtherCAT 主站： 适用于需要实现 EtherCAT 主站功能并且对功能和特性有较高要求的复杂系统，通常是在带有处理器的硬件平台和完整的操作系统上使用。

- SOEM： 适用于嵌入式系统和实时控制应用场景，在单片机等资源受限的平台上使用，例如实时控制系统和嵌入式设备。