Explorar el Código

电流环带宽放到motor_param.h中定义,A1 motor的带宽2000

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui hace 3 años
padre
commit
590f4e03a1

+ 4 - 2
Applications/app/app.c

@@ -116,7 +116,7 @@ static u32 _app_report_task(void *p) {
 	}
 	return 200;
 }
-static int plot_type = 6;
+static int plot_type = 7;
 static void plot_smo_angle(void) {
 	float smo_angle = foc_observer_smo_angle();
 	float delta = smo_angle - PMSM_FOC_Get()->in.s_hallAngle;
@@ -137,13 +137,15 @@ static u32 _app_plot_task(void * args) {
 		//can_plot2(PMSM_FOC_GetSpeed(), foc_observer_smo_speed());
 		plot_smo_angle();
 	}else if (plot_type == 4) {
-		can_plot2(PMSM_FOC_Get()->in.s_targetTorque + 20, PMSM_FOC_Get()->in.s_targetTorque);
+		can_plot2(eCtrl_get_RefTorque(), PMSM_FOC_Get()->in.s_targetTorque);
 	}else if (plot_type == 5) {
 #ifdef CONFIG_DQ_STEP_RESPONSE
 		can_plot2((s16)(target_d), (s16)(PMSM_FOC_Get()->out.s_RealIdq.d));
 #endif
 	}else if (plot_type == 6) {
 		can_plot2((s16)(PMSM_FOC_Get()->in.s_iABC[0]), (s16)(PMSM_FOC_Get()->in.s_iABC[1]));
+	}else if (plot_type == 7) {
+		can_plot2((s16)PMSM_FOC_Get()->out.s_OutVdq.d, (s16)PMSM_FOC_Get()->out.s_FilterIdq.d);
 	}
 	
 	return 20;

+ 0 - 1
Applications/bsp/board_mc100_v1.h

@@ -17,7 +17,6 @@
 #define CONFIG_MAX_PHASE_VOL    (CONFIG_MOS_MAX_VOL - 20.0F)
 #define CONFIG_MAX_TORQUE       CONFIG_MAX_PHASE_CURR
 
-#define CONFIG_CURRENT_BANDWITH  1000.0f /* 电流环带宽 */
 //#define CONFIG_BEEP 
 #define CONFIG_STALL_MAX_CURRENT 100.0f //最大堵转相电流电流
 #define CONFIG_STALL_MAX_TIME    3000   //ms, 超过最大堵转电流持续时间,判断堵转

+ 10 - 0
Applications/foc/core/PMSM_FOC_Core.c

@@ -376,6 +376,12 @@ void PMSM_FOC_Schedule(void) {
 	#endif
 		err = target_q - gFoc_Ctrl.out.s_RealIdq.q;
 		gFoc_Ctrl.in.s_targetVdq.q = PI_Controller_RunSerial(gFoc_Ctrl.pi_iq, err);
+
+#if 0
+		float eW = gFoc_Ctrl.in.s_motRPM * PI/ 30.0f * gFoc_Ctrl.params.n_poles; //电角速度
+		float ff_d = -eW * MOTOR_Lq * gFoc_Ctrl.out.s_RealIdq.q;
+		gFoc_Ctrl.in.s_targetVdq.d += fclamp(ff_d, -10.0f, 0);
+#endif
 	}else {
 		gFoc_Ctrl.in.s_targetVdq.d = FOC_Get_DqRamp(&gFoc_Ctrl.vdq_ctl[0]);
 		gFoc_Ctrl.in.s_targetVdq.q = FOC_Get_DqRamp(&gFoc_Ctrl.vdq_ctl[1]);	
@@ -508,6 +514,7 @@ static __INLINE float PMSM_FOC_Limit_iDC(float maxTrq) {
 }
 
 static __INLINE float PMSM_FOC_Limit_Speed(float refTorque) {
+#if 1
 	if (refTorque >= 0) {
 		gFoc_Ctrl.pi_torque->max = refTorque;
 		gFoc_Ctrl.pi_torque->min = -CONFIG_MAX_NEG_TORQUE;
@@ -520,6 +527,9 @@ static __INLINE float PMSM_FOC_Limit_Speed(float refTorque) {
 	float trq_res = PI_Controller_RunSat(gFoc_Ctrl.pi_torque, errRef);
 
 	return trq_res;
+#else
+	return refTorque;
+#endif
 }
 
 static __INLINE void PMSM_FOC_idq_Assign(void) {

+ 13 - 5
Applications/foc/motor/motor_param.h

@@ -17,12 +17,13 @@ s16 get_max_torque_for_rpm(s16 rpm);
 #define MOTOR_Lq (0.000200f*0.5f)
 #define MOTOR_POLES  4
 #define MOTOR_ENC_OFFSET 0.0F
-
 #define CONFIG_MAX_MOTOR_TORQUE 40.0F
 
 #define TRQ_PI_KP 0.14F
 #define TRQ_PI_KI 0.15F
 
+#define CONFIG_CURRENT_BANDWITH  1000.0f /* 电流环带宽 */
+
 #define MOTOR_NR 0x11
 #elif CONFIG_MOT_TYPE==MOTOR_BLUESHARK_A1
 #define MOTOR_R   0.018f
@@ -30,7 +31,6 @@ s16 get_max_torque_for_rpm(s16 rpm);
 #define MOTOR_Lq (0.000300f*0.5f)
 #define MOTOR_POLES  4
 #define MOTOR_ENC_OFFSET 0.0F
-
 #define CONFIG_MAX_MOTOR_TORQUE 40.0F
 
 #define TRQ_PI_KP 0.14F
@@ -38,13 +38,14 @@ s16 get_max_torque_for_rpm(s16 rpm);
 
 #define MOTOR_NR 0x16
 
+#define CONFIG_CURRENT_BANDWITH  2000.0f /* 电流环带宽 */
+
 #elif CONFIG_MOT_TYPE==MOTOR_BLUESHARK_NEW2
 #define MOTOR_R   0.013f
 #define MOTOR_Ld (0.000140f*0.5f)
 #define MOTOR_Lq (0.000320f*0.5f)
 #define MOTOR_POLES  4
 #define MOTOR_ENC_OFFSET 250.0F
-
 #define CONFIG_MAX_MOTOR_TORQUE 40.0F
 
 #define TRQ_PI_KP 0.14F
@@ -52,26 +53,29 @@ s16 get_max_torque_for_rpm(s16 rpm);
 
 #define MOTOR_NR 0x12
 
+#define CONFIG_CURRENT_BANDWITH  1000.0f /* 电流环带宽 */
+
 #elif CONFIG_MOT_TYPE==MOTOR_BLUESHARK_ZD_100
 #define MOTOR_R   0.008f
 #define MOTOR_Ld (0.000125f*0.5f)
 #define MOTOR_Lq (0.000091f*0.5f)
 #define MOTOR_POLES  5
 #define MOTOR_ENC_OFFSET 145.0F
-
 #define CONFIG_MAX_MOTOR_TORQUE 200.0F
 
 #define TRQ_PI_KP 0.6F //0.13f
 #define TRQ_PI_KI 0.5F
+
 #define MOTOR_NR 0x13
 
+#define CONFIG_CURRENT_BANDWITH  1000.0f /* 电流环带宽 */
+
 #elif CONFIG_MOT_TYPE==MOTOR_BLUESHARK_OLD
 #define MOTOR_R 0.012f
 #define MOTOR_Ld (0.000143f*0.5f)
 #define MOTOR_Lq (0.000205f*0.5f)
 #define MOTOR_POLES  5
 #define MOTOR_ENC_OFFSET 180.0F
-
 #define CONFIG_MAX_MOTOR_TORQUE 40.0F
 
 #define TRQ_PI_KP 0.14F
@@ -79,6 +83,8 @@ s16 get_max_torque_for_rpm(s16 rpm);
 
 #define MOTOR_NR 0x14
 
+#define CONFIG_CURRENT_BANDWITH  1000.0f /* 电流环带宽 */
+
 #elif CONFIG_MOT_TYPE==MOTOR_3505
 //编码器电机 3505
 #define MOTOR_R 0.08f
@@ -92,6 +98,8 @@ s16 get_max_torque_for_rpm(s16 rpm);
 
 #define MOTOR_NR 0x15
 
+#define CONFIG_CURRENT_BANDWITH  1000.0f /* 电流环带宽 */
+
 #endif
 
 #endif /* _MOTOR_PARAM_H__ */