ZHCU083I January 2013 – October 2021 TMS320F2802-Q1 , TMS320F28026-Q1 , TMS320F28026F , TMS320F28027-Q1 , TMS320F28027F , TMS320F28027F-Q1 , TMS320F28052-Q1 , TMS320F28052F , TMS320F28052F-Q1 , TMS320F28052M , TMS320F28052M-Q1 , TMS320F28054-Q1 , TMS320F28054F , TMS320F28054F-Q1 , TMS320F28054M , TMS320F28054M-Q1 , TMS320F2806-Q1 , TMS320F28062-Q1 , TMS320F28062F , TMS320F28062F-Q1 , TMS320F28068F , TMS320F28068M , TMS320F28069-Q1 , TMS320F28069F , TMS320F28069F-Q1 , TMS320F28069M , TMS320F28069M-Q1
从上述代码可以看出,ID 和 IQ 电流控制器均初始化为由 RoverL 和 Lhf 计算得出的相同增益。这两个控制器的比例增益中还引入了系数 0.25。该系数用于将比例增益设置为理论限值的 ¼。在电机运行速度需要远高于额定速度的应用中(即场强减弱),Id 和 Iq 电流控制器的比例增益需要增大到 4 倍,从而使增益达到理论限值。使用以下的代码示例便可轻松将这些增益增大到 4 倍:
_iq Kp_Id = CTRL_getKp(handle,CTRL_Type_PID_Id);
_iq Kp_Iq = CTRL_getKp(handle,CTRL_Type_PID_Iq);
CTRL_setKp(handle,CTRL_Type_PID_Id, _IQmpy(Kp_Id, _IQ(4.0)));
CTRL_setKp(handle,CTRL_Type_PID_Iq, _IQmpy(Kp_Iq, _IQ(4.0)));
如果用户想要确认电流控制器增益是在 RoverL 时间常量设置电流控制器后设置,可使用以下代码示例:
// declare global variables for the Id controller gains
_iq gKp_Id, gKi_Id, gKd_Id;
// declare global variables for the Iq controller gains
_iq gKp_Iq, gKi_Iq, gKd_Iq;
// get the current controller gains for the Id controller
CTRL_g etGains(ctrlHandle,CTRL_Type_PID_Id,&gKp_Id,&gKi_Id,&gKd_Id);
// get the current controller gains for the Iq controller
CTRL_g etGains(ctrlHandle,CTRL_Type_PID_Iq,&gKp_Iq,&gKi_Iq,&gKd_Iq);
如果用户选择忽略 RoverL 常量设置的增益并决定使用自己设定的增益,只需使用以下函数来设置电流控制器增益,该过程在 ctrl.h 中实现:
void CTRL_setKi(CTRL_Handle handle,const CTRL_Type_e ctrlType,const _iq Ki);
void CTRL_setKp(CTRL_Handle handle,const CTRL_Type_e ctrlType,const _iq Kp);
void CTRL_setGains(CTRL_Handle handle,const CTRL_Type_e ctrlType,
const _iq Kp,const _iq Ki,const _iq Kd);