问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

PID控制器的整定——基于临界比例度法的PID整定

创作时间:
作者:
@小白创作中心

PID控制器的整定——基于临界比例度法的PID整定

引用
CSDN
1.
https://m.blog.csdn.net/qq_40619699/article/details/140400732

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.整定步骤

  1. 在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)分别表示当前采样时刻的控制器输出、误差、输入和输出;

  1. 从Kp较小的情况下,即比例度值较大开始调整,逐步减小其值;

  2. 当系统输出达到临界震荡时,此刻的比例度即为δτ,此时的震荡周期即为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.

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号