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

简介: 【PID】基于Matlab实现增量式PID算法

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,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('误差');

⛄ 运行结果

⛄ 参考文献

[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电子书和数学建模资料


相关文章
|
5月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
502 0
|
5月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
329 2
|
6月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
307 3
|
5月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
257 8
|
5月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
294 8
|
5月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
5月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
6月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
405 2
|
5月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
266 0
|
5月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
237 0

热门文章

最新文章