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

更新参数识别

Signed-off-by: kevin <huhui@sharkgulf.com>
kevin 2 лет назад
Родитель
Сommit
e850fb36eb
3 измененных файлов с 283 добавлено и 37 удалено
  1. 12 5
      Applications/foc/motor/mot_params_ind.c
  2. 239 0
      configs/mc124_R1.yml
  3. 32 32
      configs/mc_servo.yml

+ 12 - 5
Applications/foc/motor/mot_params_ind.c

@@ -3,6 +3,7 @@
 #include "math/fast_math.h"
 #include "foc/motor/mot_params_ind.h"
 #include "libs/logger.h"
+#include "foc/samples.h"
 #include "prot/can_foc_msg.h"
 
 /*
@@ -87,6 +88,7 @@ static void _rs_ind_timer_handler(shark_timer_t *t) {
 			}
 		}else {
 			wait_iq_0_cnt = 0;
+			delay_ms(100);
 			rs_ind_step = 3;
 			sys_debug("start rs calc, %d\n", rs_meas_time);
 		}
@@ -94,8 +96,12 @@ static void _rs_ind_timer_handler(shark_timer_t *t) {
 	case 3: {
 		float *iabc = motor.controller.foc.in.curr_abc;
 		float d, q;
+		float v_a_final = 0;
+		float v_abc[3] = {0, 0, 0};
 		foc_abc_2_dq(SIGN(iabc[0]), SIGN(iabc[1]), SIGN(iabc[2]), &d, &q);
-		float dtc = ((float)CONFIG_HW_DeadTime/(float)FOC_PWM_Half_Period) * motor.controller.foc.in.dc_vol * 1.5f;
+		get_uvw_phases_raw(v_abc);
+		v_a_final = LowPass_Filter(v_a_final, v_abc[0], 0.2f);
+		float dtc = ((float)CONFIG_HW_DeadTime/(float)FOC_PWM_period) * motor.controller.foc.in.dc_vol * TWO_BY_THREE;
 		float vd = (rs_vd_now - dtc) * TWO_BY_THREE;
 		float id = motor.controller.foc.out.curr_dq.d;
 		float rs = vd / (id + 0.0001f);
@@ -106,8 +112,9 @@ static void _rs_ind_timer_handler(shark_timer_t *t) {
 			mc_ind_motor_start(false);
 			finish = true;
 			b_rs_ested = true;
-			sys_debug("est rs = %f\n", rs_est_value);
-			sys_debug("vd-id is %f-%f-%f, wait %d\n", rs_vd_now, id, dtc/1.5f, wait_iq_0_cnt);
+			sys_debug("est rs = %f-%f\n", rs_est_value, rs);
+			sys_debug("vd-id is %f-%f-%f-%f, wait %d\n", rs_vd_now, id, dtc/1.5f, vd, wait_iq_0_cnt);
+			sys_debug("Va = %f\n", v_a_final);
 		}
 	}
 	default:
@@ -145,7 +152,7 @@ void mot_params_ind_inductance(float v, float freq, u16 l_type) {
 	hj_n = (float)FOC_PWM_FS / hj_freq;
 	hj_samples = hj_n * 50;
 	K_terms = (s32) (0.5f + hj_samples*hj_freq/(float)FOC_PWM_FS);
-	Vdead = motor.controller.foc.in.dc_vol * 0.5f * (float)CONFIG_HW_DeadTime / (float)FOC_PWM_period;
+	Vdead = motor.controller.foc.in.dc_vol * (float)CONFIG_HW_DeadTime / (float)FOC_PWM_period * TWO_BY_THREE;
 	hj_w = 360.0f / hj_n;
 	sys_debug("hj %f, %f, %f, %f, %f, %f, %f\n", hj_v, hj_freq, hj_n, hj_samples, K_terms, Vdead, hj_w);
 	float fft_angle = 360.0f / hj_samples * K_terms;
@@ -265,7 +272,7 @@ void mot_params_calc_inductance(void) {
 	float z_image = z_mag * s;
 	float Rs = rs_est_value;
 	float Ri = (SQ(z_real - Rs) + SQ(z_image))/(z_real - Rs + 0.0000001f);
-	float l = Ri * (z_real - Rs)/(hj_freq * 2 * PI * z_image + 0.0000001f) * 0.83f; //0.83f just for v3 board
+	float l = Ri * (z_real - Rs)/(hj_freq * 2 * PI * z_image + 0.0000001f) * 0.9f;
 	if (n_ind_ld == L_TYPE_D) {
 		ld_est_value = l;
 		b_ld_ested = true;

+ 239 - 0
configs/mc124_R1.yml

@@ -0,0 +1,239 @@
+##### 配置文件自动生成,不要手动修改!! 2023/10/27 17:43:29
+Version: 1
+CheckCrc: 0
+Motor:
+  Poles: 5
+  Ld: 4.8E-05
+  Lq: 6.5E-05
+  Rs: 0.011
+  Flux: 0.018
+  PLLBand: 200
+  EpmPLL: 400
+  PosPLL: 500
+  VehicleW: 190
+  WheelC: 145
+  GearRatio: 6.25
+  MaxFwDCurr: 100
+  MaxTorque: 350
+  EncOffset: 0
+Foc:
+  MaxDCVol: 95
+  MinDCVol: 60
+  MaxPhaseCurr: 350
+  MaxRPM: 9000
+  MaxEPMRPM: 300
+  MaxEPMTorque: 100
+  MaxEPMRPMBk: 170
+  MaxEPMTorqueBk: 80
+  MaxTorque: 350
+  MaxEbrkTorque: 40
+  MaxIDC: 100
+  MaxAutoHoldTorque: 100
+  ThroStartVol: 0.85
+  ThroEndVol: 4.15
+  ThroMinVol: 0.4
+  ThroMaxVol: 4.6
+  CurrCtrlBandWith: 800
+  ThroDecTime: 10
+  PID:
+    VelLim:
+      Kp: 0.5
+      Ki: 2.5
+      Kd: 0
+    VelCtrl:
+      Kp: 0.1
+      Ki: 3.5
+      Kd: 0
+    Autohold:
+      Kp: 0.01
+      Ki: 0.2
+      Kd: 0
+    IDCLim:
+      Kp: 5
+      Ki: 15
+      Kd: 0
+Settings:
+  AutoHold: 1
+  BrkShutPower: 1
+  TcsEnable: 0
+Gear:
+- MaxSpeed: 5000
+  MaxTorque: 100
+  MaxIdc: 30
+  ZeroAccl: 500
+  NormalAccl: 100
+  Torque:
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 0
+  - 0
+- MaxSpeed: 1000
+  MaxTorque: 100
+  MaxIdc: 30
+  ZeroAccl: 500
+  NormalAccl: 100
+  Torque:
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 0
+  - 0
+- MaxSpeed: 1000
+  MaxTorque: 100
+  MaxIdc: 30
+  ZeroAccl: 500
+  NormalAccl: 100
+  Torque:
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 0
+  - 0
+- MaxSpeed: 1000
+  MaxTorque: 100
+  MaxIdc: 30
+  ZeroAccl: 500
+  NormalAccl: 100
+  Torque:
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 0
+  - 0
+GearLow:
+- MaxSpeed: 1000
+  MaxTorque: 100
+  MaxIdc: 30
+  ZeroAccl: 500
+  NormalAccl: 100
+  Torque:
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 0
+  - 0
+- MaxSpeed: 1000
+  MaxTorque: 100
+  MaxIdc: 30
+  ZeroAccl: 500
+  NormalAccl: 100
+  Torque:
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 0
+  - 0
+- MaxSpeed: 1000
+  MaxTorque: 100
+  MaxIdc: 30
+  ZeroAccl: 500
+  NormalAccl: 100
+  Torque:
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 0
+  - 0
+- MaxSpeed: 1000
+  MaxTorque: 100
+  MaxIdc: 30
+  ZeroAccl: 500
+  NormalAccl: 100
+  Torque:
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 100
+  - 0
+  - 0
+Protect:
+  Motor:
+  - Entry: 130
+    Exit: 120
+    Value: 0
+  - Entry: 120
+    Exit: 110
+    Value: 34
+  - Entry: 110
+    Exit: 100
+    Value: 66
+  MosFet:
+  - Entry: 100
+    Exit: 95
+    Value: 0
+  - Entry: 95
+    Exit: 90
+    Value: 34
+  - Entry: 90
+    Exit: 80
+    Value: 66
+  Voltage:
+  - Entry: 57
+    Exit: 60
+    Value: 0
+EnergyRecovery:
+- Torque: 0
+  Time: 1000
+- Torque: 10
+  Time: 500
+- Torque: 15
+  Time: 400
+- Torque: 20
+  Time: 300
+- Torque: 35
+  Time: 200
+- Torque: 40
+  Time: 200
+- Torque: 40
+  Time: 200
+- Torque: 40
+  Time: 200
+- Torque: 40
+  Time: 200
+- Torque: 40
+  Time: 200
+CrossZero:
+  Low: 1
+  High: 7
+  MinStep: 5
+  NorStep: 5

+ 32 - 32
configs/mc_servo.yml

@@ -1,11 +1,11 @@
-##### 配置文件自动生成,不要手动修改!! 2023/10/12 14:29:02
+##### 配置文件自动生成,不要手动修改!! 2023/10/27 17:44:45
 Version: 1
 CheckCrc: 0
 Motor:
   Poles: 4
   Ld: 3.2E-05
   Lq: 7.3E-05
-  Rs: 0.009
+  Rs: 0.015
   Flux: 0.019
   PLLBand: 200
   EpmPLL: 400
@@ -17,8 +17,8 @@ Motor:
   MaxTorque: 300
   EncOffset: -103
 Foc:
-  MaxDCVol: 110
-  MinDCVol: 60
+  MaxDCVol: 120
+  MinDCVol: 50
   MaxPhaseCurr: 300
   MaxRPM: 9000
   MaxEPMRPM: 300
@@ -27,7 +27,7 @@ Foc:
   MaxEPMTorqueBk: 80
   MaxTorque: 300
   MaxEbrkTorque: 40
-  MaxIDC: 100
+  MaxIDC: 200
   MaxAutoHoldTorque: 100
   ThroStartVol: 0.85
   ThroEndVol: 4.15
@@ -57,41 +57,41 @@ Settings:
   BrkShutPower: 1
   TcsEnable: 0
 Gear:
-- MaxSpeed: 1000
-  MaxTorque: 100
-  MaxIdc: 30
+- MaxSpeed: 3000
+  MaxTorque: 200
+  MaxIdc: 100
   ZeroAccl: 500
   NormalAccl: 100
   Torque:
   - 100
   - 100
-  - 100
-  - 100
-  - 100
-  - 100
-  - 100
-  - 100
+  - 80
   - 0
   - 0
-- MaxSpeed: 1000
-  MaxTorque: 100
-  MaxIdc: 30
+  - 0
+  - 0
+  - 0
+  - 0
+  - 0
+- MaxSpeed: 4000
+  MaxTorque: 200
+  MaxIdc: 100
   ZeroAccl: 500
   NormalAccl: 100
   Torque:
   - 100
   - 100
-  - 100
-  - 100
-  - 100
-  - 100
-  - 100
-  - 100
+  - 80
+  - 70
   - 0
   - 0
-- MaxSpeed: 1000
-  MaxTorque: 100
-  MaxIdc: 30
+  - 0
+  - 0
+  - 0
+  - 0
+- MaxSpeed: 8300
+  MaxTorque: 300
+  MaxIdc: 200
   ZeroAccl: 500
   NormalAccl: 100
   Torque:
@@ -100,10 +100,10 @@ Gear:
   - 100
   - 100
   - 100
-  - 100
-  - 100
-  - 100
-  - 0
+  - 90
+  - 80
+  - 80
+  - 80
   - 0
 - MaxSpeed: 1000
   MaxTorque: 100
@@ -208,8 +208,8 @@ Protect:
     Exit: 80
     Value: 66
   Voltage:
-  - Entry: 60
-    Exit: 70
+  - Entry: 55
+    Exit: 60
     Value: 0
 EnergyRecovery:
 - Torque: 0