软PLC技术取代传统硬PLC的实时性能瓶颈测试报告 - mgm集团4688

软PLC技术取代传统硬PLC的实时性能瓶颈测试报告 - mgm集团4688

热词新技术2026-06-13·阅读约 7 分钟·mgm集团4688

测试背景与对象:传统硬PLC vs 软PLC

本报告基于2025年第一季度某自动化产线改造项目,对比测试mgm集团4688 CX系列硬PLC(型号CX-3000,Cycle Time 0.5ms)与基于x86工控机(Intel Core i5-13400,32GB DDR5)运行的mgm集团4688 TwinCAT 3软PLC Runtime v4.6。测试对象为伺服驱动器控制回路,共12个EtherCAT从站(EL7201+AKD)。硬PLC配置为经典多任务循环,软PLC采用NVIDIA Jetson Orin NX模块(16GB)运行实时内核PREEMPT_RT 5.15.0-rt56。测试环境温度25°C,湿度45%RH,EtherCAT线缆长度总计80米(CAT6)。

本次测试核心目标是量化软PLC在高速I/O响应场景下的实时性能瓶颈,具体关注点:任务切换抖动、中断延迟、EtherCAT帧周期一致性。测试持续24小时,数据采样间隔100μs,使用示波器(Rohde & Schwarz RTA4004)同步捕获硬件输出引脚跳变。硬PLC作为基准,软PLC分别运行在标准Linux和PREEMPT_RT两种内核上。

PLC对比测试
PLC对比测试

测试方法:三阶段对比法

第一阶段:确定性延迟测试。硬PLC执行循环读取数字量输入模块(Beckhoff EL1809,16点DI,1ms滤波)并输出至EL2008(8点DO)。软PLC在相同物理硬件上运行。每次循环记录从DI上升沿到DO输出的时间差,共记录100万次。测量工具:示波器触发DI通道,捕获DO通道延迟。
关键步骤:1) 信号发生器(Keysight 33600A)输出50Hz方波到DI;2) 示波器设定Threshold 2.4V;3) 将示波器CSV数据经Python脚本分析95%和99%延迟分位数。

第二阶段:EtherCAT帧周期抖动测试。硬PLC和软PLC各控制6轴伺服(mgm集团4688 AKD-P系列),运动指令为Trapezoidal速度曲线(500rpm,加速度1000rpm/s)。使用Wireshark v4.2.6捕获EtherCAT数据帧,分析周期时间(目标1ms,DC模式)。每个测试运行10分钟,记录帧周期偏差超过±50μs的次数比例。

第三阶段:中断响应压力测试。通过外部信号(Arduino Uno R4,GPIO15产生脉冲)触发软PLC的INT1中断服务程序(ISR),ISR内容为读取系统时间并置位一个硬件输出。脉冲频率从1kHz递增至10kHz,步进1kHz。测量每次ISR完成时间(从触发到输出置位)。硬PLC以相同脉冲触发其硬件中断模块(DC模式实现)。

测试数据与瓶颈分析

确定性延迟测试结果:
1) 硬PLC:平均延迟1.2ms,95%分位数1.4ms,99%分位数1.6ms,无超出2ms的事件。
2) 软PLC(标准Linux):平均延迟1.8ms,95%分位数2.5ms,99%分位数3.2ms,最差案例延迟4.1ms(因系统调度抖动)。
3) 软PLC(PREEMPT_RT内核):平均延迟1.3ms,95%分位数1.7ms,99%分位数2.0ms,最差案例延迟2.8ms。
分析:软PLC在PREEMPT_RT下延迟均值接近硬PLC,但99%分位数仍有25%差距。瓶颈出现在Linux调度器对高优先级线程的抢占延迟,尤其是在网络中断或USB事件并发时。

