大家帮我看看这个逻辑判断是否存在问题?特别是在速度环的输出为负值的时候。程序思路是电流环为截止环,当过流出现时电流环才起作用,正常情况下只有速度环起作用,调试的时候发现,当速度环输出为负的时候,正弦波的幅值很快就为0了,导致电机停止。也就是PI_Current_adj = 0;在速度环输出为负的时候是不是判断上出了问题呢?谢谢!!程序如下:
if(PI_Current_Tim==0)
{
PI_Current_Tim=16;
PIParm_Current.qInMeas = 100;//20 对应绕组电流平均值/峰值1A,给定的电流值
PIParm_Current.qInRef
= Motor_Current;
regul_PI_Current();//进行PI闭环调节。。。
PI_Current_out=
PIParm_Current.qOut;
if(PI_Current_out>20)//PI_Current_out无符号数 电流环输出
{
Flags.OverCurrent=1;
if(Pi_Spwm>0)//Pi_Spwm有符号数
{
if(Pi_Spwm>PI_Current_out)
{
PI_Current_adj =Pi_Spwm-PI_Current_out;
}
else
{
PI_Current_adj = 0;
}
}
Else//速度环的输出为小于0的时候,这个逻辑判断是否存在问题呢?
{
if (abs(Pi_Spwm)>PI_Current_out)
PI_Current_adj =abs(Pi_Spwm)-PI_Current_out;
else
{
PI_Current_adj=0;
}
}
}
else
{
PI_Current_adj = Pi_Spwm;
Flags.OverCurrent=0;
}
} |