搜索
bottom↓
回复: 32

PID参数整定求助?

[复制链接]

出0入0汤圆

发表于 2012-7-12 17:47:14 | 显示全部楼层 |阅读模式
各位大侠,小弟现在遇到一个PID参数整定的问题,求赐教:

本系统的目的控制气缸里面的压力稳定在我的设定值。其结构气泵通过电磁阀连接到气缸,压力传感器也连接在气缸上,我通过压力传感器反馈的压力值,通过DA输出控制TIP122(三极管放大)控制电磁阀通断(注:电磁阀有一个特性,通过控制通过电磁阀的电流,可以使电磁阀微打开)。

我的压力控制范围是0~500KPA,所以,我选定300KPA做我的稳定压力设定值,系统从0开始稳压。我使用的是增量式PID,反馈量是当前压力值,误差e(k)=P设定值-P当前。PID调节输出量是deltaDA值,V当前值 = V前一状态+deltaV。通过调节DA的大小控制TIP122来控制电磁阀的开关。
下面是参数调整过程
首先调整P,使系统能够振荡,从小到大,当我P = 5.9的时候,系统出现振荡,当时系统的静态误差比较大,如下:

于是,按网上说法,再调整I,P取60%P振荡值,也就是P=3.51 I = 1.023的时候,静态误差基本可以消除,但是稳定时间比较长,稳定后,DA输出为0,振幅比较大,,图形如下:

于是我继续降低I的值,随着I的降低,系统振荡越来越小,调整周期降低速度比较慢,但是静态误差越来越大,当I = 0.025时,静态误差达到了60KPA,其图形如下:

于是,我引入积分,当P = 3.51,I = 0.025 D = 230的时候,出现了一个调整时间比较短的波形,请问为啥会出现如下波形呢?如下:

请问大家,我想调到别人所说的一大波一小波,并消除静态误差,达到理想的控制效果,应该如何操作呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-7-12 19:23:02 来自手机 | 显示全部楼层
确定控制电流大小可以控制电磁阀的开度吗?没有这样用过,如果确实可以,消除静态误差可增大KI

出0入0汤圆

 楼主| 发表于 2012-7-12 20:08:05 | 显示全部楼层
hadio 发表于 2012-7-12 19:23
确定控制电流大小可以控制电磁阀的开度吗?没有这样用过,如果确实可以,消除静态误差可增大KI ...

那个可以,只是这个过程是一个不确定的因素,恩,我增大了I,随着I的增大,静态误差会减小,但是,调整时间会加长,振幅会变大,出现我上图中的波形。

出0入0汤圆

发表于 2012-7-12 20:59:51 | 显示全部楼层
推荐使用分段式的调解方式,当误差大于一个限度的时候,只是用比例控制,当误差进入你设定的范围后,使用PD控制。

出0入0汤圆

 楼主| 发表于 2012-7-12 21:34:25 | 显示全部楼层
tiancaigao7 发表于 2012-7-12 20:59
推荐使用分段式的调解方式,当误差大于一个限度的时候,只是用比例控制,当误差进入你设定的范围后,使用PD ...

谢谢,主要是气压有一个虚压,刚开始的时候,气泵里面的气体充气进来,会有一个很大的虚压,分段的话,不知道该怎么分!

出0入0汤圆

