搜索
bottom↓
回复: 34

基于VB的PID模拟演示程序,增量式计算,位置式输出

[复制链接]

出0入0汤圆

发表于 2010-6-28 14:28:26 | 显示全部楼层 |阅读模式
增量式输出值为△U(k)
                     位置式输出值为U(k)=U(k-1)+△U(k)

                        △U(k)=U(k)-U(k-1)
                              =A*E(k)+B*E(k-1)+C*E(k-2)
                              =Kp*(E(k)-E(k-1))+Ki*E(k)+Kp(E(k)+E(k-2)-2*E(k-1))                                  
                ★其中:
                          Kp         比例系数
                          Ki         积分系数 Ki=Kp*T/Ti
                          Kd         为分系数 Kd=Kp*Td/T
                          k          采样序号,k=0,1,2,……;
                          E(k)        第k次PID运算(采样并处理)时输入的偏差值,即Set-Now
                          E(k-1)前一次
                          U(k)        第k次PID运算时的输出值
                          T                采样周期,即一次PID控制的周期
                          Ti    积分时间,与T运算转化成积分系数,即在输出中占的比重
                          Td    微分时间,与T运算转化成微分系数,即在输出中占的比重
                          A= Kp*(1+Td/T+T/Ti) //这三个系数已经不能算是比例积分微分系数中了任意一个了,只是方便整定
                          B=-Kp*(1+2Td/T)
                          C= Kp*Td/T
                ★临界条件下:将调节器置于纯比例作用下,从小到大逐渐改变调节器的比例系数,得到等幅振荡的过渡过
                程。此时的比例系数称为临界比例系数 ,相邻两个波峰间的时间间隔,称为临界振荡周期Tu。
                          满足:T = 0.1Tu
                                        Ti= 0.5Tu
                                        Td= 0.125Tu
                                即Kp=Ku,Ki=0.2Ku,Kd=0.25Ku
                ★临界比例度法步骤:
                1、将调节器的积分时间置于最大(Ti =∞),微分时间置零(Td =0),比例系数Kp适当,平衡操作一段时间,把
                系统投入自动运行。
                2、将比例系数Kp逐渐增大,得到等幅振荡过程,记下临界比例系数Kp和临界振荡周期Tu值。
                3、根据Kp和Tu值,采用经验公式,计算出调节器各个参数,即Kp。Ti和Td 的值。
                按照先P再I最后D的操作程序将调节器整定参数调到计算值上。若还不够满意,可再作进一步调整。  
               
                ★临界比例度法整定注意事项:
                有的过程控制系统,临界比例系数很大,使系统接近两式控制,调节阀不是全关就是全开,对工业生产不利。
                有的过程控制系统,当调节器比例系数 调到最大刻度值时,系统仍不产生等幅振荡,对此,就把最大刻度
                的比例度作为临界比例度 进行调节器参数整定。


本模拟程序输出U(k),使用增量式计算公式,用U(k)=U(k-1)+△U(k)得出位置式的输出
可以自己设定参数

需要说明的几点:
0.本程序原创,要转载请注明来自http://www.ourdev.cn/bbs/edit_articles_interface.jsp?bbs_sn=4122504&parent_no=4122504&bbs_page_no=1&bbs_id=9999 。要改动务必保留本人网名和联系方式。
1.所有设定值均为interger,整数,所以设定时注意不要超界
2.升温比例和降温比例设定为整数,在0到最大输出值之间
   例如最大输出值为100,两个比例均设定为10,则每次符合条件的计算中当前温度会+/-10,如果最大输出值为200,则+/-20
3.差值=设定值-当前值,本次差值在下次计算时变成上次差值,依次类推
4.x轴坐标为计算次数,y轴坐标为温度。最大值均可设定,最小值均为0
下图是默认设置的计算图

<font color=green>(原文件名:TM截图未命名.jpg)


这是编译好的exe程序
点击此处下载 ourdev_564464RS0KCZ.rar(文件大小:7K) (原文件名:PID模拟.rar)

这是完整的工程
点击此处下载 ourdev_564465UKAMHD.rar(文件大小:11K) (原文件名:PID计算.rar)

说实话我真不怎么会VB,写这玩意儿都是边百度边写。

上传一片文章,PID的。解释的非常清楚,我在有些的地方做了标注。最重要的就是u(k)=A*E(k)+B*E(k-1)+C*E(k-2)中B的系数。一定注意下。实际上真正的式子在上面位置式中。
点击此处下载 ourdev_564467UUDUBU.pdf(文件大小:688K) (原文件名:PID超详细论文.pdf)


</font>

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-6-28 14:32:20 | 显示全部楼层
MARK一下。

出0入0汤圆

发表于 2010-6-28 15:26:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-28 17:26:00 | 显示全部楼层
马克

出0入0汤圆

发表于 2010-6-28 17:26:37 | 显示全部楼层
马克思

出0入0汤圆

发表于 2010-6-28 17:53:42 | 显示全部楼层
MARK一下,感谢

出0入0汤圆

