瀏覽代碼

电机标定后,通过电流矢量查找MTPA和弱磁

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 3 年之前
父節點
當前提交
d571d76f1c

+ 3 - 3
Applications/app/app.c

@@ -91,8 +91,8 @@ static u32 _app_trq_test_task(void *args) {
 	test_id = dq.d;
 	test_iq = dq.q;
 	sys_debug("lookup: %d, %f, %f, %f\n", test_rpm, test_trq, test_id, test_iq);
-	test_rpm -= 100;
-	test_trq -= 0.5f;
+	test_rpm = 8000;
+	test_trq += 5.0f;
 	return 500;
 }
 #endif
@@ -155,7 +155,7 @@ static void plot_smo_angle(void) {
 }
 static u32 _app_plot_task(void * args) {
 	if (plot_type == 1) {
-		//can_plot2((s16)(PMSM_FOC_Get()->in.s_targetTorque*10.0f), (s16)PMSM_FOC_GetSpeed());
+		//can_plot2((s16)(PMSM_FOC_Get()->in.s_targetTorque*1000.0f), (s16)PMSM_FOC_GetSpeed());
 		can_plot3((s16)PMSM_FOC_Get()->vel_lim_adrc.z1, (s16)PMSM_FOC_Get()->vel_lim_adrc.z2, (s16)PMSM_FOC_GetSpeed());
 		//can_plot2(test_id, test_iq);
 	}else if (plot_type == 2) {

+ 13 - 5
Applications/foc/core/thro_torque.c

@@ -9,11 +9,19 @@
 #include "prot/can_foc_msg.h"
 
 static thro_torque_t _torque;
+
 static motor_map_t gear_torques[4][5] = {
-	[0] = {{500,  10}, {1200, 10}, {1700, 10}, {2200, 10}, {2900, 10},},
-	[1] = {{800,  10}, {1600, 100}, {2400, 10}, {3200, 10}, {4300, 10},},
-	[2] = {{1200, 10}, {2200, 10}, {3200, 10}, {4200, 10}, {5300, 10},},
-	[3] = {{3000, 10}, {4740, 10}, {5050, 11}, {5200, 10}, {5300, 10},},
+#if 0
+	[0] = {{500,  10}, {1200, 10}, {1700, 10}, {2200, 10}, {8000, 10},},
+	[1] = {{800,  10}, {1600, 10}, {2400, 10}, {3200, 10}, {8000, 10},},
+	[2] = {{1200, 10}, {2200, 10}, {3200, 10}, {4200, 10}, {8000, 10},},
+	[3] = {{3000, 10}, {4740, 10}, {5050, 11}, {5200, 10}, {8000, 10},},
+#else
+	[0] = {{500,  100}, {1200, 100}, {1700, 100}, {2200, 100}, {8000, 100},},
+	[1] = {{800,  100}, {1600, 100}, {2400, 100}, {3200, 100}, {8000, 100},},
+	[2] = {{1200, 100}, {2200, 100}, {3200, 100}, {4200, 100}, {8000, 100},},
+	[3] = {{3000, 100}, {4740, 100}, {5050, 100}, {5200, 100}, {8000, 100},},
+#endif
 };
 
 void thro_torque_reset(void) {
@@ -30,7 +38,7 @@ void thro_torque_init(void) {
 
 static float thro_torque_gear_map(void) {
 	u8 gear = mc_get_gear();
-	if (gear > 4) {
+	if (gear > 3) {
 		gear = 0;
 	}
 	motor_map_t *map = &gear_torques[gear][0];

+ 3 - 3
Applications/foc/foc_config.h

@@ -59,9 +59,9 @@
 
 #define CONFIG_MAX_NEG_TORQUE 0.0F
 #ifdef CONFIG_SPEED_LADRC
-	#define CONFIG_LADRC_Wo  300.0F
-	#define CONFIG_LADRC_Wcv 3.0f
-	#define CONFIG_LADRC_B0  300.0F  
+	#define CONFIG_LADRC_Wo  200.0F
+	#define CONFIG_LADRC_Wcv 5.0F
+	#define CONFIG_LADRC_B0  2500.0F 
 #endif
 #ifdef CONFIG_SMO_OBSERVER
 	#define CONFIG_SMO_MIN_SPEED    1000 //RPM

+ 112 - 147
Applications/foc/motor/A1_motor_config.c

@@ -1,157 +1,122 @@
-static torque_map_t mtpa_fw_map[14][10] = {
-	{ // 转速:0
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 50, -130, 480 }, // 扭矩:-5, D轴电流:-13, Q轴电流:48
-		{ 92, -340, 720 }, // 扭矩:-9.2, D轴电流:-34, Q轴电流:72
-		{ 146, -600, 1040 }, // 扭矩:-14.6, D轴电流:-60, Q轴电流:104
-		{ 200, -920, 1310 }, // 扭矩:-20, D轴电流:-92, Q轴电流:131
-		{ 254, -1410, 1410 }, // 扭矩:-25.4, D轴电流:-141, Q轴电流:141
-		{ 320, -1770, 1770 }, // 扭矩:-32, D轴电流:-177, Q轴电流:177
-		{ 382, -2120, 2120 }, // 扭矩:-38.2, D轴电流:-212, Q轴电流:212
-		{ 438, -2470, 2470 }, // 扭矩:-43.8, D轴电流:-247, Q轴电流:247
-	}, { // 转速:-500
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 53, -130, 480 }, // 扭矩:-5.3, D轴电流:-13, Q轴电流:48
-		{ 116, -420, 900 }, // 扭矩:-11.6, D轴电流:-42, Q轴电流:90
-		{ 180, -750, 1300 }, // 扭矩:-18, D轴电流:-75, Q轴电流:130
-		{ 244, -1150, 1640 }, // 扭矩:-24.4, D轴电流:-115, Q轴电流:164
-		{ 303, -1500, 2000 }, // 扭矩:-30.3, D轴电流:-150, Q轴电流:200
-		{ 358, -2120, 2120 }, // 扭矩:-35.8, D轴电流:-212, Q轴电流:212
-		{ 410, -2470, 2470 }, // 扭矩:-41, D轴电流:-247, Q轴电流:247
-		{ 456, -2830, 2830 }, // 扭矩:-45.6, D轴电流:-283, Q轴电流:283
-	}, { // 转速:-1000
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 52, -130, 480 }, // 扭矩:-5.2, D轴电流:-13, Q轴电流:48
-		{ 112, -420, 900 }, // 扭矩:-11.2, D轴电流:-42, Q轴电流:90
-		{ 177, -750, 1300 }, // 扭矩:-17.7, D轴电流:-75, Q轴电流:130
-		{ 240, -1140, 1640 }, // 扭矩:-24, D轴电流:-114, Q轴电流:164
-		{ 300, -1600, 1920 }, // 扭矩:-30, D轴电流:-160, Q轴电流:192
-		{ 355, -2110, 2120 }, // 扭矩:-35.5, D轴电流:-211, Q轴电流:212
-		{ 406, -2470, 2470 }, // 扭矩:-40.6, D轴电流:-247, Q轴电流:247
-		{ 453, -2830, 2830 }, // 扭矩:-45.3, D轴电流:-283, Q轴电流:283
-	}, { // 转速:-2000
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 51, -130, 480 }, // 扭矩:-5.1, D轴电流:-13, Q轴电流:48
-		{ 111, -420, 900 }, // 扭矩:-11.1, D轴电流:-42, Q轴电流:90
-		{ 175, -760, 1300 }, // 扭矩:-17.5, D轴电流:-76, Q轴电流:130
-		{ 238, -1150, 1640 }, // 扭矩:-23.8, D轴电流:-115, Q轴电流:164
-		{ 297, -1540, 1970 }, // 扭矩:-29.7, D轴电流:-154, Q轴电流:197
-		{ 353, -1930, 2300 }, // 扭矩:-35.3, D轴电流:-193, Q轴电流:230
-		{ 404, -2470, 2470 }, // 扭矩:-40.4, D轴电流:-247, Q轴电流:247
-		{ 450, -2830, 2830 }, // 扭矩:-45, D轴电流:-283, Q轴电流:283
-	}, { // 转速:-3000
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 50, -170, 470 }, // 扭矩:-5, D轴电流:-17, Q轴电流:47
-		{ 110, -510, 850 }, // 扭矩:-11, D轴电流:-51, Q轴电流:85
-		{ 174, -850, 1230 }, // 扭矩:-17.4, D轴电流:-85, Q轴电流:123
-		{ 234, -1140, 1630 }, // 扭矩:-23.4, D轴电流:-114, Q轴电流:163
-		{ 292, -1460, 2030 }, // 扭矩:-29.2, D轴电流:-146, Q轴电流:203
-		{ 350, -1920, 2290 }, // 扭矩:-35, D轴电流:-192, Q轴电流:229
-		{ 400, -2340, 2600 }, // 扭矩:-40, D轴电流:-234, Q轴电流:260
-		{ 447, -2820, 2830 }, // 扭矩:-44.7, D轴电流:-282, Q轴电流:283
-	}, { // 转速:-4000
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 50, -170, 470 }, // 扭矩:-5, D轴电流:-17, Q轴电流:47
-		{ 109, -460, 880 }, // 扭矩:-10.9, D轴电流:-46, Q轴电流:88
-		{ 169, -850, 1230 }, // 扭矩:-16.9, D轴电流:-85, Q轴电流:123
-		{ 236, -1140, 1630 }, // 扭矩:-23.6, D轴电流:-114, Q轴电流:163
-		{ 294, -1530, 1970 }, // 扭矩:-29.4, D轴电流:-153, Q轴电流:197
-		{ 352, -2000, 2220 }, // 扭矩:-35.2, D轴电流:-200, Q轴电流:222
-		{ 374, -2320, 2240 }, // 扭矩:-37.4, D轴电流:-232, Q轴电流:224
-		{ 374, -2320, 2240 }, // 扭矩:-37.4, D轴电流:-232, Q轴电流:224
+static torque_map_t mtpa_fw_map[10][10] = {
+ { // 转速:0-3000
+ 		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
+		{ 199, -17, 198 }, // 电流矢量V:19.87285, D轴电流:-1.7, Q轴电流:19.8
+		{ 497, -130, 480 }, // 电流矢量V:49.72927, D轴电流:-13, Q轴电流:48
+		{ 993, -420, 900 }, // 电流矢量V:99.31767, D轴电流:-42, Q轴电流:90
+		{ 1501, -750, 1300 }, // 电流矢量V:150.0833, D轴电流:-75, Q轴电流:130
+		{ 2003, -1150, 1640 }, // 电流矢量V:200.3023, D轴电流:-115, Q轴电流:164
+		{ 2500, -1500, 2000 }, // 电流矢量V:250, D轴电流:-150, Q轴电流:200
+		{ 2998, -2120, 2120 }, // 电流矢量V:299.8133, D轴电流:-212, Q轴电流:212
+		{ 3493, -2470, 2470 }, // 电流矢量V:349.3108, D轴电流:-247, Q轴电流:247
+		{ 4002, -2830, 2830 }, // 电流矢量V:400.2224, D轴电流:-283, Q轴电流:283
+		
+	},  { // 转速:-4000
+		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
+		{ 199, -17, 198 }, // 电流矢量V:19.87285, D轴电流:-1.7, Q轴电流:19.8
+		{ 500, -170, 470 }, // 电流矢量V:49.98, D轴电流:-17, Q轴电流:47
+		{ 993, -460, 880 }, // 电流矢量V:99.29753, D轴电流:-46, Q轴电流:88
+		{ 1495, -850, 1230 }, // 电流矢量V:149.5125, D轴电流:-85, Q轴电流:123
+		{ 1989, -1140, 1630 }, // 电流矢量V:198.9095, D轴电流:-114, Q轴电流:163
+		{ 2494, -1530, 1970 }, // 电流矢量V:249.4354, D轴电流:-153, Q轴电流:197
+		{ 2988, -2000, 2220 }, // 电流矢量V:298.8043, D轴电流:-200, Q轴电流:222
+		{ 3225, -2320, 2240 }, // 电流矢量V:322.4903, D轴电流:-232, Q轴电流:224
+		{ 3225, -2320, 2240 }, // 电流矢量V:322.4903, D轴电流:-232, Q轴电流:224
+		
 	}, { // 转速:-4500
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 50, -130, 480 }, // 扭矩:-5, D轴电流:-13, Q轴电流:48
-		{ 109, -350, 940 }, // 扭矩:-10.9, D轴电流:-35, Q轴电流:94
-		{ 173, -700, 1320 }, // 扭矩:-17.3, D轴电流:-70, Q轴电流:132
-		{ 237, -1090, 1640 }, // 扭矩:-23.7, D轴电流:-109, Q轴电流:164
-		{ 294, -1790, 1710 }, // 扭矩:-29.4, D轴电流:-179, Q轴电流:171
-		{ 320, -2160, 1720 }, // 扭矩:-32, D轴电流:-216, Q轴电流:172
-		{ 320, -2160, 1720 }, // 扭矩:-32, D轴电流:-216, Q轴电流:172
-		{ 320, -2160, 1720 }, // 扭矩:-32, D轴电流:-216, Q轴电流:172
+		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
+		{ 199, -17, 198 }, // 电流矢量V:19.87285, D轴电流:-1.7, Q轴电流:19.8
+		{ 497, -130, 480 }, // 电流矢量V:49.72927, D轴电流:-13, Q轴电流:48
+		{ 1003, -350, 940 }, // 电流矢量V:100.3045, D轴电流:-35, Q轴电流:94
+		{ 1494, -700, 1320 }, // 电流矢量V:149.4122, D轴电流:-70, Q轴电流:132
+		{ 1969, -1090, 1640 }, // 电流矢量V:196.9188, D轴电流:-109, Q轴电流:164
+		{ 2476, -1790, 1710 }, // 电流矢量V:247.552, D轴电流:-179, Q轴电流:171
+		{ 2761, -2160, 1720 }, // 电流矢量V:276.1159, D轴电流:-216, Q轴电流:172
+		{ 2761, -2160, 1720 }, // 电流矢量V:276.1159, D轴电流:-216, Q轴电流:172
+		{ 2761, -2160, 1720 }, // 电流矢量V:276.1159, D轴电流:-216, Q轴电流:172
+		
 	}, { // 转速:-5000
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 50, -170, 470 }, // 扭矩:-5, D轴电流:-17, Q轴电流:47
-		{ 110, -420, 900 }, // 扭矩:-11, D轴电流:-42, Q轴电流:90
-		{ 174, -860, 1230 }, // 扭矩:-17.4, D轴电流:-86, Q轴电流:123
-		{ 232, -1460, 1360 }, // 扭矩:-23.2, D轴电流:-146, Q轴电流:136
-		{ 274, -2100, 1360 }, // 扭矩:-27.4, D轴电流:-210, Q轴电流:136
-		{ 275, -2010, 1400 }, // 扭矩:-27.5, D轴电流:-201, Q轴电流:140
-		{ 276, -2020, 1400 }, // 扭矩:-27.6, D轴电流:-202, Q轴电流:140
-		{ 277, -2020, 1410 }, // 扭矩:-27.7, D轴电流:-202, Q轴电流:141
+		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
+		{ 199, -17, 198 }, // 电流矢量V:19.87285, D轴电流:-1.7, Q轴电流:19.8
+		{ 500, -170, 470 }, // 电流矢量V:49.98, D轴电流:-17, Q轴电流:47
+		{ 993, -420, 900 }, // 电流矢量V:99.31767, D轴电流:-42, Q轴电流:90
+		{ 1501, -860, 1230 }, // 电流矢量V:150.0833, D轴电流:-86, Q轴电流:123
+		{ 1995, -1460, 1360 }, // 电流矢量V:199.5294, D轴电流:-146, Q轴电流:136
+		{ 2450, -2010, 1400 }, // 电流矢量V:244.951, D轴电流:-201, Q轴电流:140
+		{ 2458, -2020, 1400 }, // 电流矢量V:245.7722, D轴电流:-202, Q轴电流:140
+		{ 2463, -2020, 1410 }, // 电流矢量V:246.3433, D轴电流:-202, Q轴电流:141
+		{ 2502, -2100, 1360 }, // 电流矢量V:250.1919, D轴电流:-210, Q轴电流:136
+		
 	}, { // 转速:-5500
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 50, -170, 470 }, // 扭矩:-5, D轴电流:-17, Q轴电流:47
-		{ 110, -420, 900 }, // 扭矩:-11, D轴电流:-42, Q轴电流:90
-		{ 168, -1040, 1070 }, // 扭矩:-16.8, D轴电流:-104, Q轴电流:107
-		{ 218, -1620, 1160 }, // 扭矩:-21.8, D轴电流:-162, Q轴电流:116
-		{ 246, -1960, 1190 }, // 扭矩:-24.6, D轴电流:-196, Q轴电流:119
-		{ 246, -1960, 1190 }, // 扭矩:-24.6, D轴电流:-196, Q轴电流:119
-		{ 246, -1960, 1190 }, // 扭矩:-24.6, D轴电流:-196, Q轴电流:119
-		{ 246, -1960, 1190 }, // 扭矩:-24.6, D轴电流:-196, Q轴电流:119
+		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
+		{ 199, -17, 198 }, // 电流矢量V:19.87285, D轴电流:-1.7, Q轴电流:19.8
+		{ 500, -170, 470 }, // 电流矢量V:49.98, D轴电流:-17, Q轴电流:47
+		{ 993, -420, 900 }, // 电流矢量V:99.31767, D轴电流:-42, Q轴电流:90
+		{ 1492, -1040, 1070 }, // 电流矢量V:149.2146, D轴电流:-104, Q轴电流:107
+		{ 1992, -1620, 1160 }, // 电流矢量V:199.2486, D轴电流:-162, Q轴电流:116
+		{ 2293, -1960, 1190 }, // 电流矢量V:229.2968, D轴电流:-196, Q轴电流:119
+		{ 2293, -1960, 1190 }, // 电流矢量V:229.2968, D轴电流:-196, Q轴电流:119
+		{ 2293, -1960, 1190 }, // 电流矢量V:229.2968, D轴电流:-196, Q轴电流:119
+		{ 2293, -1960, 1190 }, // 电流矢量V:229.2968, D轴电流:-196, Q轴电流:119
+		
 	}, { // 转速:-6000
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 48, -170, 470 }, // 扭矩:-4.8, D轴电流:-17, Q轴电流:47
-		{ 105, -630, 780 }, // 扭矩:-10.5, D轴电流:-63, Q轴电流:78
-		{ 158, -1180, 920 }, // 扭矩:-15.8, D轴电流:-118, Q轴电流:92
-		{ 204, -1730, 1000 }, // 扭矩:-20.4, D轴电流:-173, Q轴电流:100
-		{ 220, -1950, 1020 }, // 扭矩:-22, D轴电流:-195, Q轴电流:102
-		{ 222, -1950, 1020 }, // 扭矩:-22.2, D轴电流:-195, Q轴电流:102
-		{ 222, -1950, 1020 }, // 扭矩:-22.2, D轴电流:-195, Q轴电流:102
-		{ 222, -1950, 1020 }, // 扭矩:-22.2, D轴电流:-195, Q轴电流:102
+		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
+		{ 199, -17, 198 }, // 电流矢量V:19.87285, D轴电流:-1.7, Q轴电流:19.8
+		{ 500, -170, 470 }, // 电流矢量V:49.98, D轴电流:-17, Q轴电流:47
+		{ 1003, -630, 780 }, // 电流矢量V:100.2646, D轴电流:-63, Q轴电流:78
+		{ 1496, -1180, 920 }, // 电流矢量V:149.6262, D轴电流:-118, Q轴电流:92
+		{ 1998, -1730, 1000 }, // 电流矢量V:199.8224, D轴电流:-173, Q轴电流:100
+		{ 2201, -1950, 1020 }, // 电流矢量V:220.0659, D轴电流:-195, Q轴电流:102
+		{ 2201, -1950, 1020 }, // 电流矢量V:220.0659, D轴电流:-195, Q轴电流:102
+		{ 2201, -1950, 1020 }, // 电流矢量V:220.0659, D轴电流:-195, Q轴电流:102
+		{ 2201, -1950, 1020 }, // 电流矢量V:220.0659, D轴电流:-195, Q轴电流:102
+		
 	}, { // 转速:-6500
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
-		{ 50, -170, 470 }, // 扭矩:-5, D轴电流:-17, Q轴电流:47
-		{ 100, -690, 700 }, // 扭矩:-10, D轴电流:-69, Q轴电流:70
-		{ 142, -1150, 810 }, // 扭矩:-14.2, D轴电流:-115, Q轴电流:81
-		{ 187, -1730, 900 }, // 扭矩:-18.7, D轴电流:-173, Q轴电流:90
-		{ 196, -1875, 900 }, // 扭矩:-19.6, D轴电流:-187.5, Q轴电流:90
-		{ 196, -1875, 900 }, // 扭矩:-19.6, D轴电流:-187.5, Q轴电流:90
-		{ 196, -1875, 900 }, // 扭矩:-19.6, D轴电流:-187.5, Q轴电流:90
-		{ 196, -1875, 900 }, // 扭矩:-19.6, D轴电流:-187.5, Q轴电流:90
+		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
+		{ 199, -17, 198 }, // 电流矢量V:19.87285, D轴电流:-1.7, Q轴电流:19.8
+		{ 500, -170, 470 }, // 电流矢量V:49.98, D轴电流:-17, Q轴电流:47
+		{ 983, -690, 700 }, // 电流矢量V:98.29038, D轴电流:-69, Q轴电流:70
+		{ 1407, -1150, 810 }, // 电流矢量V:140.6627, D轴电流:-115, Q轴电流:81
+		{ 1950, -1730, 900 }, // 电流矢量V:195.0103, D轴电流:-173, Q轴电流:90
+		{ 2080, -1875, 900 }, // 电流矢量V:207.9814, D轴电流:-187.5, Q轴电流:90
+		{ 2080, -1875, 900 }, // 电流矢量V:207.9814, D轴电流:-187.5, Q轴电流:90
+		{ 2080, -1875, 900 }, // 电流矢量V:207.9814, D轴电流:-187.5, Q轴电流:90
+		{ 2080, -1875, 900 }, // 电流矢量V:207.9814, D轴电流:-187.5, Q轴电流:90
+		
 	}, { // 转速:-7000
-		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
-		{ 20, -68, 187 }, // 扭矩:-2, D轴电流:-6.8, Q轴电流:18.7
-		{ 46, -310, 390 }, // 扭矩:-4.6, D轴电流:-31, Q轴电流:39
-		{ 91, -770, 600 }, // 扭矩:-9.1, D轴电流:-77, Q轴电流:60
-		{ 138, -1290, 730 }, // 扭矩:-13.8, D轴电流:-129, Q轴电流:73
-		{ 178, -1800, 790 }, // 扭矩:-17.8, D轴电流:-180, Q轴电流:79
-		{ 190, -1970, 800 }, // 扭矩:-19, D轴电流:-197, Q轴电流:80
-		{ 190, -1970, 800 }, // 扭矩:-19, D轴电流:-197, Q轴电流:80
-		{ 190, -1970, 800 }, // 扭矩:-19, D轴电流:-197, Q轴电流:80
-		{ 190, -1970, 800 }, // 扭矩:-19, D轴电流:-197, Q轴电流:80
+		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
+		{ 199, -68, 187 }, // 电流矢量V:19.89799, D轴电流:-6.8, Q轴电流:18.7
+		{ 498, -310, 390 }, // 电流矢量V:49.81968, D轴电流:-31, Q轴电流:39
+		{ 976, -770, 600 }, // 电流矢量V:97.6166, D轴电流:-77, Q轴电流:60
+		{ 1482, -1290, 730 }, // 电流矢量V:148.2228, D轴电流:-129, Q轴电流:73
+		{ 1966, -1800, 790 }, // 电流矢量V:196.5731, D轴电流:-180, Q轴电流:79
+		{ 2126, -1970, 800 }, // 电流矢量V:212.6241, D轴电流:-197, Q轴电流:80
+		{ 2126, -1970, 800 }, // 电流矢量V:212.6241, D轴电流:-197, Q轴电流:80
+		{ 2126, -1970, 800 }, // 电流矢量V:212.6241, D轴电流:-197, Q轴电流:80
+		{ 2126, -1970, 800 }, // 电流矢量V:212.6241, D轴电流:-197, Q轴电流:80
+		
 	}, { // 转速:-7500
-		{ 0, -85, 32 }, // 扭矩:0, D轴电流:-8.5, Q轴电流:3.2
-		{ 20, -86, 180 }, // 扭矩:-2, D轴电流:-8.6, Q轴电流:18
-		{ 38, -378, 330 }, // 扭矩:-3.8, D轴电流:-37.8, Q轴电流:33
-		{ 84, -830, 540 }, // 扭矩:-8.4, D轴电流:-83, Q轴电流:54
-		{ 128, -1340, 670 }, // 扭矩:-12.8, D轴电流:-134, Q轴电流:67
-		{ 164, -1820, 730 }, // 扭矩:-16.4, D轴电流:-182, Q轴电流:73
-		{ 170, -1890, 730 }, // 扭矩:-17, D轴电流:-189, Q轴电流:73
-		{ 170, -1890, 730 }, // 扭矩:-17, D轴电流:-189, Q轴电流:73
-		{ 170, -1890, 730 }, // 扭矩:-17, D轴电流:-189, Q轴电流:73
-		{ 170, -1890, 730 }, // 扭矩:-17, D轴电流:-189, Q轴电流:73
+		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
+		{ 199, -86, 180 }, // 电流矢量V:19.94893, D轴电流:-8.6, Q轴电流:18
+		{ 502, -378, 330 }, // 电流矢量V:50.17808, D轴电流:-37.8, Q轴电流:33
+		{ 990, -830, 540 }, // 电流矢量V:99.0202, D轴电流:-83, Q轴电流:54
+		{ 1498, -1340, 670 }, // 电流矢量V:149.8166, D轴电流:-134, Q轴电流:67
+		{ 1961, -1820, 730 }, // 电流矢量V:196.0944, D轴电流:-182, Q轴电流:73
+		{ 2026, -1890, 730 }, // 电流矢量V:202.608, D轴电流:-189, Q轴电流:73
+		{ 2026, -1890, 730 }, // 电流矢量V:202.608, D轴电流:-189, Q轴电流:73
+		{ 2026, -1890, 730 }, // 电流矢量V:202.608, D轴电流:-189, Q轴电流:73
+		{ 2026, -1890, 730 }, // 电流矢量V:202.608, D轴电流:-189, Q轴电流:73
+		
 	}, { // 转速:-8000
-		{ 0, -250, 45 }, // 扭矩:0, D轴电流:-25, Q轴电流:4.5
-		{ 20, -86, 180 }, // 扭矩:-2, D轴电流:-8.6, Q轴电流:18
-		{ 47, -560, 340 }, // 扭矩:-4.7, D轴电流:-56, Q轴电流:34
-		{ 93, -1060, 540 }, // 扭矩:-9.3, D轴电流:-106, Q轴电流:54
-		{ 134, -1550, 640 }, // 扭矩:-13.4, D轴电流:-155, Q轴电流:64
-		{ 154, -1810, 670 }, // 扭矩:-15.4, D轴电流:-181, Q轴电流:67
-		{ 154, -1810, 670 }, // 扭矩:-15.4, D轴电流:-181, Q轴电流:67
-		{ 154, -1810, 670 }, // 扭矩:-15.4, D轴电流:-181, Q轴电流:67
-		{ 154, -1810, 670 }, // 扭矩:-15.4, D轴电流:-181, Q轴电流:67
-		{ 154, -1810, 670 }, // 扭矩:-15.4, D轴电流:-181, Q轴电流:67
+		{ 0, 0, 0 }, // 电流矢量V:0, D轴电流:0, Q轴电流:0
+		{ 199, -86, 180 }, // 电流矢量V:19.94893, D轴电流:-8.6, Q轴电流:18
+		{ 655, -560, 340 }, // 电流矢量V:65.51336, D轴电流:-56, Q轴电流:34
+		{ 1190, -1060, 540 }, // 电流矢量V:118.9622, D轴电流:-106, Q轴电流:54
+		{ 1677, -1550, 640 }, // 电流矢量V:167.6932, D轴电流:-155, Q轴电流:64
+		{ 1930, -1810, 670 }, // 电流矢量V:193.0026, D轴电流:-181, Q轴电流:67
+		{ 1930, -1810, 670 }, // 电流矢量V:193.0026, D轴电流:-181, Q轴电流:67
+		{ 1930, -1810, 670 }, // 电流矢量V:193.0026, D轴电流:-181, Q轴电流:67
+		{ 1930, -1810, 670 }, // 电流矢量V:193.0026, D轴电流:-181, Q轴电流:67
+		{ 1930, -1810, 670 }, // 电流矢量V:193.0026, D轴电流:-181, Q轴电流:67
 	},
 };

