打印

PID控制

[复制链接]
楼主: wenfengcom
手机看帖
扫描二维码
随时随地手机跟帖
21
IceAge| | 2007-10-19 10:56 | 只看该作者 回帖奖励 |倒序浏览

pid 的参数是可以算出来的

而且一般是先经过理论计算,仿真,最后应用,这要求有一定的控制理论的背景。pid 等等,归根结底在理论上都是从新配置闭环零极点。对于 pid + dc motor, 如果有control background, 懂matlab, 动动鼠标,点选希望的极点,则立刻能得到pid的参数,当然,人工手算也能做到。

会到温度控制问题:设P=10,I=30,控制周期T=30秒,设定温度为60度,实际温度为50度.用继电器触点开关进行控制
因为用继电器,这里会涉及一个简单的非线性控制,回滞,即设定动作的上下限,比如加热时61停止,59启动加热,目的是减小继电器的动作次数。如果希望更精确,可以把继电器当作 pwm 使用,则可以用 pid 来控制。另一个重要的问题是了解执行机构的特性(最好有transfer function) , 比如占空比100% 目标的稳态平均相对(环境)温差,假设为120 - 20 = 100(环境)。那么50% (15秒通,15秒断),应为 100/2 + 20 = 70。那么最后控制器的占空比为
Ratio = PID ( To - Ti) = 10 * (To - 60) + 30*integrator(To - 60)
当然 ratio 会大于100%,这就是饱和,不要紧,最终 To 会趋近 60,使得占空比最终稳定。

以上未考虑瞬态过程,如果要考虑,那么必须得到系统的transfer function, 这其实不难。这些问题最好的做法是 matlab 仿真

使用特权

评论回复
22
已注册| | 2007-10-19 10:59 | 只看该作者

我也买了几本书,

但要么是纯理论的,要么就是含糊的提了一下使用PID控制,然后给一个PID推导公式,然后就不了了之……


一直没查到实际案例能比较完整的详细描述实现的各个环节。



我猜,我猜,我猜。猜。。猜。。。

使用特权

评论回复
23
已注册| | 2007-10-19 11:02 | 只看该作者

从来没有接触过MATLAB仿真控制系统

犹如天书……

使用特权

评论回复
24
已注册| | 2007-10-19 11:09 | 只看该作者

TO IceAge

//假设为120 - 20 = 100(环境)。那么50% (15秒通,15秒断),应为 
//100/2 + 20 = 70。那么最后控制器的占空比为
//Ratio = PID ( To - Ti) = 10 * (To - 60) + 30*integrator(To - 60)
//当然 ratio 会大于100%,这就是饱和,不要紧,最终 To 会趋近 60,使得
//占空比最终稳定。


里面几个数值是不是:100为设置目标,120为实际测量结果??

使用特权

评论回复
25
IceAge| | 2007-10-19 11:11 | 只看该作者

To: 已注册

1)线性系统是符合齐次性和叠加性的系统。OUT(all)=OUT(1)+OUT(2)+...+OUT(n)]符合叠加性。

2)是指的PWM控制极的电压

3)我的上个帖子你可能没有看到
当然占空比会大于100%,这就是饱和,不要紧,最终测量温度和趋近设置温度,使得占空比最终稳定。

使用特权

评论回复
26
已注册| | 2007-10-19 11:14 | 只看该作者

我们现在的意思根本不管P/I/D参数设置是否合理

他合理也好,不合理也好,反正是代入PID计算公式里面计算,根据公式计算出的结果d(t)怎么去判断后面的PWM输出。


PID参数不合理,可以慢慢调,或者用MATLAB仿真计算,但现在是这个PID控制都实现不了的话,后面想实际调也没办法调……

使用特权

评论回复
27
IceAge| | 2007-10-19 11:15 | 只看该作者

已注册:你的帖子发得真快

"100为设置目标,120为实际测量结果"  120为实际测量结果, 减去环境温度 20 (占空比为 0 时的温度), 得到 100 

使用特权

评论回复
28
已注册| | 2007-10-19 11:16 | 只看该作者

这个理解对吗?

三:举例温度控制:
假设一个温度PID控制,用PWM控制固态继电器实现,暂时不谈I/D环节,就只以P环节说明,假设我们设置的P=2,PWM电源电压为5VDC,

再假设在当前时刻:E=10度

那么:Vpwm=P*E=10*2=20;
      PWM的占空比=20/5=400%

      此时,PWM的占空比>100%,所以系统全功率运行。

请问上面的理解对不对?
四:就上面的问题又产生另一个疑问:
**中好象P都是大于1的,如果PWM电压电压为5VDC,那么只有E<5度的时候,PWM的占空比才可能<100%,也就是说,这个控制器只能在当前测量温度和设置温度之差小于5度的情况下才能起点控制作用???

使用特权

评论回复
29
已注册| | 2007-10-19 11:18 | 只看该作者

P可以小于1吗?

记得过去看书的时候好象说比例不能小于1

使用特权

评论回复
30
IceAge| | 2007-10-19 11:21 | 只看该作者

P当然可以小于1

p 只是一个转换系数,不是放大倍数。

使用特权

评论回复
31
已注册| | 2007-10-19 11:21 | 只看该作者

