|
现在我在做一个产品,是利用dsPIC30F6010A芯片做的离网三相逆变产品,就是相电压恒定控制输出(220/50Hz),现在通过AD自动采样交流逆变的电压220V,然后进行PI运算,PIDworth=PID(ac_value), (ac_value为采用的电压值)通过调整调制比M大小,来改变输出交流电压的幅值,恒定电压。
//PID参数初始化
void PIDInit (void)
{
sPID.SumError = 0;
sPID.LastError = 0; //Error[-1]
sPID.PrevError = 0; //Error[-2]
sPID.Proportion = 0; //比例常数 Proportional Const
sPID.Integral = 0; //积分常数 Integral Const
sPID.Derivative = 0; //微分常数 Derivative Const
sPID.SetPoint = 0; //
}
//增量式 PID计算部分
//只用到PI控制
u16 PIDCalc( u16 NextPoint )
{
u16 iError,pError,Incpid;
iError = sPID.SetPoint-NextPoint;
pError = iError-sPID.LastError;
Incpid = sPID.Proportion*pError + sPID.Integral*iError;
sPID.LastError = iError;
//返回增量值
return(Incpid);
}
问题是:
1. sPID.SetPoint 的值用什么值,是希望的输出电压220吗? PI计算的输入值NextPoint是用反馈电压的瞬时值还是有效值啊?
2. 我用的是增量式的PID运算,iError会有正,还有负的时候,怎么处理啊?
3. 经过PID运算后的值PIDworth,怎么和M值对应起来?(0<M<1),就是PIDworth怎么改变调制比M。
谢谢,大家指教。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|