瑞芯微RK3576 +Preempt-RT实测,EtherCAT抖动低至2.113μs

原创 作者 飞凌嵌入式 2026-01-26 15:25:00 RK3576 rk3576开发板 Preempt RT EtherCAT

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

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

实测性能表现

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

IgH EtherCAT Master是什么?

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

EtherCAT工作原理示意图

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

它主要包括以下三部分:

1. Master Module

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

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

2. Device Modules

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

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

3. Application

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

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

应用层架构示意图

重要资源:点击左侧在线,即可获得IgH EtherCAT Master官方源码及技术手册的下载方式。

实时内核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

空载测试结果示意图

压力测试:

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秒

压力测试结果示意图

演示案例

本节的演示选取周期同步速度模式(通讯周期时间为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

拓扑结构图:

系统拓扑结构图

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

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

从站识别

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

总线拓扑

2. 伺服模式

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

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

伺服模式通讯周期表

3. 主站性能测试方法

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

抖动和延迟定义

参考官方示例代码:examples/dc_user/main.c · stable-1.5 · EtherLab / EtherCAT Master · GitLab

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

示例代码

代码示意图

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

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

基本配置:

周期同步速度模式基本配置

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

周期同步速度模式PDO信息

操作步骤:

步骤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) 进入准备状态。

控制指令设置步骤

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

性能指标:

① 压力测试
stress -c 4 --io 2 --vm 1 --vm-bytes 256M --timeout 1000000s&
./igh_ethercat_motor_csv

压力测试结果

② 隔离测试+隔离核
stress -c 4 --io 2 --vm 1 --vm-bytes 256M --timeout 1000000s &
taskset -c 7 ./igh_ethercat_motor_csv

隔离测试结果

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

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

基本配置:

周期同步转矩模式基本配置

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

周期同步转矩模式PDO信息

操作步骤:

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

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

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

转矩模式控制指令设置

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

性能指标:

① 压力测试
stress -c 4 --io 2 --vm 1 --vm-bytes 256M --timeout 1000000s&
./igh_ethercat_motor_cst

转矩模式压力测试结果

② 压力测试+隔离核
stress -c 4 --io 2 --vm 1 --vm-bytes 256M --timeout 1000000s &
taskset -c 7 ./igh_ethercat_motor_cst

转矩模式隔离测试结果

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

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

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

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

方案展示:

完整方案展示

完整的软硬件生态系统

飞凌嵌入式提供从硬件到软件的全栈解决方案,确保您的工业自动化项目快速落地

RT

实时内核优化

深度优化的Preempt-RT实时内核,确保微秒级硬实时性能,满足高精度运动控制需求

ME

技术咨询服务

我们的技术专家团队可为您提供从方案选型到产品落地的全程技术支持,帮助您快速实现产品开发

SDK

全面开发支持

提供完整的BSP、驱动、示例代码和技术文档,大幅缩短开发周期

以上就是基于飞凌嵌入式RK3576开发板的Preempt-RT+IgH EtherCAT Master演示案例,希望能够对您有所帮助。

RK3576核心板

相关产品 >

  • FET3568-C核心板

    RK3568性能强而稳 国产芯|飞凌嵌入式RK3568系列核心板,采用瑞芯微国产高性能AI处理器RK3568设计生产,RK3568兼具CPU、GPU、NPU、VPU于一身,RK3568 性能、性价比在同类产品中具有较高优势,RK3568处理器是一款定位中高端的通用型SoC, 飞凌RK3568核心板主要面向工业互联网、HMI、NVR存储、车载中控、工业网关等领域。目前RK3568系列已经批量稳定出货

    了解详情
    FET3568-C核心板
  • FET3588-C核心板

    RK3588芯片系列是Rockchip推出的旗舰级工业级产品,采用先进的8nm制程工艺,集成4核Cortex-A76+4核Cortex-A55架构,A76主频高达2.4GHz,A55核主频高达1.8GHz,能够提供强大的性能支撑。飞凌FET3588-C核心板经过了严苛的环境温度测试和压力测试,确保在高端应用中能够稳定运行。您可以通过飞凌提供的rk3588开发套件充分评估和验证其性能。

    了解详情
    FET3588-C核心板
  • FET3576-C核心板

    飞凌嵌入式RK3576核心板集成了强大的处理器和丰富的接口,提供出色的计算能力和扩展性。RK3576核心板以其卓越的性能、低功耗和稳定性,成为工业、AIoT、边缘计算、智能移动终端等领域的理想选择。无论是数据处理还是边缘计算,RK3576都能为项目提供强大的硬件支持。核心板推荐选择飞凌嵌入式瑞芯微系列RK3576J业级核心板、RK3576高性能核心板 了解详情
    FET3576-C核心板
  • FET3562J-C核心板

    RK3562核心板,采用高性能低功耗工业级芯片RK3562J设计,RK3562J是瑞芯微专为工业自动化及消费类电子设备打造的一款高性能、低功耗国产化应用处理器,集成了4个ARM Cortex-A53高性能核,主频高达1.8GHz。RK3562核心板采用3组80Pin板对板连接器,可插拔式设计便于产品的安装与维护。 了解详情
    FET3562J-C核心板

推荐阅读 换一批 换一批