主题中讨论的其他器件:MOTORWARE
大家好、e2e 团队、
在更改 SVM 范围之前、我们有自己的逆变器与之前版本的 Motorware 配合使用。 但是、这个之前的版本似乎与 Lab11a 不能很好地配合使用、这个实验似乎具有这个 SVM 变化的依赖性。 因为当我按照 LAB11的规定从使用 CTRL 模块对象迁移到没有 CTRL 对象结构时、我的电机开始以错误的方式旋转、它始终使用最大电机电流、并转至最大速度、但相反。
我注意到以下更改:
//******* //
HALL_WrtiePwmData 首先饱和至1.0
pwmData_sat =_IQsat (pPwmData->TBC.value[0]、_IQ (1.0)、_IQ (-1.0));
pwmData_sat_dc =_IQmpy (pwmData_sat +_IQ (1.0)、_IQ (0.5));
在新版本中更改为0.5
pwmData_neg =_IQmpy (pPwmData->TBC.value[0]、_IQ (-1.0));
pwmData_sat =_IQsat (pwmData_neg、_IQ (0.5)、_IQ (-0.5));
pwmData_sat_dc = pwmData_sat +_IQ (0.5);
/***** //
//******* //
之前的 SVGEN_RUN
_iq Vmax、Vmin、Vcom;
_iq va、vb、vc;
//_IQ maxModulation = SVGEN_getMaxModulation (handle);
//_IQ maxModulationNeg =-maxModulation;
_iq va_tmp =-(pVab->value[0]>1);
_iq vb_tmp =_IQmpy (SVGEN_SQRT3_over_2、pVab->value[1]);
va = pVab->value[0];//alpha
vb = va_tmp + vb_tmp;//_IQmpy (SVGEN_SQRT3_over_2、vb_tmp);//-0.5* alpha + sqrt (3)/2 * beta;
vc = va_tmp - vb_tmp;//_IQmpy (SVGEN_SQRT3_over_2、vb_tmp);//-0.5*alpha - sqrt (3)/2 * beta;
////剪裁
// va=_IQsat (VA、SVGEN_4_over_3、-SVGEN_4_over_3);
// Vb=_IQsat (Vb、SVGEN_4_over_3、-SVGEN_4_over_3);
// vc_IQsat (vc、SVGEN_4_over_3、-SVGEN_4_over_3);
VMAX = 0;
Vmin=0;
//查找顺序 Vmin、vmid、Vmax
如果(VA > Vb)
{
VMAX = VA;
Vmin = Vb;
}
其他
{
VMAX = Vb;
Vmin = VA;
}
如果(VC > Vmax)
{
VMAX = VC;
}
否则、如果(Vc < Vmin)
{
Vmin = Vc;
}
VCOM =(Vmax+Vmin)>>1;//0.5*(Vmax+Vmin)
//减共模项以实现 SV 调制
PT->Value[0]=(Vcom - VA);
PT->Value[1]=(Vcom - Vb);
PT->Value[2]=(Vcom - VC);
返回;
和新版本中
_iq Vmax、Vmin、Vcom;
_iq va、vb、vc;
_iq va_tmp =-(pVab->value[0]>1);
_iq vb_tmp =_IQmpy (SVGEN_SQRT3_over_2、pVab->value[1]);
va = pVab->value[0];//alpha
vb = va_tmp + vb_tmp;//-0.5*alpha + sqrt (3)/2 * beta;
vc = va_tmp - vb_tmp;//-0.5*alpha - sqrt (3)/2 * beta;
VMAX = 0;
Vmin=0;
//查找顺序 Vmin、vmid、Vmax
如果(VA > Vb)
{
VMAX = VA;
Vmin = Vb;
}
其他
{
VMAX = Vb;
Vmin = VA;
}
如果(VC > Vmax)
{
VMAX = VC;
}
否则、如果(Vc < Vmin)
{
Vmin = Vc;
}
VCOM =_IQmpy (Vmax+Vmin、_IQ (0.5));
//减共模项以实现 SV 调制
PT->Value[0]=(VA - Vcom);
PT->Value[1]=(Vb - Vcom);
PT->Value[2]=(VC - Vcom);
返回;
/***** //
//******* //
User.h
#define USER_MAX_VS_MAG_PU (1.0)
最近的文件
#define USER_MAX_VS_MAG_PU (0.5)
//***** //
我应该使用哪种实现来正确运行新实验室 Lab11 (a/e)?
我还需要考虑修改其他内容吗?