This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DMC - phase volt macro inputs

Other Parts Discussed in Thread: CONTROLSUITE

I don't understand the following usage of  PHASEVOLT_MACRO found in a DMC example ( source: C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVACI_Sensorless_PFC_F2803x\HVACI_Sensorless_PFC.c)

		// ------------------------------------------------------------------------------
		//  Connect inputs of the VOLT_CALC module and call the phase voltage calc. macro
		// ------------------------------------------------------------------------------
		volt1.DcBusVolt = _IQ12toIQ(AdcResult.ADCRESULT7); // DC Bus voltage meas.
		volt1.MfuncV1 = svgen1.Ta;
		volt1.MfuncV2 = svgen1.Tb;
		volt1.MfuncV3 = svgen1.Tc;
		PHASEVOLT_MACRO(volt1)

I expected Ta,Tb,Tc values (outputs of SVGENDQ_MACRO) to be scaled to (0,1) range before being used as inputs of PHASEVOLT_MACRO (where MfuncV1,V2,V3 are inverter upper switching functions S1,S2,S3). But I didn't find any scaling in the code.

Am I missing something?

  • It is already normalised to a scale of 1.0.

     

    rgds,

    ramesh

  • SVGEN outputs Ta,Tb,Tc are not normalized to a (0,1) scale. They are the output of:

    		svgen1.Ualpha = ipark1.Alpha;
    		svgen1.Ubeta = ipark1.Beta;
    		SVGENDQ_MACRO(svgen1)

    and they can assume negative values (for example if  Ualpha=0,Ubeta=1 then  Ta=0,Tb=1,Tc=-1).

    Do you mean they are normalized somewhere else in the code before being passed to PHASEVOLT_MACRO? If so can you point me to the code where this is done in "HVACI_sensorless_PFC.c" ?

    Thanks

  • Normalised to 1.0 magnitude wise. range being -1 to +1.

    In PWM_MACRO, it is denormalised to EPWM timer. The code is generally written considering PU values (normalised to 1.0). So there is no specific line to point you to.

     

    rgds,

    ramesh

  • Sorry, in my last post I used "normalized" instead of "scaled": of course Ta,Tb,Tc magnitudes are normalized to 1 PU, but since their range is between -1,+1 I don't understand how they can be used as S1,S2,S3 values in PHASEVOLT_MACRO.

    S1,S2,S3 should assume values in the range 0,1 not -1,+1. My point is that one should use:

    • S1 = volt1.MfunvV1  = (Ta + 1)/2
    • S2 = volt1.MfunvV2 =  (Tb + 1)/2
    • S3 = volt1.MfunvV3 =  (Tc + 1)/2

    Otherwise the phase voltages calculated will be twice the actual ones. For example:

    • SVGEN(Ualpha=0, Ubeta=1)  =   Ta=0,  Tb=+1,  Tc=-1
    • PHASEVOLT(Vdc=1, S1=0, S2=+1, S3=-1)   =   Ualpha=0, Ubeta= 1.15
    • normalizing by Vdc/sqrt(3)  one has:    Ualpha=0, Ubeta=2  <-- Ubeta is twice the input value!