|
|
@@ -643,10 +643,8 @@ static __INLINE void PMSM_FOC_VelCtrl_Decide(void) {
|
|
|
if (change_cnt >= 500) {
|
|
|
gFoc_Ctrl.out.empty_load = false;
|
|
|
#ifdef CONFIG_SPEED_LADRC
|
|
|
- ladrc_change_b0(&gFoc_Ctrl.vel_lim_adrc, nv_get_foc_params()->f_adrc_vel_lim_B0);
|
|
|
- ladrc_change_K(&gFoc_Ctrl.vel_lim_adrc, nv_get_foc_params()->f_adrc_vel_lim_Wcv);
|
|
|
- ladrc_change_b0(&gFoc_Ctrl.vel_adrc, nv_get_foc_params()->f_adrc_vel_B0);
|
|
|
- ladrc_change_K(&gFoc_Ctrl.vel_adrc, nv_get_foc_params()->f_adrc_vel_Wcv);
|
|
|
+ PMSM_FOC_Change_TrqLoop_Params(nv_get_foc_params()->f_adrc_vel_lim_Wcv, nv_get_foc_params()->f_adrc_vel_lim_B0);
|
|
|
+ PMSM_FOC_Change_VelLoop_Params(nv_get_foc_params()->f_adrc_vel_Wcv, nv_get_foc_params()->f_adrc_vel_B0);
|
|
|
#endif
|
|
|
}
|
|
|
}
|
|
|
@@ -677,10 +675,8 @@ static __INLINE void PMSM_FOC_VelCtrl_Decide(void) {
|
|
|
change_cnt = 0;
|
|
|
gFoc_Ctrl.out.empty_load = change_done;
|
|
|
#ifdef CONFIG_SPEED_LADRC
|
|
|
- ladrc_change_b0(&gFoc_Ctrl.vel_lim_adrc, 2500.0f);
|
|
|
- ladrc_change_K(&gFoc_Ctrl.vel_lim_adrc, 3);
|
|
|
- ladrc_change_b0(&gFoc_Ctrl.vel_adrc, 2500.0f);
|
|
|
- ladrc_change_K(&gFoc_Ctrl.vel_adrc, 3);
|
|
|
+ PMSM_FOC_Change_TrqLoop_Params(CONFIG_LADRC_NOLOAD_Wcv, CONFIG_LADRC_NOLOAD_B0);
|
|
|
+ PMSM_FOC_Change_VelLoop_Params(CONFIG_LADRC_NOLOAD_Wcv, CONFIG_LADRC_NOLOAD_B0);
|
|
|
#endif
|
|
|
}else if (!change_done && (change_cnt <= -200)) {
|
|
|
change_done = true;
|
|
|
@@ -849,6 +845,17 @@ void PMSM_FOC_Slow_Task(void) {
|
|
|
PMSM_FOC_idqCalc();
|
|
|
}
|
|
|
|
|
|
+void PMSM_FOC_Change_VelLoop_Params(float wcv, float b0) {
|
|
|
+ ladrc_change_b0(&gFoc_Ctrl.vel_adrc, b0);
|
|
|
+ ladrc_change_K(&gFoc_Ctrl.vel_adrc, wcv);
|
|
|
+}
|
|
|
+
|
|
|
+void PMSM_FOC_Change_TrqLoop_Params(float wcv, float b0) {
|
|
|
+ ladrc_change_b0(&gFoc_Ctrl.vel_lim_adrc, b0);
|
|
|
+ ladrc_change_K(&gFoc_Ctrl.vel_lim_adrc, wcv);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
float PMSM_FOC_Get_Real_dqVector(void) {
|
|
|
if (gFoc_Ctrl.out.s_RealCurrentFiltered == 0) {
|
|
|
gFoc_Ctrl.out.s_RealCurrentFiltered = sqrtf(SQ(gFoc_Ctrl.out.s_FilterIdq.d) + SQ(gFoc_Ctrl.out.s_FilterIdq.q));
|