|
|
@@ -66,12 +66,10 @@ void foc_update(foc_t *foc) {
|
|
|
arm_sin_cos(foc->in.mot_angle, &foc->sin, &foc->cos);
|
|
|
park(foc, &foc->in.curr_ab, &foc->out.curr_dq);
|
|
|
if (!foc->in.b_openloop) {
|
|
|
-
|
|
|
/* limiter Vd output for PI controller */
|
|
|
float max_vd = max_Vdc * SQRT3_BY_2;
|
|
|
foc->daxis.max = max_vd;
|
|
|
foc->daxis.min = -max_vd;
|
|
|
-
|
|
|
float err = line_ramp_step(&foc->in.target_id) - foc->out.curr_dq.d;
|
|
|
float id_ff = id_feedforward(foc);
|
|
|
foc->in.target_vol_dq.d = PI_Controller_Current(&foc->daxis, err, id_ff);
|
|
|
@@ -99,7 +97,6 @@ void foc_update(foc_t *foc) {
|
|
|
arm_sin_cos(vol_dq_angle, &foc->sin, &foc->cos);
|
|
|
}
|
|
|
#endif
|
|
|
-
|
|
|
rev_park(foc, &foc->out.vol_dq, &foc->out.vol_albeta);
|
|
|
|
|
|
SVM_Duty_Fix(&foc->out.vol_albeta, foc->in.dc_vol, foc->half_period, &foc->out);
|