打印

PID高手来看看我的问题(IceAge提出的PWM电压问题)

[复制链接]
3132|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
已注册|  楼主 | 2007-10-22 16:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IceAge 发表于 2007-10-19 21:10 侃单片机 ←返回版面    
"d(t)=p*(e(0)-e(1))+i*e(0)+d*(e(0)-2e(1)+e(2))计算出的值是增量,需要折算到位置量输出,也就是:R(0) = R(1) + d(t) "
是的,这种算法是迭代算法,对于温度控制来说,没有必要。

Duty = V/Vpwm, 这里的Vpwm 是电源电压,可以是固定的,也可以是变动的。若是固定的,则可把 Vpwm 折算入PID 系数里。比如:

Duty = V/Vpwm = PID_1(E)/Vpwm = PID_2(E) = PID_2(Wo - Wi)
where PID_2 = PID_1/Vpwm

否则,就得多一步除法: Duty = V/Vpwm = PID_1(E)/Vpwm



已注册 发表于 2007-10-19 21:33 侃单片机 ←返回版面    
 IceAge一句话又把我说迷糊了……
//Duty = V/Vpwm, 这里的Vpwm 是电源电压,可以是固定的,也可以是变动
//的。若是固定的,则可把 Vpwm 折算入PID 系数里



如果是变动还怎么计算啊?

这个变动可能是怎么个变动法?如果是PWM控制,他的控制极电压随着电路的确定也就确定了啊?怎么还能变动呢?

能不能举个变动的例子说明一下啊 ?


IceAge 发表于 2007-10-20 00:21 侃单片机 ←返回版面    
48楼: "他的控制极电压随着电路的确定也就确定了啊"
有时并不是确定的,比如变频器,有时得通过采样或者通过设定来得到Vdc,主要是允许用户施加不同的电源电压。对于你的情况,可能不会采用不同的电源电压,不需要适应各种应用。

这些不要紧,只是多一个除法而已。


已注册 发表于 2007-10-20 08:46 侃单片机 ←返回版面    
 TO   IceAge
对于变频器,我是这样想的:

**中,一般的变频器是输入电压不同,变频器输出的频率相应的变化,假如用变频器控制一个制冷用的压缩机来实现温度调节(这好象变频空调的使用方式?),如果使用PID调节,此时 E = 设置温度 - 当前实际温度,变频器的输入电压可用PWM的有效值表示(这个可等效过去的把?),占空比不同,PWM的有效值电压也就变化了,所以调节变频器的输入电压也就等同于调节PWM的占空比了,这个时候,PWM的控制极电压应该是一个定值把?不需要改变PWM控制极电压的把?

相关链接:https://bbs.21ic.com/club/bbs/list.asp?boardid=11&page=1&t=2716425&tp=PID%u63A7%u5236

相关帖子

沙发
wenfengcom| | 2007-10-22 17:32 | 只看该作者

r

能不能把这几句讲清楚点啊,有点不理解,是什么意思啊
Duty = V/Vpwm = PID_1(E)/Vpwm = PID_2(E) = PID_2(Wo - Wi)
where PID_2 = PID_1/Vpwm

否则,就得多一步除法: Duty = V/Vpwm = PID_1(E)/V

使用特权

评论回复
板凳
IceAge| | 2007-10-22 21:55 | 只看该作者

关于 Vpwm 电压

我可能说的不清楚。这个问题其实不紧要,之所以引入Vpwm的目的是解释 dc motor 的控制,有时需要一个特定的电压,因为dc motor 需要控制励磁电流和转子电流来控制力矩,从而控制速度。异步电机有是也需要知道特定的输出电压,就是说,其中一个PID (电机控制可能需要多个pid)的输出是 电压,而不是duty,此时,通过pid 得到输出 Vout, 那么可以通过 Duty = Vout/Vpwm 控制 pwm 产生真实的 Vout. 
另外, 电机中另一个典型做法是用可控硅控制 dc 电源电压,pwm 控制输出频率以及电压 


对于温度控制,一般来说,可以简化为一个一阶系统,用一个pid 直接产生 duty 即可。


To: wenfengcom
Duty = V/Vpwm = PID_1(E)/Vpwm = PID_2(E) = PID_2(Wo - Wi)
这是在证明,如果Vpwm (pwm 的直流电压)是已知的,那么在应用时,pid 控制器的输出可以直接是 duty, Vpwm 这个常数可以包括在 pid 的参数里。





使用特权

