ZeroOne AI
← 返回文章列表

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

👁 29
分类:机器人自动化

解析 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、智能制造与技术实践文章

工业互联网

MY-BASIC 应用(一):轻量级嵌入式 BASIC 解析器介绍

MY-BASIC 是一个用标准 C 语言编写的轻量级 BASIC 解释器:不足 128KB 内存占用、可嵌入可扩展、支持原型编程与 Lambda 函数式编程、Unicode、列表/字典集合,适合嵌入式设备脚本化控制。

工业互联网

Linux系统篇(七)——工具篇(二):一篇搞懂 C 语言程序从代码到可执行文件的完整旅程

拆解 C 程序预处理、编译、汇编、链接四步变身流程,讲透条件编译与静态、动态链接差异,附分步实操与报错排查。

AI视觉

树莓派推送RTSP视频流实战:FFmpeg + rtsp-simple-server(MediaMTX)搭建局域网视频直播服务

本文面向树莓派视频流、Python视觉开发、RTSP视频监控和边缘AI视觉初学者,介绍如何在Raspberry Pi上搭建简单、稳定的RTSP视频流服务。项目采用FFmpeg + rtsp-simple-server(MediaMTX)方式,将树莓派摄像头采集的视频转换并推送到RTSP服务器,再由电脑、NVR、VLC、OpenCV或AI视觉程序访问。文章从安装FFmpeg并验证版本开始,下载适用于ARM64架构的MediaMTX v1.8.1,配置Linux Systemd服务实现RTSP服务器开机自启,最后将摄像头视频推送到RTSP地址,形成树莓派摄像头 → FFmpeg → RTSP服务器 → 客户端播放/AI检测的完整视频流架构。

AI视觉

YOLO目标检测模型调参入门:从训练参数到检测效果优化

YOLO目标检测模型调参入门指南:详解 epochs、imgsz、batch、模型大小、conf、IoU 等核心参数的作用与调节方法,给出工业视觉、疲劳驾驶、缺陷检测等 AI 项目的调参顺序与实验对比思路,帮助初学者在精度、速度与显存之间找到平衡。

工业互联网

Linux系统篇(二十三)——通信(一):什么是进程间通信?一文搞懂背景与全貌

通过实验揭示进程隔离的本质,系统梳理Linux进程间通信的六种机制:管道、消息队列、共享内存、信号量、信号与Socket,并给出选型方法。

数码印刷

陶瓷喷墨 RIP 中的 8 色 ICC Profile 技术原理与 LittleCMS 实现

系统讲解陶瓷喷墨 RIP 中 8 色 ICC Profile 的技术原理与 LittleCMS 实现:ICC 色彩管理模型、8 通道颜色空间、Profile 制作流程(固定条件/色卡打印/烧成后测色/分光数据)、LittleCMS 集成与批量转换,以及墨量限制、通道线性化、喷头灰度映射与工业级软件架构设计。

评论(0)