Просмотр исходного кода

autohold的扭矩需要考虑限流的情况

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 2 лет назад
Родитель
Сommit
6fc6009110
2 измененных файлов с 4 добавлено и 2 удалено
  1. 1 0
      Applications/app/nv_storage.c
  2. 3 2
      Applications/foc/core/PMSM_FOC_Core.c

+ 1 - 0
Applications/app/nv_storage.c

@@ -538,6 +538,7 @@ void nv_storage_init(void) {
 	m_params.offset = 0.0f; //编码器做了零位置校准
 	m_params.est_pll_band = 200;
 	m_params.flux_linkage = MOTOR_Flux;
+	m_params.pos_lock_pll_band = 500;
 #endif
 #if CONFIG_MOT_TYPE==MOTOR_BLUESHARK_A1
 	m_params.offset = 0.0f; //编码器做了零位置校准

+ 3 - 2
Applications/foc/core/PMSM_FOC_Core.c

@@ -940,8 +940,9 @@ static __INLINE void PMSM_FOC_idq_Assign(void) {
 /*called in media task */
 void PMSM_FOC_idqCalc(void) {
 	if (gFoc_Ctrl.in.b_AutoHold) {
-		gFoc_Ctrl.pi_lock.max = CONFIG_MAX_LOCK_TORQUE;
-		gFoc_Ctrl.pi_lock.min = -CONFIG_MAX_LOCK_TORQUE;
+		float hold_torque = min(gFoc_Ctrl.protLim.s_TorqueLim, CONFIG_MAX_LOCK_TORQUE);
+		gFoc_Ctrl.pi_lock.max = hold_torque;
+		gFoc_Ctrl.pi_lock.min = -hold_torque;
 		float vel_count = motor_encoder_get_vel_count();
 		float errRef = 0 - vel_count;
 		gFoc_Ctrl.in.s_targetTorque = PI_Controller_Run(&gFoc_Ctrl.pi_lock ,errRef);