IgH EtherCAT 从入门到精通:第 1 章 EtherCAT 与 IgH Master 概览

张开发
2026/4/17 7:26:42 15 分钟阅读

分享文章

IgH EtherCAT 从入门到精通:第 1 章 EtherCAT 与 IgH Master 概览
第 1 章 EtherCAT 与 IgH Master 概览导读摘要本章将带你从零认识 EtherCAT 协议的核心思想了解 IgH EtherCAT Master 项目的来龙去脉并通过架构全景图建立整体认知。读完本章你将清楚这个开源主站能做什么、它的技术边界在哪里以及后续章节的学习路线。1.1 工业以太网与 EtherCAT 协议简介在传统工业自动化中现场总线Fieldbus长期承担着控制器与 I/O 设备之间的通信任务。然而随着系统规模增大和实时性要求提高基于以太网的工业通信方案逐渐成为主流。EtherCATEthernet for Control Automation Technology由德国倍福Beckhoff公司于 2003 年提出是目前性能最突出的工业以太网协议之一。它的核心创新在于“飞读飞写”Processing on the fly机制以太网帧在经过每个从站时从站硬件在极短的延迟内直接读取或写入属于自己的数据而不需要接收完整帧再转发。这带来了几个关键优势极低延迟一个包含 1000 个分布式 I/O 的系统周期时间可低至 30 微秒带宽利用率高一帧以太网报文可携带多个从站的数据拓扑灵活支持线型、星型、树型等多种网络拓扑标准以太网硬件主站端只需普通以太网控制器NICEtherCAT 协议遵循 IEC 61158 国际标准其从站通过专用的 ESCEtherCAT Slave Controller芯片实现硬件级协议处理而主站则通过软件实现这正是 IgH EtherCAT Master 项目的切入点。1.2 IgH EtherCAT Master 项目背景与定位IgH EtherCAT Master 由德国工程公司 Ingenieurgemeinschaft IgH简称 IgH开发和维护核心开发者为 Florian Pose。项目最早可追溯到 2006 年是Linux 平台上最成熟的开源 EtherCAT 主站实现。当前最新版本为1.6.8从configure.ac中可以确认/* configure.ac */AC_INIT([ethercat],[1.6.8],[fpigh.de])项目遵循 GNU General Public License v2 开源协议用户空间库则使用 LGPL v2.1这意味着你可以在商业产品中链接其用户空间库而无需开源自己的应用代码。IgH Master 的核心定位是作为 Linux 内核模块运行的高性能 EtherCAT 主站同时提供内核空间和用户空间两套 API适配从科研原型到工业产线的各种场景。它符合 IEC/PAS 62407 标准规范。1.3 项目整体架构全景图下面用 Mermaid 图展示 IgH EtherCAT Master 的分层架构硬件层内核空间用户空间实时应用程序ethercat 命令行工具libethercat 用户空间库字符设备接口 cdevMaster 核心模块主站状态机 FSMDomain 域管理Slave 从站管理分布式时钟 DC邮箱协议层CoEEoEFoEVoE网络设备抽象层原生 EtherCAT 驱动e1000/e1000e/igb/r8169...通用网络驱动 generic从这张图可以看出IgH Master 采用了清晰的分层设计。最顶层是用户的实时应用程序和命令行工具它们通过用户空间库或字符设备接口与内核中的主站核心通信。主站核心管理着从站、域Domain和分布式时钟并通过网络设备抽象层操控底层以太网硬件。核心数据结构ec_master定义在master/master.h中它是整个主站的中枢/** EtherCAT master. * Manages slaves, domains and IO. */structec_master{unsignedintindex;/** Index. */unsignedintreserved;/** True, if the master is in use. */ec_cdev_tcdev;/** Master character device. */ec_device_tdevices[EC_MAX_NUM_DEVICES];/** EtherCAT devices. */ec_fsm_master_tfsm;/** Master state machine. */ec_master_phase_tphase;/** Master phase. */ec_slave_t*slaves;/** Array of slaves on the bus. */unsignedintslave_count;/** Number of slaves on the bus. */structlist_headconfigs;/** List of slave configurations. */structlist_headdomains;/** List of domains. */u64 app_time;/** Application time. */ec_slave_t*dc_ref_clock;/** DC reference clock slave. */unsignedintdebug_level;/** Master debug level. */// ... 更多成员省略};主站运行分为三个阶段Phase由枚举类型ec_master_phase_t定义typedefenum{EC_ORPHANED,/** 孤立阶段无以太网设备绑定 */EC_IDLE,/** 空闲阶段已绑定设备但未被应用请求 */EC_OPERATION/** 运行阶段被实时应用请求并激活 */}ec_master_phase_t;这三个阶段的转换贯穿了主站的整个生命周期我们会在后续章节中详细展开。1.4 核心功能特性一览根据项目 FEATURES 文件和 API 头文件ecrt.hIgH Master 提供了以下核心能力协议与通信完整的 EtherCAT 主站实现符合 IEC/PAS 62407 标准支持 CoECANopen over EtherCAT、EoEEthernet over EtherCAT、FoEFile Access over EtherCAT、VoEVendor-specific over EtherCAT四种邮箱协议SoEServo Drive over EtherCATIDN 请求支持实时性支持 RTAI、Xenomai、RT-Preempt 等多种实时扩展提供 RTDMReal-Time Driver Model接口用于用户空间实时环境无实时扩展也能正常运行非硬实时场景域与过程数据通过 Domain域机制分组管理从站支持不同采样率自动计算 PDO 映射、FMMU 和 Sync Manager 配置避免不必要的过程数据拷贝操作分布式时钟Distributed Clocks, DC支持参考时钟选择与同步主站时钟与参考时钟的偏移和漂移补偿同步监控机制设备驱动提供 e1000、e1000e、igb、igc、r8169、8139too、genet、stmmac 等原生 EtherCAT 驱动原生驱动支持无中断操作性能更优通用驱动Generic Driver兼容所有 Linux 支持的以太网设备工具与调试ethercat命令行工具查看主站/从站状态、SDO 读写、固件升级、寄存器访问等虚拟只读网络接口可直接用 Wireshark 抓包调试支持单机运行多个主站实例最多 32 个API 层面通过版本宏管理兼容性应用程序可以用特性标志检测可用功能/* ecrt.h - 版本与特性标志 */#defineECRT_VER_MAJOR1#defineECRT_VER_MINOR6#defineECRT_VERSION(a,b)(((a)8)(b))#defineECRT_VERSION_MAGICECRT_VERSION(ECRT_VER_MAJOR,ECRT_VER_MINOR)/* 特性检测宏 */#defineEC_HAVE_REDUNDANCY/* 冗余链路支持 */#defineEC_HAVE_EMERGENCY/* CoE 紧急消息 */#defineEC_HAVE_REG_ACCESS/* 寄存器直接访问 */#defineEC_HAVE_SELECT_REF_CLOCK/* 参考时钟选择 */#defineEC_HAVE_SOE_REQUESTS/* SoE IDN 请求 */#defineEC_HAVE_SCAN_PROGRESS/* 扫描进度查询 */1.5 与其他 EtherCAT 主站方案的对比市面上主要的 EtherCAT 主站方案有以下几种我们从多个维度进行对比特性IgH MasterSOEMTwinCATacontis开源协议GPLv2 / LGPLv2.1Apache 2.0商业商业运行平台Linux内核模块跨平台用户空间Windows跨平台实时性硬实时配合 RT 补丁软实时硬实时硬实时DC 支持完整基础完整完整邮箱协议CoE/EoE/FoE/VoE/SoECoE/FoE全部全部冗余支持有无有有成熟度高2006 年至今中极高高IgH Master 的优势在于它是 Linux 生态下功能最完整的开源方案支持内核级硬实时具备生产级稳定性。如果你的项目基于 Linux 并且需要开源可控的 EtherCAT 主站IgH 几乎是唯一的选择。它的局限在于学习曲线相对陡峭需要理解 Linux 内核模块编程文档以英文为主且不算丰富跨平台支持有限。这也是我们编写本教程的动机 – 用中文系统性地降低这个门槛。1.6 学习路线图与本教程导读本教程按照“理解原理 - 搭建环境 - 掌握 API - 深入内核 - 实战应用”的路线组织。以下是推荐的学习路径第 1 章 概览与全景 ← 你在这里 ↓ 第 2 章 环境搭建与编译安装 ↓ 第 3 章 第一个 EtherCAT 应用 ↓ 第 4 章 从站配置与 PDO 映射 ↓ 第 5 章 Domain 域管理 ↓ 第 6 章 分布式时钟 (DC) ↓ 第 7 章 邮箱协议 (CoE/EoE/FoE/VoE) ↓ 第 8 章 主站内核模块深度剖析 ↓ 第 9 章 实时性调优与性能分析 ↓ 第 10 章 生产部署最佳实践建议的学习方式如果你是 EtherCAT 新手建议从头到尾顺序阅读如果你已有 EtherCAT 经验可以直接跳到第 3 章开始实操每一章都有可运行的代码示例建议边读边动手遇到内核相关的概念不理解时不用着急第 8 章会深入展开小结本章我们建立了对 EtherCAT 协议和 IgH Master 项目的整体认知EtherCAT通过飞读飞写机制实现了工业以太网中顶尖的实时性能IgH EtherCAT Master是 Linux 平台上最成熟的开源主站实现当前版本 1.6.8项目采用内核模块 用户空间库的分层架构核心由ec_master结构体驱动支持四种邮箱协议、分布式时钟、链路冗余等完整功能集相比 SOEM 等方案IgH 在 Linux 硬实时场景下具有不可替代的优势下一章预告在第 2 章中我们将动手搭建 IgH EtherCAT Master 的开发环境。你将学会如何获取源码、配置编译选项、构建内核模块并完成安装。我们还会介绍如何配置原生网络驱动和ethercat命令行工具让你的第一个 EtherCAT 主站跑起来。

更多文章