发表于 2010-6-28 17:58:19 | 显示全部楼层
好东西啊,感激

出0入0汤圆

发表于 2010-6-28 20:38:24 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-6-28 22:01:37 | 显示全部楼层
good!

出0入0汤圆

发表于 2010-6-28 22:01:45 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2010-6-29 14:15:13 | 显示全部楼层
按照公式,LZ的代码似乎有问题:
Temp = Uk1 + Kp * (Ek - Ek1) + Ki * Ek1 + Kd * (Ek + Ek2 - 2 * Ek1)
是否应该改为:
Temp = Uk1 + Kp * (Ek - Ek1) + Ki * Ek + Kd * (Ek + Ek2 - 2 * Ek1)

出0入0汤圆

发表于 2010-6-29 14:38:53 | 显示全部楼层
马克,
————————————————————————————————————————————————————————————————————————
另  楼主头像不错!

出0入0汤圆

发表于 2010-6-29 18:53:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-29 19:18:52 | 显示全部楼层
回复【楼主位】shamork 氧化还原合成单片机
-----------------------------------------------------------------------

感觉楼主做的非常的出色!
向楼主学习

出0入0汤圆

 楼主| 发表于 2010-7-2 12:55:27 | 显示全部楼层
回复10楼:



不好意思,一楼的公式写错了。程序没问题。应该是:

△U(k)=U(k)-U(k-1)
      =A*E(k)+B*E(k-1)+C*E(k-2)
      =Kp*(E(k)-E(k-1))+Ki*E(k-1)+Kd(E(k)+E(k-2)-2*E(k-1))
      =Kp*△E(k) + Ki*E(k-1) + Kd*( △E(k) - △E(k-1) )  

后面带的pdf里有原式。解释的很详细。

谢谢!看的很仔细。这段公式是我写的库文件里的注释。刚刚改了。




注意看第一行,跟下面的Ki、Kd系数对比下

出0入0汤圆

发表于 2010-7-2 13:45:03 | 显示全部楼层
楼主头像有深层的意味哦

出0入0汤圆

发表于 2011-4-9 15:04:44 | 显示全部楼层
非常感谢 先学习了~~~

出0入0汤圆

发表于 2011-4-9 16:22:57 | 显示全部楼层
谢谢LZ分享

出0入0汤圆

发表于 2011-4-11 08:47:57 | 显示全部楼层
楼主的代码公式是错误的,10楼是正确的

出0入0汤圆

发表于 2011-4-13 11:44:57 | 显示全部楼层
标准的直接计算法公式:
Pout(k)=Kp*e(k)+Ki*∑e(k)+Kd*(e(k)-e(k-1));
上一次的计算值:
Pout(k-1)=Kp*e(k-1)+Ki*∑e(k-1)+Kd*(e(k-1)-e(k-2));
两式相减得到增量法计算公式:
Pdlt=Kp*(e(k)-e(k-1))+Ki*e(k)+Kd*(e(k)-2*e(k-1)+e(k-2));

出0入0汤圆

发表于 2011-4-13 15:32:33 | 显示全部楼层
mark pid 谢谢分享

出0入0汤圆

发表于 2011-9-18 00:00:06 | 显示全部楼层
找了好久的资料 谢谢楼主分享

出0入0汤圆

发表于 2012-5-25 12:48:14 | 显示全部楼层
其他地方还可以下载吗  刚好用到  想学习一下

出0入0汤圆

发表于 2012-6-6 17:09:48 | 显示全部楼层
好东西啊,做温控正需要

出0入0汤圆

发表于 2012-6-6 21:17:59 | 显示全部楼层
有控制对象吗?偏差e(k)是怎么计算的?

出0入0汤圆

发表于 2012-9-6 22:56:46 | 显示全部楼层
好东西啊,正要用PID

出0入0汤圆

发表于 2012-9-24 11:20:51 | 显示全部楼层

出0入0汤圆

发表于 2012-9-25 09:44:07 | 显示全部楼层
这个确实是好东西

出0入0汤圆

发表于 2012-10-19 22:59:35 | 显示全部楼层
其实我觉得应该更关注楼主的 升温速度,降温速度,最大输出值,这些跟实际结合,才对我们的仿真有指导意义。

出0入0汤圆

发表于 2013-2-4 16:24:51 | 显示全部楼层
感谢楼主,,,,很好的资料,,,

出0入0汤圆

发表于 2013-2-17 14:59:42 | 显示全部楼层
必须支持一下。

出0入0汤圆

发表于 2013-5-14 11:18:34 | 显示全部楼层
楼主好人,必须支持一下

出0入0汤圆

发表于 2013-7-27 13:43:12 | 显示全部楼层
shamork 发表于 2010-7-2 12:55
回复10楼:

好贴,就是不知升温比例和降温速度怎么算的?

出0入0汤圆

发表于 2013-11-5 23:31:33 | 显示全部楼层
有参考价值

出0入0汤圆

发表于 2014-4-21 16:01:55 | 显示全部楼层
markkkkk
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 22:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表