IgH 主站启动后与 EtherCAT 从站的完整交互流程分析

发布时间:2026/8/23 23:43:27

IgH 主站启动后与 EtherCAT 从站的完整交互流程分析
IgH 主站启动后与 EtherCAT 从站的完整交互流程分析最近在做人形机器人 EtherCAT 总线调试时我抓取了一段 IgH EtherCAT Master 从启动、扫描从站、读取从站信息、配置邮箱和 PDO到最终进入 OP 并开始周期通信的报文。本文结合igh_master0.pcap抓包结果对 IgH 主站启动后与从站之间的关键交互流程做一次系统梳理。报文下载链接https://pan.quark.cn/s/336a7fee9bf2本文重点不是逐字节解释所有 EtherCAT 报文而是把主站初始化过程拆成若干个阶段说明每个阶段主站为什么要发这些报文、从站返回了什么、这些返回值对后续配置有什么意义。说明本文帧号以igh_master0.pcap中从#33092开始的一段完整重新初始化流程为准。该段抓包中主站通过BRD 0x0130扫描到16个从站返回WKC16。如果只连接单个模组或使用另一份精简抓包帧号和 WKC 会不同但流程是一致的。1. 抓包背景为了搞清楚 IgH 协议栈启动后到底和从站做了哪些交互我在 RK3588 控制器上使用tcpdump抓取 EtherCAT 报文。抓包方式如下sudo./tcpdump-ienP2p33s0-s0-wigh_master0.pcap ether proto 0x88a4然后重启 EtherCAT 主站或重启运控程序等待所有从站重新进入 OP 后停止抓包。EtherCAT 报文使用以太网类型0x88A4。在 Wireshark 中打开抓包后可以重点观察以下字段EtherCAT Command例如BRD、BWR、APWR、FPRD、FPWR、LRWADP/ADO即从站地址和寄存器地址Data即主站写入或从站返回的数据WKC即 Working Counter用来判断报文经过了多少从站、是否被目标从站正确处理2. 整体流程概览IgH 主站启动后的初始化大致可以分成 10 个阶段广播读取 AL_STATUS扫描总线上的从站数量和状态广播清空从站站地址广播触发 DC 接收时间戳锁存使用 APWR 给每个从站分配固定站地址读取 ESC 基本信息、DC 时间和链路状态接管 EEPROM/SII读取从站描述信息通过 Mailbox/CoE SDO 读取 PDO 映射等对象字典信息配置 FMMU、SyncManager 和 DC写 AL Control推动从站状态机进入 INIT、PREOP、SAFEOP、OP开始 LRW 周期 PDO 通信下面按抓包顺序展开。3. 广播读取 AL_STATUS扫描从站IgH 主站启动后首先发送广播读命令Frame: #33092 / #33093 Command: BRD Register: 0x0130 AL_STATUS Return: WKC16, Data02 00BRD是 Broadcast Read主站用它读取所有从站的同一个寄存器。这里读取的是0x0130也就是 EtherCAT 从站的 AL_STATUS 寄存器。返回帧中WKC16说明这条总线上有 16 个从站参与了该广播读。返回数据为02 00低字节0x02表示从站处于 PREOP 状态。这一步的核心作用是确认总线上从站数量确认从站当前 AL 状态为后续逐个寻址和配置建立基础如果你在精简环境中只连接一个模组但扫描到两个从站常见原因是模组板上除了关节控制从站外还可能有一颗用于拓扑连接或桥接的 ESC。4. 广播清空旧站地址扫描完成后主站会广播写 Station AddressFrame: #33094 / #33095 Command: BWR Register: 0x0010 Station Address Write Data: 00 00 Return: WKC160x0010是从站的 Station Address 寄存器。IgH 主站在重新分配地址之前会先将所有从站的站地址清零。这样做的原因是从站上一次运行时可能已经被写入过地址如果不清除后续固定地址访问可能会受到残留地址影响。清零后主站可以重新通过 Auto-Increment Physical Addressing 按物理链路顺序给从站分配地址。5. 广播触发 DC 时间戳锁存接下来主站广播写 DC 接收时间相关寄存器Frame: #33096 / #33097 Command: BWR Register: 0x0900 DC Receive Time Write Data: 00 Return: WKC16这一帧会触发从站 ESC 硬件锁存报文到达端口的本地时间戳。后续主站会读取这些时间戳用于计算链路线缆延迟并为 Distributed Clocks也就是 DC 同步做准备。在机器人场景中DC 同步非常关键。多个关节驱动器如果要在同一个控制周期内采样、更新输出就需要尽可能一致的分布式时钟基准。6. 使用 APWR 分配站地址随后主站使用APWR给每个从站分配固定站地址Command: APWR Register: 0x0010 Station Address Return: 每次成功写入 WKC1APWR是 Auto-Increment Physical Write。它不是通过固定站地址访问从站而是通过物理链路顺序访问从站。主站用这种方式给每个从站写入 Station Address。在igh_master0.pcap中站地址分配过程如下帧号相对时间物理 ADP分配站地址#330990.003640s0x00100x0001#347050.086358s0x000F0x0002#369250.211561s0x000E0x0003#389250.344567s0x000D0x0004#410850.462760s0x000C0x0005#434250.578322s0x000B0x0006#455150.713543s0x000A0x0007#476450.836905s0x00090x0008#497570.967135s0x00080x0009#521331.089918s0x00070x000A#544571.210461s0x00060x000B#567691.333106s0x00050x000C#587471.466809s0x00040x000D#607371.590137s0x00030x000E#630551.707714s0x00020x000F#651611.828593s0x00010x0010从这一步开始主站就可以用FPRD、FPWR按固定站地址访问指定从站了。7. 读取 ESC 基本信息、DC 时间和链路状态给从站分配站地址后主站会读取一组 ESC 基础寄存器Command: FPRD Registers: 0x0000 ESC Information 0x0910 DC System Time 0x0900 DC Receive Time Port 0x0110 DL Status Return: 每个从站 WKC1其中0x0000附近包含 ESC 类型、Revision、Build、FMMU 数量、SM 数量、DPRAM 大小、端口能力、DC 能力等信息0x0910用于读取从站 DC 系统时间0x0900用于读取各端口接收时间戳0x0110是 DL Status用于判断端口链路状态和拓扑情况这一步相当于主站给每个从站做一次“摸底”这个从站是什么 ESC、支持几个 FMMU、几个 SyncManager、是否支持 DC、端口连接状态如何。后续的 SM/FMMU/DC 配置都依赖这些信息。8. 读取 EEPROM/SII 信息接下来主站会访问从站 EEPROM也就是 EtherCAT 中常说的 SII 信息区。典型报文如下Register: 0x0500 EEPROM Configuration Register Register: 0x0502 EEPROM Command / Data主站首先写0x0500接管 EEPROM 访问控制权避免 PDI 同时访问 EEPROM。随后向0x0502写入读命令例如读取 EEPROM 地址0x0040再不断轮询0x0502等待 Read Busy/Read Access 状态结束最后从 EEPROM Data 字段中取出读到的字。这一步在抓包中数量非常多。igh_master0.pcap中0x0502相关读写超过一万次。原因是主站需要从 SII 中读取大量从站描述信息例如Vendor IDProduct CodeRevisionSerial NumberMailbox 配置SyncManager 描述PDO 映射描述DC 能力描述简单说SII 是主站理解从站“硬件描述”的入口。9. 通过 Mailbox/CoE SDO 读取对象字典当主站知道从站支持 mailbox 后会通过 SyncManager 0/1 建立邮箱通信进一步读取对象字典。抓包中主要看到SM0: 0x1000 Master - Slave mailbox SM1: 0x1080 Slave - Master mailbox Protocol: CoE SDO Upload在原始分析中一个典型从站通过 MBX 读取到的 PDO 映射对象如下SDO IndexSDO Subindex读到的值0x1C120x000x010x1C120x010x16010x16010x000x0A0x16010x010x701001100x16010x02Abort Transfer0x1C130x000x010x1C130x010x1A000x1A000x000x0C0x1A000x010x600001100x1A000x02Abort Transfer这里的含义可以这样理解0x1C12表示 RxPDO assignment也就是主站输出到从站的 PDO 分配0x1C13表示 TxPDO assignment也就是从站输入到主站的 PDO 分配0x1601是一个 RxPDO mapping 对象0x1A00是一个 TxPDO mapping 对象0x70100110、0x60000110这类值描述了对象索引、子索引和位宽如果某个 subindex 返回 Abort Transfer并不一定表示异常。很多对象映射表的有效项数由 subindex0x00给出主站继续读超出范围的 subindex 时从站返回 abort 是正常现象。10. 配置 FMMU、SyncManager 和 DC读取完 SII 和对象字典后主站已经知道每个从站的邮箱区、PDO 区、过程数据长度和映射关系。接下来开始写配置FMMU: 0x0600 ... SM: 0x0800 ... DC: 0x0980 ...配置过程通常包括清零 FMMU清零 SM清零 DC Cyclic Unit Control、DC Activation 等寄存器重新写入 SM0/SM1 邮箱配置写入 SM2/SM3 或其他 PDO SyncManager 配置写入 FMMU 逻辑地址映射写入 DC 同步相关配置FMMU 的作用是把 EtherCAT 逻辑地址映射到从站 DPRAM 中的指定区域。SyncManager 用于管理邮箱区和过程数据区。DC 配置用于让各从站按照主站规划的周期同步工作。对于机器人关节模组来说这一步决定了后续 LRW 过程数据中每个字节最终对应哪个从站、哪个 PDO、哪个控制量或反馈量。11. 写 AL Control推动从站状态机EtherCAT 从站有标准 AL 状态机常见状态包括INITPREOPSAFEOPOP主站通过写0x0120 AL Control请求状态切换Register: 0x0120 AL Control Write: 0x01 - INIT 0x02 - PREOP 0x04 - SAFEOP 0x08 - OP在抓包中可以看到IgH 主站会对所有从站写入这些状态请求。状态切换不是单纯写一个寄存器就结束主站还会反复读取 AL_STATUS确认从站是否真正到达目标状态。如果从站配置不完整、PDO 映射不匹配、SM/FMMU 配置错误就可能卡在 PREOP 或 SAFEOP。调试 EtherCAT 启动失败时这一段非常重要。建议重点关注AL Control 请求写了什么状态AL_STATUS 是否进入目标状态AL Status Code 是否有错误码WKC 是否符合预期12. 进入 LRW 周期 PDO 通信当从站进入 OP 后主站开始发送周期过程数据帧。抓包中主要表现为大量LRWFrame: #87044 开始出现 LRW Frame: #87247 起 LRW 返回 WKC 0 Command: LRW Meaning: Logical Read WriteLRW是逻辑读写命令。主站在一帧中同时完成写输出 PDO例如控制字、目标位置、目标速度、目标力矩等读输入 PDO例如状态字、当前位置、当前速度、当前力矩、错误码等这也是 EtherCAT 高实时性的关键主站不需要对每个从站单独发一帧而是按逻辑地址空间组织过程数据报文沿总线经过各从站时从站在自己的映射区域读写数据最后一帧返回主站。当 LRW 的 WKC 开始稳定大于 0说明从站已经开始参与过程数据交换主站和从站之间的实时 PDO 通信链路建立成功。13. 各阶段常见问题定位建议如果从站无法进入 OP可以按下面顺序排查BRD 0x0130的 WKC 是否等于预期从站数量BWR 0x0010是否成功清除旧站地址APWR 0x0010是否逐个返回WKC1FPRD 0x0000是否能读取 ESC 基本信息0x0500/0x0502EEPROM/SII 读取是否完成Mailbox SDO 是否有异常 abortSM/FMMU 配置写入是否返回WKC1AL Control 写入 SAFEOP/OP 后AL_STATUS 是否同步变化AL Status Code 是否出现错误码LRW 周期帧 WKC 是否稳定如果卡在 PREOP通常优先看 mailbox、SDO 和 SM 配置如果卡在 SAFEOP通常优先看 PDO 映射、FMMU、SM2/SM3 和 DC 配置如果已经进入 OP 但 LRW WKC 不对则重点看逻辑地址映射和周期任务是否真正启动。14. 总结IgH 主站启动后与从站的交互不是简单地“扫描一下然后进入 OP”而是一整套严格的初始化流程扫描从站 - 清地址 - DC 时间戳锁存 - 分配站地址 - 读取 ESC / DC / DL 信息 - 读取 EEPROM/SII - Mailbox/CoE SDO 读取对象字典 - 配置 FMMU / SM / DC - INIT / PREOP / SAFEOP / OP 状态切换 - LRW 周期 PDO 通信理解这套流程后再看 Wireshark 中密密麻麻的 EtherCAT 报文就会清晰很多哪些报文是在扫描拓扑哪些是在读取硬件描述哪些是在配置邮箱和 PDO哪些是在切换状态机哪些才是真正的实时控制周期数据。对于人形机器人项目来说这类抓包分析非常有价值。它不仅能帮助我们理解 IgH 协议栈的启动行为也能在从站无法进入 OP、PDO 数据异常、DC 同步失败、WKC 不稳定等问题出现时快速定位问题发生在哪一个阶段。

