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

Ziegler-Nichols法在PID参数整定中的应用

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

Ziegler-Nichols法在PID参数整定中的应用

引用
CSDN
1.
https://blog.csdn.net/qq_35718980/article/details/116984685

PID控制算法是工业自动化领域应用最广泛的控制算法之一。虽然PID算法结构简单,但要发挥其最佳性能,就需要准确整定其参数。本文将介绍一种简单高效的PID参数整定方法——Ziegler-Nichols法,并通过MATLAB代码示例展示其具体应用。

一、PID算法概述

PID算法因其结构简单、易于理解而被广泛应用于各种控制场景。无论是简单的单闭环控制还是复杂的串级控制,PID算法都能提供良好的控制效果。然而,要使PID算法发挥最佳性能,就必须准确整定其参数。传统的试凑法虽然在很多情况下都能达到预期效果,但需要反复调试,效率较低。Ziegler-Nichols法提供了一种更系统、更高效的方法来整定PID参数。

二、Ziegler-Nichols整定法

首先回顾离散式PID的公式:

$$
u(k) = K_p e(k) + \frac{K_p}{T_i} \sum_{i=0}^{k} e(i) T + K_p T_d \frac{e(k) - e(k-1)}{T}
$$

其中,$u(k)$是最终输出,$e(k)$是当前时刻的误差,$e(k-1)$是上一时刻的误差,$K_p$是比例系数,$T$是控制周期,$T_i$是积分常数,$T_d$是微分常数。

Ziegler-Nichols法最早由Ziegler与Nichols在1942年提出,是一种基于系统模型参数的PID控制器整定方法。该方法通过测量系统的关键参数(如增益$K$、延迟$L$和上升时间$T$),可以计算出PID控制器的具体参数,避免了盲目调试。

MATLAB实现

根据Ziegler-Nichols整定法,可以编写一个MATLAB函数ziegler来设计PID控制器:

function [Gc,Kp,Ti,Td]=ziegler(key,vars)
% 输入两个参数
% Ziegler-Nichols整定法,内置三种模式,由频域响应整定,由阶跃响应整定,还有改进版本,一般使用阶跃响应整定PID参数。算法来源于控制系统计算机辅助设计P322
% key:范围1~3,分别对应P、PI、PID控制器
% vars:这是一个向量,不同的模式有不同的长度,使用阶跃响应整定PID参数时,有4个参数,分别是K(终值)、L(延迟)、T(上升时间)、N(微分滤波器除数,一般取10)

switch length(vars)
    case 3                                      % 由频域响应整定
        K=vars(1);Tc=vars(2);N=vars(3);
        if key==1                               % P控制器
            Kp=0.5*K;
            Ti=inf;
            Td=0;   
        elseif key==2                           % PI控制器
            Kp=0.4*K;
            Ti=0.8*Tc;
            Td=0;
        elseif key==3                           % PID控制器
            Kp=0.6*K;
            Ti=0.5*Tc;
            Td=0.12*Tc;
        end
        
    case 4                                      % 由阶跃响应整定
        K=vars(1);L=vars(2);T=vars(3);N=vars(4);
        a=K*L/T;
        if key==1                               % P控制器
            Kp=1/a;
            Ti=inf;
            Td=0;
        elseif key==2                           % PI控制器
            Kp=0.9/a;
            Ti=3*L;
            Td=0;   
        elseif key==3                           % PID控制器
            Kp=1.2/a;
            Ti=2*L;
            Td=L/2;
        end
        
    case 5                                      % 改进的Ziegler-Nichols法,参考P324,前提是看懂奈奎斯特图
        K=vars(1);Tc=vars(2);rb=vars(3);N=vars(5);
        pb=pi*vars(4)/180;
        Kp=K*rb*cos(pb);
        if key==2
            Ti=-Tc/(2*pi*tan(pb));
            Td=0;
        elseif key==3
            Ti=Tc*(1+sin(pb))/(pi*cos(pb));
            Td=Ti/4;
        end
end
Gc=pidstd(Kp,Ti,Td,N);                          % pidstd具体看参考文档还有书的P315,改这里可以改输出形式

其中,key参数用于选择控制器类型(1为P控制器,2为PI控制器,3为PID控制器),vars参数是一个向量,根据其长度不同,可以选择不同的整定模式。

三、实际应用案例

在实际应用中,例如控制电机的转动角度时,可以结合编码器进行PID参数整定。具体步骤如下:

  1. 组装好硬件并配置PID调试助手用于画图。
  2. 设置单片机定时器频率为1000Hz,每毫秒发送一次电机角度到上位机。
  3. 给电机最大PWM值(相当于阶跃响应),1秒后关闭电机。
  4. 获取电机的阶跃响应曲线数据,并导入MATLAB计算K、L、T三个参数。
  5. 使用上述程序计算相应的PID参数。

四、Chien-Hrones-Reswick参数整定法

Chien-Hrones-Reswick(CHR)算法是Ziegler-Nichols算法的一种改进版本,允许设计出具有不同超调量的控制响应。表2给出了PID控制器设计的经验公式:

对应的MATLAB实现如下:

function [Gc,Kp,Ti,Td]=chrpid(key,vars)
% vars=[K L T N ov],ov为0对应没有超调量的控制,ov为1对应有20%超调量的控制
K=vars(1);L=vars(2);T=vars(3);N=vars(4);
ov=vars(5)+1;
a=K*L/T;
KK=[0.3,0.35,1.2,0.6,1,0.5;     % 有0%超调量的参数
    0.7,0.6,1,0.95,1.4,0.47];   % 有20%超调量的参数
if key==1                       % P控制器
    Kp=KK(ov,1)/a;
    Ti=inf;
    Td=0;
elseif key==2                   % PI控制器
    Kp=KK(ov,2)/a;
    Ti=KK(ov,3)*T;
    Td=0;
else                            % PID控制器
    Kp=KK(ov,4)/a;
    Ti=KK(ov,5)*T;
    Td=KK(ov,6)*L;
end
Gc=pidstd(Kp,Ti,Td,N);

其中,vars参数包括系统模型参数K、L、T以及微分滤波器除数N,ov参数用于选择是否允许超调(0表示不允许,1表示允许20%超调)。

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