在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)这段代码,看了好久了还是没有看懂,谢谢了