模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

720查看 | 14回复

关于PID的理解问题

[复制链接]
发表于 2019-3-18 21:19:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
截止到2019年3月18日,我从来就没有看过一篇能把PID整明白的文章。

凡是拿PID说事的人,其实都对PID一知半解。都知道它名气比较大。但是对于它是什么,都含含糊糊。在讲解的时候,都刻意回避了重要的地方。

如果能说得通了,那么一通百通。

以下几个问题,困扰我多年:
1,P控制的问题。单纯P控制无法消除静差,请问,为撒?
2,积分的问题,比如我调控可调温烙铁,刚开始,我直接把旋钮调节到顶(最大),过一会,我再把旋钮调节到中间(一般使用也是在中间,温度就够了),请问,这个算积分控制参与其中了吗?
3,微分的问题。能否举10个最为常见,最为简单的例子,来说明微分控制是怎么回事?
发表于 2019-3-18 22:34:44 | 显示全部楼层
我也对PID一直懵逼
回复 支持 反对

使用道具 举报

发表于 2019-3-18 23:04:24 | 显示全部楼层
路过ヽ(  ̄д ̄;)ノ顶一个
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-19 07:08:19 | 显示全部楼层
qq1008611 发表于 2019-3-19 03:14
我以为,你要自成一派,讲解如何调参呢!

哪里哪里,我只是对于网络上讲解PID感到很愤怒罢了。

很多人都说PID,但是一开始就涉及到公式,函数。一旦举例,就那么几个例子,反过来覆过去使用。如果真的理解了什么是PID,难道,不能多举几个例子吗?

但是PID的基本原理,却是绕不开的一个问题啊。
回复 支持 反对

使用道具 举报

发表于 2019-3-19 11:24:39 | 显示全部楼层
这么说。P是用静态误差来反馈实现控制。p要有输出必须是误差乘以一个k.所以系统在工作必定存在静差。i是对静差进行积分。得到反馈控制信号。只要静差存在责一直输出修正信号。最终无静差。无静差时控制信号保持不变。系统无静差。D微分控制。对输出变化进行微分就是斜率。当斜率过大时他会减弱控制信号。避免系统超调。微分就是你停车时发现车会飞过车位,提前点下刹车。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-19 16:52:19 | 显示全部楼层
纸鹤少年 发表于 2019-3-19 11:24
这么说。P是用静态误差来反馈实现控制。p要有输出必须是误差乘以一个k.所以系统在工作必定存在静差。i是对 ...

还是懵圈。

我见过一个说法,对于静差是这样说的。相对来说,还是比较好理解。

自动控制,也就是说,如果有误差,和希望达到的状态不同,那么就根据情况加以调整,得到自己希望达到的状态。比如说,我想让一个机器给我倒一杯水,这个水要倒到杯子的二分之一就可以了。但是机器傻啊,它打开水龙头,开始向杯子里注水。过了一会,达到了四分之一。这当然没有达到我希望的目标,于是,我希望它能纠正这个错误,于是就告诉它去纠正。那么这个机器接收到这个反馈,就开始想,是倒水倒多了,还是倒少了?那么它必须知道自己注入的水量和我期望得到的水量的差。根据差值的正负,来决定是再继续注水,还是把杯子里面的水倒出来一点。

这就是自动控制了。

类似的例子还有很多。比如让机器烤肉,我希望温度达到200度。机器开始给电热丝通电。过了一会,温度达到170度,那么这个时候还没有达到我期望的目标。这个时候,我如果参与进去,就是一个反馈,我必须得告诉它呀。如果我不告诉它,它也不测量自己加热的后果,那就是没有反馈,后果可想而知。当它得到了反馈,知道了自己是加热不足,还是加热过火,然后才去一定的措施,来纠正自己的行为,然后努力达到我期望的200度的目标,这个过程,也就是自动控制了。

不知道我说这么一大堆,是不是说清楚了。这是自动控制和反馈的概念,以及正反馈和负反馈的概念。类似的例子,你想要多少,我可以举例出来多少,都很形象。

所以,我认为自己对于以上的概念,基本认识清楚了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-19 17:01:43 | 显示全部楼层
所谓静差,实在是一个不好理解的概念。但是经过查阅成百上千的文章,我终于见到了一个说法,令我豁然开朗。(也许豁然开朗了一半吧)

