跳到主要内容

打造专业工控系统

本文介绍如何将一台标准 PC 配置为专业级 EtherCAT 工控系统。 通过硬件层和应用层的逐步优化,可在普通硬件上实现接近专用控制卡的实时性能。

诊断指标说明

优化前后,通过诊断面板验证效果:

指标含义
抖动 (均/峰)平均抖动 / 峰值抖动。平均反映常态性能,峰值包含硬件干扰
干净最大抖动排除硬件干扰 (SMI) 后的最大抖动,反映系统真实实时性能
往返延迟 (RTT)EtherCAT 帧从发送到接收的往返时间
应用抖动PDO 数据到达用户程序的时序偏差
SMI 次数受硬件中断干扰的周期累计数
发送频率实际 PDO 帧发送频率
离线从站当前掉线的从站数量
丢包率帧丢失比例
如何判断抖动来源
  • 平均抖动低 (< 10μs)、峰值高 (> 100μs) → 硬件层干扰 (SMI),需要 BIOS 优化
  • 平均和峰值都高 → 系统负载过重,需要应用层优化
  • 总线抖动低、应用抖动高 → 用户进程调度问题,需要提升进程优先级

硬件层优化

硬件层优化在 BIOS 中完成,一次设置、永久生效,对 Windows 和 Linux 通用。 这是实时性改善最显著的一步。

必须禁用

BIOS 选项为什么影响实时性预期改善
USB Legacy SupportBIOS 周期性中断 CPU 模拟传统键鼠,每次 50~200μs抖动尖峰大幅减少
C-States (C1E, C3, C6 等)CPU 休眠/唤醒产生额外延迟 50~200μs消除电源状态切换抖动
Intel SpeedStep / AMD Cool'n'Quiet动态调频过程中断 CPU消除调频相关抖动
Intel Turbo Boost / AMD PBO睿频切换过程中断 CPU消除频率切换瞬变

建议禁用

BIOS 选项原因
IPMI/BMC 轮询服务器主板的管理芯片周期性中断 CPU
Serial Port (COM) Legacy串口模拟可能产生额外中断
BIOS 温控 (Hardware Monitor)部分 BIOS 周期性中断 CPU 读取温度传感器,可改为 OS 层温控

建议开启

BIOS 选项原因
Performance Mode固定 CPU 最高频率,避免任何调频行为
Hyper-Threading (视情况)关闭可减少核心间干扰,但总核心数减半

应用层优化

Windows

1. 安装驱动

随驱动附带安装脚本,以管理员身份运行即可完成驱动部署、系统时钟优化和中断亲和性配置。首次安装需重启。

2. 电源计划

将 Windows 电源计划切换为高性能终极性能,并在高级设置中确认:

设置推荐值
处理器最小/最大状态100%
关闭硬盘从不
USB 选择性暂停已禁用
PCI Express 链路状态电源管理关闭

3. 网卡驱动

EtherCAT 专用网卡建议在 设备管理器 → 网络适配器 → 属性 → 高级 中关闭以下功能:

设置推荐值说明
Interrupt Moderation禁用减少帧接收延迟
Receive Side Coalescing禁用避免帧被合并延迟交付
Energy Efficient Ethernet禁用避免链路层休眠唤醒延迟
Flow Control禁用EtherCAT 不需要流控

4. 精简系统

操作说明
禁用 Windows Search 服务消除索引磁盘/CPU 活动
禁用 SysMain 服务消除预读磁盘活动
暂停 Windows Update避免后台更新占用 CPU
Defender 添加排除目录避免实时扫描干扰
退出 OneDrive / 云同步避免后台文件同步
使用 IoT Enterprise LTSC最精简的 Windows 版本
极致精简

最终系统只保留运行时环境 + 网卡驱动 + 应用程序,启动时直接运行应用,不启动资源管理器。

Linux

1. 内核参数

# /etc/default/grub
GRUB_CMDLINE_LINUX="idle=poll processor.max_cstate=0 intel_idle.max_cstate=0"
参数说明
idle=poll禁用 CPU 空闲休眠
processor.max_cstate=0禁用 C-States

2. 实时内核

# Ubuntu/Debian
sudo apt install linux-image-rt-amd64

