TI中文支持网
TI专业的中文技术问题搜集分享网站

TI官方例程phase-volt-calc头文件(PM-Sensorless中的相电压重构)中的疑问

在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吗?请求懂专家帮忙解答。谢谢啦

用(-1,1)计算相电压和用(0,1)计算出的相电压结果不一样。

user4680001:

请求懂专家帮忙解答。谢谢啦

在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吗?请求懂专家帮忙解答。谢谢啦

用(-1,1)计算相电压和用(0,1)计算出的相电压结果不一样。

user4680001:

请求懂专家帮忙解答。谢谢啦

在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吗?请求懂专家帮忙解答。谢谢啦

用(-1,1)计算相电压和用(0,1)计算出的相电压结果不一样。

user4680001:

请求懂专家帮忙解答。谢谢啦。

在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吗?请求懂专家帮忙解答。谢谢啦

用(-1,1)计算相电压和用(0,1)计算出的相电压结果不一样。

Igor An:

yuanhang wu

在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吗?请求懂专家帮忙解答。谢谢啦

用(-1,1)计算相电压和用(0,1)计算出的相电压结果不一样。

在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吗?请求懂专家帮忙解答。谢谢啦

用(-1,1)计算相电压和用(0,1)计算出的相电压结果不一样。

user4680001:

回复 Igor An:

你好,按照附件中的文档,根据伏秒平衡法,Va = U向上桥开通时间 / PWM时间 × Udc,用(0,1)才能解释的通,况且我现在用(0,1)已经把电机转起来了。

在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吗?请求懂专家帮忙解答。谢谢啦

用(-1,1)计算相电压和用(0,1)计算出的相电压结果不一样。

user5283999:

回复 user4680001:

您好,前辈能不能解释一下SVGENDQ_MACRO(v)这段代码,看了好久了还是没有看懂,谢谢了

赞(0)
未经允许不得转载:TI中文支持网 » TI官方例程phase-volt-calc头文件(PM-Sensorless中的相电压重构)中的疑问
分享到: 更多 (0)