While working on controlling a three-phase squirrel cage induction machine in Typhoon HIL, I encountered an unusual issue.
Initially, I copied the induction machine block from one of the example models and started testing my MPC-based control algorithm. I forgot to update the motor parameters in the machine block to match those used in the MPC model. Despite this mismatch, the system worked to give outputs- speed was tracked and all that
However, when I later updated the induction machine block with the correct motor parameters to match those used in the MPC control model (Rs, Ls, Lm, etc.), the control performance drastically degraded — torque dropped, and overall behavior became unstable.
This led me to realize that the control algorithm only works when there's a large mismatch between the motor parameters in the MPC and those in the machine block. I’m unsure whether this is due to a modeling assumption, numerical issue, or internal handling of the motor block.
I’d appreciate any insight into why this might be happening or if there’s something I’ve missed
Below are the major equations used in the mpc algorithm which conforms with theory
sigma=(1.0-(Lm*Lm)/(Ls*Lr));
kr=(Lm/Lr);
ks=(Lm/Ls);
r_sigma=Rs+Rr*(kr*kr);
t_sigma=(sigma*Ls)/(r_sigma);
temp1 = t_sigma / (Ts + t_sigma);
temp2 = Ts / (Ts + t_sigma) * (1.0 / r_sigma);
Fr_real = (Lr / Lm) * (Fs_real + ik_real) * (Lm - (Lr * Ls / Lm));
Fr_imag = (Lr / Lm) * (Fs_imag + ik_imag) * (Lm - (Lr * Ls / Lm));
Fs_real = Fs_real + Ts * (v_real[x_opt] - Rs * ik_real);
Fs_imag = Fs_imag + Ts * (v_imag[x_opt] - Rs * ik_imag);
Tp = (3.0 / 2.0) * P * (Fsp_real * Isp_imag - Fsp_imag * Isp_real);
Fsp_mag = sqrt(Fsp_real * Fsp_real + Fsp_imag * Fsp_imag);
Fsp_real = Fs_real + (Ts * v_o1_real) - Rs * Ts * Isp_real;
Fsp_imag = Fs_imag + (Ts * v_o1_imag) - Rs * Ts * Isp_imag;