3、手动整定:Ziegler-Nichols 第一法(开环阶跃响应法)的原理与步骤
说到PID参数整定,Ziegler-Nichols法绝对是经典中的经典。我个人习惯把它叫做「工程师的救急法宝」——尤其是第一法,也就是开环阶跃响应法。你想想看,很多时候我们面对一个陌生的系统,连模型都没有,怎么调参数?这个方法就是用来解决这个问题的。
说白了,它不需要你懂什么复杂的传递函数。只需要给系统一个阶跃输入,然后观察输出响应曲线,就能算出PID参数。我在项目中遇到过好几次,现场工程师拿着示波器测波形,然后掏出计算器按几下,参数就出来了。嗯,就是这么粗暴有效。
3.1 基本原理
Ziegler-Nichols第一法的核心思想是:用一阶惯性加纯延迟模型来近似被控对象。为什么这么做?因为大多数工业过程——比如温度控制、液位控制、电机调速——它们的阶跃响应曲线长得都差不多:先是一段延迟,然后慢慢上升,最后趋于稳定。
这个近似模型的数学形式是:
G(s) = K * e^(-Ls) / (Ts + 1)
其中:
- K:系统增益(稳态变化量 / 阶跃幅度)
- L:纯延迟时间(从阶跃开始到响应开始变化的时间)
- T:时间常数(从响应开始到达到63.2%稳态值的时间)
你可能会问:「为什么是63.2%?」这是由一阶系统的阶跃响应特性决定的。一阶系统在时间常数T时刻,输出正好达到稳态值的63.2%。这个数字不是我编的,是数学推导出来的。
3.2 操作步骤
好,下面我手把手带你走一遍流程。记住,每一步都有坑,我会把避坑指南一并告诉你。
步骤一:让系统进入稳态
先把控制器切到手动模式,让系统稳定在一个工作点上。比如控制一个加热器,让温度稳定在50°C。这时候记录下当前的控制器输出值u₀和过程变量y₀。
步骤二:施加阶跃信号
在控制器输出上突然加一个阶跃变化Δu。这个Δu不能太大也不能太小。我建议取当前输出值的5%~15%。比如当前输出是50%,那就加到55%~57.5%。
为什么要控制幅度?太大了可能让系统进入非线性区,太小了信噪比不够,曲线看不清楚。我在项目中吃过这个亏——有一次Δu只加了2%,结果噪声把响应信号淹没了,测出来的L和T全是错的。
步骤三:记录响应曲线
用示波器或者数据采集系统记录过程变量y(t)的变化。你需要从曲线上读出两个关键点:
- 延迟时间L:从阶跃施加时刻到响应开始明显变化的时间
- 时间常数T:从响应开始到达到63.2%稳态变化量的时间
这里有个小技巧:在曲线上画一条最大斜率切线,这条切线与时间轴的交点就是L,切线与稳态值的交点就是T。我习惯用尺子在纸上画,虽然土但很可靠。
步骤四:计算参数
先算系统增益K:
K = Δy / Δu
其中Δy是稳态变化量(最终稳定值减去初始值)。
然后根据L和T查表得到PID参数:
| 控制器类型 | Kp | Ti | Td |
|---|---|---|---|
| P | T / (K * L) | — | — |
| PI | 0.9 * T / (K * L) | 3.33 * L | — |
| PID | 1.2 * T / (K * L) | 2 * L | 0.5 * L |
3.3 核心逻辑流程图
下面我用一张SVG图把整个流程串起来,方便你理解:
3.4 实战中的注意事项
方法讲完了,但光知道步骤还不够。我把自己踩过的坑总结一下:
另外,Z-N第一法算出来的参数通常只是一个「起点」。你还需要在此基础上做微调。我个人习惯是先试算出来的Kp,如果超调太大就减小10%~20%,如果响应太慢就增大10%。Ti和Td同理。
最后说一句:这个方法虽然老,但真的很实用。尤其是当你面对一个黑箱系统,没有任何数学模型的时候,它就是你的救命稻草。嗯,今天就讲到这里,你回去找个实际系统试试看。