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.
Hello,
With reference to this document
https://www.ti.com/lit/an/spraco3/spraco3.pdf
I would like to know some details about the PI control loop employed in the fast current loop library.
In fcl_cpu_code.dm in the PI wrap function FCL_runPICtrlWrap_M1(),
why are we using invZbase and how does it relate to the rotor resistance and rotor inductance,
I see that :
float32_t Vbase = pMotor->FCL_params.Vdcbus * 1.15 / 2;
float32_t invZbase = pMotor->FCL_params.Ibase / Vbase;
I understand that FCL_params.Vdcbus is the actual dclink voltage(PPBresult*74.1/4096) , but why are we multiplying by 1.15/2?
And how is this related to the rotor resistance and inductance?
fclVars[0].pi_iq.Kp = pMotor->FCL_params.Lq * invZbase *
pMotor->FCL_params.wccQ;
fclVars[0].pi_iq.Ki = pMotor->FCL_params.Rq * invZbase *
pMotor->FCL_params.wccQ * pMotor->FCL_params.tSamp;
It would be helpful if this was explained in layman's terms :)
I understand that FCL_params.Vdcbus is the actual dclink voltage(PPBresult*74.1/4096) , but why are we multiplying by 1.15/2?
And how is this related to the rotor resistance and inductance?
The coefficient used in invZbase variable to convert the SI value of the R and L to the PU format according to the model of the motor and implemented SVM.
PS: does this have something to do with the voltage decoupler?
Yes. Calculates the coupling voltages to eliminate the d-q axis coupling that causes nonlinearity of the control.
Thanks for your reply Yanming.
The coefficient used in invZbase variable to convert the SI value of the R and L to the PU format according to the model of the motor and implemented SVM.
So does this mean that the Kp and Ki would change during runtime? invZbase would change because there would be slight variations in the dclink?
So Kp is basically, ( rotor inductance * bandwidth)?
And Ki is rotor resistance * bandwidth * sampling time? WHy is sampling time added in KI value when the bandwidth already takes care of the sampling time?
So does this mean that the Kp and Ki would change during runtime? invZbase would change because there would be slight variations in the dclink?
Yes.
So Kp is basically, ( rotor inductance * bandwidth)?
Right.
And Ki is rotor resistance * bandwidth * sampling time? WHy is sampling time added in KI value when the bandwidth already takes care of the sampling time?
The Ki is transformed into the discrete time domain. You may find this theory introduction in the related digital control or PI/PID textbook.
Yanming Luo I'm having a hard time understanding your response to Arun's questions.
"float32_t Vbase = pMotor->FCL_params.Vdcbus * 1.15 / 2; but why are we multiplying by 1.15/2?
Why the 1.15/2? Is this because this is the maximum modulation index in the linear region with SVPWM?
Thanks,
Correct, it's related to the usage of DC bus voltage with SVPWM. You don't need to change this coefficient for any hardware and device if you want to implement the example code.