0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PID算法终于弄明白了,没有公式那么吓人

STM32嵌入式开发 来源:STM32嵌入式开发 2024-01-18 16:09 次阅读

看起来PID高大尚,先被别人唬住,后被公式唬住,由于大多数人高数一点都不会或者遗忘,所以再一看公式,简直吓死。

直接从网上找了PID相关公式截图如下。

05e96aa6-b5d7-11ee-8b88-92fbcf53809c.png

了解了很浅的原理后,结果公式看不懂,不懂含义,所以最终没有透彻。我这里先对公式进行剖析,公式理解明白了,结合网上的一些PID讲述的例子,就明白了。

先对PID这三个系数的含义进行简单扫盲。同时也防止自己遗忘。P是比例系数,I是积分系数、D是微分系数。

下面对PID这三个系数进行详细说明:演示PID三个参数的控制作用。

比例系数P

比例系数P是干什么用,其实如果现在你是初中生的话,你一下子就懂了,比例系数就是用在穿过(0,0)这个坐标点直线的放大倍数k,k越大,直线的斜率越大,所以是用在y = k * x中的,其中的k就是比例系数p,大家都简称为kp,所以就变成了y = Kp * x。

x就是当前值currentValue和目标值totalValue的差值,简称误差err,则err = currentValue - totalValue。y就是执行器对应的输出值U,所以执行器对应的输出值U = Kp * ( currentValue - totalValue ) 。

所以,如果说是使用比例进行调节。

则当前第1次调节时执行器对应的输出值为:

U1 = Kp * ( curentValue1 - totalValue1 )

第2次调节时执行器对应的输出值为:

U2 = Kp * ( currentValue2 - totalValue2 )

这就是比例系数P的应用,也就是大家说的比例调节。比例调节就是根据当前的值与目标值的差值,乘以了一个Kp的系数,来得到一个输出值,这输出值直接影响了下次当前值的变化。如果只有比例调节的话,系统会震荡的比较厉害。比如你的汽车现在运行的速度是60km/h,现在你想通过你的执行器去控制这个汽车达到恒定的50km/h,如果你只用kp进行比例调节话。U = Kp * ( 60 - 50 ),假设Kp取值为1,此时得到U执行器的输出值是10,结果当你执行器输出后,发现汽车一下变成了35Km/h,此时U2 = Kp * (35 - 50),此时得到U执行器的输出值是-15,结果当你执行器输出后,发现汽车变成了55Km/h,由于惯性和不可预知的误差因素,你的汽车始终无法达到恒定的50km/h。始终在晃动,相信如果你在车上,你一定吐的很厉害。所以光有比例系数进行调节,在有些场合是没有办法将系统调稳定的。所以可以为了减缓震荡的厉害,则会结合使用比例P和微分D。

微分系数D

微分,实际上是对误差进行微分。加入误差1是err(1)。误差2是err(2)。则误差err的微分是 (err2 - err1)。乘上微分系数D,大家叫做KD,则当执行器第1次调节后有了第1次的误差,第2次调节后有了第2次的误差,则结合P系数。就有了PD结合,根据每次调节时,误差的值的经验推算,你就能选取出D的系数。假如误差是越来越小的,那么微分后肯定是一个负值。负值在乘以了一个D系数 加上了比例调节的值后肯定值要比单纯使用比例调节的值要小,所以就启到了阻尼的作用。有了阻尼的作用就会使得系统区域稳定。

PD结合的公式经过上面的分析后为:

U(t) = Kp * err(t) + Kd * derr(t)/dt

积分系数I

积分,实际上是对误差的积分,也就是误差的无限和。如何理解积分系数I,这里引用网上的例子

以热水为例。假如有个人把我们的加热装置带到了非常冷的地方,开始烧水了。需要烧到50℃。

在P的作用下,水温慢慢升高。直到升高到45℃时,他发现了一个不好的事情:天气太冷,水散热的速度,和P控制的加热的速度相等了。
这可怎么办?

P兄这样想:我和目标已经很近了,只需要轻轻加热就可以了。
D兄这样想:加热和散热相等,温度没有波动,我好像不用调整什么。

于是,水温永远地停留在45℃,永远到不了50℃。

根据常识,我们知道,应该进一步增加加热的功率。可是增加多少该如何计算呢?
前辈科学家们想到的方法是真的巧妙。

设置一个积分量。只要偏差存在,就不断地对偏差进行积分(累加),并反应在调节力度上。

这样一来,即使45℃和50℃相差不太大,但是随着时间的推移,只要没达到目标温度,这个积分量就不断增加。系统就会慢慢意识到:还没有到达目标温度,该增加功率啦!
到了目标温度后,假设温度没有波动,积分值就不会再变动。这时,加热功率仍然等于散热功率。但是,温度是稳稳的50℃。
kI的值越大,积分时乘的系数就越大,积分效果越明显。