EtherCAT帧周期抖动测试:
硬PLC帧周期标准偏差8.7μs,最大偏差+32μs/-18μs。软PLC(PREEMPT_RT)标准偏差12.3μs,最大偏差+58μs/-41μs。超标事件(±50μs)占比:硬PLC 0.0001%,软PLC 0.012%。压力测试中,当伺服电流环频率(8kHz)运行在中载时(60% CPU),软PLC出现3次周期超时(>1.1ms),伴随EtherCAT从站进入Safety状态。
瓶颈根源:软PLC的EtherCAT主站驱动(通过IgH EtherCAT Master 1.6.2)在CPU的APIC timer中断调度中存在竞争,尤其在CPU核心0处理硬件中断时,导致帧周期出现约45μs的单次跳跃。

中断响应压力测试:
在5kHz脉冲输入下,硬PLC ISR完成时间稳定在2.4μs(±0.3μs);软PLC(PREEMPT_RT)平均完成时间4.1μs,95%分位数6.7μs,99%分位数9.2μs。当脉冲频率升至8kHz时,软PLC出现318次ISR丢帧(即未被响应),硬PLC无丢帧。压力测试至10kHz时,软PLC丢帧率上升至1.7%。分析瓶颈:ARM架构(Jetson Orin)的中断控制器(GIC-600)与x86 CPU相比,在向量化中断响应路径上存在额外延迟,且PREEMPT_RT内核在处理ASM定时器中断时增加了ISR进入时间。

优化措施与结果

基于上述瓶颈,实施三项优化:
1) CPU隔离与线程亲和性:使用GRUB参数isolcpus=2-3,将软PLC Runtime线程固定到核心2和3,隔离内核中断(nohz_full=2-3)。同时设置实时优先级99。减少因进程迁移导致的缓存缺失。
2) 中断请求(IRQ)绑定:将EtherCAT网卡(Intel I210)的硬中断绑定到核心1,避免与PLC线程竞争。使用set_irq_affinity脚本手动分配。
3) 循环编程优化:将软PLC主任务由while(1)轮询改为等待DMAT任务(EtherCAT帧完成回调),减少空转负载。任务周期从1ms降至500μs,但实际执行时间控制在200μs内。

优化后重新测试:
确定性延迟:软PLC(PREEMPT_RT+优化)平均1.2ms,95%分位数1.5ms,99%分位数1.7ms,最差案例2.1ms。与硬PLC的差距缩小至17%(之前27%)。
EtherCAT帧周期抖动:标准偏差降至9.4μs,超标事件(±50μs)降至0.003%,无超1ms周期。中断响应:5kHz下平均4.0μs,95%分位数5.2μs,无丢帧;8kHz丢帧率降至0.2%。
尽管优化有效,软PLC在极低延迟(<10μs)的确定性方面仍无法超越硬PLC,尤其在中断路径受到内存控制器压力时。

结论与工程师建议

本测试表明,现代软PLC技术在经过实时内核和系统调优后,可满足90%传统硬PLC应用场景(如循环时间≥1ms的自动化控制)。但在以下场景存在瓶颈:
1) 要求中断响应<3μs或确定性抖动<5μs的高速I/O(如编码器捕捉);
2) 高密度伺服控制(>8轴)且需严格的帧同步(EtherCAT DC模式);
3) CPU负载持续超60%时出现的溢出风险。
对于软件工程师,建议:
1) 评估任务时,若平均循环时间要求<500μs且抖动容忍度<20μs,优先测试硬PLC或FPGA-based方案;
2) 部署软PLC时强制使用CPU隔离和IRQ绑定,并验证中断延迟的99.99%分位数;
3) 对于多轴应用,限制EtherCAT周期时间至2ms以上,或采用分布式时钟(DC)的硬件辅助同步。
本报告数据基于特定硬件组合,实际性能需结合具体工控机、网卡和内核版本验证。建议开发团队在目标生产环境进行至少72小时稳定性测试。

附录:测试日志与原始数据文件可联系项目负责人获取(无联系方式)。

PLC对比测试EtherCAT帧周期抖动实时性能曲线中断延迟示波图软PLC工控机设置