ZeroOne AI
← 返回文章列表

SOEM-EtherCAT 源代码解析(二):已知的从站配置信息列表

👁 31
分类:机器人自动化

解析 SOEM 主站库的从站配置信息列表:ec_configlist_t 结构体字段含义、dtype 设备类型解释、倍福 EK1100/EL 系列端子预配置表,以及未知从站如何回退到 EEPROM 读取配置。

SOEM-EtherCAT 源代码解析(二):已知的从站配置信息列表

一、项目背景

在上一篇《SOEM-EtherCAT 源代码解析(一):数据类型定义》中,我们拆解了 ec_type.h 中的基础类型、报文结构体与各类枚举。本篇文章继续深入 SOEM 源码,聚焦从站配置信息列表(Slave Configuration List)。

EtherCAT 主站上电后需要识别并配置每一个从站。对于常见型号(如倍福 EK1100 耦合器、EL 系列端子模块),主站如果内置了它们的配置参数,就可以跳过繁琐的 EEPROM 逐项读取,直接按已知参数完成配置,大幅加快启动速度。SOEM 正是通过一张"已知从站配置表"实现这一机制的。

二、技术方案:从站配置结构体

SOEM 用 ec_configlist_t 结构体描述一个已知从站的全部配置参数,并将所有已知从站放进一张静态表 ec_configlist[] 中:

/** Slave configuration structure */
/*从站配置结构体*/
typedef const struct
{
   uint32           man;      // 从站厂家制造商代码
   uint32           id;       // 从站产品代码
   char             name[EC_MAXNAME + 1];  // 从站产品型号名称
   uint8            Dtype;    // 数据类型
   uint16           Ibits;    // 输入位数量
   uint16           Obits;    // 输出位数量
   uint16           SM2a;     // SyncManager 2 起始地址
   uint32           SM2f;     // SyncManager 2 标志位
   uint16           SM3a;     // SyncManager 3 起始地址
   uint32           SM3f;     // SyncManager 3 标志位
   uint8            FM0ac;    // FMMU 0 有效
   uint8            FM1ac;    // FMMU 1 有效
} ec_configlist_t;

各字段含义:

Dtype 设备类型说明

源码注释给出了 7 种设备类型的定义:

1: static device with no IO mapping ie EK1100         // 静态设备,无IO映射(如EK1100耦合器)
2: input device no mailbox ie simple IO device        // 输入设备,无邮箱(简单IO模块)
3: output device no mailbox                           // 输出设备,无邮箱
4: input device with mailbox configuration            // 输入设备,带邮箱配置
5: output device with mailbox configuration           // 输出设备,带邮箱配置
6: input/output device no mailbox                     // 输入输出设备,无邮箱
7: input.output device with mailbox configuration     // 输入输出设备,带邮箱配置

三、系统架构:已知从站配置表

#define EC_CONFIGEND 0xffffffff

ec_configlist_t ec_configlist[] = {
      {/*Man=*/0x00000002,/*ID=*/0x044c2c52,/*Name=*/"EK1100",/*dtype=*/1,...},
      {/*Man=*/0x00000002,/*ID=*/0x03ea3052,/*Name=*/"EL1002",/*dtype=*/2,/*Ibits=*/2,...},
      {/*Man=*/0x00000002,/*ID=*/0x03ec3052,/*Name=*/"EL1004",/*dtype=*/2,/*Ibits=*/4,...},
      {/*Man=*/0x00000002,/*ID=*/0x07d23052,/*Name=*/"EL2002",/*dtype=*/3,/*Obits=*/2,...},
      {/*Man=*/0x00000002,/*ID=*/0x0c1e3052,/*Name=*/"EL3102",/*dtype=*/4,/*Ibits=*/48,
       /*SM2a*/0x1000,/*SM2f*/0x00000024,/*SM3a*/0x1100,/*SM3f*/0x00010020,/*FM0ac*/0,/*FM1ac*/1},
      {/*Man=*/0x00000002,/*ID=*/0x0fc03052,/*Name=*/"EL4032",/*dtype=*/5,/*Obits=*/32,...},
      {/*Man=*/0x00000002,/*ID=*/0x13ed3052,/*Name=*/"EL5101",/*dtype=*/7,/*Ibits=*/40,/*Obits=*/24,...},
      {/*Man=*/EC_CONFIGEND,/*ID=*/0x00000000,/*Name=*/""  ,...}   // 表结束标志
};