发表于 2012-7-13 12:20:39 | 显示全部楼层
你的PID算法不是增量式,而是位置式:你的控制用公式应该是DAout=KP*deltaA/D+KI*Sum (deltaA/D) +KD*(deltaA/D-deltaA/D')  deltaA/D'为上个采样周期的值,Sum (deltaA/D)为deltaA/D的积分,deltaA/D为SetDA-A/D返回值(设定值-当前实际测量值),我不知道你说的情况是不是如我附件中仿真的那样, 绿色线为仅有比例作用时的控制效果,离设定值(黑色线)较远,  红色线为加入了积分作用后的效果,已经没有残差,不知道是不是你说的那种一大一小。 另外我也很好奇为啥是有波动才好,而不是如第二张图中那样没有超调或超调很小的那种。                                       

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-7-13 15:21:21 | 显示全部楼层
coleyao 发表于 2012-7-13 12:20
你的PID算法不是增量式,而是位置式:你的控制用公式应该是DAout=KP*deltaA/D+KI*Sum (deltaA/D) +KD*(delt ...


coleyao,你好,我用的是增量式的PID,计算公式是 deltaV = P*(e - e1)+I*e+D(e-2e1+e2),其中deltaV是DA差值,e是当前设定值-当前压力值  e1是当前设定值-前一处理压力值 e2是当前设定值-再前一处理压力值.
我的采样周期是6K,处理周期是1K

出0入0汤圆

发表于 2012-7-13 16:58:31 | 显示全部楼层
P取大点,I取小点,D可以取0

出0入0汤圆

发表于 2012-7-13 19:15:18 | 显示全部楼层
本帖最后由 coleyao 于 2012-7-13 19:18 编辑
yaodongliang 发表于 2012-7-13 15:21
coleyao,你好,我用的是增量式的PID,计算公式是 deltaV = P*(e - e1)+I*e+D(e-2e1+e2),其中deltaV是DA ...


  OK,我顺着你的思路仿真了一下,如附件(纯比例与比例+积分两种情况)所示,几乎出现一大一小两个波形已经是最佳情况了。不过我建议你放弃目前的思路,首先放弃D(令D=0);
其次令deltaV = P*(e - e1)+I*e=I*(e+P/I *(e-e1)),使得P/I大致等于系统延时的2倍左右,然后调整I,使得系统的干扰抑制能力达到最佳,如另一张图所示,其实公式和原理都是一样的,有空的话建议多玩玩我写的PID温控仿真软件。(两种方法有明显的不同,比例系数一为负,一为正)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-7-14 11:04:21 | 显示全部楼层
coleyao 发表于 2012-7-13 19:15
OK,我顺着你的思路仿真了一下,如附件(纯比例与比例+积分两种情况)所示,几乎出现一大一小两个波形已 ...

coleyao,你好,请问你指的系统延时是PID处理时间,还是达到压力稳定的时间呢?

出0入0汤圆

发表于 2012-7-14 12:22:23 来自手机 | 显示全部楼层
本帖最后由 coleyao 于 2012-7-14 12:55 编辑

没必要知道确切的值,知道该值太大或太小时的响应情况就好了,知道调节方向然后调整到理论值附近。
来自:amoBBS 阿莫电子论坛 Android客户端
在系统只有积分部分的时候,当积分系数较小的时候,系统会稳定,只是调节时间较长,如附图,另外积分系数如果较大,系统就会振荡,振荡的频率与系统延时数量级是相同的,可用作系统延时值估算,不过如果系统不允许振荡,就只能慢慢调了,调好后大体如第三张图的样子(实际的系统延时设40秒,P/I=100=2.5*40,I=0.25),如果再细致地调一下(减小I,加大P/I),可以得到第四张图。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-7-21 09:22:26 | 显示全部楼层
本帖最后由 coleyao 于 2012-7-21 09:24 编辑

对于位置式PID的增量形式:   递增量= KP*vT +KI*ET[CountT] +KD*aT;先调KP,然后在调KI,得到的控制系统可以平衡,但此时KP系数为负的,系统几乎没有抗干扰能力,如果先调KI,再调KP/KI则系统一样可以平衡,各项参数(超调、抗干扰能力etc.)明显要好的多,对比效果附件所示,如果不忙的话建议花点时间仔细读一下我的帖子 http://www.amobbs.com/thread-5484520-1-1.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-7-26 22:29:31 | 显示全部楼层
不知楼主用的什么电磁阀,或者说是个比例阀
记得以前第一代是用SMC比例阀,控制开度,但成本高
后来是用电机,在后来是子弹阀(像子弹的小型电磁阀)+电机,在在后来纯电磁阀控
气压控制上由软件PID,到后来的硬件PID+软件PID,硬件PID完成粗控

是否能控好跟整套气路系统设计有很大关系,如气缸大小,放气控制
就单纯控制气压用经典PID也能控好,液压会更难

楼主用增量或是位置式都是可以的,主要是分段控制,找到PID
只有一组PID参数控制全量程,难达到,当然自控理论水平高者除外

出0入0汤圆

 楼主| 发表于 2012-7-27 22:00:49 | 显示全部楼层
qwerttt 发表于 2012-7-26 22:29
不知楼主用的什么电磁阀,或者说是个比例阀
记得以前第一代是用SMC比例阀,控制开度,但成本高
后来是用电 ...

qwerttt,你好,我是用的MAC系列高速电磁阀,打开时间7ms,关闭2ms。我在进行调节的时候,P与I不管怎么调节,都无法达到那种压力表指针一定速率上升的情况(电磁阀的一种特殊状态,开一定角度),指针摆动比较大,后来引入了D,当D比较大时,可以找到那种状态,但是稳态误差比较大,感觉有20KPA的死区调节,也就是说,在设定压力前后有10KPA,不调节。在这种情况下,不管怎么调整I,都无法达到满意效果。
请问qwerttt,我整个系统,对采样时间和处理时间有要求没呢,我的采样时间是6k,处理时间是1K。还有,您指的分段控制,具体是指什么呢,将设定的气压值,设置成不同的段,比如:0~100KPA,100~200KPA等,每一段为不同的PID参数?还是?谢谢

出0入0汤圆

发表于 2012-7-27 22:14:29 | 显示全部楼层
本帖最后由 qwerttt 于 2012-7-27 22:16 编辑

也就是说约1.166mS控制一次,太快了吧,100mS控制一次都没问题
指针表摆动较大,最后部分没有控好

对,就是每段不同的PID,控制周期放慢点,分段调找找感觉能调好的
以前做0~1MPa气压分了10段

出0入0汤圆

 楼主| 发表于 2012-7-27 22:57:05 | 显示全部楼层
qwerttt 发表于 2012-7-27 22:14
也就是说约1.166mS控制一次,太快了吧,100mS控制一次都没问题
指针表摆动较大,最后部分没有控好

我的系统要求在2~3S内就达到目标压力值,处理周期,这么慢,那达到设定值,不就太慢了吗?

出0入0汤圆

发表于 2012-7-28 10:02:01 | 显示全部楼层
以前我这里买了个DH的压力控制器,价格20W
国家计量院也是用DH的,里面基本是电磁阀控,控制100kPa稳定超过3秒
楼主的要求是不是高了些

出0入0汤圆

 楼主| 发表于 2012-7-28 12:24:30 | 显示全部楼层
qwerttt 发表于 2012-7-28 10:02
以前我这里买了个DH的压力控制器,价格20W
国家计量院也是用DH的,里面基本是电磁阀控,控制100kPa稳定超过 ...

20W?这么贵啊,我看到有一个产品,他的可以很快的稳定在目标压力值,下面是他的控制曲线,很好的波形:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-7-28 13:07:36 | 显示全部楼层
你的系统没有放气控制吗

出0入0汤圆

 楼主| 发表于 2012-7-28 14:48:04 | 显示全部楼层
qwerttt 发表于 2012-7-28 13:07
你的系统没有放气控制吗

有,不过在加压的过程中,是不进行放气操作的。那样会使控制起来相当复杂,而且系统的效率也比较低

出0入0汤圆

发表于 2012-7-28 17:11:21 | 显示全部楼层
mark        

出0入0汤圆

发表于 2012-9-1 23:45:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-9-11 08:53:29 | 显示全部楼层

出0入0汤圆

发表于 2012-11-16 10:18:28 | 显示全部楼层
请问楼主的AD采样周期和PID的运算周期分别是多少?
我也是做气压控制的
感觉振荡好没规律

出0入0汤圆

发表于 2012-11-16 10:43:02 | 显示全部楼层
为什么会越振越高

出0入0汤圆

发表于 2012-11-27 10:08:31 | 显示全部楼层
lcw_swust 发表于 2012-7-13 16:58
P取大点,I取小点,D可以取0

好像增量式的PID并不能这样去整定参数,我调节过几次,都发现要调节效果好,积分系数往往要大于比例系数,求大侠指点

出0入0汤圆

发表于 2012-11-27 11:16:52 | 显示全部楼层
57462554 发表于 2012-11-27 10:08
好像增量式的PID并不能这样去整定参数,我调节过几次,都发现要调节效果好,积分系数往往要大于比例系数 ...

这位同学,你说的"增量式"是哪个公式?"积分系数"、"比例系数"分别指的哪一项?

出0入0汤圆

发表于 2012-11-28 10:33:31 | 显示全部楼层
lcw_swust 发表于 2012-11-27 11:16
这位同学,你说的"增量式"是哪个公式?"积分系数"、"比例系数"分别指的哪一项?
...

Du = kp * (e(k) - e(k-1)) + ki * e(k) + kd * (e(k) - 2*e(k-1) + e(k-2)) ,  
u(k) = u(k - 1)  +  Du ;
这个是增量式PID的基本公式,式中的ki ,kd ,kd分别对应其中PID的三个参数

出0入0汤圆

发表于 2012-11-28 12:02:45 | 显示全部楼层
本帖最后由 lcw_swust 于 2012-11-28 12:04 编辑
57462554 发表于 2012-11-28 10:33
Du = kp * (e(k) - e(k-1)) + ki * e(k) + kd * (e(k) - 2*e(k-1) + e(k-2)) ,  
u(k) = u(k - 1)  +  Du ...


你的意思是KI要大于KP?
也许咱们应用的系统不一样,这样取值也是有可能的.
我所应用的系统是温控,惯性较大.
假设KP=0,KI=1,KD=0,公式成为Du=e(k),也就是温度高于设定值就控制电路制冷,温度低了就加热,这样子肯定会振荡的.
假设KP=1,KI=0,KD=0,公式成为Du=e(k) - e(k-1),就是说误差如果增加,输出量就增加,最终会让误差稳定在某个值,这样就不容易振荡了.

出0入0汤圆

发表于 2014-12-17 11:29:42 | 显示全部楼层
楼主您好!小弟恰好目前也要做一个这样的东西。
现在没有太好的思路。不知道能否和您讨教下。不胜感激!
我的联系方式:扒叁舞零吆六零妻儿。

出0入0汤圆

发表于 2014-12-18 09:43:16 | 显示全部楼层
楼主怎么好久都没有出现了?

出0入0汤圆

发表于 2014-12-18 09:46:00 | 显示全部楼层
你好,coleyao!
能加你个Q好友吗,想请假一些PID控制问题呢。
我的Q:835016072.

出0入0汤圆

发表于 2014-12-22 11:19:16 | 显示全部楼层
hadio 发表于 2012-7-12 19:23
确定控制电流大小可以控制电磁阀的开度吗?没有这样用过,如果确实可以,消除静态误差可增大KI ...

你好,网上看到您交流电磁阀控制气路的应用,不知道可以向您请教些问题吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-29 21:43

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

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