基于Ziegler-Nichols法的PID参数整定

一、摘要

        由于PID算法结构简单,容易理解,所以电子工程师用的最多的控制算法就是PID算法。对于简单的被控对象,使用单闭环PID即可达到良好的控制效果。对于稍微复杂的控制对象,使用串级PID也能够实现良好的控制。由此可见,PID算法能够适用于大部分装置的控制。虽然PID算法只有一条公式,但是想发挥出良好的作用,就必须准确的整定参数。一般整定PID参数使用试凑法,这个方法虽然能在大部分情况下能够实现我们想要的效果,但是需要反复调节,效率很低。但其实是存在简单高效PID参数整定方法,叫Ziegler-Nichols法,它只需要测量出系统几个关键的参数,就可以计算出PID算法的具体参数,不需要盲目的进行调试了。

 

二、Ziegler-Nichols法

        首先我们来看看离散式PID的公式:

        u(k)是我们最终的输出,e(k)是我们控制系统当前时刻的误差,e(k-1)是上一时刻的误差,Kp是比例系数,T是控制周期,Ti是积分常数,Td是微分常数。

        早在1942年,Ziegler与Nichols给出了著名的PID控制器整定的经验公式,为过程控制提出了一种切实可行的控制器整定方法,后来称为Ziegler-Nichols整定公式。这种方法与其改进的形式至今仍用于实际的过程控制。

       假设已经得到了系统近似的带有时间延迟的一阶模型参数K(终值)、L(延迟)、和T(上升时间),根据相似三角形的原理就可以立即得出斜率a=KL/T,这样就可以根据表1设计出P、PI和PID控制器,设计方法很简单直观。根据此算法可以编写一个MATLAB函数Ziegler,由该函数可以直接设计出系统的PID控制器。

<center>图1-带有时间延迟的一阶模型 </center>

<center>表1-Ziegler-Nichols整定法 </center> 

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,2,3,分别对应P、PI、PID控制器;vars是一个矩阵,当里面存储的变量个数不一样时,对应不同的模式,当变量个数为3个时,由频域响应整定PID参数,当变量个数为4个时,由阶跃响应整定PID参数,当变量个数为5个时,使用基于频域响应的改进版Ziegler-Nichols法整定PID参数。

三、Ziegler-Nichols整定法的实际应用

       当我们在实际应用的时候。例如要控制电机的转动角度,这时候我们就可以结合编码器来进行PID的参数整定。首先组装好硬件,软件上也配置好PID调试助手用于画图,电机开环控制。首先打开单片机的定时器,频率1000Hz。定时器每毫秒发一次电机的角度到上位机。然后电机给最大的PWM值(相当于给电机一个阶跃响应),1秒后关闭电机。在获取到电机的阶跃响应曲线之后,将获得的一千个数据导入到MATLAB计算K、L、T三个参数,然后使用上面的程序计算相应的PID参数。

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

       在实际应用中,传统的Ziegler-Nichols算法有各种各样的变形,所谓的Chien-Hrones-Reswick(CHR)算法就是其中的一种改进。表2中给出来PID控制器设计的经验公式,其中还允许带有较大的阻尼,以确保“没有超调量的快速响应”,该指标在表中标识为“有0%超调量”,该表中还允许设计出所谓有“20%超调量的最快速响应”,在表中标识为“有20%超调量”。和传统的Ziegler-Nichols整定算法相比,在CHR算法中直接使用了时间常数T。

 <center>表2-Chien-Hrones-Reswick整定法 </center>

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);

        Key=1,2,3,分别对应P、PI、PID控制器;vars=[K L T N ov],ov为0对应没有超调量的控制,ov为1对应有20%超调量的控制。

  • 10
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值