相关新闻

Android 板端 WiFi 无法连接问题排查:从 lsmod、lsusb 到 WiFi 驱动冲突定位

Android 板端 WiFi 无法连接问题排查:从 lsmod、lsusb 到 WiFi 驱动冲突定位

2026/8/23 23:43:27

作为一个05后刚入行的小白程序员,今天尝试写第一篇博客,希望记录下自己的工作和成长经历,如果能够帮助到未来的朋友们当然是荣幸之至,即使没什么热度,多年后回看这些日记应该也会感慨万千。闲话少叙!最近在…

中年男人的温柔从来都藏在居家的细碎时光里

中年男人的温柔从来都藏在居家的细碎时光里

2026/8/23 23:33:26

越到年纪大,越懂穿衣的真谛:舒服大于好看,合适大于潮流。年轻时喜欢花哨新颖,中年之后,只偏爱干净、简约、柔软、踏实的穿着。 很多叔叔、爸爸居家都不爱繁琐设计,只想要一件四季好穿、贴身不别扭的睡衣。这…

无锡芯健细胞:健康管理并非富人专属

无锡芯健细胞:健康管理并非富人专属

2026/8/23 23:33:26

无锡芯健细胞:健康管理并非富人专属这件事的核心本质并不是大众认知的「高端富人服务」,真正决定能否参与健康管理的,是认知分层与需求匹配,而非**财富门槛。第一、拆解本质:健康管理的底层逻辑是主动防控从行业通用定…

