基于 STM32H743 与 SOEM 的 EtherCAT 主站移植与实现

一、方案概述

本工程实现了一套运行于 STM32H743 芯片上的 EtherCAT 主站,基于开源 SOEM(Simple Open EtherCAT Master)1.3.1 协议栈移植,配套完整的 STM32CubeMX 工程。适用于需要高性能、低成本的嵌入式 EtherCAT 主站场景(如数控、机器人、自动化产线)。

二、SOEM 协议栈源码结构

SOEM 1.3.1 源码按功能模块组织,各文件职责如下:

文件功能
ethercatbase.c基本 EtherCAT 功能函数:通信服务命令、数据帧组装
ethercatcoe.cCoE(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 支持四种寻址方式:

  1. 顺序寻址:按从站物理连接顺序寻址,用于主站启动初期;
  2. 设置寻址:按主站分配的地址(1001、1002…)寻址;
  3. 逻辑寻址:将每个从站地址映射到 4G 虚拟缓存区,由从站 FMMU 管理,主站可方便读取任一从站内存(实用、便捷);
  4. 广播寻址:对所有从站广播。

四、底层驱动移植

移植的核心工作集中在两个模块:

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 读的一般步骤:

  1. 读 EEPROM 控制/状态寄存器(0x0502:0x0503),确认非 Busy;
  2. 写读控制命令 0x0100 到 0x0502:0x0503,写目标地址到 0x0504:0x0507;
  3. 重复步骤 1;
  4. 从 0x0508:0x050F 读取数据。

读一次需主站发送 4 帧。步骤 1、2 对应 ecx_readeeprom1(),步骤 3、4 对应 ecx_readeeprom2()。

六、主站配置流程

  1. ec_config_init():获取连接的从站个数,填充从站信息到 ec_slave[] 结构体;
  2. 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 工程与详细移植文档,可直接用于实际工程。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