想要问题很多,一直没想明白,

牵肠挂肚啊,所以逮到大虾了要多问点……




机不可失,时不再来……

使用特权

评论回复
32
IceAge| | 2007-10-19 11:25 | 只看该作者

PWM的占空比>100%,所以系统全功率运行

没错。

这个控制器只能在当前测量温度和设置温度之差小于5度的情况下才能起点控制作用
也没说错,更确切的说:测量温度和设置温度之差小于5度的情况下,控制器才进入了线性控制区。

使用特权

评论回复
33
已注册| | 2007-10-19 11:26 | 只看该作者

那我回答一下:流泪的那条鱼的问题,

请看看对不对。


他实际想要做的是要继电器通断比例时间来控制问题。


这个比例时间反推到MCU来说,也相当于调节占空比。


所以,我刚才计算的占空比就相对应于他的时间占空比,如果他的控制周期为30S,那么他的开周期=30*占空比,关周期=30*(1-占空比)

使用特权

评论回复
34
IceAge| | 2007-10-19 11:36 | 只看该作者

我估计流泪的那条鱼的困惑可能

在于吃惊的发现计算出来的占空比远远大于 1,于是搞不懂 p 究竟是什么了。呵呵,负反馈的作用就在于此。

使用特权

评论回复
35
已注册| | 2007-10-19 11:40 | 只看该作者

我做总结,请看看对不对。

用温度控制举例:

假设设置温度为Tset,当前温度为Tend,前一次测量为T1,再前一次为T2,

PID计算:d(t)=p*(e(0)-e(1))+i*e(0)+d*(e(0)-2e(1)+e(2)),

不管P/I/D三个参数设置是否合理,算出d(t),如果用PWM控制固态继电器的话,那么占空比=d(t)/power(pwm),如果是5V的MCU系统,PWM电压电压为5VDC,那么占空比=d(t)/5,

如果占空比>100%,说明系统需要全功率运行。

如果占空比<0,说明系统超调了,停止工作(或反方向工作)。

如果P/I/D设置不合理,控制范围过窄,并且超调严重,则应该调节这三个参数到合理程度,例如刚才那个举例,只有5度的控制范围,如果设备功率比较大,系统热惯性比较小的话,很容易就超调,并可能产生振荡,此时要么减小设备功率,要么调节P/I/D参数,但P/I/D参数调节过小的话,可能达到控制点的时间过长,或者根本就到不了拉,此时又要再调参数到合理范围内。

使用特权

评论回复
36
已注册| | 2007-10-19 11:44 | 只看该作者

终于从半晕状态到基本清晰了。

非常感谢IceAge






小鱼快上来,谢谢IceAge……

使用特权

评论回复
37
IceAge| | 2007-10-19 11:58 | 只看该作者

不用客气

你说的概念基本上正确,除了数学公式:
d(t)/5, 这个 5 可以包括在 pid 得系数内。 d(t)=p*(e(0)-e(1))+i*e(0)+d*(e(0)-2e(1)+e(2)) 的结果是pid 的增量,最终的占空比为 R(0) = R(1) + d(t) = 我前面说的原型公式

使用特权

评论回复
38
已注册| | 2007-10-19 13:09 | 只看该作者

到也是,PWM电压可以直接折算到P/I/D三个参数里面

//d(t)=p*(e(0)-e(1))+i*e(0)+d*(e(0)-2e(1)+e(2)) 的结果是pid 的增
//量,最终的占空比为 R(0) = R(1) + d(t) = 我前面说的原型公式



是这个意思吗?!
公式: d(t)=p*(e(0)-e(1))+i*e(0)+d*(e(0)-2e(1)+e(2))计算出的值是增量,需要折算到位置量输出,也就是:R(0) = R(1) + d(t) 

使用特权

评论回复
39
wenfengcom|  楼主 | 2007-10-19 14:14 | 只看该作者

占空比

我们感到不清楚的是PID计算结果怎样变换成占空比的变化,PID本身程序编写并不困,至于三个参数怎么调那是另外一回事,现在不知道的是PID计算结果通过怎样数学变换成占空比?

使用特权

评论回复
40
已注册| | 2007-10-19 14:19 | 只看该作者

LS,上面的讨论已经说得很明白了啊

说白了,可以直接把计算出的数值当成占空比。


如果直接过去总是>100%,说明P/I/D参数设置不合理,调节它到合理范围内,就可以得到一个比较好的控制范围和控制结果。

TO  IceAge:
下面的说法对不对?

已注册 发表于 2007-10-19 13:09 侃单片机 ←返回版面    

38楼: 到也是,PWM电压可以直接折算到P/I/D三个参数里面 

//d(t)=p*(e(0)-e(1))+i*e(0)+d*(e(0)-2e(1)+e(2)) 的结果是pid 的增
//量,最终的占空比为 R(0) = R(1) + d(t) = 我前面说的原型公式



是这个意思吗?!
公式: d(t)=p*(e(0)-e(1))+i*e(0)+d*(e(0)-2e(1)+e(2))计算出的值是增量,需要折算到位置量输出,也就是:R(0) = R(1) + d(t) 
 
 

使用特权

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

本版积分规则