关键设计点:

四、实施过程:配置匹配与回退机制

SOEM 在 ec_config_init() 阶段执行从站识别,其逻辑为:

  1. 依次读取总线上每个从站的 EEPROM(SII),获取厂商代码与产品代码;
  2. 遍历 ec_configlist[] 表,用 man + id 与表项比对;
  3. 命中:直接使用表内配置(Dtype、Ibits/Obits、SM/FMMU 参数),完成快速配置;
  4. 未命中:从从站 EEPROM 中读取完整配置信息(SII 的通用段、SM 段、FMMU 段、PDO 段),动态建立配置——这就是"未知从站"的通用处理路径。

这种"已知表 + EEPROM 回退"的双轨设计,让主站既能在常见场景下秒级启动,又能兼容任意第三方从站。

五、应用价值

六、SEO关键词

SOEM、EtherCAT主站、从站配置、ec_configlist_t、EK1100、EL1002、EtherCAT源码解析、从站EEPROM、SII从站信息接口、倍福端子模块、运动控制

推荐阅读

更多工业 AI、智能制造与技术实践文章

机器人自动化

手把手做ROS2机器人系统开发(一):开发环境搭建

机器人操作系统(ROS2)是当前机器人应用开发的主流平台,凭借分布式节点架构、丰富的生态组件和良好的实时性支持,被广泛用于工业机器人、移动机器人和智能装备的研发。本系列教程将带领大家从零开始,完成一套完整的ROS2机器人系统开发:以驱动常用工业机器人(SCARA)实现动态抓取目标为最终目标,既支持实

工业互联网

Linux系统篇(十九)——文件(三):底层存储入门:从机房硬件到 CHS/LBA 磁盘寻址全解析

从机房硬件层级讲到磁盘物理结构,再到 CHS 三维寻址与 LBA 线性寻址的转换原理,完整打通底层存储认知。

数码印刷

CMYK色彩管理之印刷配色

本文系统讲解CMYK色彩管理的全流程:RGB与CMYK加色法/减色法的原理差异、常见CMYK配比与总墨量限制(TAC)、ICC配置文件与常用标准(ISO Coated V2/Japan Color 2011等)、印刷色差五大原因与打样方式对比,以及从设计、输出到印刷沟通的标准工作流程与常见问题解答。

工业互联网

Linux系统篇24——通信(二):匿名管道 vs 命名管道,进程之间到底怎么“传话”?

进程之间默认谁也看不见谁,操作系统给它们接了一根“水管”——管道。本文从“对讲机”和“公共信箱”讲起,把匿名管道与命名管道的底层原理、代码写法、常见坑和面试考点一次讲透。

机器人自动化

TRIO-Basic 从入门到精通(十八):Trio运动控制器UDP快速交换数据通讯

本文介绍TRIO运动控制器之间基于UDP的快速数据交换通讯方案:将初始化与收发数据核心代码封装为SINOLIB.BAL库,通过dgram数据报通道与IEEE浮点编解码,实现两台MC405控制器周期性实时交换数据,无需预建立连接,通讯稳定不断线。

工业AI

小龙虾 Skill 技能编写入门:从 Markdown 到工业智能体工具调用

本文从最简单的 SKILL.md 讲起,系统介绍工业智能体“小龙虾”的 Skill 技能编写方法:功能说明、触发条件、执行流程、工具调用、权限分级,并结合 MES、MQTT、RAG、AGV 等工业场景,说明如何让 AI 从“聊天机器人”进化为能查询实时数据、执行任务的工业智能体。

评论(0)