关于转速正负号的添加的问题。。我是按照下面的方法来添加的,大家看是否合理?在进行转速检查的时候如果是CCW方向转速变量前面添加负号if (Reference_Direction == CCW)
Motor_Speed = -Motor_Speed;
定义了3个关于方向的变量u8 Reference_Direction 、u8 Current_Direction,、u8 Required_Direction;
1、Reference_Direction 这个变量根据上位机方向要求赋值。
2、Current_Direction 此变量用来定义电机实际运行的方向,通过霍尔来判断。
if ((Sector == 3) || (Sector == 0))
Current_Direction = CCW;
else
Current_Direction = CW;
3、Required_Direction; 这个变量根据PI环的输出来赋值
CalcPI(&PIParm_Speed);
Pi_Spwm=abs(PIParm_Speed.qOut);//由于计算正弦波的幅值的时候只需要正值,因此在这里去绝对值
if (PIParm_Speed.qOut < 0)
{
Required_Direction = CCW;
}
else
{
Required_Direction = CW;
}
在调用SVM程序时是这样处理的:
if (Required_Direction == CW)
{
if (Current_Direction == CW)
{
if(PhaseInc_Sum<0x2aaa)
{
Phase += PhaseInc;
}
}
SVM(PI_Current_adj,Phase);
}
else
{
if (Current_Direction == CCW)
{
if(PhaseInc_Sum<0x2aaa)
{
Phase -= PhaseInc;
}
}
SVM(PI_Current_adj, Phase);
} |