扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

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

01/24 09:20
652
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在工业自动化领域,如何在通用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是发展最快的工业以太网协议之一,采用硬件驱动型架构,具有速度快、传输数据量大、传输距离长、更新周期小、连接设备数量多等多重优势。

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

它主要包括以下三部分:

1. Master Module

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

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

2. Device Modules

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

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

3. Application

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

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

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

压力测试:

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秒

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

拓扑结构图:

主站通过网线连接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信息:

操作步骤:

步骤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。

性能指标:

① 压力测试(6h)

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

./igh_ethercat_motor_csv

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

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

taskset -c 7 ./igh_ethercat_motor_csv

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

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

基本配置:

使用EtherCat调试工具输出的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。

性能指标:

① 压力测试(6h)

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

./igh_ethercat_motor_cst

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

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。

方案展示:

瑞芯微电子

瑞芯微电子

瑞芯微专注于移动互联网、数字多媒体芯片设计,是专业的个人移动信息终端SOC解决方案供应商。瑞芯微在移动互联网领域有多个较完整的自主创新的知识产权群,为中国电子业发展做出积极努力。目前产品涵盖Android平板电脑、Android电视机顶盒(智能电视)、电子书、WIFI/蓝牙音频解决方案等,目前已发展为领先的物联网(IoT)及人工智能物联网(AIoT)处理器芯片企业。

瑞芯微专注于移动互联网、数字多媒体芯片设计,是专业的个人移动信息终端SOC解决方案供应商。瑞芯微在移动互联网领域有多个较完整的自主创新的知识产权群,为中国电子业发展做出积极努力。目前产品涵盖Android平板电脑、Android电视机顶盒(智能电视)、电子书、WIFI/蓝牙音频解决方案等,目前已发展为领先的物联网(IoT)及人工智能物联网(AIoT)处理器芯片企业。收起

查看更多

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

秉承专业态度,专注智能设备核心平台研发与制造,以技术研发创新为主导,以客户实用化,产品化为目标,把握嵌入式行业的前沿发展需求,利用核心技术为客户提供稳定、可靠、功能优异的高品质产品。合作联系:17713286011