打印

PID控制

[复制链接]
25369|94
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wenfengcom|  楼主 | 2007-10-16 17:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一直不怎么明白PID的运算输出结果怎么换算成执行机构的控制量,例如通过PWM控制电机的转速,很多书上都讲PID,但是从来没发现有哪一本书仔细讲清PID的运算结果通过怎样处理换算成实际的控制量,例如直流电机通过PWM调压控制转速,假如设定值为S,测量值为P,通过PID计算得到一个结果为R,怎么把R转换成占空比(0~100%)去控制电机?

相关帖子

沙发
会流泪的鱼| | 2007-10-17 09:06 | 只看该作者

是啊,这个我也想知道

因为PID计算出来的值有很多不确定的尤其在PID三个变量都可以自己设定的话

使用特权

评论回复
板凳
huntington| | 2007-10-17 09:15 | 只看该作者

re

直接根据R的取值范围,比如说0-100,对应占空比0%-100%输出pwm波控制电机,当然R有可能不是从0开始的

使用特权

评论回复
地板
已注册| | 2007-10-17 09:25 | 只看该作者

。。。迷糊,哪位高手上来给讲讲清楚。

这样行不行? 

PWM控制电机速度:

设置速度Vset对应的输入电压为Vs(注意和VCC的关系)
实际速度Vtrue对应的输入电压为Vr(注意和VCC的关系)

求得的三个偏差则都是以电压为单位,再分别和P/I/D参数运算得到的计算值Vout也是以电压为单位,如果PWM占空比为100%的时候,PWM的控制极电压=VCC,那么Vout/VCC就是PWM此时的输出占空比,有了PWM占空比,MCU该怎么计算就容易了。


我是这么认为的……

问一个PID的小知识:如果一个系统基本确定了P的大小,是否意味着已经基本确定了这个系统的控制范围?
例如:一个温度控制系统,测量范围0~200度,假设此时要求在100度的控制,如果此时P已经确定,例如P=3,则比例带对应的温度范围是多少?
 
如何确定输出?
假如一个温度控制,设置目标温度100度,当前实际温度60度,前一次测量温度56度,再前一次测量温度55度,微分时间T1,积分时间T2,比例P,输出用MCU的PWM控制固态继电器,PID计算的结果为VALpid,这个结果如何转化为PWM的占空比?

这样行不行?
PWM的占空比=VALpid/100 

使用特权

评论回复
5
dedeke| | 2007-10-17 09:48 | 只看该作者

我是这样用的

计算出PID结果d(t)=p*(e(0)-e(1))+i*e(0)+d*(e(0)-2e(1)+e(2)),定时器进入一次找个变量自加1,比较这个变量和d(t),小于和大于输出不同的状态。
只得其形,未得其意。

使用特权

评论回复
6
已注册| | 2007-10-17 16:40 | 只看该作者

LS的方法好奇怪?

这样也可以?




高人都躲起来修炼神功了吗?就俺们一堆菜鸟在这瞎想,也没高人来讲讲

使用特权

评论回复
7
会流泪的鱼| | 2007-10-18 08:34 | 只看该作者

我也很想知道

我也很想知道,所以我能做的只能是把这个帖子给顶起来了!!!
我顶,我顶,我顶顶顶!!^-^

使用特权

评论回复
8
已注册| | 2007-10-18 09:21 | 只看该作者

开始怀疑……

使用特权

评论回复
9
dedeke| | 2007-10-18 09:33 | 只看该作者

回6L

我用这种方法控制温度,根据采集温度的不同调整PID参数,温度能控制到+-2度。

使用特权

评论回复
10
已注册| | 2007-10-18 09:49 | 只看该作者

LS能仔细讲讲吗?

PID参数在控制过程中一般是不调整的啊,根据采集温度的不同调整PID参数好象好奇怪哦

使用特权

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

简单的讲一下

这里涉及到一些控制理论的基本概念。理论上及实践中,可以通过pid配置闭环系统的零极点,以达到希望的输出。假设系统是线性的,单输入输出,对于 pid, 先考虑基本的比例控制,再加入id.  
Input:  Speed --  Wi
Ouput:  Speed --  Wo
Transfer function of DC motor:  f(s) = (a1*s + a0)/(s^2 + b1*s + b0)
... 还是省略这些基本的理论吧。

用反馈回来的速度,可以得到误差:
E = Wi - Wo 
这样就得到了控制机构的输入:
V = P * E = P * (Wi - Wo)
因为是线性系统,因而可以把所有的转换系数全部折入这个比例中。 
比如:Wi = 100, Wo = 97, P 为 20 ,pwm 电源电压为 100V
Thus, E = Wi - Wo = 3
Vpwm = P * E = 60 (V), 那么占空比为:60 / 100 = 60 %

如果只有比例,那么这个系统的稳态输出Wo不会等于Wi, 这称为静差。增大 P 可以减小静差,但可能造成控制机构饱和及系统不稳定。

 






使用特权

评论回复
12
已注册| | 2007-10-18 13:30 | 只看该作者

这是怎么推导出来的啊?

用反馈回来的速度,可以得到误差:
E = Wi - Wo 
这样就得到了控制机构的输入:
V = P * E = P * (Wi - Wo)


Wi,Wo是速度信号,E(=Wi - Wo )的单位还是速度,P是没有单位的,P*E得到的结果,单位还是速度单位啊,为什么就这么一变就成电压单位了呢?