# 或手动编译 PREEMPT_RT 补丁内核

3. 进程优先级

# 使用实时调度策略
sudo chrt -f 80 ./your-application

# 绑定到指定核心
sudo taskset -c 1 ./your-application

4. 精简系统

# 禁用不必要的服务
sudo systemctl disable NetworkManager bluetooth cups avahi-daemon snapd

# 最小化安装,不安装桌面环境

优化效果参考

实时性指标

指标未优化硬件层优化全部优化
平均抖动5~30μs3~10μs1~5μs
峰值抖动100~300μs5~50μs< 10μs
干净最大抖动10~50μs3~10μs1~5μs
应用抖动50~1000μs50~500μs< 50μs
SMI 次数/秒10~3000~50~2

系统健康指标

下表对比了普通系统深度优化后的工控系统 的典型表现:

指标普通系统工控系统 (目标)
开机到应用就绪30~60 秒< 12 秒
后台进程数150~300< 50
后台线程数1500~3000< 600
CPU 空闲占用3~10%< 1%
内存占用 (空闲)3~5 GB< 1.5 GB
磁盘活动 (空闲)持续读写接近 0

业务执行指标

指标目标值说明
PDO 回调执行时间< 周期的 50%用户业务逻辑不应超过半个周期
控制算法单次耗时< 100μs运动插补、PID 计算等核心算法
GC 暂停 (.NET/Java)< 1ms托管语言的垃圾回收暂停会阻塞回调

内存与资源

指标目标值说明
应用内存占用稳定不增长持续运行数小时后内存不应持续上涨,否则存在泄漏
页面错误/秒< 10大量页面错误说明内存不足,触发磁盘交换导致卡顿
句柄数稳定不增长文件/Socket/事件句柄持续增长 = 资源泄漏
虚拟内存 (Commit)< 物理内存 80%超过后系统开始使用交换文件,实时性急剧下降
内核池占用< 200 MB非分页池过大说明驱动存在内存泄漏
内存泄漏检测

工控系统通常需要 7×24 小时连续运行。建议在部署前执行 24 小时压力测试,每小时记录内存占用,确认无持续增长趋势。

可靠性

指标目标值说明
连续运行时间> 7 天不重启、不崩溃、不卡死
WKC 匹配率100%任何 WKC 不匹配都意味着总线通信异常
从站掉线次数0正常运行期间不应有从站掉线
丢包率0%EtherCAT 基于以太网,物理层问题会导致丢包
应用异常捕获全覆盖所有 PDO 回调中的异常必须捕获,未捕获异常可能导致总线停止
看门狗触发0 次用户程序卡死时内核看门狗会停止发送,需排查卡死原因
蓝屏/死机0 次排查驱动兼容性、内存硬件、电源稳定性
线缆/接头质量工业级使用屏蔽网线、工业级 RJ45 接头,避免接触不良
长期运行建议
  • 启用 从站看门狗 (Slave Watchdog),主站异常时从站自动进入安全状态
  • 启用 主站看门狗 (Master Watchdog),用户程序卡死时自动停止发送过期数据
  • 记录 诊断日志,定期检查 WKC 不匹配、端口错误计数等趋势
  • 使用 UPS 不间断电源,避免突然断电导致数据丢失或从站状态异常
  • 关闭 Windows 自动更新重启,或使用 组策略/注册表 禁止自动重启
如何检查系统状态

Windows: 任务管理器 → 性能 → 打开资源监视器,观察 CPU/磁盘/网络/内存活动

Linux: htop 查看进程/线程/内存,iostat 查看磁盘活动,vmstat 查看页面错误

大多数场景

只需完成 BIOS 电源管理 + 系统电源计划两步,即可满足包括人形机器人、CNC 在内的 99% 项目需求。

全部优化后,可在标准硬件上实现 < 5μs 帧发送抖动,接近专用 EtherCAT 主站卡的性能水平。

需要更高实时性?

如需业务逻辑层的硬实时执行(微秒级运动插补、确定性控制周期),标准 Windows/Linux 用户态无法满足。

我们提供类 TwinCAT 软PLC 完整内核硬实时方案,请联系我们