0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

周期抖动2μs!RK3576的IgH EtherCAT工业级主站方案很厉害

飞凌嵌入式 2026-01-23 11:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

工业自动化领域,如何在通用Linux系统上实现微秒级的硬实时控制,一直是机器人、多轴运动控制等高精度场景落地的关键挑战。开源的IgH EtherCAT Master协议栈,凭借其卓越的高实时性与低抖动特性,成为了连接工业现场总线与上层应用的核心桥梁。然而,要释放其全部潜能,离不开Preempt-RT实时内核的强力加持。

本文将基于飞凌嵌入式OK3576-C开发板,通过1ms周期同步速度模式与125μs周期同步转矩模式的实测对比,展示在CPU隔离核与满负载压力下,系统如何将通讯抖动控制在微秒级,为您呈现一套可落地的高性能实时工业控制完整方案。

先说结论,表现很强悍!

周期同步速度模式,周期抖动由6.3080μs降低为3.5790μs;

周期同步转矩模式,周期抖动由50.0470μs降低为2.1130μs!

1、IgH EtherCAT Master是什么?

在解答这个问题之前,先来看一下什么是EtherCAT ?EtherCAT是发展最快的工业以太网协议之一,采用硬件驱动型架构,具有速度快、传输数据量大、传输距离长、更新周期小、连接设备数量多等多重优势。

wKgZO2ly8LqASxQ0ACy-ibhtLB0824.gif

IgH EtherCAT则是运行于Linux系统的开源EtherCAT主站程序,IgH EtherCAT主站通过构建Linux字符设备,应用程序通过对字符设备的访问实现与EtherCAT主站模块的通信

wKgZO2ly8LiAN-o6AAARYjjjw-k461.png

它主要包括以下三部分:

1. Master Module

角色:EtherCAT 主站的“大脑”和内核。

功能:负责管理 EtherCAT 总线通信,实现主站与从站间的数据交换与同步。它包含主站实例及供底层驱动和上层应用调用的接口

2. Device Modules

角色:经过实时性优化的“网卡驱动”(如瑞芯微RK平台的 stmmac)。

功能:作为主站与物理网口的桥梁。它能智能分流:被主站选中的设备用于收发 EtherCAT 帧;未被选中的设备则作为普通以太网设备走常规协议栈,实现 EtherCAT 与普通网络的并行工作。

wKgZPGly8LiAL_dqAAAV2vU3hXc011.png

3. Application

角色:业务逻辑的执行者(用户编写或生成)。

功能:通过应用接口向主站申请总线控制权。一旦获准,即可配置总线并进行周期性的过程数据交换。应用程序既可以是内核模块,也可以是通过库(EtherCAT/RTDM)调用的用户空间程序。

wKgZPGly8LmATHW7AAQ3gCkFfyw307.png

评论区留言【资料】,即可获得IgH EtherCAT Master官方源码及技术手册的下载方式。

2、实时内核Preempt-RT

1. 独具优势:

IgH EtherCAT Master要保证高实时性,需要在实时操作系统上运行。Preempt-RT是一种针对实时性能进行了优化的Linux内核,与普通的Linux内核相比,Preempt-RT的优势很明显:

① 硬实时保障:

具备硬实时能力,能确保关键任务在严格规定的时限内完成,不受其他任务干扰,满足工业自动化、航空航天等对时间精度极高的场景需求。

② 高效调度与低延迟:

采用基于优先级的抢占式调度算法,高优先级任务可立即抢占低优先级任务;同时深度优化中断处理机制,大幅缩短响应时间,消除系统抖动。

③ 高精度定时:

提供微秒级的内核定时器精度,配合实时扩展机制,支持用户对内核进行定制,精准满足EtherCAT通信的周期性数据交换需求。

2. 实时性测试

本次测试参考Rockchip RealTime Linux Performance Test Report,分为空载测试和压力测试。测试的环境如下:

① 工具:cyclictest

② 硬件平台:OK3576-C开发板

③ 内核版本:6.1.118-rt36

④ Path:SDK/docs/rk35xx/Patches/Real-Time-Performance/PREEMPT_RT/kernel-6.1/kernel-6.1.118

a. 配置Preempt-RT内核,可以参考用户资料:/1-手册/OK35xx-Linux6.1.118-配置实时内核方法.pdf