论文AI率过高怎么办?2026年12款免费降AI率工具实测指南

论文AI率过高怎么办?2026年12款免费降AI率工具实测指南

2026/8/24 0:03:28

现在毕业论文答辩前,“AI率超标”已经彻底取代“查重率过高”,成了同学们的头号难题!不少同学只是用AI润色了摘要和结论,AI率直接飙升到离谱,纯手动修改根本不管用——这说明AIGC检测系统抓的不是个别词语,…

Marketch:从Sketch画板直接量取CSS

Marketch:从Sketch画板直接量取CSS

2026/8/24 0:03:28

Marketch:从Sketch画板直接量取CSS 【免费下载链接】marketch Marketch is a Sketch 3 plug-in for automatically generating html page that can measure and get CSS styles on it. 项目地址: https://gitcode.com/gh_mirrors/ma/marketch 设计稿交付还在…

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南

2026/8/24 0:03:28

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南 【免费下载链接】ThinkpadX390-Opencore-EFI macOS Catalina & Big Sur & Monterey on ThinkPad X390 (Hackintosh) 项目地址: https://gitcode.com/gh_mirrors/th/ThinkpadX390-Opencore-EFI …

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化

2026/8/24 0:03:28

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化 【免费下载链接】WechatHook Enjoy hooking wechat by Xposed....Accessibility...and so on... 项目地址: https://gitcode.com/gh_mirrors/we/WechatHook WechatHook 是一个基于 Xpos…

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定

