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

这篇具有很好参考价值的文章主要介绍了【PID】基于Matlab实现增量式PID算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

✅作者简介:热爱科研的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,matlab,算法,开发语言,机器学习,人工智能

pid增量式算法matlab,matlab,算法,开发语言,机器学习,人工智能

⛄ 参考文献

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

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

[3] 曾豪勇, 周思柱, 易文君. 基于MATLAB的增量式PID参数整定[J]. 工业控制计算机, 2014, 000(006):69-70.文章来源地址https://www.toymoban.com/news/detail-628814.html

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

到了这里,关于【PID】基于Matlab实现增量式PID算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 我的PID学习历程---PID位置式和增量式

    前一篇文章实现了使用TB6612驱动电机及编码器测速,但是在实际测速的过程中,如果我们 人为给电机一个阻力,电机的速度将会下降,编码器接口获取到的脉冲数也会减少 。 但是如果要使电机 保持一个恒定的速度 ,即使遇到阻力它的速度也不会下降。这个时候就需要引入

    2023年04月09日
    浏览(61)
  • 位置式Pid和增量式Pid的定义及应用

    PID算法是一个典型的闭环控制系统。P、I、D,比例、积分、微分。 开环:输入量对输出量没有反馈作用; 闭环:输入量对输出量有反馈作用。 位置式Pid 位置式Pid就是位置闭环控制,位置闭环控制就是根据编码器的脉冲累加,测量电机的位置信息,并与目标值进行比较得到一

    2024年02月05日
    浏览(29)
  • PID的增量式与位置式

    在刚接触到PID控制器的时候,我对增量式,位置式这些其实也是很懵的,然后又有什么速度环啊,位置环啊,电流环啊…巴拉巴拉一堆的,但是现在理解起来其实也就利用一些简简单单的离散数据运算出期望罢了。 首先假设我们已经知道了什么是Kp、Ki、Kd了(不知道的话那就

    2024年04月13日
    浏览(26)
  • PID控制器(位置式和增量式)

    PID控制:一种调节器控制规律为比例、积分、微分的控制。其中:P:比例(proportion)I:积分(integral)D:微分(derivative) 式子中Kp为比例系数,Ti为积分时间参数,Td为微分时间常数。 各参数的意义: Kp:比例系数。一般增大比例系数,将加快系数的响应。 Ti:积分时间常

    2024年02月16日
    浏览(36)
  • STM32增量式pid直流电机调速(内附源码)

            目录 一. 1.硬件组成 2.模块分析         1.TB6612电机驱动模块         2.直流减速电机         3.电源稳压模块 二.接线 三.代码思路讲解(详见源码) 四.STM32cubmx配置 1.系统基础配置:(重要) 2.电机旋转方向引脚配置 3.TIM1每10ms触发一次的定时器中断 4.TI

    2024年02月16日
    浏览(27)
  • 4 OpenCV实现多目三维重建(多张图片增量式生成稀疏点云)【附源码】

    本文是基于 OpenCV4.80 进行的,关于环境的配置可能之后会单独说,先提一嘴 vcpkg 真好用 从多张图片逐步生成稀疏点云,这个过程通常包括以下步骤: 初始重建: 初始两张图片的选择 十分重要 ,这是整个流程的基础,后续的增图都是在这两张图片的基础上进行的 对于输入图

    2024年02月06日
    浏览(31)
  • STM32之增量式编码器电机测速

    编码器,是一种用来测量机械旋转或位移的传感器。它能够测量机械部件在旋转或直线运动时的位移位置或速度等信息,并将其转换成一系列电信号。 . 按监测原理分类 光电编码器 光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器

    2024年02月13日
    浏览(27)
  • 霍尔增量式编码器左右车轮线速度的计算

    对于霍尔式编码器的左右轮线速度计算: 首先线速度=距离s / 时间 t 要获得距离S ,也就是轮子在一段时间内跑过的距离。要先知道一下两个参数: 1.轮子的半径 r 2.轮子转动一圈的脉冲数 cnt 轮子转动一圈的脉冲数:如电机我们选用减速比为1:90的TT直流减速电机,编码器为

    2024年02月15日
    浏览(29)
  • 《LIO-SAM阅读笔记》-为何要引入增量式里程计?

    前言: LIO-SAM在后端中同时维护着两个里程计,一个是增量式里程计,一个是优化后的里程计,其中优化后的里程计是经过imu、回环、gps因子图联合优化后的结果,是整个系统中最准确的位姿估计,那么为什么还需要维护增量式里程计呢? 以下是我的理解 ,不一定正确,如有

    2024年01月22日
    浏览(31)
  • 毕业设计-基于 PID 控制算法仿真算法研究- Matlab

    目录 前言 课题背景和意义 实现技术思路 一、 基本原理  二、无超调 PID 控制器的设计 三、无超调 PID 设计的验证 代码 实现效果图样例 最后     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。

    2024年02月06日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包