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

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

3天内不再提示

关于对增量式PID公式的疑问与解答

冬至配饺子 来源:硬件大熊 作者:雕塑者 2022-08-04 14:55 次阅读

一开始见到PID计算公式时总会问“为什么是这样子的一道公式”,为了理解那几道公式,当时将其未简化前的公式活生生地算了一遍,现在想来,这样的演算过程固然有助于理解,但假如一开始就带着对疑问的答案已有一定抽象了解后再进行演算则会理解的更快!

首先推荐白志刚的《由入门到精通—吃透PID2.0版》看完一、二章之后,建议你先通过实践练习然后再去看书里接下来的其他章节,这样你对这本书的掌握会更加高效。

PID就是对输入偏差进行比例积分微分运算,然后将运算的叠加结果去控制执行机构。实践练习中,如何把这一原理转化为程序?为什么是用那几个error进行计算?

以下是我摘录的一段PID程序,我曾用其对智能车的速度进行闭环控制:

P:Proportional 比例

I:Integrating 积分

D:Differentiation 微分

Pwm_value:输出Pwm暂空比的值

Current_error:当前偏差

last_error:上次偏差

prev_error:上上次偏差

增量式PID计算公式:

P=Kp*(current_error﹣last_error);

D=Kd*(current_error﹣2*last_error﹢prev_error);

I=Ki*current_error;

PID_add=Pwm_value+P﹢I﹢D;

一、为什么是PID_add=Pwm_value+(P﹢I﹢D)而不是PID_add=P+I+D?

poYBAGLrbCqAbGJ5AABrvpCGm4U838.png

如上图,有一个人前往目的地A,他用眼睛视觉传感器目测到距离目的地还有100m,即当前与目的地的偏差为100,他向双脚输出Δ=100J的能量,跑呀跑,10s之后,他又目测了一次,此时距离为40m,即current_error=40,他与10s前的偏差last_error=10对比,即current_error - last_error=-60,这是个负数,他意识到自己已经比较接近目的地,可以不用跑那么快,于是输出Δ=100+(-60)=40J的能量,40J的能量他刚好以4m/s的速度跑呀跑,10s之后,他发现已经到达目的点,此时current_error=0,大脑经过思考得出current_error—last_error=0 - 40=-40,两脚获得的能量Δ=40+(-40)=0,即他已经达到目的地,无需再跑。在刚才的叙述中,可知增量式P+I+D输出的是一个增量,将该增量与调节量相加后所得到值才是最终输出量,其反应的是之前的输出量是在当前的状态中是该增加还是该减少

二、纯比例控制P=Kp*(current_error﹣last_error),怎样理解﹙current_error﹣last_error ﹚?

pYYBAGLrbEOAfSFCAABSwmJg4TM786.png

PID中纯比例控制就是把被控制量的偏差乘以一个系数作为调节器的输出,在增量式PID中,反映在程序上的,我们被控制量就是error,而实际上,例如在速度控制中error=目标速度﹣当前速度,所以明确目的:我们通过控制error趋近于0,最终使得当前速度趋近于目标速度

如上图,函数经过时间Δt,由y1变化为y2时,问y增长的比例为多少?很显然:K=﹙y2-y1﹚/Δt;

pYYBAGLrbFqAZQ7iAABeEDTScI8782.png

以速度控制为例,若y为error,如上图,在时间t1到t2的过程中,我们可以得到输出控制量error变化的趋势为(current_error - last_error)/Δt。得到偏差的变化趋势后,乘以Kp使输出量与error相对变化。这个道理犹如模拟电子电路中,声音信号经过功放管放大输出的信号与输入信号相对应的线性变化

三、引进微分控制?

然而,通常情况下,我们的被控制量并非纯比例式地变化,如下图:

poYBAGLrbHOAXVnyAABnQowJ-Ew517.png

比例表示变化趋势,微分则表示变化趋势的变化率,映射到一个图像曲线中即为导数的变化!上图中若求曲线中x2至x1某点的斜率,当Δt足够小时,则可近似为(y2 - y1)/Δt ,可知x3到x1导数的变化为﹛(y3 - y2) -(y2 - y1)﹜/Δt =(y3 - 2*y2﹢y1)/Δt 。将不同时间的y1、y2、y3映射为prev_error、last_error、current_error;则error变化趋势的变化为﹛(current_error - last_error) - (last_error - prev_error)﹜/Δt=﹛﹙current_error - 2*last_error﹢prev_error﹚﹜/Δt,可得微分D=Kd*(current_error﹣2*last_error﹢prev_error)。在系统中加入微分反映系统偏差信号的变化率,能预知偏差变化的趋势,具有超前控制作用,提前处理偏差

