我在前面的文章介绍了一种通过神经网络来整定PID参数的方法,有兴趣的朋友可以去看看——用神经网络来估计PID控制器参数?(附核心代码)。或者点击我的头像在我发布的文章里也可以查看。
今天来说说在工程上更广泛使用参数整定方法,即公式法。经验法我就不介绍了,文章只分享干货。下面介绍2种方法,不同方法处理的系统阶数不同,但在工程上都是很容易实现的。
一阶系统方法——基于AMIGO的三参数法
此方法只需要通过系统开环的阶跃响应即可计算PID参数。要运用此方法,需要把系统抽象成一阶系统。凡是可用一阶微分方程描述的系统称一阶系统。比如电压控制系统,温度控制系统,水箱水位控制系统。一阶系统的传递函数如下:
其中K是传递函数的增益常量,T是系统时间常数,τ是纯滞后时间。我们通过系统开环的阶跃响应来确定这3个参数。
一阶系统的开环阶跃响应如下图:
纯滞后时间τ很容易得到,即系统开始响应时刻和指令输入时刻的时间差。
增益常量K可通过下式计算:
其中y1为系统阶跃响应终值,y0是系统初值,u是阶跃响应输入值。
时间常数T可以由2种方式得到:
- 系统开环阶跃响应增加到阶跃响应终值的63%左右所花的时间;
- 系统开环阶跃响应的初始斜率为1/T。
重点来了,三参数法基于AMIGO方法,它用下面3个方程来计算PID参数:
假设一阶系统的传递函数为:
其开环阶跃响应如下图:
我们把K,T和τ代入公式,可以得到:
我们在PID控制中一般使用ki和kd参数,所以还需要转化一下:
最后我们来测试一下参数,在PID参数下的阶跃响应:
系统上升时间为0.8s,有10%的超调。
任意阶系统方法——震荡反馈法
此方法需要系统闭环才能实现。方法主要是在奈奎斯特曲线上识别一个点,此方法使控制系统进入临界震荡,且此时的震荡具有180度的相位滞后,震荡的临界频率为wu。在临界频率wu上的增益叫临界增益ku。ku可以由下面的式子得到:
其中d是输入方波的振幅,a是系统输出在临界频率上的振幅。那么PID参数由下面3个方程确定:
其中θ是在临界频率相位上要提前的相位角,实际上是移动奈奎斯特曲线上的极点,这里取0.25π即可。
我们构建一个传递函数,此传递函数可以是任意阶系统:
我们给个幅值为1的方波信号,让输出的震荡刚好滞后方波信号180度。
此时,得到方波信号的频率为2.22Hz,即系统的临界频率wu=14rad/s,a此时为0.045,d为0.5,得到ku=0.0707,从而得到PID的三个参数:
把PID的三个参数代入控制器中,最终阶跃响应曲线为:
最大超调26%,上升时间为0.13s。
我们来对比下与之类似的Z-N法,Z-N法同样需要系统临界震荡,而ZN法使系统震荡的方法也不同,是给出阶跃信号,加大Kp值,使系统震荡。
可以得到使系统临界震荡的Km值为15.2,震荡周期为0.45s,Z-N法得到的PID参数为:
系统阶跃响应为:
可见Z-N法计算的参数收敛性并不好,后续还需要人为修正参数。
结论
这2种方法各有各的对应场景,三参数法在应对一阶系统很有效,而且只需要得到系统的开环传递函数的三个关键参数就可以;震荡反馈法对任意阶系统均有效,只是需要要闭环,计算出来的PID参数比传统的Z-N法更优。