在svgen_dq.h文件中特意把Ta,Tb,Tc(低电平占空比)三个输出量从(0,1)的范围变成(-1,1)的范围
(不知道(-1,1)的范围在数据处理的时候有什么优势。)
/* Convert the unsigned GLOBAL_Q format (ranged (0,1)) ->.. */ /* ..signed GLOBAL_Q format (ranged (-1,1))*/ v.Ta = _IQmpy2(v.Ta-_IQ(0.5)); v.Tb = _IQmpy2(v.Tb-_IQ(0.5)); v.Tc = _IQmpy2(v.Tc-_IQ(0.5));
不理解的地方就是:Ta,Tb,Tc在传递到volt_calc.h中 没有变换到(0,1)的范围,而是取反之后直接带入到公式里
#define VOLT_MACRO(v) \
\
if (v.OutOfPhase > 0) \
{ v.MfuncV1 = -v.MfuncV1; \
v.MfuncV2 = -v.MfuncV2; \
v.MfuncV3 = -v.MfuncV3; \
} \
\
/* Scale the incomming Modulation functions with the DC bus voltage value*/ \
v.MfuncV1 = _IQmpy(v.DcBusVolt,v.MfuncV1); \
v.MfuncV2 = _IQmpy(v.DcBusVolt,v.MfuncV2); \
v.MfuncV3 = _IQmpy(v.DcBusVolt,v.MfuncV3); \
\
/* Calculate the 3 Phase voltages */ \
\
/* Phase A */ \
v.VphaseA = _IQmpy(TWO_THIRD,v.MfuncV1); \
v.VphaseA -= _IQmpy(ONE_THIRD,v.MfuncV2); \
v.VphaseA -= _IQmpy(ONE_THIRD,v.MfuncV3);
理论上不是应该先转换成(0,1)的范围数,再算出对应管子的高电平占空比,最后乘以v.DcBusVolt吗?请求懂专家帮忙解答。谢谢啦