✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

⛄ 内容介绍

增量式PID控制较常规PID更具优势,但有关其参数整定的方法很少,针对这种问题,介绍了增量式PID算法的原理及特点,基于MATLAB平台,模拟扩充临界比例度法对增量式PID参数的整定方法,整定过程简单直观,控制效果明显改善,证实了该方法对增量式PID有较好的整定效果.

⛄ 完整代码

clear all;close all;clc

%% 获取离散化模型

t_s = 0.001;  %采样时间

T_f = 1;     %仿真时间

Step_simulate=T_f/t_s;

sys = tf([200],[1 50 1]);

%% 绘制传递函数的单位阶跃响应曲线

t=0:0.01:750;

figure(1);

c=step(sys,t);

plot(t,c);

%% 进行传递函数的离散化

dsys = c2d(sys,t_s,'z');

[num,den]=tfdata(dsys,'v');   %num为离散传递函数的分子系数矩阵,den为离散传递函数的分母系数矩阵

%% 设置增量式PID的校正参数

k_p=10;

k_i=0.12;

k_d=5;

%% 设置输入信号数学表达式

y_d = ones(1,Step_simulate);   %输入信号为阶跃信号    

%% 增量式PID控制器算法模块

y = zeros(1,Step_simulate);    %初始化输出信号

y_feedback=0;                  %反馈回来的信号,y_feedback=y

error = 0;                      %信号差值

erro_1 = 0;                    %上一时刻信号差值

erro_2 = 0;                    %上上一时刻信号差值

y_1=0;                         %上一时刻的输出

y_2=0;                         %上一上一时刻的输出

pi_out=0;                      %pid控制器的输出,注意不是系统输出

pi_out_1=0;                    %上一时刻PID控制器的输出,注意不是系统输出

pi_out_2=0;                    %上一上一时刻PID控制器的输出,注意不是系统输出

pi_out = 0;                   %初始的PID控制输出值

delta_pi_out = 0;             %初始的PID控制输出增量值

for k=1:1:Step_simulate

    time(k)=k*t_s;            %存储时间,用于后面画图

    error=y_d(k)-y_feedback;  %控制器误差

                              %增量式PID的算法表达式

    delta_pi_out=k_p*(error-erro_1)+k_i*error+k_d*(error-2*erro_1+erro_2);

    pi_out =pi_out+delta_pi_out ;

                              %增量式PID的算法表达式

    %对PID控制器的输出进行限幅

    if  pi_out>=10

        pi_out =10;

    end

    if  pi_out<=-10

        pi_out =-10;

    end

   %y_1 上一时刻的输出

   %y_2 上两时刻的输出

    y(k)=-den(2)*y_1-den(3)*y_2+num(2)* pi_out_1+num(3)*pi_out_2;%控制对象

    y_feedback=y(k);

    %更新系统输出状态

    y_2=y_1;

    y_1=y(k);

    %更新pid输出状态

    pi_out_2=pi_out_1;

    pi_out_1=pi_out;

    %更新信号差值状态

    erro_2=erro_1;

    erro_1=error;

end

%画图

figure(2);

subplot(2,1,1);

plot(time,y_d,'b*',time,y,'go');

xlabel('time');ylabel('幅值');legend('期望输出','实际输出');

subplot(2,1,2);

plot(time,y_d-y);

xlabel('time');ylabel('幅值');legend('误差');

⛄ 运行结果

【PID】基于Matlab实现增量式PID算法_MATLAB

【PID】基于Matlab实现增量式PID算法_MATLAB_02

⛄ 参考文献

[1] 杨龙. 基于位置式PID算法的压力控制设计及MATLAB仿真[J]. 电子技术与软件工程, 2018(24):1.

[2] 王俊伟, 张帅, 温荣. MATLAB的PID算法在温室大棚中的温湿度串级控制中的应用研究[J]. 价值工程, 2016, 35(5):2.

[3] 曾豪勇, 周思柱, 易文君. 基于MATLAB的增量式PID参数整定[J]. 工业控制计算机, 2014, 000(006):69-70.

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料