PID控制器的整定——基于临界比例度法的PID整定
PID控制器的整定——基于临界比例度法的PID整定
PID控制器是工业自动化控制中最为常用的一种控制策略,其性能优劣直接影响到整个系统的控制效果。本文将介绍一种基于临界比例度法的PID控制器参数整定方法,通过MATLAB仿真验证其有效性。
系列文章目录
PID控制器的整定——基于响应曲线法的PID整定
文章目录
- 系列文章目录
- 前言
- 一、应用PID控制的SISO系统
- 二、临界比例度法
- 1.整定公式
- 2.整定步骤
- 三、MATLAB实现
- 总结
- 参考文献
前言
PID控制作为工业常用控制方法,其控制效果与三个参数比例系数、积分系数和微分系数息息相关,通过一定的方法,对其进行整定就成为PID控制中较为重要的一环。
提示:本文对一些复杂的流程与概念进行了简化与省略,如果想详细了解的小伙伴可以参考刘金琨老师的《先进PID控制MATLAB仿真 -第4版》的第2章(需要电子版请私戳)
一、应用PID控制的SISO系统
在应用PID控制的SISO(单输入单输出)系统如图1.1:
图1.1 应用PID控制器的单输入单输出系统结构图
其中Kp、Ki和Kd分别是比例系数、积分系数和微分系数。
二、临界比例度法
1.整定公式
临界比例度法是一种经验公式,在本博文中将直接使用该公式:
图2.1 临界比例度法
其中δτ、Tτ分别是比例度、等幅振荡的周期。
图2.2 等幅振荡输出
2.整定步骤
- 在P控制器的情况下开始
u(k)=1δτe(k)=1δτr(k)−c(k)u\left( k \right)=\frac{1}{\delta_\tau}e\left( k \right)=\frac{1}{\delta_\tau}\left[r\left( k \right)-c\left( k \right)\right] \tag{1}u(k)=δτ1e(k)=δτ1r(k)−c(k)
其中u(k)、e(k)、r(k)和c(k)分别表示当前采样时刻的控制器输出、误差、输入和输出;
从Kp较小的情况下,即比例度值较大开始调整,逐步减小其值;
当系统输出达到临界震荡时,此刻的比例度即为δτ,此时的震荡周期即为Tτ。
注意:只有自平衡对象才能使用此方法。自平衡对象如:水缸液位——经过进水与出水阀,水缸液位总能稳定在一个新的或原来的稳态。非自平衡对象如:单轴倒立摆小车——不增加控制器,从平衡状态下,一旦有电机动作倒立摆将不再平衡。
三、MATLAB实现
考虑被控对象的传递函数:
G(s)=5e−2s1.5s2+2.5s+1(2)G\left( s \right)=\frac{5e^{-2s}}{1.5s^2+2.5s+1} \tag{2}G(s)=1.5s2+2.5s+15e−2s(2)
实现对上述传递函数的PID控制器参数整定,代码如下:
% Critical proportionality method for PID parameter
clc;
clear;
close all;
%%
N=500; %采样点个数
delta_tau=2.8; %δτ
T_tau=9; %Tτ
num_c=5; %传递函数分子系数
den_c=[1.5 2.5 1]; %传递函数分母系数
tol=2; %纯滞后参数
Ts=1; %采样时间
sys_c=tf(num_c,den_c,'inputdelay',tol); %连续系统
sys_d=c2d(sys_c,Ts,'zoh'); %离散系统(Z变换)
[num_d,den_d]=tfdata(sys_d,'v'); %Z变换后传递函数的分子、分母系数
time=ones(1,N);
r=ones(1,N);
c=ones(1,N);
e=ones(1,N);
de=ones(1,N);
u=ones(1,N);
u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0; %u_1=u(k-1)、u_2=u(k-2)、u_3=u(k-3)、u_4=u(k-4)
e_1=0; %e_1=e(k-1)
ei=0;
c_1=0.0;c_2=0.0; %c_1=c(k-1)、c_2=c(k-2)
%%
for k=1:1:N
time(k)=k*Ts; %时间向量
r(k)=1.0; %系统输入
c(k)=-den_d(2)*c_1-den_d(3)*c_2+num_d(2)*u_3+num_d(3)*u_4; %系统输出
e(k)=r(k)-c(k); %系统误差
de(k)=(e(k)-e_1)/Ts; %误差微分
ei=ei+Ts*e(k); %误差积分
% 通过控制参数M的改变控制器类型
M=1;
% 整定比例度参数
if M==1
delta=delta_tau;
u(k)=1/delta*e(k);
% P控制器下的系统输出
elseif M==2
delta=2*delta_tau;
u(k)=1/delta*e(k);
% PI控制器下的系统输出
elseif M==3
delta=2.2*delta_tau;
Ti=0.85*T_tau;
u(k)=1/delta*(e(k)+1/Ti*ei);
% PID控制器下的系统输出
elseif M==4
delta=1.7*delta_tau;
Ti=0.5*T_tau;
Td=0.13*T_tau;
u(k)=1/delta*(e(k)+1/Ti*ei+Td*de(k));
end
%更新系统参数
e_1=e(k);
u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
c_2=c_1;c_1=c(k);
end
%%
%画图
plot(time,r,'r-',time,c,'k:','linewidth',2);
xlabel('time(s)');ylabel('Position tracking');
legend('Ideal position signal','Position tracking','loaction','NorthEast');
在上述代码中有几个问题需要注意:
①离散输出的形式需要根据Z变换后的传递函数确定:
UC=num(2)z−3+num(3)z−4den(1)+den(2)z−1+den(3)z−2(3) \frac{U}{C}=\frac{num \left( 2 \right)z^{-3}+num\left( 3 \right)z^{-4}}{den \left( 1 \right)+den \left( 2 \right)z^{-1}+den\left( 3 \right)z^{-2}} \tag{3}CU=den(1)+den(2)z−1+den(3)z−2num(2)z−3+num(3)z−4(3)
以上的公式可以根据图3.1推得:
图3.1 离散传递函数
②纯滞后环节的Z变换:如图3.1中单独的z−2这一项,就是由纯滞后环节e−2×Ts变换的得来,注意如果Ts=0.1,则纯滞后环节的Z变换则变为z−20。
图3.2 纯滞后环节的Z变换
③整定流程
在M=1情况下调节δτ=5:
图3.3 M=1 δτ=5
减小到一半δτ=2.5:
图3.4 M=1 δτ=2.5
现在可以断定的是临界稳定的大概范围为(2.5,5),在多次实验后可得δτ=2.8时系统输出为临界稳定:
图3.5 M=1 δτ=2.8
并且在此时震荡的周期Tτ=9:
图3.6 M=1 δτ=2.8时的震荡周期
随后分别令M=2、3、4即可得到P、PI、PID控制下的系统输出:
图3.7 M=2 δτ=2.8
图3.8 M=3 δτ=2.8
图3.9 M=4 δτ=2.8
总结
总结什么的不想写了,就放一段文字在这里😉。
参考文献
[1]刘金琨. 先进PID控制MATLAB仿真.第4版[M]. 电子工业出版社, 2016.