打印

请教关于PID的问题,百思不得其解,请教大虾帮忙给看看

[复制链接]
7158|53
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
秋雨|  楼主 | 2011-1-9 17:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一次搞PID,看了论坛好多资料,还是有点不明白,请教各位大侠

增量式PID控制中如果只用比例调节,那么就变为如下:

Vout(新的输出值)=Kp*(e(t)-e(t-1))+Vold(原输出值) ?  

当e(t)>e(t-1)的时候输出是增加的,但是当e(t)<e(t-1)的时候输出是减少的。。。

那么假设有一个电机DC为220V对应220转,为了便于说明期间,假设电机控制电压和转速成正比,即输出电压多少伏,转速就是多少。

那么电机设定转速200转,比例系数0.5,

通电后Vold=0,e(t)=200,e(t-1)=0 第一次输出为

Vout=0.5*(200-0)+0v=100V,

第二次输出时假设电机已经达到100转(即已经稳定了),

e(t)=(200-100)=100, e(t-1)=200

那个输出为

Vout=0.5*(100-200)+100=50V

第三次输出时假设电机已经达到50转(即已经稳定了),

e(t)=(200-50)=150, e(t-1)=100

那个输出为

Vout=0.5*(150-100)+50=75V

第四次输出时假设电机已经达到75转(即已经稳定了),

e(t)=(200-75)=125, e(t-1)=150

那个输出为

Vout=0.5*(125-150)+75=62.5V

依次类推,发现电机最终应该稳定在一个70转左右呀。。。

请教各位,以上的控制是不是参数出了问题?是不是KP太小的原因?

还有采样调整间隔时间应该大于还是小于系统稳定所需要的时间?

相关帖子

沙发
zjp8683463| | 2011-1-9 17:49 | 只看该作者
PID只有P肯定有静态误差。
要消除静态误差,要加I

使用特权

评论回复
板凳
mmax| | 2011-1-9 17:50 | 只看该作者
本帖最后由 mmax 于 2011-1-9 18:02 编辑

第二步错了,应该
Vout=0.5*(200-100)+100=150V

“e(t)=(200-100)=100, e(t-1)=200 ”
e(t),e(t-1)物理量错了吧
应该是设定值与当前读数,

第三步
Vout=175V

使用特权

评论回复
地板
a12345678| | 2011-1-9 18:01 | 只看该作者
楼主没有理解PID,步距太大了

使用特权

评论回复
5
g1234567| | 2011-1-9 18:05 | 只看该作者
应该是
第一个周期,给定设置值及其对应的输出电压,不进行计算,
第二个周期才计算。
PID是解决扰动干扰引起的误差的。

使用特权

评论回复
6
mmax| | 2011-1-9 18:06 | 只看该作者
4# a12345678

lz的假设是线性系统,没有惯性。
单他举例中出的问题原因不在步距大

使用特权

评论回复
7
chunyang| | 2011-1-9 18:07 | 只看该作者
建议去看看大学教材《自控原理》,否则一知半解下即时能凑合了,以后还是会遇到类似问题。

使用特权

评论回复
8
秋雨|  楼主 | 2011-1-9 18:28 | 只看该作者
第二步错了,应该
Vout=0.5*(200-100)+100=150V

“e(t)=(200-100)=100, e(t-1)=200 ”
e(t),e(t-1)物理量错了吧
应该是设定值与当前读数,

第三步
Vout=175V
mmax 发表于 2011-1-9 17:50


增量式PID不是应该是Kp*(e(t)-e(t-1))吗?
3楼你这样算应该吧公式改为
Vout=Kp*e(t)+Vold

本次误差e(t)=设定200-实际100,上次误差e(t-1)=200呀

使用特权

评论回复
9
秋雨|  楼主 | 2011-1-9 18:30 | 只看该作者
建议去看看大学教材《自控原理》,否则一知半解下即时能凑合了,以后还是会遇到类似问题。
chunyang 发表于 2011-1-9 18:07


看了N多的资料了。。。就差这一点搞不明白。就是想知道我上面的算法哪里不对呀。。。

使用特权

评论回复
10
秋雨|  楼主 | 2011-1-9 18:32 | 只看该作者
PID只有P肯定有静态误差。
要消除静态误差,要加I
zjp8683463 发表于 2011-1-9 17:49

现在不是有静态误差。。。而是完全打不到设置值,连接近都接近不了。按照我的算法,最后系统应该稳定在70左右。。。

使用特权

评论回复
11
秋雨|  楼主 | 2011-1-9 18:34 | 只看该作者
如果公式为
Vout=Kp*e(t)+Vold
好像就能达到要求了。。。
郁闷为何是Vout(新的输出值)=Kp*(e(t)-e(t-1))+Vold(原输出值) ?

使用特权

评论回复
12
mmax| | 2011-1-9 19:10 | 只看该作者
Vout=Kp*e(t)+Vold

e(t)=设定值-当前值

使用特权

评论回复
13
秋雨|  楼主 | 2011-1-9 19:27 | 只看该作者
Vout=Kp*e(t)+Vold

e(t)=设定值-当前值
mmax 发表于 2011-1-9 19:10


但是这个公式好像不是资料上说的呀。。。

使用特权

评论回复
14
g1234567| | 2011-1-9 19:52 | 只看该作者
复习了下:
一个是基本的,一个是增量的,lz用的是增量,结果也算正常

使用特权

评论回复
15
秋雨|  楼主 | 2011-1-9 19:59 | 只看该作者
。。设定200,稳定到70左右,这如何正常呀:'(

使用特权

评论回复
16
cl378454434| | 2011-1-9 20:44 | 只看该作者
。。

使用特权

评论回复
17
程序匠人| | 2011-1-9 22:52 | 只看该作者
1、可以设置一个初始值u0,在这个初始值的基础上上再进行PID调节,就不会出现那么大的误差。
2、纯比例调节必然会有静态误差,否则就会陷入永不停息的震荡。
3、要消除静态误差,靠积分。

使用特权

评论回复
18
highgear| | 2011-1-10 00:26 | 只看该作者
没有必要用pid增量算法,用普通算法其实更简单:
   Vout = Kp * e(t)
比例调节首先需要大致确定Kp, 必须根据Vout与 e(t) 的取值范围以及系统的惯性和阻尼来定。楼主的 kp = 0.5 明显偏低,这样系统会有一个较大的静态误差。

使用特权

评论回复
19
秋雨|  楼主 | 2011-1-10 08:26 | 只看该作者
没有必要用pid增量算法,用普通算法其实更简单:
   Vout = Kp * e(t)
比例调节首先需要大致确定Kp, 必须根据Vout与 e(t) 的取值范围以及系统的惯性和阻尼来定。楼主的 kp = 0.5 明显偏低,这样系统会有一个较大的 ...
highgear 发表于 2011-1-10 00:26


您这个公式和我用的增量式最后稳定点是一个结果。。。。

使用特权

评论回复
20
秋雨|  楼主 | 2011-1-10 08:29 | 只看该作者
1、可以设置一个初始值u0,在这个初始值的基础上上再进行PID调节,就不会出现那么大的误差。
2、纯比例调节必然会有静态误差,否则就会陷入永不停息的震荡。
3、要消除静态误差,靠积分。 ...
程序匠人 发表于 2011-1-9 22:52


可是我看好多人说可以只用比例控制电机呀。。。
而且在正定参数过程中不是要先去掉积分和微分而只保留比例吗?逐渐增大比例系数,让系统最后达到振荡。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

143

帖子

1

粉丝