Hi everybody,
I'm actually working on flying start.
I'have done flying start following other posts :
"Another option that actually works better is to take over in torque mode with an inital command of Iq = 0A, and hold this 0A command for a certain amount of time (will have to test with your application), at which you switch to speed mode with a new reference (either the current speed or your new target speed)."
So my code is :
gMotorVars.Flag_enableRsRecalc=0; //desactivation recalcul de la mesure de resistance gMotorVars.Flag_enableOffsetcalc=0; //desactivation du recalcul des offsets gMotorVars.Flag_enableForceAngle=0; //desactivation du force angle CTRL_setFlag_enableSpeedCtrl(ctrlHandle,false); //desactivation de la regulation en vitesse PID_setUi(obj->pidHandle_Iq,_IQ(0.0)); //init integrateur courant a 0 PID_setUi(obj->pidHandle_spd,_IQ(0.0)); //init integrateur vitesse a 0 CTRL_setIq_ref_pu(ctrlHandle,0); //on met le regu de courant Iq a une consigne nulle gMotorVars.Flag_Run_Identify=1;
And then, during 5 seconds, i do the following :
CTRL_setSpd_ref_krpm(ctrlHandle,gMotorVars.Speed_krpm); //on met la vitesse actuelle en consigne vitesse CTRL_setIq_ref_pu(ctrlHandle,0); //on met le regu de courant Iq a une consigne nulle TRAJ_setIntValue(obj->trajHandle_spd,_IQmpy(gMotorVars.Speed_krpm,EST_get_krpm_to_pu_sf(obj->estHandle))); //initialisation du generateur de trajectoire a la vitesse actuelle en PU
At the end of the 5s timeout, if the motor is running (speed threshold), i do this :
CTRL_setFlag_enableSpeedCtrl(ctrlHandle,true); //on réactive la regulation en vitesse CTRL_setSpd_ref_krpm(ctrlHandle,gMotorVars.SpeedRef_krpm); //on met la vitesse de reference en consigne
I have also modify the KP value regarding
"You will also want to make sure that your current controller is stiffened for this application, so instead of using the default Kp values (which are the bandwidth *0.25 StiffnessFactor you want to use the full bandwidth, or a *1.0 factor). This is because when the inverter is first enabled, a 50% duty cycle is at the output, which can generate current flowing, so the current controller needs to get that back to zero. "
The flying start at the end of my timeout is quite good but when I take over in current mode with 0A, there is a flowing curent from the motor. The value of this current depends off the motor speed. In fact this current is not the main problem, with the inductance of the motor, this create a powerfull boost power supply wich create overvoltage on the DC link capacitor :
Is there a way to remove this pulse?
Regards.
Emmanuel