1. 实时测试系统概述
在工业测控、汽车电子、航空航天、电力电子与运动控制等领域,测试系统不仅要“采得到、算得出”,更要在确定的时间点“给出结果并驱动执行器”。普通桌面操作系统上的测试程序,即使平均性能很高,也可能因为系统调度、垃圾回收、驱动中断或后台任务而出现毫秒级甚至数十毫秒的抖动。对于需要以固定周期闭环控制的场合,这种抖动会直接导致控制品质下降,甚至引发设备损坏。实时测试系统正是为解决这一问题而出现的工程方案。
1.1 什么是实时系统
实时系统并不是“运行速度快”的系统,而是在规定的截止时间内必须完成规定响应的系统。它的正确性由“逻辑正确”和“时间正确”共同决定:结果算对了但来晚了,同样属于失败。工程上通常用三个指标描述实时性:
- 响应时间:从事件发生(如定时器到期、外部触发)到系统产生响应的时间。
- 抖动(Jitter):多次响应时间的波动范围,是确定性控制最关心的量。
- 截止时间满足率:在长时间运行中,满足时间约束的周期比例。
按约束强度,实时系统可分为硬实时、软实时和固实时。硬实时要求任何一次超时都不可接受,例如安全气囊点火、伺服电流环;软实时允许偶尔超时,例如数据记录、人机界面刷新;固实时介于两者之间,偶尔超时结果仍可用但价值下降。LabVIEW实时模块主要面向硬实时与固实时场景。
1.2 确定性控制需求
确定性(Determinism)指系统在相同输入和相同初始条件下,能够以可预测的时间行为重复执行。以典型的电机电流环为例,若控制周期为 100 μs,则每个周期内必须完成 ADC 采样、坐标变换、PI 运算、PWM 更新。假设某次循环因操作系统调度延迟了 30 μs,则实际控制周期变为 130 μs,等效控制带宽下降、相位裕度减小,严重时引起振荡。因此确定性控制的核心诉求是:
- 周期任务按固定节拍执行,抖动尽可能小(典型目标 < 10 μs);
- 关键任务不被非关键任务抢占;
- 内存分配、文件写入、网络通信等不确定操作不进入控制回路;
- 超时、溢出、通信失败等异常有明确的降级策略。
1.3 LabVIEW 实时模块架构
LabVIEW 实时模块采用“主机—目标”双机架构。开发主机(Windows)负责编写、编译、部署和监控;实时目标(PXI 控制器、CompactRIO、cRIO、工业 PC 等)运行实时操作系统,独立执行确定性任务。二者通过网络(TCP/IP、共享变量、网络流)交换数据。实时目标上的程序被编译为独立可执行文件,开机自动运行,不依赖主机在线。
实时目标内部通常划分为两个层次:时间关键循环(Timed Loop,优先级最高,执行控制算法与 I/O)和非时间关键循环(优先级较低,执行日志、通信、界面更新)。二者通过 RT FIFO 或共享变量通信,避免低优先级任务阻塞高优先级任务。LabVIEW 的定时循环支持硬件定时、1 MHz 时基和优先级设置,是构建确定性控制回路的核心结构。
1.4 典型应用场景
实时测试系统在工程中覆盖面很广,常见场景包括:
| 应用领域 | 典型周期 | 确定性要求 |
|---|---|---|
| 电机电流环 / 伺服控制 | 50~200 μs | 硬实时,抖动 < 5 μs |
| 汽车 ECU 硬件在环 (HIL) | 0.1~1 ms | 硬实时,抖动 < 10 μs |
| 电力电子变流器控制 | 10~100 μs | 硬实时 |
| 结构疲劳试验加载 | 1~10 ms | 固实时 |
| 温度 / 压力数据采集 | 10~100 ms | 软实时 |
可以看到,周期越短、对抖动越敏感的任务,越需要实时操作系统与专用硬件支持。LabVIEW 实时模块配合 CompactRIO 的 FPGA 背板,可以把最内层回路放到 FPGA 上以纳秒级确定性执行,而把较慢的监控、通信任务放在实时 CPU 上,形成分层确定性架构。
1.5 课程项目导入
本课程将围绕一个贯穿始终的示例项目展开:基于 CompactRIO 的直流电机转速闭环实时测试系统。项目目标是在实时目标上以 1 kHz 周期执行转速闭环控制,同时采集电流、转速、温度三路信号,并通过网络把数据回传到主机进行显示与记录。示例参数如下(属于教学设定,非实测结果):
- 控制周期:1 ms(1 kHz),目标抖动 < 10 μs;
- 编码器:1000 线,四倍频后 4000 计数/转;
- 电机额定转速:3000 rpm,对应 200 计数/ms;
- 电流采样:12 位 ADC,量程 ±10 A;
- 控制算法:PI 控制器,Kp = 0.8,Ki = 0.05(示例初值,需现场整定);
- 通信:共享变量回传,更新率 100 Hz。
在后续章节中,我们将依次完成实时目标配置、定时循环搭建、I/O 读写、PI 控制实现、RT FIFO 通信、抖动测量与性能优化。判断系统是否达标的核心依据是:在连续运行 10 分钟以上时,定时循环的实际周期抖动是否稳定小于设定阈值,且无超时计数增长。若抖动超标,应优先检查循环内是否存在动态内存分配、文件操作或未限定超时的通信调用。