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

有关PMSM三相电压估算(VOLT_CAL.H )

/* =================================================================================
File name: VOLT_CAL.H===================================================================================*/

#ifndef __VOLT_CAL_H__
#define __VOLT_CAL_H__

typedef struct { _iq DcBusVolt; // Input: DC-bus voltage (pu)
_iq MfuncV1; // Input: Modulation voltage phase A (pu)
_iq MfuncV2; // Input: Modulation voltage phase B (pu)
_iq MfuncV3; // Input: Modulation voltage phase C (pu) Uint16 OutOfPhase; // Parameter: Out of Phase adjustment (0 or 1) (Q0) – independently with global Q
_iq VphaseA; // Output: Phase voltage phase A (pu)
_iq VphaseB; // Output: Phase voltage phase B (pu) _iq VphaseC; // Output: Phase voltage phase C (pu) _iq Valpha; // Output: Stationary d-axis phase voltage (pu)
_iq Vbeta; // Output: Stationary q-axis phase voltage (pu)
_iq temp; // Variable: temp variable
} PHASEVOLTAGE;

/*
OutOfPhase = 1 for the out of phase correction if
* MfuncV1 is out of phase with PWM1,
* MfuncV2 is out of phase with PWM3,
* MfuncV3 is out of phase with PWM5,
otherwise, set 0 if their phases are correct.
*/

/*—————————————————————————–
Default initalizer for the PHASEVOLTAGE object.
—————————————————————————–*/#define PHASEVOLTAGE_DEFAULTS { 0, \
0, \
0, \
0, \
1, \
0, \
0, \
0, \
0, \
0, \
}

#define ONE_THIRD _IQ(0.33333333333333)
#define TWO_THIRD _IQ(0.66666666666667)
#define INV_SQRT3 _IQ(0.57735026918963)
/*——————————————————————————
Phase Voltage Calculation Macro Definition
——————————————————————————*/

#define PHASEVOLT_MACRO(v) \
\
\
/* Scale the incomming Modulation functions with the DC bus voltage value*/ \
/* and calculate the 3 Phase voltages */ \
v.temp = _IQmpy(v.DcBusVolt,ONE_THIRD); \

v.VphaseA = _IQmpy(v.temp,(_IQmpy2(v.MfuncV1)-v.MfuncV2-v.MfuncV3)); \
v.VphaseB = _IQmpy(v.temp,(_IQmpy2(v.MfuncV2)-v.MfuncV1-v.MfuncV3)); \
\
if (v.OutOfPhase==0) \
{ v.VphaseA=-v.VphaseA; \
v.VphaseB=-v.VphaseB; \
} \
/* Voltage transformation (a,b,c) -> (Alpha,Beta) */ \
v.Valpha = v.VphaseA; \
v.Vbeta = _IQmpy((v.VphaseA + _IQmpy2(v.VphaseB)),INV_SQRT3);

#endif // __VOLT_CAL_H__

// Phase C (if needed)
// v.VphaseC = _IQmpy(v.temp,(_IQmpy2(v.MfuncV3)-v.MfuncV2-v.MfuncV1)); \

请问这个Mfcun1是个什么值?为什么也是无量纲的?这个相电压估算的原理是什么?谢谢1

Martin Yu:

输出相电压可以用直流母线电压和上桥臂的占空比来计算,具体原理见附件的文档:

http://www.deyisupport.com/cfs-file.ashx/__key/communityserver-discussions-components-files/56/8461.phase_5F00_voltage_5F00_calc.pdf

,

kin lee:

谢谢你!原理明白了,不过还是困惑,这个MfuncV1,MfuncV2,MfuncV3是怎么幅值的?是初始化的时候定义还是哪个模块的输出?

,

Martin Yu:

volt1.MfuncV1 = svgen1.Ta; volt1.MfuncV2 = svgen1.Tb; volt1.MfuncV3 = svgen1.Tc;

就是PDF资料里面的上桥臂开关函数S1,S2,S3,是SVPWM模块输出的。

,

zhang1:

您好,关于电压基准我有个问题。U、V、W端电压是通过124.2倍衰减后通过12位板载ADC采集得到,ADC结果为12位,左移3位就是15位,用Q15格式表示的话就直接是范围(0,1),即Q15结果为1代表的是410V。。程序中就直接用ADC采样的结果认为就是标幺值,按代码理解电压标幺值的额定电压应该是410V才对。但是程序中额定电压设置不是该值。请问这是为什么呢?谢谢!

,

Martin Yu:

”按代码理解电压标幺值的额定电压应该是410V才对。但是程序中额定电压设置不是该值“

你指的是:

#define BASE_VOLTAGE    236.14   ? 

,

zhang1:

是的。就是为什么要除以根号3。谢谢

,

Cervantes Wu:

同问   应该是指:

volt1.DcBusVolt = _IQ((AdcMirror.ADCRESULT2)*0.000244140625);  // DC Bus voltage meas.

这个吧

这里将AD的转换值直接对满量程进行标幺,产生的标幺值,为什么不是使用头文件中的BASE_VOLTAGE*1.732这个值来进行标幺呢?

AD转换满量程的值肯定远大于实际母线电压值的   

赞(0)
未经允许不得转载:TI中文支持网 » 有关PMSM三相电压估算(VOLT_CAL.H )
分享到: 更多 (0)