فهرست منبع

加入A1 5匝的电机支持,最高车速125km/h

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 3 سال پیش
والد
کامیت
6e62faea20

+ 1 - 1
Applications/app/app.c

@@ -138,7 +138,7 @@ static u32 _app_report_task(void *p) {
 		//sys_debug("_>%f, %f, %f\n", ladrc_observer_get()->ld, ladrc_observer_get()->lq, ladrc_observer_get()->poles);
 		encoder_log();
 		//sample_log();
-		//PMSM_FOC_LogDebug();
+		PMSM_FOC_LogDebug();
 		//F_debug();
 		//eCtrl_debug_log();
 		//err_code_log();

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

@@ -503,7 +503,7 @@ void PMSM_FOC_Schedule(void) {
 }
 
 void PMSM_FOC_LogDebug(void) {
-	sys_debug("DC curr %f --- %f\n", gFoc_Ctrl.out.s_CalciDC, gFoc_Ctrl.out.s_CalciDC2);
+	sys_debug("DC curr %f --- %f, - %f\n", gFoc_Ctrl.out.s_CalciDC, gFoc_Ctrl.out.s_CalciDC2, gFoc_Ctrl.hwLim.s_iDCMax);
 	sys_debug("%s\n", gFoc_Ctrl.out.empty_load?"NoLoad Running":"Load Runing");
 }
 

+ 144 - 0
Applications/foc/motor/A1_motor_config.c

@@ -1,3 +1,4 @@
+#ifndef MOTOR_STATOR_5N
 static torque_map_t mtpa_fw_map[11][10] = {
  { // 转速:0-2000
  		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
@@ -159,4 +160,147 @@ static iq_lq_map_t iq_lq_map[] = {
 	{332, 0.000092f},
 	{353, 0.000085f},
 };
+#else
+static torque_map_t mtpa_fw_map[11][10] = {
+{ // 转速:-500
+		{ 0, -0, 0 }, // 电流矢量给定:0, D轴电流:-5, Q轴电流:0
+		{ 250, -43, 246 }, // 电流矢量给定:25, D轴电流:-4.3, Q轴电流:24.6
+		{ 500, -171, 470 }, // 电流矢量给定:50, D轴电流:-17.1, Q轴电流:47
+		{ 1000, -423, 906 }, // 电流矢量给定:100, D轴电流:-42.3, Q轴电流:90.6
+		{ 1500, -750, 1300 }, // 电流矢量给定:150, D轴电流:-75, Q轴电流:130
+		{ 2000, -1000, 1732 }, // 电流矢量给定:200, D轴电流:-100, Q轴电流:173.2
+		{ 2500, -1434, 2048 }, // 电流矢量给定:250, D轴电流:-143.4, Q轴电流:204.8
+		{ 3000, -1928, 2298 }, // 电流矢量给定:300, D轴电流:-192.8, Q轴电流:229.8
+		{ 3500, -2475, 2475 }, // 电流矢量给定:350, D轴电流:-247.5, Q轴电流:247.5
+		{ 4000, -3150, 2460 }, // 电流矢量给定:400, D轴电流:-315, Q轴电流:246
+	}, { // 转速:-4500
+		{ 0, -0, 0 }, // 电流矢量给定:0, D轴电流:-5, Q轴电流:0
+		{ 250, -43, 246 }, // 电流矢量给定:25, D轴电流:-4.3, Q轴电流:24.6
+		{ 500, -171, 470 }, // 电流矢量给定:50, D轴电流:-17.1, Q轴电流:47
+		{ 1000, -423, 906 }, // 电流矢量给定:100, D轴电流:-42.3, Q轴电流:90.6
+		{ 1500, -750, 1300 }, // 电流矢量给定:150, D轴电流:-75, Q轴电流:130
+		{ 2000, -1000, 1732 }, // 电流矢量给定:200, D轴电流:-100, Q轴电流:173.2
+		{ 2500, -1434, 2048 }, // 电流矢量给定:250, D轴电流:-143.4, Q轴电流:204.8
+		{ 3000, -1928, 2298 }, // 电流矢量给定:300, D轴电流:-192.8, Q轴电流:229.8
+		{ 3500, -2475, 2475 }, // 电流矢量给定:350, D轴电流:-247.5, Q轴电流:247.5
+		{ 4000, -3150, 2460 }, // 电流矢量给定:400, D轴电流:-315, Q轴电流:246
+	}, { // 转速:-5000
+		{ 0, -0, 0 }, // 电流矢量给定:0, D轴电流:-5, Q轴电流:0
+		{ 250, -43, 246 }, // 电流矢量给定:25, D轴电流:-4.3, Q轴电流:24.6
+		{ 500, -171, 470 }, // 电流矢量给定:50, D轴电流:-17.1, Q轴电流:47
+		{ 1000, -423, 906 }, // 电流矢量给定:100, D轴电流:-42.3, Q轴电流:90.6
+		{ 1500, -750, 1300 }, // 电流矢量给定:150, D轴电流:-75, Q轴电流:130
+		{ 2000, -1000, 1732 }, // 电流矢量给定:200, D轴电流:-100, Q轴电流:173.2
+		{ 2500, -1434, 2048 }, // 电流矢量给定:250, D轴电流:-143.4, Q轴电流:204.8
+		{ 3000, -1928, 2298 }, // 电流矢量给定:300, D轴电流:-192.8, Q轴电流:229.8
+		{ 3500, -2475, 2475 }, // 电流矢量给定:350, D轴电流:-247.5, Q轴电流:247.5
+		{ 4000, -3150, 2460 }, // 电流矢量给定:400, D轴电流:-315, Q轴电流:246
+	}, { // 转速:-5500
+		{ 0, -0, 0 }, // 电流矢量给定:0, D轴电流:-5, Q轴电流:0
+		{ 250, -43, 246 }, // 电流矢量给定:25, D轴电流:-4.3, Q轴电流:24.6
+		{ 500, -171, 470 }, // 电流矢量给定:50, D轴电流:-17.1, Q轴电流:47
+		{ 1000, -423, 906 }, // 电流矢量给定:100, D轴电流:-42.3, Q轴电流:90.6
+		{ 1500, -750, 1300 }, // 电流矢量给定:150, D轴电流:-75, Q轴电流:130
+		{ 2000, -1000, 1732 }, // 电流矢量给定:200, D轴电流:-100, Q轴电流:173.2
+		{ 2500, -1434, 2048 }, // 电流矢量给定:250, D轴电流:-143.4, Q轴电流:204.8
+		{ 3000, -1928, 2298 }, // 电流矢量给定:300, D轴电流:-192.8, Q轴电流:229.8
+		{ 3500, -2475, 2475 }, // 电流矢量给定:350, D轴电流:-247.5, Q轴电流:247.5
+		{ 4000, -3150, 2460 }, // 电流矢量给定:400, D轴电流:-315, Q轴电流:246
+	}, { // 转速:-6000
+		{ 0, 0, 0 }, // 电流矢量给定:0, D轴电流:-10, Q轴电流:0
+		{ 250, -43, 246 }, // 电流矢量给定:25, D轴电流:-4.3, Q轴电流:24.6
+		{ 500, -171, 470 }, // 电流矢量给定:50, D轴电流:-17.1, Q轴电流:47
+		{ 800, -338, 725 }, // 电流矢量给定:80, D轴电流:-33.8, Q轴电流:72.5
+		{ 1100, -550, 953 }, // 电流矢量给定:110, D轴电流:-55, Q轴电流:95.3
+		{ 1500, -750, 1300 }, // 电流矢量给定:150, D轴电流:-75, Q轴电流:130
+		{ 2000, -1090, 1677 }, // 电流矢量给定:200, D轴电流:-109, Q轴电流:167.7
+		{ 2500, -1540, 1970 }, // 电流矢量给定:250, D轴电流:-154, Q轴电流:197
+		{ 3000, -2046, 2194 }, // 电流矢量给定:300, D轴电流:-204.6, Q轴电流:219.4
+		{ 3500, -2400, 2400 }, // 电流矢量给定:350, D轴电流:-240, Q轴电流:240
+	}, { // 转速:-6500
+		{ 0, -50, 0 }, // 电流矢量给定:0, D轴电流:-10, Q轴电流:0
+		{ 250, -43, 246 }, // 电流矢量给定:25, D轴电流:-4.3, Q轴电流:24.6
+		{ 500, -171, 470 }, // 电流矢量给定:50, D轴电流:-17.1, Q轴电流:47
+		{ 800, -338, 725 }, // 电流矢量给定:80, D轴电流:-33.8, Q轴电流:72.5
+		{ 1100, -550, 953 }, // 电流矢量给定:110, D轴电流:-55, Q轴电流:95.3
+		{ 1500, -750, 1300 }, // 电流矢量给定:150, D轴电流:-75, Q轴电流:130
+		{ 2000, -1090, 1677 }, // 电流矢量给定:200, D轴电流:-109, Q轴电流:167.7
+		{ 2500, -1540, 1970 }, // 电流矢量给定:250, D轴电流:-154, Q轴电流:197
+		{ 3000, -2046, 2194 }, // 电流矢量给定:300, D轴电流:-204.6, Q轴电流:219.4
+		{ 3500, -2400, 2400 }, // 电流矢量给定:350, D轴电流:-240, Q轴电流:240
+	}, { // 转速:-7000
+		{ 0, -100, 0 }, // 电流矢量给定:0, D轴电流:-10, Q轴电流:0
+		{ 250, -43, 246 }, // 电流矢量给定:25, D轴电流:-4.3, Q轴电流:24.6
+		{ 500, -171, 470 }, // 电流矢量给定:50, D轴电流:-17.1, Q轴电流:47
+		{ 800, -338, 725 }, // 电流矢量给定:80, D轴电流:-33.8, Q轴电流:72.5
+		{ 1100, -550, 953 }, // 电流矢量给定:110, D轴电流:-55, Q轴电流:95.3
+		{ 1400, -700, 1212 }, // 电流矢量给定:140, D轴电流:-70, Q轴电流:121.2
+		{ 1700, -975, 1393 }, // 电流矢量给定:170, D轴电流:-97.5, Q轴电流:139.3
+		{ 2000, -1286, 1532 }, // 电流矢量给定:200, D轴电流:-128.6, Q轴电流:153.2
+		{ 2500, -1673, 1858 }, // 电流矢量给定:250, D轴电流:-167.3, Q轴电流:185.8
+		{ 3000, -2158, 2084 }, // 电流矢量给定:300, D轴电流:-215.8, Q轴电流:208.4
+	}, { // 转速:-7500
+		{ 0, -150, 0 }, // 电流矢量给定:0, D轴电流:-15, Q轴电流:0
+		{ 250, -43, 246 }, // 电流矢量给定:25, D轴电流:-4.3, Q轴电流:24.6
+		{ 500, -171, 470 }, // 电流矢量给定:50, D轴电流:-17.1, Q轴电流:47
+		{ 800, -338, 725 }, // 电流矢量给定:80, D轴电流:-33.8, Q轴电流:72.5
+		{ 1100, -550, 953 }, // 电流矢量给定:110, D轴电流:-55, Q轴电流:95.3
+		{ 1400, -700, 1212 }, // 电流矢量给定:140, D轴电流:-70, Q轴电流:121.2
+		{ 1700, -975, 1393 }, // 电流矢量给定:170, D轴电流:-97.5, Q轴电流:139.3
+		{ 2000, -1286, 1532 }, // 电流矢量给定:200, D轴电流:-128.6, Q轴电流:153.2
+		{ 2400, -1697, 1697 }, // 电流矢量给定:240, D轴电流:-169.7, Q轴电流:169.7
+		{ 2800, -2081, 1874 }, // 电流矢量给定:280, D轴电流:-208.1, Q轴电流:187.4
+	}, { // 转速:-8000
+		{ 0, -200, 0 }, // 电流矢量给定:0, D轴电流:-20, Q轴电流:0
+		{ 250, -43, 246 }, // 电流矢量给定:25, D轴电流:-4.3, Q轴电流:24.6
+		{ 500, -171, 470 }, // 电流矢量给定:50, D轴电流:-17.1, Q轴电流:47
+		{ 800, -338, 725 }, // 电流矢量给定:80, D轴电流:-33.8, Q轴电流:72.5
+		{ 1100, -550, 953 }, // 电流矢量给定:110, D轴电流:-55, Q轴电流:95.3
+		{ 1400, -700, 1212 }, // 电流矢量给定:140, D轴电流:-70, Q轴电流:121.2
+		{ 1700, -975, 1393 }, // 电流矢量给定:170, D轴电流:-97.5, Q轴电流:139.3
+		{ 2000, -1364, 1463 }, // 电流矢量给定:200, D轴电流:-136.4, Q轴电流:146.3
+		{ 2300, -1709, 1539 }, // 电流矢量给定:230, D轴电流:-170.9, Q轴电流:153.9
+		{ 2600, -2049, 1601 }, // 电流矢量给定:260, D轴电流:-204.9, Q轴电流:160.1
+	}, { // 转速:-8500
+		{ 0, -250, 0 }, // 电流矢量给定:0, D轴电流:-25, Q轴电流:0
+		{ 250, -43, 246 }, // 电流矢量给定:25, D轴电流:-4.3, Q轴电流:24.6
+		{ 500, -171, 470 }, // 电流矢量给定:50, D轴电流:-17.1, Q轴电流:47
+		{ 800, -338, 725 }, // 电流矢量给定:80, D轴电流:-33.8, Q轴电流:72.5
+		{ 1100, -465, 997 }, // 电流矢量给定:110, D轴电流:-46.5, Q轴电流:99.7
+		{ 1400, -783, 1161 }, // 电流矢量给定:140, D轴电流:-78.3, Q轴电流:116.1
+		{ 1700, -1138, 1263 }, // 电流矢量给定:170, D轴电流:-113.8, Q轴电流:126.3
+		{ 2000, -1486, 1338 }, // 电流矢量给定:200, D轴电流:-148.6, Q轴电流:133.8
+		{ 2300, -1837, 1384 }, // 电流矢量给定:230, D轴电流:-183.7, Q轴电流:138.4
+		{ 2600, -2155, 1454 }, // 电流矢量给定:260, D轴电流:-215.5, Q轴电流:145.4
+	}, { // 转速:-9000
+		{ 0, -300, 0 }, // 电流矢量给定:0, D轴电流:-30, Q轴电流:0
+		{ 250, -70, 240 }, // 电流矢量给定:25, D轴电流:-7, Q轴电流:24
+		{ 500, -170, 470 }, // 电流矢量给定:50, D轴电流:-17, Q轴电流:47
+		{ 800, -340, 730 }, // 电流矢量给定:80, D轴电流:-34, Q轴电流:73
+		{ 1100, -550, 950 }, // 电流矢量给定:110, D轴电流:-55, Q轴电流:95
+		{ 1400, -920, 1060 }, // 电流矢量给定:140, D轴电流:-92, Q轴电流:106
+		{ 1700, -1240, 1160 }, // 电流矢量给定:170, D轴电流:-124, Q轴电流:116
+		{ 2000, -1570, 1230 }, // 电流矢量给定:200, D轴电流:-157, Q轴电流:123
+		{ 2300, -1900, 1280 }, // 电流矢量给定:230, D轴电流:-190, Q轴电流:128
+		{ 2600, -2250, 1300 }, // 电流矢量给定:260, D轴电流:-225, Q轴电流:130
+	},
+};
+
+
+static motor_map_t mot_map[] = {
+	{0, 400},
+	{4000, 400},
+	{4500, 400},
+	{5000, 400},
+	{5500, 400},
+	{6000, 350},
+	{6500, 350},
+	{7000, 300},
+	{7500, 280},
+	{8000, 260},
+	{8500, 260},
+	{9000, 260},
+};
+
+#endif
 

+ 8 - 2
Applications/foc/motor/motor_param.c

@@ -6,11 +6,17 @@
 #if CONFIG_MOT_TYPE==MOTOR_BLUESHARK_A1
 #define MOT_HAVE_MAPS
 #define MOT_USE_PHASE_I //表示使用电流矢量和RPM查表,获取D轴电流,iq = 开根号(电流矢量的平方 - D轴电流的平方)
+#ifndef MOTOR_STATOR_5N
 #define RPM_MAX_IDX 11
 #define TRQ_MAX_IDX 10
+#define MOT_LQ_LOOKUP 
 static int map_rpm[] = {2000, 3000, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000};
+#else
+#define RPM_MAX_IDX 11
+#define TRQ_MAX_IDX 10
+static int map_rpm[] = {4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000, 8500, 9000};
+#endif
 #include "foc/motor/A1_motor_config.c"
-
 #endif
 
 /* 根据电机外特性map,获取当前转速下的最大扭矩,主要给计算当前扭矩需求使用 */
@@ -40,7 +46,7 @@ s16 motor_max_torque_for_rpm(s16 rpm) {
 }
 
 float motor_get_lq_from_iq(s16 iq) {
-#ifdef MOT_HAVE_MAPS
+#ifdef MOT_LQ_LOOKUP
 	iq = ABS(iq);
 	int map_size = ARRAY_SIZE(iq_lq_map);
 	for (int i = map_size-1; i >= 0; i--) {

+ 1 - 3
Applications/foc/motor/motor_param.h

@@ -46,9 +46,7 @@ float motor_get_lq_from_iq(s16 iq);
 #define MOTOR_Ld (0.000140F*0.5f) //5N -> 0.000048
 #define MOTOR_Lq (0.000356f*0.5f) //5N -> 0.0001335
 #define MOTOR_Flux (0.013f)
-//#define MOTOR_R   0.033f
-//#define MOTOR_Ld (0.000168f * 0.5f)//(0.000140F*0.5f)
-//#define MOTOR_Lq (0.000330f * 0.5f)//(0.000340f*0.5f)
+#define MOTOR_STATOR_5N
 
 #define MOTOR_POLES  4
 #define MOTOR_ENC_OFFSET 0.0F