"如果只有比例,那么这个系统的稳态输出Wo不会等于Wi, 这称为静差。增大 P 可以减小静差,但可能造成控制机构饱和及系统不稳定"
这一段好理解,看V= P * (Wi - Wo)就可以明白了,从这个公司来讲,只有P无穷大的时候, Wi - Wo才无穷趋向于0,所以 Wi - Wo永远都是不会等于0的,这也就是静差了把。



你说的PWM电源电压是100V,是指的PWM控制极的电压把?

https://bbs.21ic.com/upfiles/img/200710/20071018132559219.jpg

使用特权

评论回复
13
已注册| | 2007-10-18 13:36 | 只看该作者

另外:假设系统是线性的

怎么确定系统是线形的啊?

一般根据什么大致确定系统是线形的?

使用特权

评论回复
14
会流泪的鱼| | 2007-10-18 15:26 | 只看该作者

感觉PID真的好难!!!

假设我搞个温控仪比例控制为0.0-100.0,积分为0-200,微分为0-200,控制范围在-50-150度之间,根据d(t)=p*(e(0)-e(1))+i*e(0)+d*(e(0)-2e(1)+e(2)),计算出来的结果d(t)怎么样和设定的温度关联起来???

使用特权

评论回复
15
已注册| | 2007-10-18 15:50 | 只看该作者

LS的问题,根据我的理解可以这样,但不知道对不对?!

if     P=0~100,控制范围K=-50~150(即200)

else   输出占空比=d(t)*K/P

使用特权

评论回复
16
IceAge| | 2007-10-18 21:28 | 只看该作者

To 已注册

"Wi,Wo是速度信号,E(=Wi - Wo )的单位还是速度,P是没有单位的,P*E得到的结果,单位还是速度单位啊,为什么就这么一变就成电压单位了呢?"
控制器的输入输出关系。比例器是最简单的控制器,包含了转换系数,实际上为

V = K* Kv/Kw * E = P * E
where P = K * Kv/Kw, Kv/Kw 为转换常量。

"所以 Wi - Wo永远都是不会等于0的,这也就是静差了把。"
对。加入积分后,可以消除静差。直观的理解就是,只要 E 不为 0, 控制器的输出 V 就会不断增加|减少,导致 Wo 增加|减少,最终使 E = 0

关于什么是线性系统:看输入输出的关系,比如N 个不同输入产生的输出叠加后应该等于N 个不同输入叠加的输入产生的输出。PWM 可近似认为是线性系统,dc motor 也是线性系统,pid线性,所以整个系统是线性


To 会流泪的鱼:
“d(t)=p*(e(0)-e(1))+i*e(0)+d*(e(0)-2e(1)+e(2))" 这是所谓的增量公式,很多人不求甚解的传抄,search 我以前的帖子。对于温度控制,增量公式的迭代并不适宜,实际中,微分也无必要,因为系统极大的时间常数。可用PI 原型公式: 
V = Kp*e + Ki*integrator(e)  --> 
I(n) = I(n-1) + Ki * (e(n) - e(n-1)) ---- 单独的积分器
V(n) = Kp*e(n) + I(n) 





使用特权

评论回复
17
会流泪的鱼| | 2007-10-19 08:52 | 只看该作者

to IceAge:

V = Kp*e + Ki*integrator(e)  --> 
I(n) = I(n-1) + Ki * (e(n) - e(n-1)) ---- 单独的积分器
V(n) = Kp*e(n) + I(n) 

对于这个公式程序也不难编出来,但是我搞不清楚计算出的V(n)怎么和实际控制器件关联起来.

比如:设P=10,I=30,控制周期T=30秒,设定温度为60度,实际温度为50度.用继电器触点开关进行控制

使用特权

评论回复
18
农民讲习所| | 2007-10-19 09:11 | 只看该作者

工程中P是要调的

俗称:PID参数校准。

可以以开环的比例做基本参数,实际在这个参数上调出来。
比例具体多大关系不大,只影响达到平衡的具体时间。

当然你要能算出来就更好。

PID可以想象为一个运放,+-两端一定要达到相等,至于多快和运放参数和反馈参数有关。也存在自激、积分、微分。

使用特权

评论回复
19
会流泪的鱼| | 2007-10-19 10:37 | 只看该作者

所以说我晕呼呼的,书也买了一本但它里面讲得很乱!!

使用特权

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

TO IceAge

一:
//关于什么是线性系统:看输入输出的关系,比如N 个不同输入产生的输出叠
//加后应该等于N 个不同输入叠加的输入产生的输出。PWM 可近似认为是线性
//系统,dc motor 也是线性系统,pid线性,所以整个系统是线性

我的理解如下:
假设有n个输入(IN(1),IN(2)...IN(n)),
假设n个输入信号一起输入系统时,产生的输出为OUT(all),
假设n个输入信号分开输入系统时,产生的输出为OUT(1),OUT(2)...OUT(n)
如果 OUT(all)=k*[OUT(1)+OUT(2)+...+OUT(n)],k为常数,那么这个系统可定义为线形的。
请问上面的理解对吗?
二:你说的PWM电源电压是100V,是指的PWM控制极的电压把?



请问这个理解对不对?

三:举例温度控制:
假设一个温度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度的情况下才能起点控制作用???

使用特权

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

本版积分规则

49

主题

217

帖子

2

粉丝