b. 不同硬件平台的实时性测试结果,可以参考用户资料:/1-手册/OK35xx-Linux6.1.118-实时性测试.pdf

空载测试:

cyclictest -c 0 -m -t 8 -p99 -D12H

参数介绍:

  • -c 0:选择时钟源为CLOCK_MONOTONIC
  • -m:锁定内存,防止内存页交换到磁盘
  • -t 8:创建8个测试线程
  • -p 99:设置线程的优先级为99
  • -D 12h:设置测试持续时间为12h
wKgZO2ly8LiADozlAAECpXkG-2A177.png

压力测试:

stress-ng -c8 --io 8 --cpu-load 100 -vm 4 --vm-bytes 512M --timeout 10000000s &

参数介绍:

  • -c 8:模拟8个CPU逻辑核心满负荷运行
  • --io 8:模拟磁盘I/O压力
  • --cpu-load 100:设定 CPU 的目标负载为 100%
  • --vm 4 --vm-bytes 512M:模拟内存压力
  • --timeout 10000000s:设置测试持续时间为10000000秒
wKgZO2ly8LmAWIWQAAEkDQTH1Gs615.png

3、演示案例

本节的演示选取周期同步速度模式(通讯周期时间为1ms)与周期同步转矩模式(通讯周期时间为125μs)驱动伺服电机转动。

1. 环境介绍

开发环境:

  • Kernel:6.1.118-rt36
  • IgH EtherCAT Master:IgH EtherCAT master 1.6.0-rc1
  • EtherCAT主站:OK3576-C
  • EtherCAT从站:
  • (1)EtherCAT耦合器EK1100
  • (2)数字量输出模块EL2008
  • (3)伺服驱动器IS620NS1R6I + 伺服电机MS1H1-10B30CB A330Z

拓扑结构图:

wKgZO2ly8LmAAeHOAAIrvq-vALE547.png

主站通过网线连接EtherCAT耦合器EK1100,EK1100通过E-Bus连接数字量输出模块EL2008、通过网线连接伺服驱动器IS620N,交流伺服电机MS1H1-10B30CB通过动力线和编码线与伺服驱动器IS620N相连。

使用EtherCat调试工具输出识别到的从站:

wKgZPGly8LmAVJ1JAAAwj2D3Wto264.png

使用EtherCat调试工具输出总线拓扑:

wKgZPGly8LqAfo1gAACV6QFEeTk568.png

2. 伺服模式

IS620N 支持 7 种伺服模式,分别为轮廓位置模式(PP)、轮廓速度模式(PV)、轮廓转矩模式(PT)、回零模式(HM)、周期同步位置模式(CSP)、周期同步速度模式(CSV)、周期同步转矩模式(CST)。

不同模式支持的通讯周期不同,如下所示:

wKgZO2ly8LqASrTYAACzEsjWMPg584.png

3. 主站性能测试方法

以下定义参考:Definitions of Jitter and Latency

wKgZPGly8LqADyKNAACxhIcCjSE623.png

参考官方示例代码:

examples/dc_user/main.c · stable-1.5 · EtherLab / EtherCAT Master · GitLab

里面有实现统计一个通讯周期的所花费的最大值和最小值。以1s为周期循环打印该区间EtherCAT通讯周期时间的最大值和最小值。

wKgZPGly8LqAcVHXAAAxURZg3IE130.png

演示一:周期同步速度模式(1ms)

周期同步速度模式下,上位控制器将计算好的目标速度 60FF 周期性同步发送给伺服驱动器,速度、转矩调节由伺服内部执行。

基本配置:

wKgZO2ly8LuAWWssAAEnqgYypfA856.png

使用EtherCat调试工具输出的pdo信息:

wKgZO2ly8LqAKTxbAAA8O0qP4mw952.png

操作步骤:

步骤1:设定模式,OD 6060h = 09h,周期同步速度模式。

步骤2:设定目标速度,OD 60FFh = 0。由于速度模式下,一旦切至 Servo On (步骤 3),伺服电机就会开始运转,因此设定 0 是确保在 Servo On 时先保持 0 rpm 而不作动。

步骤3:设定控制指令 OD 6040h,请依照以下步骤操作。步骤 3.1 与 3.2 是为了使驱动器的状态机 (state machine) 进入准备状态。

wKgZPGly8LqAI2YdAACpseAit3Y943.png