+ 157 - 0
Applications/foc/motor/A1_motor_config_trq.c

@@ -0,0 +1,157 @@
+static torque_map_t mtpa_fw_map[14][10] = {
+	{ // 转速:0
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 50, -130, 480 }, // 扭矩:-5, D轴电流:-13, Q轴电流:48
+		{ 92, -340, 720 }, // 扭矩:-9.2, D轴电流:-34, Q轴电流:72
+		{ 146, -600, 1040 }, // 扭矩:-14.6, D轴电流:-60, Q轴电流:104
+		{ 200, -920, 1310 }, // 扭矩:-20, D轴电流:-92, Q轴电流:131
+		{ 254, -1410, 1410 }, // 扭矩:-25.4, D轴电流:-141, Q轴电流:141
+		{ 320, -1770, 1770 }, // 扭矩:-32, D轴电流:-177, Q轴电流:177
+		{ 382, -2120, 2120 }, // 扭矩:-38.2, D轴电流:-212, Q轴电流:212
+		{ 438, -2470, 2470 }, // 扭矩:-43.8, D轴电流:-247, Q轴电流:247
+	}, { // 转速:-500
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 53, -130, 480 }, // 扭矩:-5.3, D轴电流:-13, Q轴电流:48
+		{ 116, -420, 900 }, // 扭矩:-11.6, D轴电流:-42, Q轴电流:90
+		{ 180, -750, 1300 }, // 扭矩:-18, D轴电流:-75, Q轴电流:130
+		{ 244, -1150, 1640 }, // 扭矩:-24.4, D轴电流:-115, Q轴电流:164
+		{ 303, -1500, 2000 }, // 扭矩:-30.3, D轴电流:-150, Q轴电流:200
+		{ 358, -2120, 2120 }, // 扭矩:-35.8, D轴电流:-212, Q轴电流:212
+		{ 410, -2470, 2470 }, // 扭矩:-41, D轴电流:-247, Q轴电流:247
+		{ 456, -2830, 2830 }, // 扭矩:-45.6, D轴电流:-283, Q轴电流:283
+	}, { // 转速:-1000
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 52, -130, 480 }, // 扭矩:-5.2, D轴电流:-13, Q轴电流:48
+		{ 112, -420, 900 }, // 扭矩:-11.2, D轴电流:-42, Q轴电流:90
+		{ 177, -750, 1300 }, // 扭矩:-17.7, D轴电流:-75, Q轴电流:130
+		{ 240, -1140, 1640 }, // 扭矩:-24, D轴电流:-114, Q轴电流:164
+		{ 300, -1600, 1920 }, // 扭矩:-30, D轴电流:-160, Q轴电流:192
+		{ 355, -2110, 2120 }, // 扭矩:-35.5, D轴电流:-211, Q轴电流:212
+		{ 406, -2470, 2470 }, // 扭矩:-40.6, D轴电流:-247, Q轴电流:247
+		{ 453, -2830, 2830 }, // 扭矩:-45.3, D轴电流:-283, Q轴电流:283
+	}, { // 转速:-2000
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 51, -130, 480 }, // 扭矩:-5.1, D轴电流:-13, Q轴电流:48
+		{ 111, -420, 900 }, // 扭矩:-11.1, D轴电流:-42, Q轴电流:90
+		{ 175, -760, 1300 }, // 扭矩:-17.5, D轴电流:-76, Q轴电流:130
+		{ 238, -1150, 1640 }, // 扭矩:-23.8, D轴电流:-115, Q轴电流:164
+		{ 297, -1540, 1970 }, // 扭矩:-29.7, D轴电流:-154, Q轴电流:197
+		{ 353, -1930, 2300 }, // 扭矩:-35.3, D轴电流:-193, Q轴电流:230
+		{ 404, -2470, 2470 }, // 扭矩:-40.4, D轴电流:-247, Q轴电流:247
+		{ 450, -2830, 2830 }, // 扭矩:-45, D轴电流:-283, Q轴电流:283
+	}, { // 转速:-3000
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 20, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 50, -170, 470 }, // 扭矩:-5, D轴电流:-17, Q轴电流:47
+		{ 110, -510, 850 }, // 扭矩:-11, D轴电流:-51, Q轴电流:85
+		{ 174, -850, 1230 }, // 扭矩:-17.4, D轴电流:-85, Q轴电流:123
+		{ 234, -1140, 1630 }, // 扭矩:-23.4, D轴电流:-114, Q轴电流:163
+		{ 292, -1460, 2030 }, // 扭矩:-29.2, D轴电流:-146, Q轴电流:203
+		{ 350, -1920, 2290 }, // 扭矩:-35, D轴电流:-192, Q轴电流:229
+		{ 400, -2340, 2600 }, // 扭矩:-40, D轴电流:-234, Q轴电流:260
+		{ 447, -2820, 2830 }, // 扭矩:-44.7, D轴电流:-282, Q轴电流:283
+	}, { // 转速:-4000
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 23, -17, 198 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 50, -170, 470 }, // 扭矩:-5, D轴电流:-17, Q轴电流:47
+		{ 109, -460, 880 }, // 扭矩:-10.9, D轴电流:-46, Q轴电流:88
+		{ 169, -850, 1230 }, // 扭矩:-16.9, D轴电流:-85, Q轴电流:123
+		{ 236, -1140, 1630 }, // 扭矩:-23.6, D轴电流:-114, Q轴电流:163
+		{ 294, -1530, 1970 }, // 扭矩:-29.4, D轴电流:-153, Q轴电流:197
+		{ 352, -2000, 2220 }, // 扭矩:-35.2, D轴电流:-200, Q轴电流:222
+		{ 374, -2320, 2240 }, // 扭矩:-37.4, D轴电流:-232, Q轴电流:224
+		{ 374, -2320, 2240 }, // 扭矩:-37.4, D轴电流:-232, Q轴电流:224
+	}, { // 转速:-4500
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 22, -130, 200 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 30, -130, 279 },
+		{ 40, -130, 380 },
+		{ 50, -130, 480 }, // 扭矩:-5, D轴电流:-13, Q轴电流:48
+		{ 109, -350, 940 }, // 扭矩:-10.9, D轴电流:-35, Q轴电流:94
+		{ 173, -700, 1320 }, // 扭矩:-17.3, D轴电流:-70, Q轴电流:132
+		{ 237, -1090, 1640 }, // 扭矩:-23.7, D轴电流:-109, Q轴电流:164
+		{ 294, -1790, 1710 }, // 扭矩:-29.4, D轴电流:-179, Q轴电流:171
+		{ 320, -2160, 1720 }, // 扭矩:-32, D轴电流:-216, Q轴电流:172
+	}, { // 转速:-5000
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 20, -170, 190 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 30, -170, 277 },
+		{ 40, -170, 370 },
+		{ 50, -170, 470 }, // 扭矩:-5, D轴电流:-17, Q轴电流:47
+		{ 110, -420, 900 }, // 扭矩:-11, D轴电流:-42, Q轴电流:90
+		{ 174, -860, 1230 }, // 扭矩:-17.4, D轴电流:-86, Q轴电流:123
+		{ 232, -1460, 1360 }, // 扭矩:-23.2, D轴电流:-146, Q轴电流:136
+		{ 274, -2100, 1360 }, // 扭矩:-27.4, D轴电流:-210, Q轴电流:136
+		{ 276, -2020, 1400 }, // 扭矩:-27.6, D轴电流:-202, Q轴电流:140
+	}, { // 转速:-5500
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 20, -170, 190 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 30, -170, 278 },
+		{ 40, -170, 370 },
+		{ 50, -170, 470 }, // 扭矩:-5, D轴电流:-17, Q轴电流:47
+		{ 110, -420, 900 }, // 扭矩:-11, D轴电流:-42, Q轴电流:90
+		{ 168, -1040, 1070 }, // 扭矩:-16.8, D轴电流:-104, Q轴电流:107
+		{ 218, -1620, 1160 }, // 扭矩:-21.8, D轴电流:-162, Q轴电流:116
+		{ 246, -1960, 1190 }, // 扭矩:-24.6, D轴电流:-196, Q轴电流:119
+		{ 246, -1960, 1190 }, // 扭矩:-24.6, D轴电流:-196, Q轴电流:119
+	}, { // 转速:-6000
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 20, -170, 189 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 30, -170, 283 },
+		{ 38, -170, 358 },
+		{ 48, -170, 470 }, // 扭矩:-4.8, D轴电流:-17, Q轴电流:47
+		{ 105, -630, 780 }, // 扭矩:-10.5, D轴电流:-63, Q轴电流:78
+		{ 158, -1180, 920 }, // 扭矩:-15.8, D轴电流:-118, Q轴电流:92
+		{ 204, -1730, 1000 }, // 扭矩:-20.4, D轴电流:-173, Q轴电流:100
+		{ 220, -1950, 1020 }, // 扭矩:-22, D轴电流:-195, Q轴电流:102
+		{ 222, -1950, 1020 }, // 扭矩:-22.2, D轴电流:-195, Q轴电流:102
+	}, { // 转速:-6500
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 20, -170, 182 }, // 扭矩:-2, D轴电流:-1.7, Q轴电流:19.8
+		{ 30, -170, 273 },
+		{ 40, -170, 364 },
+		{ 50, -170, 470 }, // 扭矩:-5, D轴电流:-17, Q轴电流:47
+		{ 100, -690, 700 }, // 扭矩:-10, D轴电流:-69, Q轴电流:70
+		{ 142, -1150, 810 }, // 扭矩:-14.2, D轴电流:-115, Q轴电流:81
+		{ 187, -1730, 900 }, // 扭矩:-18.7, D轴电流:-173, Q轴电流:90
+		{ 196, -1875, 900 }, // 扭矩:-19.6, D轴电流:-187.5, Q轴电流:90
+		{ 196, -1875, 900 }, // 扭矩:-19.6, D轴电流:-187.5, Q轴电流:90
+	}, { // 转速:-7000
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:0, Q轴电流:0
+		{ 20, -310, 169 }, // 扭矩:-2, D轴电流:-6.8, Q轴电流:18.7
+		{ 26, -310, 220 },
+		{ 34, -310, 287 },
+		{ 40, -310, 338 },
+		{ 46, -310, 390 }, // 扭矩:-4.6, D轴电流:-31, Q轴电流:39
+		{ 91, -770, 600 }, // 扭矩:-9.1, D轴电流:-77, Q轴电流:60
+		{ 138, -1290, 730 }, // 扭矩:-13.8, D轴电流:-129, Q轴电流:73
+		{ 178, -1800, 790 }, // 扭矩:-17.8, D轴电流:-180, Q轴电流:79
+		{ 190, -1970, 800 }, // 扭矩:-19, D轴电流:-197, Q轴电流:80
+	}, { // 转速:-7500
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:-8.5, Q轴电流:3.2
+		{ 12, -378, 101 },
+		{ 20, -378, 168 }, // 扭矩:-2, D轴电流:-8.6, Q轴电流:18
+		{ 25, -378, 209 },
+		{ 30, -378, 251 },
+		{ 38, -378, 330 }, // 扭矩:-3.8, D轴电流:-37.8, Q轴电流:33
+		{ 84, -830, 540 }, // 扭矩:-8.4, D轴电流:-83, Q轴电流:54
+		{ 128, -1340, 670 }, // 扭矩:-12.8, D轴电流:-134, Q轴电流:67
+		{ 164, -1820, 730 }, // 扭矩:-16.4, D轴电流:-182, Q轴电流:73
+		{ 170, -1890, 730 }, // 扭矩:-17, D轴电流:-189, Q轴电流:73
+	}, { // 转速:-8000
+		{ 0, 0, 0 }, // 扭矩:0, D轴电流:-25, Q轴电流:4.5		
+		{ 10, -500, 80 }, // 扭矩:-2, D轴电流:-8.6, Q轴电流:18
+		{ 20, -500, 155 }, // 扭矩:-2, D轴电流:-8.6, Q轴电流:18
+		{ 32, -500, 250 }, // 扭矩:-2, D轴电流:-8.6, Q轴电流:18
+		{ 39, -500, 300 }, // 扭矩:-2, D轴电流:-8.6, Q轴电流:18
+		{ 47, -560, 340 }, // 扭矩:-4.7, D轴电流:-56, Q轴电流:34
+		{ 93, -1060, 540 }, // 扭矩:-9.3, D轴电流:-106, Q轴电流:54
+		{ 134, -1550, 640 }, // 扭矩:-13.4, D轴电流:-155, Q轴电流:64
+		{ 154, -1810, 670 }, // 扭矩:-15.4, D轴电流:-181, Q轴电流:67
+		{ 154, -1810, 670 }, // 扭矩:-15.4, D轴电流:-181, Q轴电流:67
+	},
+};

