Sfoglia il codice sorgente

目标扭矩大于最低门限才开始检测三相不平衡

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 2 anni fa
parent
commit
74178241b9
2 ha cambiato i file con 7 aggiunte e 4 eliminazioni
  1. 1 4
      Applications/foc/core/PMSM_FOC_Core.c
  2. 6 0
      Applications/foc/foc_config.h

+ 1 - 4
Applications/foc/core/PMSM_FOC_Core.c

@@ -236,9 +236,6 @@ void PMSM_FOC_CoreInit(void) {
 }
 
 
-#define CONFIG_PEAK_CNT 3 //计算经过的电周期内的最大值(peak 峰值)
-#define CONFIG_PHASE_UNBALANCE_THROLD 4.0F
-#define CONFIG_PHASE_UNBALANCE_R      0.1F
 static float phase_unbalance_r = 0.0f;
 static float phase_a_max, phase_b_max, phase_c_max;
 static u32 phase_unbalance_cnt;
@@ -254,7 +251,7 @@ static __INLINE void PMSM_FOC_Phase_Unbalance(void) {
 	LowPass_Filter(gFoc_Ctrl.in.s_iABCFilter[0], gFoc_Ctrl.in.s_iABC[0], lowpass);
 	LowPass_Filter(gFoc_Ctrl.in.s_iABCFilter[1], gFoc_Ctrl.in.s_iABC[1], lowpass);
 	gFoc_Ctrl.in.s_iABCFilter[2] = -(gFoc_Ctrl.in.s_iABCFilter[0] + gFoc_Ctrl.in.s_iABCFilter[1]);
-	if ((gFoc_Ctrl.in.s_angleLast == INVALID_ANGLE) || (gFoc_Ctrl.in.s_motVelRadusPers < 100)) {
+	if ((gFoc_Ctrl.in.s_angleLast == INVALID_ANGLE) || (gFoc_Ctrl.in.s_motVelRadusPers < 100) || gFoc_Ctrl.in.s_targetTorque < CONFIG_PHASE_DETECT_MIN_TORQUE) {
 		gFoc_Ctrl.in.s_angleLast = gFoc_Ctrl.in.s_motAngle;
 		a_max = b_max = c_max = 0;
 		_unbalance_cnt = 0;

+ 6 - 0
Applications/foc/foc_config.h

@@ -71,6 +71,12 @@
 
 #define CONFIG_MAX_NEG_TORQUE 0.0F
 
+/* 三相不平衡检测参数 */
+#define CONFIG_PEAK_CNT 3 //计算经过的电周期内的最大值(peak 峰值)
+#define CONFIG_PHASE_UNBALANCE_THROLD 4.0F
+#define CONFIG_PHASE_UNBALANCE_R      0.1F
+#define CONFIG_PHASE_DETECT_MIN_TORQUE 50.0F
+
 #define CONFIG_ENABLE_IAB_REC 1   // for phase current debug
 
 #ifdef CONFIG_SPEED_LADRC