基于 STM32H743 与 SOEM 的 EtherCAT 主站移植与实现
基于 STM32H743 与 SOEM 的 EtherCAT 主站移植与实现
一、方案概述
本工程实现了一套运行于 STM32H743 芯片上的 EtherCAT 主站,基于开源 SOEM(Simple Open EtherCAT Master)1.3.1 协议栈移植,配套完整的 STM32CubeMX 工程。适用于需要高性能、低成本的嵌入式 EtherCAT 主站场景(如数控、机器人、自动化产线)。
二、SOEM 协议栈源码结构
SOEM 1.3.1 源码按功能模块组织,各文件职责如下:
| 文件 | 功能 |
|---|---|
ethercatbase.c | 基本 EtherCAT 功能函数:通信服务命令、数据帧组装 |
ethercatcoe.c | CoE(CANopen over EtherCAT)模块:应用层结构体与数据操作 |
ethercatconfig.c | 主站配置模块:对从站的基本配置 |
ethercatconfiglist.h | 已知从站产品参数列表 |
ethercatdc.c | 分布时钟(Distributed Clock,DC)配置 |
ethercatmain.c | 主站核心:初始化、状态机、邮箱通信、EEPROM 操作、SII 读、过程数据交换;定义 ec_slave[] 从站信息结构体 |
ethercatprint.c | 错误码转可读文本(SDO 中止信息、状态码) |
ethercattype.c | 类型与宏定义 |
nicdrv.c | 原始套接字驱动(网卡发送/接收数据帧) |
osal.c | 定时器与延时 |
oshw.c | 识别本机网卡信息 |
simple_test.c | 示例主站程序 |
三、EtherCAT 寻址方式
SOEM 支持四种寻址方式:
- 顺序寻址:按从站物理连接顺序寻址,用于主站启动初期;
- 设置寻址:按主站分配的地址(1001、1002…)寻址;
- 逻辑寻址:将每个从站地址映射到 4G 虚拟缓存区,由从站 FMMU 管理,主站可方便读取任一从站内存(实用、便捷);
- 广播寻址:对所有从站广播。
四、底层驱动移植
移植的核心工作集中在两个模块:
1. 定时器移植
需开启一个周期性定时器,作为 SOEM 主站时间基准,同时作为与从站 PDO 数据交换周期(125us / 250us / 500us / 1000us 等)。周期通过宏 PDI_DC_CYCLE 定义,默认 1000000ns(1ms)。
关键技巧:系统时钟分频后,定时器每个 tick 为 250ns,这与每次 PDO 数据交互的调节密切相关。SOEM 系统本地时间用结构体表示上电后的运行时长——1ms 定时中断每次 usec += 1000,超 1000000 则 sec += 1。
2. 网卡驱动移植
网卡驱动是移植重点,需适配两个函数:
ecx_outframe():完成数据帧发送;ecx_recvpkt():完成网口数据接收。
五、从站 EEPROM(SII)访问
从站 EEPROM 读的一般步骤:
- 读 EEPROM 控制/状态寄存器(0x0502:0x0503),确认非 Busy;
- 写读控制命令 0x0100 到 0x0502:0x0503,写目标地址到 0x0504:0x0507;
- 重复步骤 1;
- 从 0x0508:0x050F 读取数据。
读一次需主站发送 4 帧。步骤 1、2 对应 ecx_readeeprom1(),步骤 3、4 对应 ecx_readeeprom2()。
六、主站配置流程
ec_config_init():获取连接的从站个数,填充从站信息到ec_slave[]结构体;ec_config_map(&IOmap):完成逻辑地址与物理地址映射。应用程序定义IOmap[]数组,映射完成后即可通过读写IOmap[]与从站交换数据。
PDO 映射流程:ecx_map_coe_soe → ecx_readPDOmap(读 1C00h 得 SM 类型,读 1C12/1C13 得 1600/1A00,再读子索引 60400010、60600008 等得累计长度);若失败则走 ecx_map_sii(读从站 EEPROM 的 category pdo)。
七、分布时钟(DC)
DC 解决主从站计数时刻不一致的问题,主要包括:
- 计算传输延时;
- ESC 时间控制环与漂移补偿。
八、伺服适配
工程已适配多款主流伺服驱动器:
- 汇川 IS620N;
- 欧姆龙 G5;
- 松下 A5B。
九、小结
本方案提供了一套完整的 SOEM 主站移植实践,覆盖协议栈理解、定时器/网卡驱动移植、SII 访问、PDO 映射、分布时钟与伺服适配全链路,配套 STM32CubeMX 工程与详细移植文档,可直接用于实际工程。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)