2. 温度设定值阶跃幅度筛选DOE
为什么先筛“阶跃幅度”而不是先调 PID
温度回路的设定值阶跃幅度直接决定 PV 偏离工作点的距离,也决定 OP 需要走多远。幅度过小,超调与调节时间被测量噪声和阀门死区淹没,DOE 结论不可信;幅度过大,可能触发 OP 饱和、加热器功率上限或工艺联锁,实验本身不安全。因此本例把“阶跃幅度”作为单因子、3 水平的筛选因子,先确定一个既能激发出可辨识动态、又不越过安全边界的范围,再进入后续 PID 参数寻优。
三个水平按工作点 SP₀ 的百分比定义,便于在不同工况下复用:小 = 2 %、中 = 5 %、大 = 8 %(示例取值,需按本装置允许的 PV 波动带核定)。响应指标取三个:超调量 Mp(%)、调节时间 ts(进入 ±2 % 误差带且不再离开的时间)、稳态偏差 ess(试验末段 60 s 平均 PV 与目标 SP 之差)。
试验设计与随机化
单因子 3 水平,每水平重复 3 次,共 9 次运行。完全随机化用于把炉膛环境温度漂移、负荷缓慢变化等时间相关干扰摊到各水平上,避免“先做小阶跃、后做大阶跃”造成的系统性偏差。随机顺序用固定种子生成,保证可复现:
import random
random.seed(20240602)
runs = [(lv, rep) for lv in ("S2", "S5", "S8") for rep in range(1, 4)]
random.shuffle(runs)
for i, (lv, rep) in enumerate(runs, 1):
print(f"Run{i:02d} level={lv} rep={rep}")
# 示例输出顺序(固定种子,可复现):
# Run01 S5 rep2 / Run02 S8 rep1 / Run03 S2 rep3 / Run04 S5 rep1
# Run05 S8 rep3 / Run06 S2 rep1 / Run07 S8 rep2 / Run08 S2 rep2 / Run09 S5 rep3
每次运行前必须回到同一初始条件:PV 稳定在 SP₀ ±0.3 ℃ 至少 5 min、OP 波动小于 2 %、无报警。运行之间留 10 min 恢复间隔,确保上一次的积分作用已完全释放,否则 ess 会被前一次试验污染。
DCS 中的执行要点
- 用回路自带的 SP 阶跃测试功能或操作员站写入 SP,阶跃沿必须是单步跳变,禁止斜坡过渡,否则上升时间不可比。
- 采样周期统一取 1 s,记录 PV、SP、OP、偏差四个趋势,时间戳对齐到同一时钟源。
- OP 输出限幅按工艺上限设置(示例:0–100 %,加热段实际可用 0–85 %),一旦触及限幅,该次运行标记为“饱和”,指标不可用于比较。
- 每次运行采集窗口 = 阶跃前 60 s 基线 + 阶跃后至 PV 稳定(最长 30 min)。
指标计算与判读
以中阶跃一次运行的教学示例数据为例(非实测,仅说明算法):阶跃前 PV = 120.0 ℃,SP 由 120.0 跳到 126.0(+5 %),PV 峰值 127.1 ℃,则 Mp = (127.1 − 126.0) / 6.0 × 100 % ≈ 18.3 %;PV 在 t = 412 s 后进入 126.0 ± 0.12 ℃ 并保持,ts = 412 s;末段 60 s 平均 PV = 125.94 ℃,ess = −0.06 ℃。三个指标分别回答“冲多远、多久稳住、最后准不准”,缺一不可。
结果比较与范围确定
| 水平 | 阶跃幅度 | Mp 均值 | ts 均值 | ess 均值 | OP 是否饱和 | 结论 |
|---|---|---|---|---|---|---|
| S2 | 2 % | ≈6 % | ≈520 s | ≈−0.02 ℃ | 否 | 信噪比不足,仅作参考 |
| S5 | 5 % | ≈18 % | ≈412 s | ≈−0.06 ℃ | 否 | 推荐作为后续实验阶跃 |
| S8 | 8 % | ≈31 % | ≈470 s | ≈−0.11 ℃ | 是(部分运行) | 超出安全边界,排除 |
判读逻辑:先看 OP 是否饱和,饱和的运行直接出局;再在剩余水平中比较 Mp 与 ts 的可辨识度——S2 的 Mp 与噪声带(约 ±1.5 %)接近,重复间离散大,不适合作为后续寻优的激励;S5 的 Mp 明显高于噪声、ts 最短、ess 在 ±0.1 ℃ 工艺带内,因此把 5 % 阶跃定为后续 PID 参数 DOE 的固定激励幅度,2 % 与 8 % 保留为边界校核点,用于验证优化后的参数在边界处仍不饱和。