步骤4:设定目标速度 OD 60FFh。

性能指标:

① 压力测试(6h)

stress -c 4 --io 2 --vm 1 --vm-bytes 256M --timeout 1000000s&

./igh_ethercat_motor_csv

wKgZO2ly8LqAAiugAABLeboMEoU296.pngwKgZPGly8LuAD45LAADlUNHUa9U824.png

② 隔离测试+隔离核(6h)

stress -c 4 --io 2 --vm 1 --vm-bytes 256M --timeout 1000000s &

taskset -c 7 ./igh_ethercat_motor_csv

wKgZO2ly8LuAJQigAABJISFtopQ866.pngwKgZO2ly8LuAYCiQAADn_TIMgJw909.png

演示二:周期同步转矩模式(125μs)

此模式下,上位控制器将计算好的目标转矩 6071h 周期性同步的发送给伺服驱动器,转矩调节由伺服内部执行。当速度达到限幅值后将进入调速阶段。

基本配置:

wKgZPGly8LuAGwbMAAFRC4PZPLo178.png

使用EtherCat调试工具输出的pdo信息:

wKgZPGly8LuATjIsAAA_WRF1QZs164.png

操作步骤:

步骤1:设定模式,OD 6060h = 0Ah,周期同步转矩模式。

步骤2:设定目标扭矩,OD 6071h = 0。由于扭矩模式下,一旦切至Servo On (步骤 3),伺服目标扭矩即作用,因此先设定 0,以确保安全。

步骤3:设定控制指令,OD 6040h,请依照以下步骤操作。步骤 3.1 与 3.2 是为了使驱动器的状态机 (state machine) 进入准备状态。

wKgZO2ly8LuAdAXtAACr67gqOIg049.png

步骤4:设定目标扭矩 OD 6071h。

性能指标:

① 压力测试(6h)

stress -c 4 --io 2 --vm 1 --vm-bytes 256M --timeout 1000000s&

./igh_ethercat_motor_cst

wKgZPGly8LuADUuHAABIW_-HUvQ154.pngwKgZPGly8LyAaRFAAADk9w-ydG8376.png

② 压力测试+隔离核(6h)

stress -c 4 --io 2 --vm 1 --vm-bytes 256M --timeout 1000000s &

taskset -c 7 ./igh_ethercat_motor_cst

wKgZPGly8LyAHbUFAABJLr81ys4985.pngwKgZO2ly8LyAUUIEAADfx0JT8Jc467.png

以上测试对未及时收回来的数据帧时统计的周期样本进行剔除,在跑125μs周期,帧未及时收回来的情况会更加频繁。

两种演示的性能测试,应用程序都采用FIFO调度+内存锁定;在采取隔离核策略时,系统的周期抖动降低。

  • 周期同步速度模式,周期抖动由6.3080μs降低为3.5790μs。
  • 周期同步转矩模式,周期抖动由50.0470μs降低为2.1130μs。

方案展示:

wKgZPGly8L6Ac2orADkS1DfNXvI423.gif
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5209

    文章

    20629

    浏览量

    336811
  • ethercat
    +关注

    关注

    20

    文章

    1577

    浏览量

    46059
  • EtherCAT主站
    +关注

    关注

    2

    文章

    36

    浏览量

    4495
  • preempt-rt
    +关注

    关注

    0

    文章

    6

    浏览量

    1836
  • rk3576
    +关注

    关注

    1

    文章

    294

    浏览量

    1668
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RK3568-IgH EtherCAT站开发案例

    RK3568-IgH EtherCAT站开发案例
    的头像 发表于 01-19 15:20 3382次阅读
    <b class='flag-5'>RK3568-IgH</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>主</b>站开发案例

    如何移植EtherCAT Igh--基于米尔RK3576开发板

    本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微RK3576开发板)的板端移植EtherCATIgh方案的开发测试。摘自优秀创作者-EPTmachine米尔基于瑞芯微RK357
    的头像 发表于 09-26 08:04 1w次阅读
    如何移植<b class='flag-5'>EtherCAT</b> <b class='flag-5'>Igh</b>--基于米尔<b class='flag-5'>RK3576</b>开发板

    基于全志T507-H的Igh EtherCAT案例分享

    基于全志T507-H的Linux-RT + IgH EtherCAT演示 下文主要介绍基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板)案例,按照创龙科技提供的案
    发表于 06-03 09:59

    基于全志T507-H的Linux-RT + Igh EtherCAT案例分享

    Plus等平台也提供了开源EtherCATIgH案例。Linux-RT系统的优势 - 内核开源、免费、功能完善。- RT PREEMPT补丁,使Linux内核成为硬实时操作系统,
    发表于 07-17 11:18

    【米尔RK3576开发板免费体验】3、移植EtherCAT Igh

    .config rockchip_linux_docker.config rockchip_rt.config 指令中/path/to/SDK为SDK的安装路径。 2EtherCAT IGH编译和安装 下载
    发表于 07-21 10:35

    【作品合集】米尔RK3576开发板测评

    输出 【米尔RK3576开发板免费体验】3、移植EtherCAT Igh 【米尔RK3576开发板免费体验】4、移植SOEM
    发表于 09-11 10:19

    如何米尔RK3576开发板上移植EtherCAT Igh

    本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的板端移植EtherCAT Igh方案的开发测试。摘自
    发表于 09-26 16:02

    开源IgH EtherCAT方案,基于IMX8、ZYNQ、AM335x、T3等平台

    :latency:等待唤醒时间。period:EtherCAT通讯周期时间。exec:接收和发送EtherCAT数据时间。4、案例编译4.1IgH
    发表于 09-17 17:14

    EtherCAT igh是如何控制松下伺服(csp模式)的

    EtherCAT igh是如何控制松下伺服(csp模式)的?怎样去编写其代码?
    发表于 10-08 06:12

    开源!ZYNQ IgH EtherCAT方案分享

    前 言:创龙科技已基于IMX8、ZYNQ、AM5728、AM5708、AM437x、AM335x、T3/A40i等平台提供了开源EtherCATIgH案例。本文主要演示
    发表于 10-29 11:17

    RK3576单板发布倒计时:RK3399与RK3576对比

    好多人说RK3576RK3399的升级版,某种程度上也可以这么说,RK3576在强大的多媒体功能的基础上,性能和接口都进行了升级 一、工艺 性能 rk3576采用 Rockchip
    的头像 发表于 12-03 16:59 2754次阅读
    <b class='flag-5'>RK3576</b>单板发布倒计时:<b class='flag-5'>RK</b>3399与<b class='flag-5'>RK3576</b>对比

    瑞芯微RK3576RK3576S有什么区别,性能参数配置与型号差异解析

    瑞芯微第二代8nm高性能AIOT平台RK3576家族再添新成员-RK3576S,先说结论:相较型号的RK3576/RK3576J,性能略有
    的头像 发表于 08-14 23:57 2684次阅读
    瑞芯微<b class='flag-5'>RK3576</b>与<b class='flag-5'>RK3576S</b>有什么区别,性能参数配置与型号差异解析

    创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—IgH EtherCAT站开发案例(上)

    /SCHED_DEADLINE 模式在空载 / 满负荷状态测试)、编译(程序与 igh_ethercat_dc_motor 案例编译)及关键代码。案例以 1ms EtherCAT
    的头像 发表于 10-14 11:55 772次阅读
    创龙 瑞芯微 <b class='flag-5'>RK</b>3588 国产2.4GHz八核 <b class='flag-5'>工业</b>开发板—<b class='flag-5'>IgH</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>主</b>站开发案例(上)

    创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—IgH EtherCAT站开发案例(下)

    /SCHED_DEADLINE 模式在空载 / 满负荷状态测试)、编译(程序与 igh_ethercat_dc_motor 案例编译)及关键代码。案例以 1ms EtherCAT
    的头像 发表于 10-15 15:06 738次阅读
    创龙 瑞芯微 <b class='flag-5'>RK</b>3588 国产2.4GHz八核 <b class='flag-5'>工业</b>开发板—<b class='flag-5'>IgH</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>主</b>站开发案例(下)

    工业设计揭秘:迅为RK3576如何保证-40℃到85℃稳定运行?

    工业设计揭秘:迅为RK3576如何保证-40℃到85℃稳定运行?
    的头像 发表于 02-28 15:56 225次阅读
    <b class='flag-5'>工业</b><b class='flag-5'>级</b>设计揭秘:迅为<b class='flag-5'>RK3576</b>如何保证-40℃到85℃稳定运行?