评论回复
地板
已注册|  楼主 | 2007-10-23 09:14 | 只看该作者

重查了一下书,发现自己对变频器的理解是错的

潜心研究研究,以后再向IceAge请教。



多谢IceAge本次的帮助和指教。

使用特权

评论回复
5
wenfengcom| | 2007-10-23 10:20 | 只看该作者

R

假如通过dt直接控制电机,电机转子电压为0~110V可调,发现PID输出dt总是大于110,怎么办啊?

使用特权

评论回复
6
IceAge| | 2007-10-23 20:34 | 只看该作者

to: wenfengcom

1)可能是计算有误
2)可能是配置有误,如过高的速度设定,过低的dc电源电压,或是过大的P和过小的I, 致使速度设定与反馈速度之差始终不能弥合。

使用特权

评论回复
7
wenfengcom| | 2007-10-24 22:07 | 只看该作者

R

请问IceAge,手动调整P,I,D参数实在是太难调了,往往效果不是太理想,想问一下,自整定程序怎么写啊,书上讲这部分的知识太少了。很多控制器是不需要手动调整P,I,D的,只要运行一下自整定程序,程序自己就自动算出了P,I,D参数,用自动算出的这组P,I,D控制效果十分好,不知根据什么原理实现的,这种自整定程序怎么写啊?

使用特权

评论回复
8
IceAge| | 2007-10-24 22:53 | 只看该作者

to: wenfengcom

自整定我没做过,不过如果有开环系统的大致传递函数,应该不难。不过有了传递函数,就可以计算出 PID 的参数,解一个方程而已。

其实,这个问题最好的解法是仿真。比如对于温度控制,施加一个阶越,即直接把duty = 100%, 然后测量温度,得到的曲线,就是系统的阶越响应。通过系统辨识(比如用最小二乘法),可以得到系统的 transfer function. 在matlab/simulink 下进行仿真,一般来说,仿真结果与实际控制的结果几乎是一模一样。


使用特权

评论回复
9
yewuyi| | 2007-10-25 09:13 | 只看该作者

自整定的话,往往整定周期比较长

所以一般来说,都是在装好系统后,大致自整定一次,以后微调P/I/D三参数观察情况的。


自整定常用的方法就是振荡法了把!


这方面我是半瓶醋,呵呵,看高人上来……


关注……

使用特权

评论回复
10
xwj| | 2007-10-25 09:38 | 只看该作者

自控系统的关键在于你的数学建模的正确性

也就是说算法要和实际系统对应

使用特权

评论回复
11
wenfengcom| | 2007-10-25 20:46 | 只看该作者

R

实际中哪有传递函数啊,例如直流电机,就是调压调速啊,,matlab仿真需要有精确的传递函数,我也看了matlab仿真PID的程序,《先进PID控制与matlab仿真》这本书写的程序用的是迭代算法:把控制对象S函数用Z变换进行离散化,然后用PID的输出Ut直接作为离散化的输入,构成闭环控制,可是实际控制电机的转速应该是行不通的吧?实际就是控制电机的电压啊,Ut直接作为电压输出,怎么Ut去作为电机的传递函数的输入了啊,?

使用特权

评论回复
12
IceAge| | 2007-10-25 22:02 | 只看该作者

关于直流电机

传递函数可以通过电机参数得到,电机控制的书中都有公式。控制速度,就得控制力矩--〉控制电枢 Ia,励磁 If  --> 控制电压。
如果励磁恒定: Ia = (V - Ve)/Ra = (V - k * W)/Ra 
力矩 T = k * Ia. 通过力矩,惯量可以计算出速度。

dc motor 是电机控制中最简单的,以致于以前我的导师不准我们使用, 说是太简单,显示不出水平。

如果你想做电机控制,那么先学些电机的知识,磨刀不误砍柴工。

使用特权

评论回复
13
wenfengcom| | 2007-10-26 11:22 | 只看该作者

r

一般控制直流电机速度就是通过调节转子的电压啊,PID的输出直接控制电压变化,不需要电机的传递函数啊?

使用特权

评论回复
14
yewuyi| | 2007-10-26 13:18 | 只看该作者

LS:不需要传递函数是谁告诉你的?

好好看书把,传递函数不要还谈什么?

使用特权

评论回复
15
wenfengcom| | 2007-10-26 17:25 | 只看该作者

R

我们通过PID的输出直接改变电压的大小从而直接改变转速啊,没建立什么传递函数啊,

使用特权

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

本版积分规则

3

主题

61

帖子

0

粉丝