PID算法软件编写详解(重点推荐).pdfVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PID算法软件编写详解(重点推荐)

PID 算法 这个是PID 公式: U(k+1) = U(k) + ( KP*E(k) - KI*E(k-1) + KD*E(k-2) ) 对你的系统而言,U(k)就是当前占空比。我这里先假定 你的占空比对应 定时器寄存器设置 范围是 0-65535. 同时假定 定时器设置为0 的时候, 占空比输出为0%,全部是低电平,完全不加热。65535 的时候,占空比输出100%,全速加 热。 E(k)是当前温度和设定温度的误差值 E(k-1)是上次计算时的误差值 E(k-2)是上上次计算时的误差值 由于KP ,KI,KD 三个系数现在都不知道。需要整定,有自动整定,也有手动整定。我们 先采取手动整定的方案。 我们现在可以知道温度相差 40 ℃,显然,需要比较快速的加热。水温在正常系统使用的时 候,显然是0-100℃的。 而你们这里需要目标温度是 30-60 ℃,故 最大加热的差值可以认为是 60-0 = 60 。(假定不 是冰,是水开始加热)。 我们可以认为,在需要最大加热差值的时候,仅用比例控制应当是开启全速加热。所以我们 可以得到一个KP 的估计值。 KP = 65535/60 = 1000 左右。 这个意思是 最大温差对应最快加热速度。 然后,假设 KI = 800 ,KD = 300; 注意,系数需要根据实际情况来整定,此为假设。 好,现在假定设置 需要温度是 60 ℃,而当前温度是 20 ℃。那么可以知道 第一次 U(k) = 0 最开始是没有占空比输出的。所以是占空比是0 E(k) = 60-20 = 40 第一次的误差 E(k-1) = 0 还没有上次,所以初始化为0 E(k-2) = 0 还没有上上次,所以初始化为0 由于KP 假定是1000,所以 U(k+1) = 40*1000 = 40000 所以,现在就可以按照 占空比 40000 来加热了。 由于热系统是一个缓慢变化的系统,所以,加热需要一段时间才可以看到效果,假设采用固 定间隔时间来设计。这里取5 秒。 5 秒过后,假定温度上升了5℃,当前温度为25 ℃。 则计算第二次 占空比过程。 第二次 U(k) = 40000 E(k) = 60-25 = 35 E(k-1) = 40 E(k-2) = 0 U(k+1) = 40000 + 35*1000 - 40*800 + 0 = 43000 (加热加速了) 又过了5 秒,假定温度上升了6℃。当前温度为29℃ 第三次 U(k) = 43000 E(k) = 60-31 = 29 E(k-1) = 35 E(k-2) = 40 U(k+1) = 43000 + 29*1000 - 35*800 + 40*300 = 56000 (2 个周期以后还未达到指定温度,加 热继续加速) 继续计算第四次,第五次,第N 次 即可。 显然,要一直到出现超调,才会出现加热速度放慢甚至不加热。 若不允许超调,则需要增加一些门限控制。那就不在标准的PID 讨论范围以内了。 以上是算法部分。 以下来讨论整定部分。 看系数是否合理,需要通过实验观察。 关于系数的整定,有一些工程的方法。你可以对自己的系统来摸索摸索。 整定的时候,先用整定比例系数。先不给积分,微分系数赋值,然后看加热速度有多快。这 个快慢就主要看的是几个整定周期达到目标温度。 先不考虑超调的问题。 所以,你需要先对整个系统做实验,先看全速加热需要多久才可以把温度由 0 ℃ 加热到 60 ℃。 全速加热把温度从0℃加热到60℃所需要的时间设置为T,那么我们的整定周期就可以根据 T 来设置了。假设整定周期为 T/10 。 (事实上,整定周期还可以根据偏差值来做动态调整,显然温度越接近目标值,整定周期就 需要越短,非标PID 不在继续深入,仅仅做一个简单提示) 然后以此来设置不同的KP 比例系数,看KP 设置为多少,可以接近 10 个整定周期 达到同 等加热速度,这样得到的KP 就是一个比较合理的KP 了。 然后再来看KI 的整定,看KI 设置成多少,可以让超调大约在根号2 左右,也就是说 最大 只有超调41% ,这样得到的KI 就是比较合理的。 当然,如果系统温度不允许超调41%,那就需要修改KI 来实现了。 最后来整定KD ,看KD 设置成多少,可以让 最终稳定温度和设置温度的偏差 达到要求, 比如偏差在 0.5 ℃以内。 这个就看你的需求了。 故,你的代码需要记录 整定的时候,PID 算法运行的次数,以及每次整定的时候所得到的 温 度偏差。通过串口发送出来做记录。 根

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档