推荐PID算法通俗讲解

上传人:痛*** 文档编号:85649266 上传时间:2022-05-06 格式:DOC 页数:9 大小:98KB
收藏 版权申诉 举报 下载
推荐PID算法通俗讲解_第1页
第1页 / 共9页
推荐PID算法通俗讲解_第2页
第2页 / 共9页
推荐PID算法通俗讲解_第3页
第3页 / 共9页
资源描述:

《推荐PID算法通俗讲解》由会员分享,可在线阅读,更多相关《推荐PID算法通俗讲解(9页珍藏版)》请在装配图网上搜索。

1、(完整word版)PID算法通俗讲解编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布 的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是 任然希望(完整word版)PID算法通俗讲解)的内容能够给您的工作和学习带 来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前 进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活 愉快业绩进步,以下为(完整word版)PID算法通俗讲解的全部内容。# include PID. iCurVal)(if (PIDo iSetVaI PID. iCurV

2、al 10) PIDo iPriVal = 100;速加热)e I se于实际值/*数值进行移位,注意顺序,否则会覆盖掉前面的数值*/PIDo IiEkVal 2 = PID. IiEkVal1;PIDo I i EkVa I 1二 PID. I iEkVal 0;PIDo IiEkVal0 = Temp0;/*if (PIDo I i EkVa I 0 PIDO I iEkVal 1 )/E (k) E (k1)否?Temp0 = PID. I iEkVal 0 PID. I iEkVal 1;/E (k) E(k1)PIDo uEkFlag0 = 0;/E(k)-E (k1)为正数e I

3、seTemp0 = PID. I iEkVal 1 PIDO I iEkVal 0:/E(k) Temp 2 ) /E (k2) +E(k) 2E (k1)否?Temp2 = (PID. I iEkVal 0 + PID。I iEkVal 2)- Temp2;PIDo uEkFlag2 =0;/E(k2) +E(k)-2E (k-1)为正数else/E(k2) +E (k) PID. iCurVal (即 E (K) 0)才 进入if的,那么就没可能为负,所以打个转回去就是了 */* =:计算 KD*E(k2)+E (k)-2E (k-1)的值=*/ if (PIDo uEkFlag 2二二0

4、)PostSum + 二 Temp 2 ;/正数和e I seNegSum += Temp 2 ;/负数和/ * =计算 U (k) = */PostSum += (ulnt32)PIDo iPr i VaI;if (PostSum NegSum)/是否控制量为正数Temp0 = PostSum - NegSum;if (TempO 0,才有必要减1uCounter+;if (100 = uCounter)PID_0peration () ;/每过 0.1*100S 调用一次 PID 运算.uCounter 二 0;/* * * * * * * 头夫* * /* 函数名称:PID.Output

5、O/*函数功能:PID輪岀控制/*入口参数:无(隐形输入,U (k)/夫出口参数:无(控制端)* * * * * * * 未 未 * * * */void TimerOlnit (void)TMOD|二 0x01;/设置定时器0工作在模式1下THOOxDC;TLO0x00;/赋初始值TRO1;/开定时器0EA 二1;/开总中断ETO =:1;/开定时器中断void main (void)TimerOInit ();whi le(1)(PID-Output ();void TimerO一ISR (void) interrupt 1 static ulnt16 uiCounter 二 0;THO

6、= OxDC;TLO = 0x00;uiCounter+;if(100 二二 uiCounter)gbPIDRunFlag 二 1;总所周知,PID算法是个很经典的东西。而做自平衡小车,飞行器PID是一 个必须翻过的坎。因此本节我们来好好讲解一下PID,根据我在学习中的体 会,力求通俗易懂并举出PID的形象例子来帮助理解PID。一、首先介绍一下PID名字的由来:P: Proport io n (比例),就是输入偏差乘以一个常数。I : Integral (积分),就是对输入偏差进行积分运算。D: Derivative (微分),对输入偏差进行微分运算。注:输入偏差二读出的被控制对象的值-设定值

7、。比如说我要把温度控制在 26度,但是现在我从温度传感器上读出温度为28度.则这个26度就是”设 定值28度就是“读出的被控制对象的值”。然后来看一下,这三个元素 对PID算法的作用,了解一下即可,不懂不用勉强。P,打个比方,如果现在的输出是1,目标输出是100,那么P的作用是以最 快的速度达到100,把P理解为一个系数即可;而I呢?大家学过高数的,0 的积分才能是一个常数,I就是使误差为0而起调和作用;D呢?大家都知 道微分是求导数,导数代表切线是吧,切线的方向就是最快到至高点的方 向。这样理解,最快获得最优解,那么微分就是加快调节过程的作用了。二、然后要知道PID算法具体分两种:一种是位置

8、式的,一种是增量式的。 在小车里一般用增量式,为什么呢?位置式PID的输出与过去的所有状态 有关,计算时要对e (每一次的控制误差)进行累加,这个计算量非常大,而 明显没有必要。而且小车的PID控制器的输出并不是绝对数值,而是一个 ,代表增多少,减多少。换句话说,通过增量PID算法,每次输出是PWM 要增加多少或者减小多少,而不是PWM的实际值。所以明白增量式PID就 行了.三、接着讲PID参数的整定,也就是PID公式中,那几个常数系数Kp, Ti,Td等是怎么被确定下来然后带入PID算法中的。如果要运用PID,则 PID参数是必须由自己调出来适合自己的项目的通常四旋翼,自平衡车的 参数都是由

9、自己一个调节出来的,这是一个繁琐的过程。本次我们可以不 管,关于PID参数怎么确定的,网上有很多经验可以借鉴.比如那个经典的 经验试凑口诀:参数整定找最佳,从小到 大顺序查.先是比例后积分,最后再把微分加。曲线振荡很频繁,比例度盘要放大.曲线漂浮绕大弯,比例度盘往小扳。间往下降。曲线偏离回复慢,积分时间再加长。曲线波动周期长,积分时降下来。曲线振荡频率快,先把微分间应加长。动差大来波动慢,微分时低四比一。理想曲线两个波,前咼后量不会低。一看二调多分析,调节质四、接下来我们用例子来辅助我们把常用的PID模型讲解了。(PID控制并 不一定要三者都出现,也可以只是PI、PD控制,关键决定于控制的对象

10、。)(下面的内容只是介绍一下PID模型,可以不看,对理解PID没什么用) 例子:我们要控制一个人,让他一 PID的控制方式来行走0步后停下来。1) P比例控制,就是让他按照一定的比例走,然后停下。比如比例系数为 108,则走一次就走了 108步,然后就不走了。说明:P比例控制是一种最简单的控制方式,控制器的输出与输入误差信号 成比例关系。但是仅有比例控制时系统输出存在稳态误差。比如上面的只 能走到108,无论怎样都走不到门0。2) PI积分控制,就是按照一定的步伐走到112步然后回头接着走,走到 108步位置时,然后又回头向110步位置走。在门0位置处来回晃荡几次, 最后停在门0步的位置。说明

