一文看懂PID的基本原理(一):原理篇

写在前面:最近要研究锁相环,后续还有一些电路开发需求,这里就讲讲控制理论的一些东西。PID这个东西并不是自动化专业才需要学习的,只要以后要和电子系统打交道基本都要接触到反馈控制,国内感觉大多是停留在能用就行,参数胡乱调整的一个现状,不过我希望能够好好理解PID。
提醒:本文需要一定的信号与系统基础
在这里插入图片描述
控制领域中我们一般将受控对象用数学模型描述为一个系统,一个最简单的系统至少有一个输入和一个输出,当然这种没有反馈,没有控制的单输入输出系统是没有任何研究意义的,之所以发展出了控制论,是因为我们希望系统的输出按照我们的意愿来,所以我们需要给系统一个合适的输入,如此就衍生出控制理论。
在这里插入图片描述

一个带有反馈的完整系统应该如图所示。这里要说明一下command和input区别,command也可以叫做期望值,也就是我们实际上需要系统输出的结果,input则是为了满足command的需求,综合了反馈回路最后对系统的输入。
feedback通常以error(误差)的形式传到input
接下来我们举个例子:
假如我从操场跑道出发:
在这里插入图片描述
在这里插入图片描述

系统抽象如图,系统期望值一开始是100,我的开始位置为0,那么error也就是100-0=100,那么乘上乘法器的0.1,一开始的速度就是10m/s,这时候误差就会急剧减小:
在这里插入图片描述
假设在终点,这时候error=100-100=0,那么速度也就为0,也就是说在终点停下,这就是控制领域中所谓“比例控制器”的模型。

但是比例控制器并不能应用于所有场景。
假如我们是想给电烙铁添加一个控制,那么情况会如何变化呢?
假如我们想达到350℃:
在这里插入图片描述
按照之前的思路,那么在达到350℃时,error被清0,那么停止加热,很明显,烙铁的温度会马上开始降低并且低于希望值。
我们稍微想一下就会知道这和之前走路的例子差别在哪:在终点我仍希望系统输出不为0以保证期望值不变,所以实际上比例控制器并不能完成350摄氏度的要求,而是应该稳定在低于350℃的某个温度(仔细想想就能明白)。

实际上我们就需要一个能够记录过去输入的组件,来判断是否达到了期望值,当然,在数学领域我们很容易能想到integral(积分器),我们来想像一下,加入了积分器会怎么样?
在这里插入图片描述

在这里插入图片描述
当然温度并非按绘制的图像上升,我这里只是说明一下原理,现实中肯定不会停止上升然后又上升。
想象一下当比例控制器停止工作后,这时候还存在一个constant error,那么这个error就会被积分器一直积分,那么积分器就会产生一个输入,使得温度继续上升,知道error被减为0。(当超过期望值时,error为负,积分器反向积分,减小加热量,最后经过一定的震荡使得最后温度趋近于期望值)

但是纯积分器有一个巨大的缺点,也就是它会有漂移,或者说饱和问题。
这里我们就要说一下系统的两个组分了:
在这里插入图片描述
这里的actuator和process实际上就是组成system的主要部分,其中actuator就是执行器,例如电动机、加热器等等,而process可以理解成受控过程或者说受控量,也就是被actuator输出控制的量,比如车轮的转速和烙铁的温度。

那么现实中的系统大多不是我们纯理论分析时的线性系统,比如电动机的转速不可能无限制地提升,那么这就会造成很大的问题,想象一下,我们如果有一款装有积分反馈回路的电烙铁,假设其控制部分和加热部分分开供电,我一开始只开了控制部分,而没有打开加热部分,过了一段时间发现电烙铁并没有热起来,紧接着才打开了加热开关,会发生什么呢?
在这里插入图片描述
如图,红色线代表实际温度,绿色代表积分值,蓝线代表加热器的温度,红色横线则是期望值。
当我们打开控制开关时,由于error是一个正值,积分器开始不断积分,当我们打开加热开关后,代表蓝线的加热器温度开始不断上升,但由于误差始终存在,积分器的值不断增加,并且最终由于加热器的温度有限,最终积分器的值会超出实际能产生的加热温度继续上升,红色的实际温度超过了期望值以后,积分器的值已经超过期望值很多了,这时候积分器的值开始下降,但是仍然高于加热器最高温度,所以加热器会继续加热,产生危险。这就是纯积分器带来的问题。
要解决这个问题也很简单,只需在actuator前加一个积分值和阈值的绝对值比较器,以及输入和积分值的正负号比较器就可以了,如果发现积分器的输出不合理时,断开积分回路即可,这个会在接下来的实践篇详讲。

通过上文的讲述,我们知道,纯积分器和比较器混合系统(PI)一定会产生这样一个问题:输出会超过期望值,通过一定的反复震荡逼近我们的期望值。
如果我们想避免这个问题,就得再添加一个组件来约束,我们知道积分器实则反应了对系统过去的一种描述,所以我们需要引入对于系统未来的一种描述来平衡,显然,数学工具中,微分器就是一个非常好的组件:在这里插入图片描述
在这里插入图片描述
可见,微分器描述了误差的变化速率,在系统往期望值行进的过程中(也就是误差减小的过程中),微分器给出了一个调整,防止了输出过冲,使得曲线更加平滑:
在这里插入图片描述
但是纯微分器也存在一个问题——放大噪声,特别是高频噪声。
噪声原本是存在于系统中的幅值较小的干扰信号,我们假设噪声是正弦波:在这里插入图片描述
在幅值相同的情况下,很明显,高频噪声通过微分器产生的干扰要严重得多。
所以我们一般要在微分器前面串联一个低通滤波器。
微分器在s plant 表达为1/s,而低通滤波器则是N/s+N,N为截止频率,单位是弧度。 那么实际中的微分器就为N/s(s+N),值得注意的是在matlab中我们常见的D环节是由积分器实现的,这是怎么一回事呢?其实是因为我们把微分器和LF的串联用积分器和一个数乘的并联:
在这里插入图片描述
从S plant的分析结果来看,这两种结构的效果是完全一致的,但是由于微分器所占用的计算资源更多,所以我们常常用积分器来实现D环节,那么一个完整的PID环节也就只包含了积分器和数乘器,最大程度地节省了计算资源。

PID的基本原理就介绍到这里,由于本人不是自动化专业的人士,所以难免会有错误,望海涵!

本文参考了外国友人brain的matlab tech 节目,如有侵权立即删除,谢谢!

  • 11
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值