千家信息网

SylixOS上EtherCAT实现

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,1 EtherCAT开源协议栈介绍目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH Ether
千家信息网最后更新 2026年11月01日SylixOS上EtherCAT实现

1 EtherCAT开源协议栈介绍

目前常见开源的主站代码为RT-LAB开发的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS对两者都支持。其中IgH作为常用的EtherCAT开源协议栈,SylixOS已移植支持。

2 SylixOS-IgH使用框架

SylixOS-IgH的使用尽可能保留了Linux下IgH的使用方式,其中延续了命令行工具的功能,而在应用程序开发方面,借助SylixOS集成开发套件的优势,用户可以更方便编辑、调试基于SylixOS-IgH的应用程序。

SylixOS-IgH主要分为IgH主站协议栈、网络设备驱动、IgH用户层接口库以及用户应用程序。具体介绍如下所述:

2.1 IgH主站协议栈

IgH主站协议栈源代码经编译后是一具体的ec_master.ko内核模块,EtherCAT功能集中实现在该模块中,另外该模块注册之后会在/dev路径下创建一个EtherCAT字符设备,如图 21所示。


图21 /dev路径下的EtherCAT0主站

用户程序操作EtherCAT主站,会通过用户层接口函数最终调用I/O系统的open,ioctl函数完成EtherCAT协议栈的执行。

2.2 网络设备驱动

针对SylixOS-IgH的网络设备驱动源代码经编译后是一具体的内核模块,其中通用网卡驱动模块命名为generic.ko,实时网卡驱动会根据使用网卡型号针对命名,如e1000e型号的网卡驱动模块为ec_e1000e.ko。网络设备驱动模块应该在主站模块注册之后再进行注册,因为主站模块注册后为孤立状态,会等待网路设备连入,网络设备驱动模块注册后,就有一个真正的物理网络接口负责收发EtherCAT数据包。其中所有内核模块均部署在/lib/modules路径下,如图 22所示。


图22 EtherCAT相关内核模块

2.2.2 通用网卡驱动

通用网卡驱动的实现是基于SylixOS已有LwIP协议完成EtherCAT数据包的收发工作,其实现原理如图 23所示。


图23 通用网卡驱动实现基本原理

2.2.2 实时网卡驱动

在真实应用场景中,EtherCAT软件主站都会搭配实时操作系统和实时网卡驱动,原因在于影响实时性的关键因素是操作系统和网卡驱动,如图 24所示。


图24 影响实时性关键因素

实时操作系统需要将过程数据准时送出,其实时性主要体现在周期性准时调用EtherCAT主站协议栈的发送函数,而网卡驱动也需要进行实时性优化,使其绕过LwIP协议栈中安全性检查、路由、出入队列、分片和重组等相对EtherCAT来说非必要的网络传输功能,以此来保证EtherCAT数据包"准时出发,路上不能耽误"。

2.3 IgH用户层接口

IgH用户层接口源代码编译后是一具体的动态库,IgH源代码把对EtherCAT主站字符设备的"ioctl"操作全部封装成用户层接口函数,这样用户不需要面对IgH协议栈底层实现,只需要了解IgH用户层接口函数的意义和使用方式即可。

2.4 IgH用户应用程序

这里要提到,SylixOS-IgH主站三种状态,如图 25所示。


图25 IgH主站状态和转化

主站模块注册之后,主站处于孤立状态;网络设备驱动模块注册之后,主站处于空闲状态;用户应用程序执行时,会先进行主站请求操作,接着配置从站并建立用户层过程数据和协议栈数据缓冲区的映射关系,最后进行激活主站的操作,主站处于运行状态。主站进入运行态之后,就可以进行周期性过程数据收发的行为了。

参考IgH源代码/examples/user/main.c中的程序执行流程,可以了解到使用IgH的主要接口,如图 26所示。


图26 用户应用程序流程

3 SylixOS使用步骤

SylixOS暂时不支持内核模块注册传入参数机制,因此用户如需使用SylixOS-IgH,可提前选择作为EtherCAT数据收发接口的网络设备,翼辉信息会根据用户硬件平台和网络设备对应MAC地址提供适配的主站内核模块。

1. 用户收到SylixOS-IgH_USER工程压缩包,如图 31所示。


图31 SylixOS-IgH_USER工程压缩包

2. 用户将SylixOS-IgH_USER工程压缩包解压后导入RealEvo-IDE集成开发环境,在工程属性中选择依赖的BASE工程,如图 32所示。


图32 工程属性配置

3. 选择工程文件上传的目标设备,如图 33所示。


图33 选择目标设备IP地址

4. 工程属性配置完成后,编译工程并部署到目标设备,如图 34所示。


图34 部署工程到目标设备

5. 主从站硬件设备自行连接上电。远程登录目标设备,注册IgH主站内核模块ec_master.ko,然后使用命令行工具查看主站状态,如图 35所示。


图35 注册主站模块并查看主站状态

6. 接着再注册网络设备驱动内核模块generic.ko,然后使用命令行工具查看主站状态,如图 36所示。



图36 注册网络设备驱动模块并查看主站状态

还可以通过"ethercatslaves"命令查看识别到的从站类型,如图 37所示。


图37 查看识别从站状态

7. 执行IgH测试例程,该例程会激活主站并发送过程数据将数字量I/O模块的8位输出LED指示灯1s闪烁一次,如图 38所示。


图38 激活主站并发送过程数据

至此,SylixOS上使用EtherCAT开源协议栈IgH的基本流程已描述完毕,另外还有一些点需要注意:


  • IgH协议栈使用时需要提前预知从站设备的拓扑结构,应用程序需要根据从站的拓扑结构提前配置好各个从站的位置信息,SDO/PDO信息,在主站激活后,会将提前预知的配置信息和实际读取从站寄存器获取的信息进行对比,只有匹配后从站才能进入OP状态;

  • SylixOS支持内核模块注册传入参数机制之后,用户可自行根据选定的EtherCAT报文网口修改网路配置文件;

  • EtherCAT开源协议栈IgH原生只支持Linux操作系统,SylixOS移植支持会尽可能保留用户层相同使用习惯,而IgH开源社区提供的资料并没有完全介绍用户层接口的使用和命令行工具的使用,暂时SylixOS-IgH也仅仅提供基础使用说明,其余功能的使用说明会在后续完善。


模块 用户 设备 驱动 如图 状态 网络 网卡 工程 接口 数据 网卡驱动 网络设备 内核 实时 程序 应用 应用程序 支持 配置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网的科技 唐信互联网科技 中国互联网金融科技基金 成都仁贤领冠互联网科技有限公司 成都互联网科技公司100强 以后互联网后是啥科技 互联网科技教育视频 互联网科技项目计划书材料类 港股科技和互联网 深圳市优智互联网科技有限公司 开一家科技互联网公司需要多少钱 国大互联网教育科技有限公司薪资 高科技互联网套路 南通创西澳互联网科技有限公司 黑云互联网科技有限公司 互联网安防科技感 从那以后互联网科技有限公司 新氧科技和美国互联网有关系吗 科技信息时代互联网发展 科技和互联网行业的特点 美国互联网科技巨头监管 互联网金融 科技金融 互联网科技视频 互联网 视角下的科技创新 互联网科技博客 互联网科技汛 广州优美互联网科技 乌苏新华互联网科技做什么的 信承诺互联网科技有限公司 云南互联网科技学费
0