11、:在积分I控制中,控制器的输出与输入误 差信号的积分成正比关系对一个自动控制系统来说,如果在进入稳态后存 在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统为了消除 稳态误差,在控制器中必须引入“积分项”。积分项对误差的影响取决于 时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项 也会随着时间的增加而加大,它推动控制器的输出增大,从而使稳态误差 进一步减小,直到等于0因此,比例+积分(PI)控制器可以使系统在进入 稳态后无稳态误差。3) PD微分控制,就是按照一定的步伐走到一百零几步后,再慢慢地走向 门0步的位置靠近,如果最后能精确停在门0步的位置,就是无静差控制;

12、如果停在0步附近(如109步或1门步位置),就是有静差控制. 说明:在微分控制D中,控制器的输出与输入误差信号的微分(即误差的变 化率)成正比关系.自动控制系统在克服误差的调节过程中可能会出现振荡甚至失 稳,原因是存在较大惯性组件(环节)或滞后组件,具有抑制误差的作用, 其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超 前”,即在误差接近于零时,抑制误差的作用就应该是零。这就是说,在 控制器中仅引入“比例P”项往往是不够的,比例项的作用仅是放大误差的 幅值,而目前需要增加的是“微分项“,它能预测误差变化的趋势。这样,具 有比例+微分的控制器就能够提前使抑制误差的控制作用等于零,