它是这样描述的:当一个水龙头给一个水箱开始注水(一个司空见惯抄袭烂了的例子,但是我保证后面的说法非常不同),水箱有进水口也有出水口。出水口龙头和进水口龙头的流量在开始的时候是相同的。这个时候,液面维持在一个位置,不再随时间发生变化了。

但是我希望它的液面达到另外一个值。于是我把进水口龙头开大(流量增加),这个时候,由于出水口的龙头没有变化,所以很容易知道,液面开始上升了。看到这个状况,我于是把出水口的龙头流量也开大了。当出水口的龙头的流量再一次调节得和进水口流量一致的时候,液面就再一次不再发生了变化(达到了稳态)。但是,各位观众......

这个时候,液面是否达到了我期望得到的值呢?答案是否定的。也许它还远远没有达到我期望的值。但是,这个时候系统已经达到了一个稳态。达到了一个新的稳定状态。

接下来的描述,就是我比较迷惑的地方了:自动控制的P,这个时候就不参与控制了。(由于系统已经稳定了?),但是达到的液面和期望达到的液面还是有差异,这个差异就称为“静差”。

因此我确信,我弄明白了一半,还有另外一半我没整明白。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-19 17:29:10 | 显示全部楼层
是否可以这样理解:当系统再一次平衡被破坏,增大了进水口龙头的水流量后,由于存在着误差(和期望水面不一样),所以P开始调控,调控的量,是和误差成正比例关系。当再一次达到了稳态的时候,误差恒定了,不再增长了!这个时候P的值也恒定了,不再增长了!,于是......各位观众,虽然系统没有达到期望状态,但是P调控已经失灵了。因为它的量无法再根据实际情况增大和减小,因为,系统再一次达到了稳态。稳态,就意味着误差已经恒定了。

那么谁来告诉这个调控机制,让它知道自己还没干完活?还应该继续?

这时候,就是P出场的时候了。当系统当前状态和期望状态有误差,那么刚开始的时候,P,I都会同时意识到。但是I一开始就参与控制,实在是没有啥必要。于是P先干活。I要等等再干活。怎么实现等待呢?误差叠加大法。也就是说,如果误差累计叠加到一定的地步,I再参与。当出现上面的状况的时候,I就出手参与。让控制系统继续调控。

也许,那稳态还会出现,但是,有了I的参与,调控会继续进行。到什么时候为止呢?到误差累加和为0的时候。这个状态,除非,仅当液面达到了期望值,而且一直打到期望值的时候,才可能出现。于是误差就可以被消灭了。


但是,各位,还有个问题。如果误差的增长或者减小的速度非常快,而调节机构执行的速度是恒定的。那么就会有问题。调节的过程有可能非常的慢,或者非常快。那么容易调节过头,或者调节不足。于是就加入D.

抱歉各位,最后关于D,实在喷不出来了。因为实在没有透彻理解。楼下继续。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-19 18:01:12 | 显示全部楼层
卧槽,今天老衲开挂了。居然又参透了D控制。

大家都见过方波。当方波跳变的啥时候,有的时候上升沿是几乎垂直的,有的方波跳变的上升沿或者下降沿不是几乎垂直,而是稍微倾斜的。这个时候,我们就可以说,几乎垂直跳变的方波,跳变时间短,变化非常快速。而倾斜不是那么垂直的方波跳变,我们就说,跳变相对时间较长,变化比较缓慢。当我面对的系统不是一个恒速变化系统,而是一个变速变化系统的时候,如果误差纠正执行机构一直以一个恒定的速度来调控,那么有时候会产生很大的问题。会产生什么严重问题呢?