+ 32 - 29
Applications/foc/motor/motor_param.c

@@ -5,25 +5,23 @@
 
 #if CONFIG_MOT_TYPE==MOTOR_BLUESHARK_A1
 #define MOT_HAVE_MAPS
-#define RPM_MAX_IDX 14
+#define MOT_USE_PHASE_I //表示使用电流矢量和RPM查表,获取D轴电流,iq = 开根号(电流矢量的平方 + D轴电流的平方)
+#define RPM_MAX_IDX 10
 #define TRQ_MAX_IDX 10
-static int map_rpm[] = {0, 500, 1000, 2000, 3000, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000};
+static int map_rpm[] = {3000, 4000, 4500, 5000, 5500, 6000, 6500, 7000, 7500, 8000};
 #include "foc/motor/A1_motor_config.c"
 static motor_map_t mot_map[] = {
-	{0, 320},
-	{500, 456},
-	{1000, 453},
-	{2000, 450},
-	{3000, 447},
-	{4000, 374},
-	{4500, 320},
-	{5000, 277},
-	{5500, 246},
-	{6000, 222},
-	{6500, 196},
-	{7000, 190},
-	{7500, 170},
-	{8000, 154},
+	{0, 400},
+	{3000, 400},
+	{4000, 322},
+	{4500, 276},
+	{5000, 246},
+	{5500, 230},
+	{6000, 220},
+	{6500, 208},
+	{7000, 208},
+	{7500, 203},
+	{8000, 193},
 };
 #endif
 
