器件型号: TMS320F2800137
您好、
在使用相同的电机和逆变器硬件的情况下、我们在硬件电机 Ctrl+PFC 套件 v2.0\HVPM_Sensored 项目中实现了通用电机控制 (UMC) 框架中的 PI 控制器。
尽管使用相同的 PI 架构和增益值、但与 UMC 相比、HVPM 中的电机响应明显更慢。 此外、在从高速转换到低速期间、电机首先减慢到零(或接近零)、然后再次加速至目标速度、不会平稳稳定。
属于 UMC 的 PI 控制器计算函数的相关部分:
float32_t LS_d_H = objUser->MOTOR_LS_d_H;
float32_t LS_q_H = objUser->motor_LS_q_H;
float32_t Rs_Ohm = objUser->MOTOR_obj; Rs_Ohm
float32_t RdoverLd_rps = Rs_Ohm / LS_d_H;
float32_t RqoverLq_rps = Rs_Ohm / LS_q_H;
float32_t BWC_rps = objUser->BWC_rps;
float32_t currentCtrlPeriod_sec =
(float32_t) objUser->numCtrlTicksPerCurrentTick /
objUser->ctrll Freq_Hz;
float32_t outMax_V = objUser->vd_sf *
objUser->maxVsMag_V;
float32_t Kp_Id = LS_d_H * BWC_rps;
float32_t Ki_Id = 0.25f * RdoverLd_rps * currentCtrlPeriod_sec;
float32_t Kp_Iq = LS_q_H * BWC_rps;
float32_t Ki_Iq = 0.25f * RqoverLq_rps * currentCtrlPeriod_sec;
//设置 ID 控制器
pi_setGains (obj->pi Handle_Id、Kp_Id、Ki_Id);
pi_setUi (obj->pi Handle_Id、0.0f);
pi_setRefValue(obj->pi Handle_Id、0.0f);
pi_setFbackValue (obj->pi Handle_Id、0.0f);
pi_setFfwdValue (obj->pi Handle_Id、0.0f);
pi_setMinMax (obj->pi Handle_Id、-outMax_V、outMax_V);
//设置 IQ 控制器
pi_setGains (obj->pi Handle_Iq、Kp_Iq、Ki_Iq);
pi_setUi (obj->pi Handle_Iq、0.0f);
pi_setRefValue(obj->pi Handle_Iq、0.0f);
pi_setFbackValue (obj->pi Handle_Iq、0.0f);
pi_setFfwdValue (obj->pi Handle_Iq、0.0f);
pi_setMinMax(obj->pi Handle_Iq、0.0f、0.0f);
//设置速度控制器
if (objUser->obj.hp_kgm2 Kctrl_Wb_<= 0.01f)
{
float32_t KP_spd1 = 2.5f * objUser->maxCurrent_A / objUser->max Frequency_Hz;
float32_t KI_spd1 = 5.0f * objUser->maxCurrent_A * objUser->ctrlPeriod_sec;
pi_setGains (obj->piHandle_spd、kp_spd1、ki_spd1);
}
暴露
{
float32_t speedCtrlPeriod_sec =
(float32_t) objUser->numCtrlTicksPerSpeedTick /
objUser->ctrll Freq_Hz;
float32_t BWdelta = objUser->BWdelta;
float32_t Kctrl_Wb_ p_kgm2 = objUser->objp_kgm2; Kctrl_Wb_
float32_t KP_SPD = BWC_rps/(Kctrl_Wb_* bWdelta p_kgm2);
float32_t KI_SPD = BWC_rps * speedCtrlPeriod_sec /(BWdelta * BWdelta);
pi_setGains (obj->piHandle_spd、KP_spd、KI_spd);
}
pi_setUi (obj->piHandle_spd、0.0f);
pi_setRefValue (obj->piHandle_spd、0.0f);
pi_setFbackValue (obj->piHandle_spd、0.0f);
pi_setFfwdValue (obj->piHandle_spd、0.0f);
pi_setMinMax (obj->piHandle_spd、
-objUser->maxCurrent_A、
objUser->maxCurrent_A);
/******************************************************************************************************** /
下面、在左侧、您可以从 UMC 调试屏幕中看到 Controller 值、右侧是我如何将这些值传输到 HVPM 的屏幕截图。 是否正确添加了控制器的最大值和最小值? 我将最大值和最小值分为 FULL_SCALE_CURRENT 和 FULL_SCALE_VOLTAGE 值、将其转换为 PU 格式、并在 IQMath 中使用。 这是正确的吗?


我的问题是:
为什么 UMC 和 HVPM 之间的相同 PI 逻辑和增益会导致 HVPM 中的动态变化变慢?
UMC 中存在 TRAJ 算法是否会影响这种差异?
HVPM 是否在速度或电流环路中包含可能影响瞬态响应的额外滤波、升压或限制器?
UMC 和 HVPM 的电流和速度环路执行速率或采样因素是否需要重新计算 PI 增益?
我们的目标是在使用相同电机和逆变器时实现与 UMC 中观察到的相似的 HVPM 动态行为。