【PID控制原理及其算法】

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

前言

本文以自己的学习过程总结而来,将自己的经验写出来以供大家一起学习,如有错误请多指教


一、PID是什么?

PID就是比例、积分、微分,PID算法可以说是在自动控制原理中比较经典的一套算法,在现实生活中应用比较广泛。

二、PID原理

常规的模拟 PID 控制系统原理框图如下图所示:
【PID控制原理及其算法】

	从上图可以发现,这是一个闭环控制系统,由PID控制器、传感器、被控对象构成。
被控对象的输出就是系统的输出,而系统的输出会被传感器传感,传感器会输出反馈信号给输入;
	给定输入和反馈输入经过比较之后会产生一个误差(偏差),这个误差就是PID控制器的输入;pid控制器经过运算处理之后会输出控制量(或控制量的增量)给到执行机构(上图中没有画出执行机构),从而改变被控对象的输出。

那么使用PID的目的是什么呢?

我的理解是快速调节系统,最终让系统的输出和给定输入保持一致。

PID的控制环节和参数

既然要使用PID控制器,那么肯定要涉及到三个重要环节及其参数:

环节 参数
比例 Kp
积分 Ti
微分 Td
注:Kp是比例系数,Ti是积分常数,Td是微分常数

下面介绍每个环节的作用

比例环节

比例环节的作用是对偏差瞬间作出反应。偏差一旦产生控制器立即产生控制作用, 使控制量向减少偏差的方向变化。 控制作用的强弱取决于比例系数Kp, 比例系数Kp越大,控制作用越强, 则过渡过程越快, 控制过程的静态偏差也就越小; 但是Kp越大,也越容易产生振荡, 破坏系统的稳定性。 故而, 比例系数Kp选择必须恰当, 才能过渡时间少, 静差小而又稳定的效果。

积分环节

从积分部分的数学表达式可以知道, 只要存在偏差, 则它的控制作用就不断的增加; 只有在偏差e(t)=0时, 它的积分才能是一个常数,控制作用才是一个不会增加的常数。 可见,积分部分可以消除系统的偏差。

积分环节的调节作用虽然会消除静态误差,但也会降低系统的响应速度,增加系统的超调量。积分常数Ti越大,积分的积累作用越弱,这时系统在过渡时不会产生振荡; 但是增大积分常数Ti会减慢静态误差的消除过程,消除偏差所需的时间也较长, 但可以减少超调量,提高系统的稳定性。

当 Ti 较小时, 则积分的作用较强,这时系统过渡时间中有可能产生振荡,不过消除偏差所需的时间较短。所以必须根据实际控制的具体要求来确定Ti 。

微分环节

实际的控制系统除了希望消除静态误差外,还要求加快调节过程。在偏差出现的瞬间,或在偏差变化的瞬间, 不但要对偏差量做出立即响应(比例环节的作用), 而且要根据偏差的变化趋势预先给出适当的纠正。为了实现这一作用,可在 PI 控制器的基础上加入微分环节,形成 PID 控制器。

微分环节的作用使阻止偏差的变化。它是根据偏差的变化趋势(变化速度)进行控制。偏差变化的越快,微分控制器的输出就越大,并能在偏差值变大之前进行修正。微分作用的引入, 将有助于减小超调量, 克服振荡, 使系统趋于稳定, 特别对髙阶系统非常有利, 它加快了系统的跟踪速度。但微分的作用对输入信号的噪声很敏感,对那些噪声较大的系统一般不用微分, 或在微分起作用之前先对输入信号进行滤波。

总结特点

环节 特点
比例 偏差一产生,控制器立即做出响应,产生控制作用,使控制量向减少偏差的方向变化
积分 消除系统的静态误差;但同时会降低系统的响应速度,增加超调量;积分时间越长,积分的积累作用越弱,消除静态误差的时间会变长;但系统过渡时不会产生振荡,可以减少超调量,提高系统的稳定性
微分 加快调节过程,阻止偏差的变化;有助于减少超调量,克服振荡,使系统趋于稳定

三、PID的分类

PID分为数字PID和模拟PID。

模拟PID

模拟PID控制系统的原理框图如下图所示:
【PID控制原理及其算法】

r(t)是给定输入,e(t)是偏差,u(t)是控制器的输出,y(t)是被控对象的输出。

模拟PID控制器的控制规律如下:
【PID控制原理及其算法】

把上面这个数学表达式剖开,

比例部分:

Kp * e(t)

积分部分:
【PID控制原理及其算法】