比如我调控电烙铁,打开烙铁,十分钟过去了,它还是不能把温度调控到位,然后我问它,老大,你干撒呢?它说,我正在调,我已经知道了我先在距离你期望的差距了,然后我已经乘以一个比例系数P来把误差值变化得和调节机构动作值有了一个合理的匹配了。先在我正在加热。奈何,加热是要一个过程额,不能说,你先在开,然后温度蹭蹭就直接上去了,是不?
我就反驳它,你为撒不能直接加大加热功率?让加温的速度上去一点?
它回到:SORRY,我不知道你这么急,也没人告诉我,我也不能直接发现你这么猴急呀。
我说,好,你给我听好了,我只要加热开始的时候,咳嗽一声,就代表急迫。咳嗽两声,就代表急迫+1;咳嗽三声,你懂得。
于是,我的电烙铁,根据我开机时候的咳嗽的声音,就明白我加热着急的程度,从而控制开始的加热功率,从而调节加热速度,来满足我的需求。
其实好多上千块的电烙铁就是这么干的。它们在开机几秒以后,就可以化锡。这就是动用了D机制(可以这样说?),刚开始给出很大的加热功率,让电烙铁迅速提温,到温度上去了以后,直接再恒定温度。当碰到大焊点,热阻非常低,热流出非常快的时候,它们又能感知,然后迅速加大几倍的加热功率(二十瓦的烙铁在那一瞬间变身为200W的电烙铁),那么大焊点,当然秒化了。很多人不懂,觉得外国货就是牛逼,其实,这是一个非常简单的机制罢了。

当我们知道,衡量变化速度的最好的方法,无非是在其变化曲线上观察它变化时候曲线的倾斜程度罢了。如果你愿意,刚好这个斜率有个B格爆棚的名字:微分(D)!

因此,对于变速变化系统,让调节机构保持和变化速度相一致的调节速度无疑十分重要。尤其对于实时系统就更为紧要。比如多轴。你当然希望当一个扰动加入到一个恒定变化系统以后(恒速系统就演变成了变加速或者变减速系统),这个时候,你当然希望调控立刻发挥作用,而不应该按照原来的步调调控。如果它还是按照原来的步调调控,说不定,多轴都已经翻到,日了地球了,它还在地上慢慢调控呐!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-19 18:15:26 | 显示全部楼层
根据以上理解,那么对于调节PID有以下认识:

当要调节PID的时候,要在无风的环境下开始(去除扰动,让系统处于一个恒速变化(近似)的状态)。
当在无风的环境下,每次无人机都会距离目标水平值差一点,并且不再干活的时候,就可以考虑I因素了。
当无人机每次调节的量,都明显不足,那么就可以加大P。或者明显过足,那么就可以减小P。
如果大风来了,无人接调节速度明显跟不上趟,那么你绝对应该调节D参数。
如果在无风的环境下,无人接频繁震荡,你绝对不应该忽视P参数。(超调,或者欠调发生频繁。一般超调或者欠调,都可以引发震荡。)
如果无风的环境下,老是朝着一个方向偏,那么你应该在排除了电机,电调原因后,看看I参数。
如果在风来了以后,摇晃几下,直接扣地,那么重点在D参数以外,电机功率储备是否充足,也应该纳入考量。(飞控已经意识到尽快调控,也已经发出了调整足够的量,但是电机不给力,瞬间输出不了那么大纠偏的力度,那也不行啊。)

各位老大,以上结论是否正确?(纯理论推论),请有实践经验的大大给与指正。

说实话,我没调过PID,都是按照默认参数飞的。
回复 支持 反对

使用道具 举报

发表于 2019-3-19 20:05:16 | 显示全部楼层
王东阳 发表于 2019-3-19 16:52 关于PID的理解问题 感觉与理解,怎样的问题,学会理解,思想问题 作者:纸鹤少年 6225
还是懵圈。

我见过一个说法,对于静差是这样说的。相对来说,还是比较好理解。

你要懂,先知道什么叫“阶跃响应”“负反馈调节”“调节时间”“超调量”等等自动控制理论的基本知识。
回复 支持 反对

使用道具 举报

发表于 2019-3-19 20:08:32 | 显示全部楼层
不是这样理解的。看来我要动笔了……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-20 05:45:33 | 显示全部楼层
纸鹤少年 发表于 2019-3-19 20:08
不是这样理解的。看来我要动笔了……

期待老兄大作啊。
回复 支持 反对

使用道具 举报

发表于 2019-3-20 17:47:30 | 显示全部楼层
你们在说什么神仙话语
回复 支持 反对

使用道具 举报

发表于 2019-3-24 07:43:15 | 显示全部楼层
爱撒撒,啰嗦不,啰嗦不,麻烦不,就用固件自带,比撒都强
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!