跳到主要内容

打造专业工控系统

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

实时方案分级

Darra EtherCAT 提供三个等级的实时方案。T1 为随 SDK 标配的默认方案; T2 / T3 为面向更严苛硬实时场景的定制方案, 按需提供。

方案实时等级实现方式对应产品形态
T1软实时WDK 内核驱动 + 核隔离随 SDK 标配, 开箱即用
T2硬实时Hyper-V minroot + CPU groups, RT 跑独占分区Hypervisor 隔离版 (提供定制)
T3硬实时自写 HAL 扩展抢核后续随其他产品发布
方案选择

绝大多数工业场景 T1 软实时 (帧抖动 < 1μs) 已足够。仅当业务逻辑本身需要硬实时保证 (而非仅帧时序) 时, 才需要 T2 / T3 定制方案。
SMI 注:无论 T1/T2/T3,主板固件 SMM(电源管理/USB Legacy/温控等)引发的 SMI 抖动软件层都消不掉,必须 BIOS 抑制(关 C-state/锁频/关 USB Legacy 等),Intel TCC 平台已在固件层打包大部分该调优。

推荐系统版本

不同 Windows 版本对实时模式的支持差异显著, 生产部署优先选择下表 ★★★★★ 的版本:

系统实时支持评级定位
Windows 10 IoT Enterprise LTSC完整支持, 软实时模式 OK★★★★★生产机强烈推荐 (无 Defender 干扰)
Linux RT实时确定性主线★★★★★高确定性生产部署
普通 Windows 10 Pro 21H2+兼容, 实时模式受限★★★☆☆不建议用于生产

诊断指标说明

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

指标含义
抖动 (均/峰)平均抖动 / 峰值抖动。平均反映常态性能,峰值包含硬件干扰
干净最大抖动排除硬件干扰 (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
应用抖动 (1.99.5+)< 50μs< 30μs< 20μs
SMI 次数/秒10~3000~50~2
应用抖动 (1.99.5 之前 vs 之后)

1.99.5 之前用户态偶发出现 50~1000μs 甚至几十毫秒 (Windows 调度器在 HT 兄弟核被 RT 线程 100% busy 拖累). 1.99.5 起 SDK 自动跨物理核分配 RT/PDO 监控线程, 这种偶发应用层尖峰 已消除, 即便不做任何系统级优化也能稳定在 < 50µs.

系统健康指标

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

指标普通系统工控系统 (目标)
开机到应用就绪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 用户态无法满足。

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