微分部分:
【PID控制原理及其算法】

数字PID

  1. 位置型PID算法

pid算法的数学表达式如下表达式1:
【PID控制原理及其算法】
(表达式1)

将其离散化,以T作为采样周期,上述表达式可变为表达式2:
【PID控制原理及其算法】
(表达式2)

把表达式2中的参数整定后得到下面的表达式3:
【PID控制原理及其算法】
(表达式3)

上面的表达式中:
k ―― 采样序号, k =0, 1, 2,……;
uk ―― 第 k 次采样时刻的计算机输出值;
e(k) ―― 第 k 次采样时刻输入的偏差值;
e(k-1) ―― 第 k -1 次采样时刻输入的偏差值;
Ki ――积分系数, Ki=Kp *T / Ti ;
Kd ――微分系数, Kd=Kp *Td / T ;

  1. 增量型PID算法

既然u(k)的表达式确定了,那么把u(k) 减去u(k-1)就可以得到控制量的增量,所以得到的数学表达式如下:
【PID控制原理及其算法】

其中,
【PID控制原理及其算法】

【PID控制原理及其算法】

【PID控制原理及其算法】

不同PID算法的特点

算法 特点 1
位置型 位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值
增量型 增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大
算法 特点 2
位置型 位置式PID适用于执行机构不带积分部件的对象,如电液伺服阀
增量型 增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机
算法 特点 3
位置型 位置式的输出直接对应对象的输出,因此对系统影响较大
增量型 由于增量式PID输出的是控制量增量,如果计算机出现故障,误动作影响较小,而执行机构本身有记忆功能,可仍保持原位,不会严重影响系统的工作

四、PID代码实现

位置型PID算法

源码如下:

//位置型PID算法源码
typedef struct
{
  float Kp;                       //比例系数Proportional
  float Ki;                       //积分系数Integral
  float Kd;                       //微分系数Derivative
 
  float Ek;                       //当前误差
  float Ek1;                      //前一次误差 e(k-1)
  float Ek2;                      //再前一次误差 e(k-2)
  float LocSum;                   //累计积分位置
}PID_LocTypeDef;
 
/************************************************
函数名称 : PID_Loc
功    能 : PID位置(Location)计算
参    数 : SetValue ------ 给定值(期望值)
            ActualValue --- 实际值(反馈值)
            PID ----------- PID数据结构
返 回 值 : PIDLoc -------- PID位置
*************************************************/
float PID_Loc(float SetValue, float ActualValue, PID_LocTypeDef *PID)
{
  	float PIDLoc;                                  //位置
 
  	PID->Ek = SetValue - ActualValue;
  	PID->LocSum += PID->Ek;                         //累计误差
 
  	PIDLoc = PID->Kp * PID->Ek + (PID->Ki * PID->LocSum) + PID->Kd * (PID->Ek - PID->Ek1);
 
  	PID->Ek1 = PID->Ek;  
	return PIDLoc;
}

上面代码中的Kp是指比例系数;
Ki = Kp * T / Ti;
Kd = Kp * Td / T。

增量型PID算法

源码如下:

//增量型pid算法
typedef struct
{
  float Kp;                       //比例系数Proportional
  float Ki;                       //积分系数Integral
  float Kd;                       //微分系数Derivative
 
  float Ek;                       //当前误差
  float Ek1;                      //前一次误差 e(k-1)
  float Ek2;                      //再前一次误差 e(k-2)
}PID_IncTypeDef;
 
/************************************************
函数名称 : PID_Inc
功    能 : PID增量(Increment)计算
参    数 : SetValue ------ 设置值(期望值)
            ActualValue --- 实际值(反馈值)
            PID ----------- PID数据结构
返 回 值 : PIDInc -------- 本次PID增量(+/-)
*************************************************/
float PID_Inc(float SetValue, float ActualValue, PID_IncTypeDef *PID)
{
  	float PIDInc;                                  //增量
 
  	PID->Ek = SetValue - ActualValue;
  	PIDInc = (PID->Kp * PID->Ek) - (PID->Ki * PID->Ek1) + (PID->Kd * PID->Ek2);	//参数已做整定
 	
  	PID->Ek2 = PID->Ek1;
  	PID->Ek1 = PID->Ek;  
return PIDInc;
}

在上面代码中:(参数是经过整定的)
实际上:
Kp = KP + KI + KD;
Ki = KP + 2 * KD;
KD = KD;

