PID算法原理、调试经验以及代码13394.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PID算法原理、调试经验以及代码 前言:下班前收到网友的短信,和我说正在做PID的程序,感觉有些困难。我刚好曾经做过PID算法,故将自己以前的论文和代码做了整理,写了这篇文章,希望能够对用到PID调节器的朋友们有所帮助。也希望更多的朋友能够分享你们的经验,因为我们相信成功源于共享。 1。PID原理 2.流程图 2.流程图 2# 发表于 2007-11-2 22:21 3。PID代码 //定义变量 float Kp; //PI调节的比例常数 float Ti; //PI调节的积分常数 float T; //采样周期 float Ki; float ek; //偏差e[k] float ek1; //偏差e[k-1] float ek2; //偏差e[k-2] float uk; //u[k] signed int uk1; //对u[k]四舍五入取整 signed int adjust; //调节器输出调整量 //变量初始化 Kp=4; Ti=0。005; T=0.001; // Ki=KpT/Ti=0.8,微分系数Kd=KpTd/T=0.8,Td=0.0002,根据实验调得的结果确定这些参数 ek=0; ek1=0; ek2=0; uk=0; uk1=0; adjust=0; int piadjust(float ek) //PI调节算法 { if( gabs(ek)0.1 ) { adjust=0; } else { uk=Kp*(ek-ek1)+Ki*ek; //计算控制增量 ek1=ek; uk1=(signed int)uk; if(uk0) { if(uk-uk1=0.5) { uk1=uk1+1; } } if(uk0) { if(uk1-uk=0.5) { uk1=uk1-1; } } adjust=uk1; } return adjust; } 下面是在AD中断程序中调用的代码。 。。。。。。。。。。。 else //退出软启动后,PID调节,20ms调节一次 { EvaRegs.CMPR3=EvaRegs.CMPR3+piadjust(ek);//误差较小PID调节稳住 if(EvaRegs.CMPR3=890) { EvaRegs.CMPR3=890; //限制PWM占空比 } } 。。。。。。。。。。。。。。。。 4。PID调节经验总结 PID控制器参数选择的方法很多,例如试凑法、临界比例度法、扩充临界比例度法等。但是,对于PID控制而言,参数的选择始终是一件非常烦杂的工作,需要经过不断的调整才能得到较为满意的控制效果。依据经验,一般PID参数确定的步骤如下[42]: (1) 确定比例系数Kp 确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为 纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。 (2) 确定积分时间常数Ti 比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。 (3) 确定微分时间常数Td 微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30%。 (4) 系统空载、带载联调 对PID参数进行微调,直到满足性能要求。 上面的实际是PI调节的代码,现附上PID的。 1. //声明变量 2. 3. //定义变量 4. float Kp; //PID调节的比例常数 5. float Ti; //PID调节的积分常数 6. float T; //采样周期 7. float Td; //PID调节的微分时间常数

文档评论(0)

word.ppt文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档