所以,I的作用就是,减小静态情况下的误差,让受控物理量尽可能接近目标值。

I在使用时还有个问题:需要设定积分限制。防止在刚开始加热时,就把积分量积得太大,难以控制。最后推荐下相关文章:PID到底是个啥?讲个故事告诉你。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4455

    浏览量

    90753
  • PID
    PID
    +关注

    关注

    35

    文章

    1446

    浏览量

    83801
  • 执行器
    +关注

    关注

    5

    文章

    337

    浏览量

    19202

原文标题:PID算法终于弄明白了,没有公式那么吓人

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    谁有PID算法的详细资料

    一直都对PID算法的原理和应用存在疑问,所以现在迫切要明白
    发表于 07-26 11:08

    最全PID控制算法的C语言实现(转)

    最近项目中用到PID控制算法,查很多资料,资料上说的一塌糊涂,什么手动调节啊?说的和没说一样,对于刚接触PID的人根本
    发表于 06-01 10:53

    四轴飞行器的PID算法

    得到PID计算公式 式(8)中T为更新时间。 基于公式(8),姿态PID控制算法 式(9)为角度环PID
    发表于 01-15 17:03

    PID控制器开发笔记之一:PID算法原理及基本实现

    PID算法那么接下来我们推到一下增量型PID算法公式。上面的
    发表于 04-21 16:58

    四轴姿态控制中的PID算法的原理和实现

    ;lasterror);vPID->lasterror=thisError;}这就实现一个最简单的位置型PID控制器,当然没有考虑任何干扰条件,仅仅只是对数学公式的计算机语言化。(2
    发表于 06-11 06:00

    PID算法的愚见分享!

    ,使用的是增量式PID算法.自我感觉这个算法并不是准确的PID计算公式,只是简化计算后的计算方法,适合计算能力较弱的单片机等使用.[C] 纯
    发表于 07-24 02:23

    PID算法之模糊PID 精选资料推荐

    在实际的控制系统中,线性系统毕竟是少数,大部分的系统属于非线性系统,或者说是系统模型不确定的系统,如果控制精度要求较高的话,那么对于参数的整定过程是有难度的。专家 PID 和模糊 PID 就是为满足
    发表于 07-19 06:29

    PID算法的核心及功能

    PID算法是控制中使用的最多并且最简单的一种控制算法算法的核心就是不断计算当前值和目标值的误差,并根据误差来改变输入,最终达到目标值。废话不多说,一看代码就
    发表于 09-07 09:00

    掌握PID算法

    掌握PID算法?要深刻理解反馈机构和执行机构PID算法,不管是原理上,还是代码上都比较简单。主要运用在电机控制、开关电源、电源管理芯片等领域。 PI
    发表于 09-13 06:20

    PID算法增量式算法

    这里的PID是指控制类的比例-积分-微分算法,而不是进程ID号。PID算法,不管是原理上,还是代码上都比较简单。主要运用在电机控制、开关电源、电源管理芯片等领域。一般《自动控制原理》上
    发表于 09-13 06:06

    PID算法的应用

    这里的PID是指控制类的比例-积分-微分算法,而不是进程ID号。PID算法,不管是原理上,还是代码上都比较简单。主要运用在电机控制、开关电源、电源管理芯片等领域。一般《自动控制原理》上
    发表于 09-13 06:01

    pid算法_什么是pid算法

    PID控制器是一种最优控制。本文讲述了增量式PID算法原理与数字PID算法原理与数字PID
    发表于 01-01 11:58 1.1w次阅读
    <b class='flag-5'>pid</b><b class='flag-5'>算法</b>_什么是<b class='flag-5'>pid</b><b class='flag-5'>算法</b>

    数字PID及其算法

    数字PID及其算法详细介绍,非常实用的,一看就明白
    发表于 07-29 17:11 6次下载

    PID控制/算法到底是个啥???(不讲公式,小白可入)

    实验室买回来的机械臂小车使用的是PID算法控制,对于只会单片机做做基本控制的我真的是有些挑战,百度和CSDN上看了很多篇文章,总是一大堆的公式,干了好几天也没干懂,没想到最后小破站两个老师帮我
    发表于 01-14 11:37 6次下载
    <b class='flag-5'>PID</b>控制/<b class='flag-5'>算法</b>到底是个啥???(不讲<b class='flag-5'>公式</b>,小白可入)

    两种实现PID控制的算法的技巧

    PID控制算法公式*
    的头像 发表于 05-19 16:45 580次阅读
    两种实现<b class='flag-5'>PID</b>控制的<b class='flag-5'>算法</b>的技巧