13、甚至为负 值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象, 比例P+微分D(PD)控制器能改善系统在调节过程中的动态特性.五、用小明来说明PID:小明接到这样一个任务:有一个水缸有点漏水(而且漏水的速 度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度 低于要求位置,就要往水缸里加水。小明接到任务后就一直守在水缸旁边, 时间长就觉得无聊,就跑到房里看小说了,每30分钟来检查一次水面高度。 水漏得太快,每次小明来检查时,水都快漏完了,离要求的高度相差很远, 小明改为每3分钟来检查一次,结果每次来水都没怎么漏,不需要加水, 来得太频繁做的是无用功。几次试验后,确定

14、每10分钟来检查一次.这个 检查时间就称为采样周期.开始小明用瓢加水,水龙头离水缸有十几米的 距离,经常要跑好几趟才加够水,于是小明又改为用桶加,一加就是一桶, 跑的次数少了,加水的速度也快了,但好几次将缸给加溢出了,不小心弄湿 了几次鞋,小明又动脑筋,我不用瓢也不用桶,老子用盆,几次下来,发现 刚刚好,不用跑太多次,也不会让水溢出。这个加水工具的大小就称为比例 系数。小明又发现水虽然不会加过量溢出了,有时会高过要求位置比 较多,还是有打湿鞋的危险。他又想了个办法,在水缸上装一个漏斗,每 次加水不直接倒进水缸,而是倒进漏斗让它慢慢加。这样溢出的问题解决 了,但加水的速度又慢了,有时还赶不上漏水

15、的速度。于是他试着变换不 同大小口径的漏斗来控制加水的速度,最后终于找到了满意的漏斗。漏斗的 时间就称为积分时间。小明终于喘了一口,但任务的要求突然严了,水位控制的及时 性要求大大提高,一旦水位过低,必须立即将水加到要求位置,而且不能高 出太多,否则不给工钱。小明又为难了!于是他又开努脑筋,终于让它想到 一个办法,常放一盆备用水在旁边,一发现水位低了,不经过漏斗就是一 盆水下去,这样及时性是保证了,但水位有时会高多了。他又在要求水面位 置上面一点将水缸要求的水平面处凿一孔,再接一根管子到下面的备用桶里 这样多出的水会从上面的孔里漏出来。这个水漏出的快慢就称为微分时间。六、在代码中理解PID:(

16、好好看注释,很好理解的.注意结合下面PID的公 式)首先看PID的增量型公式:PID二Uk+KP* E (k) -E (k-1 ) +KI*E(k) +KD*【E (k) 2E (k1)+E (k-2 )】 在单片机中运用PID,出于速度和RAM的考虑,一般不用浮点数,这里以整 型变量为例来讲述PID在单片机中的运用。由于是用整型来做的,所以不 是很精确。但是对于一般的场合来说,这个精度也够了,关于系数和温度在 程序中都放大了 W倍,所以精度不是很高,但是大部分的场合都够了,若 不够,可以再放大10倍或者100倍处理,不超出整个数据类型的范围就可 以了。一下程序包括PID计算和输出两部分。当偏差10度时全速加热,偏 差在10度以内时为PID计算输出.程序说明:下面的程序,先看ma in函数。可知在对定时器0初始化后就一 直在执行PID_0utput ()函数。在PID_0utput ()函数中先用iTemp变量 来得到PID运算的结果,来决定是启动加热丝加热还是不启动加热丝。下 面的if语句结合定时器来决定PID算法多久执行一次。PID_0perat ion() 函数看似很复杂,其实就一直在做一件事:根据提供的数据,用PID公式把 最终的PID值算出来。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!