|
@@ -26,9 +26,9 @@ void smo_observer_init(float pll_bandwith, float lpf_wc, float Ksmo, float Ksta)
|
|
|
smo.motor_lq = nv_get_motor_params()->lq;
|
|
smo.motor_lq = nv_get_motor_params()->lq;
|
|
|
smo.motor_poles = nv_get_motor_params()->poles;
|
|
smo.motor_poles = nv_get_motor_params()->poles;
|
|
|
smo.dir_ccw = true;
|
|
smo.dir_ccw = true;
|
|
|
- smo.ldq_diff_dm = (smo.motor_ld-smo.motor_lq)/smo.motor_lq*smo.motor_ld;
|
|
|
|
|
|
|
+ smo.ldq_diff_dm = (smo.motor_ld-smo.motor_lq);
|
|
|
smo.ld_inv = 1.0f / smo.motor_ld;
|
|
smo.ld_inv = 1.0f / smo.motor_ld;
|
|
|
-
|
|
|
|
|
|
|
+ smo.lq_inv = 1.0f / smo.motor_lq;
|
|
|
smo.pll.DT = smo.ts;
|
|
smo.pll.DT = smo.ts;
|
|
|
smo.pll.kp = pll_bandwith * 2;
|
|
smo.pll.kp = pll_bandwith * 2;
|
|
|
smo.pll.ki = 0.25f * SQ(smo.pll.kp);
|
|
smo.pll.ki = 0.25f * SQ(smo.pll.kp);
|
|
@@ -61,7 +61,7 @@ static void smo_observer(float uAlpha, float uBeta, float iAlpha, float iBeta) {
|
|
|
smo.est_eAlpha_Filted = do_lpf(smo.est_eAlpha_Filted, smo.est_eAlpha, smo.lpf_ceof);
|
|
smo.est_eAlpha_Filted = do_lpf(smo.est_eAlpha_Filted, smo.est_eAlpha, smo.lpf_ceof);
|
|
|
|
|
|
|
|
/* est beta back emf */
|
|
/* est beta back emf */
|
|
|
- float calc_beta = (uBeta - smo.IBeta_hat*smo.motor_r - smo.est_eBeta + est_ab * smo.Ialpha_hat) * smo.ld_inv;
|
|
|
|
|
|
|
+ float calc_beta = (uBeta - smo.IBeta_hat*smo.motor_r - smo.est_eBeta + est_ab * smo.Ialpha_hat) * smo.lq_inv;
|
|
|
smo.IBeta_hat += calc_beta * smo.ts; //积分
|
|
smo.IBeta_hat += calc_beta * smo.ts; //积分
|
|
|
|
|
|
|
|
float err_iBeta = smo.IBeta_hat - iBeta;
|
|
float err_iBeta = smo.IBeta_hat - iBeta;
|