四、引进积分控制?

poYBAGLrbIWACPRWAACMZnBK-x0411.png

积分控制可以消除偏差,体现在公式中较容易理解,当前的偏差差经过系数Ki的放大后映射为输出控制量,即I=Ki*current_error。P只要前后偏差之差为0,即current_error - last_current=0,则不进行调节,D只要前后偏差变化率为0,即(current_error﹣2*last_error﹢prev_error)=0,则不进行调节。而对于积分只要偏差存在,调节就始终进行,因此积分可以消除误差度,但在在某些情况下,一定范围内的误差是允许的,而如果此时积分调节始终存在,可能会导致系统稳定性下降,如上图,此时可通过弱化积分系数Ki使系统稳定。



审核编辑:刘清


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

    关注

    2525

    文章

    48069

    浏览量

    739981
  • PID
    PID
    +关注

    关注

    35

    文章

    1446

    浏览量

    83792
  • 智能车
    +关注

    关注

    21

    文章

    395

    浏览量

    76691
  • 调节器
    +关注

    关注

    5

    文章

    768

    浏览量

    45842
收藏 人收藏

    评论

    相关推荐

    关于 增量pid 的一些疑问

    大家好请教一个迷惑我很久的问题。请大家帮我看看。我正在做一个流量控制系统。参考增量PID公式:△u(k)=Kp*[e(k)-e(k-1)]+Ki*e(k)+Kd*[e(k)-2e(k
    发表于 09-02 10:18

    浅析位置PID增量PID算法

    位置PID增量PID算法通常依据控制器输出与执行机构的对应关系,将基本数字PID算法分为位
    发表于 01-15 18:35

    位置PID增量PID的区别在哪?

    什么是PIDPID控制器主要有哪些应用?位置PID增量
    发表于 07-13 08:13

    增量PID的原理及代码

    1、增量PID的原理、增量PID的最后公式2、增量PID
    发表于 09-03 08:29

    在STM32如何去实现增量PID算法

    尽快进入状态。特地分享一些自己如何实现的过程。首先说说增量PID公式,这个关系到MCU算法公式的书写,实际上两个
    发表于 09-13 06:54

    PID算法增量算法

    算法,如下图所示。但是工程上,用增量算法比较多,这样可以避免积分环节饱和溢出的问题,具体公式和整定参数的口诀就不贴出来了,网上资料多如牛毛。下面看这样的一
    发表于 09-13 06:06

    如何实现增量PID

    虽然PID不是什么牛逼的东西,但是真心希望以后刚刚接触这块的人能尽快进入状态。特地分享一些自己如何实现的过程。首先说说增量PID公式,这
    发表于 09-13 08:19

    什么是增量PID

    目录:一、什么是增量PID二、硬件部分三、软件部
    发表于 09-13 09:05

    增量PID的stm32实现及其整定过程 

    源:增量PID的stm32实现,整定过程  首先说说增量PID
    发表于 09-13 07:35

    增量PID公式介绍

    增量PID公式,这个关系到MCU算法公式的书写,实际上两个公式的写法是同一个
    发表于 09-13 08:28

    位置PID增量PID简介

    位置PID公式增量PID公式位置
    发表于 01-20 07:40

    位置PID增量PID区别是什么?

    位置 PID增量 PID有什么区别。在小车调速里一般用增量
    发表于 10-26 06:54

    请问如何调节增量pid

    增量pid中的kpkikd对应位置的中的pi d 的值吗,调节增量
    发表于 11-09 07:27

    关于电池的一些疑问解答

    关于电池的一些疑问解答 (1)电池不用时,低温冷藏,正确吗?  错误,将电池低温冷藏并不能够延长电池的使用寿命
    发表于 11-13 14:25 506次阅读

    增量pid参数调整公式及策略

    增量PID控制,数字PID控制算法的一种基本形式,是通过对控制量的增量(本次控制量和上次控制量的差值)进行PID控制的一种控制算法。
    的头像 发表于 02-26 14:57 5.1w次阅读