设计系统PID算法的方法软件编写PID详解.doc

设计系统PID算法的方法软件编写PID详解.doc

ID:59131023

大小:17.50 KB

页数:3页

时间:2020-09-12

设计系统PID算法的方法软件编写PID详解.doc_第1页
设计系统PID算法的方法软件编写PID详解.doc_第2页
设计系统PID算法的方法软件编写PID详解.doc_第3页
资源描述:

《设计系统PID算法的方法软件编写PID详解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、这个是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℃,显然,需要比较快速的加

2、热。水温在正常系统使用的时候,显然是0-100℃的。而你们这里需要目标温度是30-60℃,故最大加热的差值可以认为是60-0=60。(假定不是冰,是水开始加热)。我们可以认为,在需要最大加热差值的时候,仅用比例控制应当是开启全速加热。所以我们可以得到一个KP的估计值。KP=65535/60=1000左右。这个意思是最大温差对应最快加热速度。然后,假设KI=800,KD=300;注意,系数需要根据实际情况来整定,此为假设。好,现在假定设置需要温度是60℃,而当前温度是20℃。那么可以知道第一次U(k)=0             ---最开始是没有占空比输出的。所以是占空比是0E(k

3、)=60-20=40    ---第一次的误差E(k-1)=0           ---还没有上次,所以初始化为0E(k-2)=0           ---还没有上上次,所以初始化为0由于KP假定是1000,所以U(k+1)=40*1000=40000所以,现在就可以按照占空比40000来加热了。由于热系统是一个缓慢变化的系统,所以,加热需要一段时间才可以看到效果,假设采用固定间隔时间来设计。这里取5秒。5秒过后,假定温度上升了5℃,当前温度为25℃。则计算第二次占空比过程。第二次U(k)=40000E(k)=60-25=35E(k-1)=40E(k-2)=0U(k+1)=40

4、000+35*1000-40*800+0=43000(加热加速了)又过了5秒,假定温度上升了6℃。当前温度为29℃第三次U(k)=43000E(k)=60-31=29E(k-1)=35E(k-2)=40U(k+1)=43000+29*1000-35*800+40*300=56000(2个周期以后还未达到指定温度,加热继续加速)继续计算第四次,第五次,第N次即可。显然,要一直到出现超调,才会出现加热速度放慢甚至不加热。若不允许超调,则需要增加一些门限控制。那就不在标准的PID讨论范围以内了。以上是算法部分。 以下来讨论整定部分。看系数是否合理,需要通过实验观察。关于系数的整定,有一些

5、工程的方法。你可以对自己的系统来摸索摸索。整定的时候,先用整定比例系数。先不给积分,微分系数赋值,然后看加热速度有多快。这个快慢就主要看的是几个整定周期达到目标温度。先不考虑超调的问题。所以,你需要先对整个系统做实验,先看全速加热需要多久才可以把温度由0℃加热到60℃。全速加热把温度从0℃加热到60℃所需要的时间设置为T,那么我们的整定周期就可以根据T来设置了。假设整定周期为T/10。(事实上,整定周期还可以根据偏差值来做动态调整,显然温度越接近目标值,整定周期就需要越短,非标PID不在继续深入,仅仅做一个简单提示)然后以此来设置不同的KP比例系数,看KP设置为多少,可以接近10个

6、整定周期达到同等加热速度,这样得到的KP就是一个比较合理的KP了。 然后再来看KI的整定,看KI设置成多少,可以让超调大约在根号2左右,也就是说最大只有超调41%,这样得到的KI就是比较合理的。当然,如果系统温度不允许超调41%,那就需要修改KI来实现了。 最后来整定KD,看KD设置成多少,可以让最终稳定温度和设置温度的偏差达到要求,比如偏差在0.5℃以内。这个就看你的需求了。故,你的代码需要记录整定的时候,PID算法运行的次数,以及每次整定的时候所得到的温度偏差。通过串口发送出来做记录。根据这些记录来选取合适的KP,KI,KD。 以上介绍了关于PID算法和整定的方案。总的思路应该

7、是比较清晰的,实际应用的时候,需要根据自己的需求多做做修改。4楼的公式U(k+1)=U(k)+(KP*E(k)-KI*E(k-1)+KD*E(k-2))有点问题,PID公式是U(k)=U(k-1)+  {KP*[E(k)-E(k-1)]+KI*E(k)+KD*[E(k)+E(k-2)-2*E(k-1)]}整理一下是U(k)=U(k-1)+aE(k)-bE(k-1)+cE(k-2),其中,a=KP+KI+KD,b=KP+2KD,c=KD;大家发现和4楼的公式差不多,有木

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。