2026/8/24 0:03:28

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定 【免费下载链接】OpenModScan Open ModScan is a Free Modbus Master (Client) Utility 项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan OpenModScan 是一款开源免…

政务内网开发躲不开的等保那些坑,看看你踩了几个了

政务内网开发躲不开的等保那些坑,看看你踩了几个了

2026/8/23 23:53:27

说实话,干政务内网开发这行,最难缠的从来不是技术本身,是那些藏在红头文件里的“潜规则”。我们团队在乌鲁木齐,接了十多年政务项目,从最早给区县政府做PHP老门户,到现在全套信创环境下的国产化替换&#x…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定

2026/8/24 0:03:28

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定 【免费下载链接】OpenModScan Open ModScan is a Free Modbus Master (Client) Utility 项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan OpenModScan 是一款开源免…

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化

2026/8/24 0:03:28

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化 【免费下载链接】WechatHook Enjoy hooking wechat by Xposed....Accessibility...and so on... 项目地址: https://gitcode.com/gh_mirrors/we/WechatHook WechatHook 是一个基于 Xpos…

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南

2026/8/24 0:03:28

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南 【免费下载链接】ThinkpadX390-Opencore-EFI macOS Catalina & Big Sur & Monterey on ThinkPad X390 (Hackintosh) 项目地址: https://gitcode.com/gh_mirrors/th/ThinkpadX390-Opencore-EFI …

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…