而KP就是比例系数
KI = KP * T / Ti; //Ti是指积分时间
KD = KP * Td / Ti //Td是指微分时间


总结

以上就是今天要讲的内容,本文简单介绍了PID的概念、PID的控制原理,以及介绍了PID不同算法的特点及其示例源码文章来源地址https://www.toymoban.com/news/detail-423513.html

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

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

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

相关文章

  • 神经网络自适应PID控制及其应用

    总结来自重庆大学宋永瑞教授2022暑期校园行学术会议   目前人工智能的发展为很多领域里的研究提供了可延展性,提供了新的研究问题的思路,无人系统和人工智能正走向深度融合,无人系统里具有核心驱动作用的智能控制算法的研究成为了热点问题。 人工智能的理论深

    2024年01月21日
    浏览(47)
  • 9、基于51单片机PID算法温度控制系统设计(程序+Proteus仿真+原理图+PCB图+参考论文+开题报告+任务书等)

    目录 摘要 一、硬件方案 二、设计功能 三、成品实物图 四、原理图  五、PCB图 六、Proteus仿真  七、程序源码    资料包括:     随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中 数字温度计 就是一个典型

    2024年02月05日
    浏览(52)
  • 基于Matlab自抗扰控制器及其PID控制(附上完整源码+数据)

    自抗扰控制器(Active Disturbance Rejection Control, ADRC)是一种新型的控制策略,它具有强大的抗干扰能力和良好的控制性能。与传统的PID控制器相比,ADRC能够更好地抑制系统的干扰,提高控制系统的稳定性和鲁棒性。 在ADRC中,核心思想是引入一个扰动观测器(Disturbance Observer,

    2024年02月16日
    浏览(51)
  • 麦克纳姆轮PID控制原理

    目录 前言 一、什么是麦克纳姆轮 二、运动原理 ​ 三、pid控制  一、什么是pid?  二、什么是串级PID? 三、麦克娜姆轮的控制思想 总结 目前很多大学生比赛里面经常都会出现麦克娜姆轮,并且麦克娜姆轮在工业上也应用挺广泛,例如物流搬小车。下面是我玩麦克娜姆轮的

    2024年02月02日
    浏览(64)
  • PI控制算法与PID控制算法

    PI(Proportional-Integral)控制算法 是一种常用的闭环控制策略,用于实现对系统的误差调节。PI控制器结合了比例控制(Proportional,P)和积分控制(Integral,I)两种控制方式。比例控制通过比例增益(Kp)将误差直接转换为控制输出,而积分控制通过积分增益(Ki)对误差进行积

    2024年02月14日
    浏览(39)
  • 倒立摆系统之PID和LQR控制原理

    最优控制理论是一种数学方法,用于设计和分析控制系统,以使系统的性能最优。它的目标是找到一种控制策略,使得系统在满足一定的约束条件下,能够以最优的方式实现某种目标。 牛顿第二定律: F = m ⋅ a F = m cdot a F = m ⋅ a 转动定律: W = I ⋅ α W=I cdot alpha W =

    2024年02月07日
    浏览(52)
  • 【智能车】模糊PID控制原理详解与代码实现

    本文主要由三部分构成:模糊PID控制器的原理,模糊PID控制器C++的实现与测试。 模糊PID控制流程如下图所示,把目标值 Xtarget 与输出值 Xout 的误差 e 与 e 的变化率 de/dt 作为模糊控制器的输入,模糊控制器先对输入进行模糊化处理,接着进行模糊推理,最后把模糊推理的结果

    2024年02月02日
    浏览(40)
  • PID控制算法详解

    PID 即 Proportional(比例),Integral(积分),Differential(微分)的英文缩写。顾名思义,PID 控制算法是结合比例,积分和微分三种环节于一体的自动控制算法,它是连续系统中技术最为成熟,应用最为广泛的一种控制算法,该控制算法出现于 20 世纪 30 至 40 年代,适用于对被

    2024年02月02日
    浏览(66)
  • PID控制参数整定(调节方法)原理+图示+MATLAB调试

    原文链接:https://blog.csdn.net/viafcccy/article/details/107988093 首先最重要的是了解每个参数调节了系统响应的那些属性,通过观察响应从而调节参数改变属性。 PID的作用概述: 1、P产生响应速度和力度,过小响应慢,过大会产生振荡,是I和D的基础。 2、I在有系统误差和外力作用时

    2024年02月03日
    浏览(39)
  • PID控制算法代码,供大家参考

    分享一个C语言PID控制器代码: 【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~~

    2024年02月16日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包