@@ -57,18 +55,21 @@ s16 motor_map_rpm_idx(float rpm, int *ilow, int *ihigh, s16 *lowrpm, s16 *highrp
 	*ilow = *ihigh = 0xFF;
 	s16 irpm = (s16)rpm;
 #ifdef MOT_HAVE_MAPS
-	if (irpm > map_rpm[RPM_MAX_IDX-1]) {
+	if (irpm >= map_rpm[RPM_MAX_IDX-1]) {
 		irpm = map_rpm[RPM_MAX_IDX-1];
-	}
-	for (int i = 0; i < RPM_MAX_IDX; i++) {
-		if (irpm <= map_rpm[i]) {
-			*ihigh = i;
-			if (*ilow == 0xFF) {
-				*ilow = 0;
+		*ilow = RPM_MAX_IDX-1;
+		*ihigh = RPM_MAX_IDX-1;
+	}else {
+		for (int i = 0; i < RPM_MAX_IDX; i++) {
+			if (irpm <= map_rpm[i]) {
+				*ihigh = i;
+				if (*ilow == 0xFF) {
+					*ilow = 0;
+				}
+				break;
 			}
-			break;
+			*ilow = i;
 		}
-		*ilow = i;
 	}
 	*lowrpm = map_rpm[*ilow];
 	*highrpm = map_rpm[*ihigh];
@@ -108,10 +109,13 @@ static void intp_line2(float frac_x, s16 z, torque_map_t **map, float *d, float
 	float c1 = (1.0f - frac_z1) * map[0]->d + frac_z1 * map[1]->d; //第一行插值
 	float c2 = (1.0f - frac_z2) * map[2]->d + frac_z2 * map[3]->d; //第二行插值
 	*d = c1 * (1.0f - frac_x) + c2 * frac_x;                //两行插值
-	
+#ifdef MOT_USE_PHASE_I
+	*q = sqrtf(z*z - (*d)*(*d));
+#else
 	c1 = (1.0f - frac_z1) * map[0]->q + frac_z1 * map[1]->q;
 	c2 = (1.0f - frac_z2) * map[2]->q + frac_z2 * map[3]->q;
 	*q = c1 * (1.0f - frac_x) + c2 * frac_x;
+#endif
 }
 
 static void get_torque_range(s16 z, int index, int max_index, int *left, int *right) {
@@ -137,7 +141,6 @@ static void get_torque_range(s16 z, int index, int max_index, int *left, int *ri
 	*right = low_right;
 }
 
-
 void mpta_fw_lookup(float rpm, float torque, DQ_t *dq_out) {
 	bool neg_trq = false;
 	s16 itorque = torque * 10;
@@ -147,7 +150,7 @@ void mpta_fw_lookup(float rpm, float torque, DQ_t *dq_out) {
 	}
 	int low = 0, high = 0;
 	s16 x1 = 0, x2 = 0;
-	rpm = 2000;//ABS(rpm);
+	rpm = ABS(rpm);
 	s16 irpm = motor_map_rpm_idx(rpm, &low, &high, &x1, &x2);
 
 	_DEBUG("speed %d-%d, %d-%d\n", low, high, x1, x2);
@@ -178,7 +181,7 @@ void mpta_fw_lookup(float rpm, float torque, DQ_t *dq_out) {
 	}
 }
 #else
-void mpta_fw_lookup(int rpm, s16 torque, DQ_t *dq_out) {
+void mpta_fw_lookup(float rpm, float torque, DQ_t *dq_out) {
 	dq_out->d = 0;
 	dq_out->q = torque;
 }

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

@@ -47,7 +47,7 @@ void mpta_fw_lookup(float rpm, float torque, DQ_t *dq_out);
 
 #define MOTOR_POLES  4
 #define MOTOR_ENC_OFFSET 0.0F
-#define CONFIG_MAX_MOTOR_TORQUE 45.0F
+#define CONFIG_MAX_MOTOR_TORQUE 400.0f//45.0F
 
 #define TRQ_PI_KP 0.05F
 #define TRQ_PI_KI 0.01F

+ 9 - 5
Simulink/motor_data_nihe.m

@@ -1,11 +1,15 @@
 clear;
-y=xlsread('E:\works\项目\MC100\电机台架数据\鲨湾96v电机145外特性.xlsx','MAP1','A2:A105'); % torque
-x=xlsread('E:\works\项目\MC100\电机台架数据\鲨湾96v电机145外特性.xlsx','MAP1','W2:W105'); % D
-z=xlsread('E:\works\项目\MC100\电机台架数据\鲨湾96v电机145外特性.xlsx','MAP1','X2:X105'); % Q
+y=xlsread('E:\works\项目\MC100\电机台架数据\鲨湾96v电机145外特性.xlsx','MAP1','A97:A102'); % torque
+x=xlsread('E:\works\项目\MC100\电机台架数据\鲨湾96v电机145外特性.xlsx','MAP1','W97:W102'); % D
+z=xlsread('E:\works\项目\MC100\电机台架数据\鲨湾96v电机145外特性.xlsx','MAP1','X97:X102'); % Q
 y=abs(y);
 % Te = 1.5*4*(a*iq + (ld - lq)*idiq);
-ft=fittype('6*(a*iq+(ld-lq)*id*iq)', 'independent',{'id','iq'}, 'coefficients', {'a', 'ld', 'lq'});
+ft=fittype('6*(a*iq-(l)*id*iq)', 'independent',{'id','iq'}, 'coefficients', {'a', 'l'});
+%ld=0.000070;
+%lq=0.000140;
+%ft=fittype('6*(a*iq+(ld-lq)*id*iq)', 'independent',{'id','iq'}, 'coefficients', {'a', 'ld', 'lq'});
+
+Y=fit([x,z],y,ft,'StartPoint',[0.001, 0.00070])
 
-Y=fit([x,z],y,ft,'StartPoint',[0,0,0]);