فهرست منبع

加入电机电气参数的离线识别

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 2 سال پیش
والد
کامیت
4bd2d721e2

+ 11 - 1
Applications/app/app.c

@@ -16,6 +16,7 @@
 #include "foc/core/thro_torque.h"
 #include "foc/core/F_Calc.h"
 #include "foc/motor/motor_param.h"
+#include "foc/motor/mot_params_ind.h"
 #include "foc/limit.h"
 #include "foc/mc_error.h"
 
@@ -133,7 +134,16 @@ static u32 _app_report_task(void *p) {
 	can_report_phase_voltage(0x45);
 	can_report_mpta_values(0x45);
 	can_report_phase_current(0x45);
-	
+	if (mot_params_rs_ested()) {
+		can_report_motparam(mot_params_get_est_rs(), R_TYPE);
+	}
+	if (mot_params_ld_ested()) {
+		can_report_motparam(mot_params_get_est_ld(), L_TYPE_D);
+	}
+	if (mot_params_lq_ested()) {
+		can_report_motparam(mot_params_get_est_lq(), L_TYPE_Q);
+	}
+
 	if (++loop % 10 == 0) {
 		//sys_debug("rst 0x%x\n", get_mcu_reset_source());
 		sys_debug("Slow: %d - %d\n", g_meas_MCTask.intval_time, g_meas_MCTask.exec_time);

+ 35 - 0
Applications/foc/commands.c

@@ -10,6 +10,7 @@
 #include "app/nv_storage.h"
 #include "foc/core/foc_observer.h"
 #include "foc/mc_error.h"
+#include "foc/motor/mot_params_ind.h"
 
 #ifdef CONFIG_DQ_STEP_RESPONSE
 extern float target_d;
@@ -648,6 +649,40 @@ static void process_foc_command(foc_cmd_body_t *command) {
 			set_log_level(MOD_SYSTEM, (level != 0)?L_debug:L_disable);
 			break;
 		}
+		case Foc_MotPara_Ind:
+		{
+			bool start = decode_u8((u8 *)command->data)?true:false;
+			if (!start) {
+				mc_ind_motor_start(start);
+				mot_params_ind_stop();
+				sys_debug("stop mot ind\n");
+			}else {
+				u8 type = decode_u8((u8 *)command->data + 1);
+				sys_debug("start mot ind %d\n", type);
+				if (type == R_TYPE) { // rs ind
+					u8 v_max = decode_u8((u8 *)command->data + 2);
+					u8 i_max = decode_u8((u8 *)command->data + 3);
+					u8 time = decode_u8((u8 *)command->data + 4);
+					sys_debug("rs ind %d, %d, %d\n", v_max, i_max, time);
+					if (mc_ind_motor_start(true)) {
+						mot_params_ind_rs((float)v_max, (float)i_max, (s32)time * 10);
+					}
+				}else if (type == L_TYPE_D || type == L_TYPE_Q) { //ld/lq ind
+					u8 v = decode_u8((u8 *)command->data + 2);
+					u16 freq = decode_u8((u8 *)command->data + 3);
+					if (mc_ind_motor_start(true)) {
+						if (type == L_TYPE_D) {
+							mot_params_ind_ld((float)v, (float)freq);
+						}else {
+							mot_params_ind_lq((float)v, (float)freq);
+						}
+					}
+				}else{ 
+					erroCode = FOC_Param_Err;
+				}
+			}
+			break;
+		}
 		default:
 		{
 			erroCode = FOC_Unknow_Cmd;

+ 2 - 0
Applications/foc/commands.h

@@ -62,6 +62,8 @@ typedef enum {
 	Foc_Report_Plot,
 	Foc_Report_Temp,
 	Foc_Set_LogLevel,
+	Foc_MotPara_Ind,
+	Foc_MotPara_Report,
 	Foc_Cmd_Max = 0xDF
 }foc_cmd_t;
 #define CMD_2_CAN_KEY(cmd) ((u16)(((u16)cmd) | (CAN_MY_ADDRESS<<8)))

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

@@ -62,6 +62,15 @@ static __INLINE void Park(AB_t *alpha_beta, float angle, DQ_t *dq) {
 	dq->q = -alpha_beta->a * s + alpha_beta->b * c;
 }
 
+void PMSM_FOC_ABC2Dq(float a, float b, float c, float *d, float *q) {
+	AB_t ab;
+	DQ_t dq;
+	Clark(a, b, c, &ab);
+	Park(&ab, 0, &dq);
+	*d = dq.d;
+	*q = dq.q;
+}
+
 #if 0
 #define VD_PRIO_HIGH
 static __INLINE float Circle_Limitation(DQ_t *vdq, float vDC, float module, DQ_t *out) {
@@ -1207,6 +1216,15 @@ void PMSM_FOC_SetOpenVdq(float vd, float vq) {
 	FOC_Set_vDqRamp(&gFoc_Ctrl.vdq_ctl[1], vq);
 }
 
+void PMSM_FOC_SetOpenVdq_Immediate(float vd, float vq) {
+	gFoc_Ctrl.vdq_ctl[0].s_Step = 0;
+	gFoc_Ctrl.vdq_ctl[0].s_FinalTgt = vd;
+	gFoc_Ctrl.vdq_ctl[0].s_Cp = vd;
+
+	gFoc_Ctrl.vdq_ctl[1].s_Step = 0;
+	gFoc_Ctrl.vdq_ctl[1].s_FinalTgt = vq;
+	gFoc_Ctrl.vdq_ctl[1].s_Cp = vq;
+}
 
 bool PMSM_FOC_EnableCruise(bool enable) {
 	if (enable != gFoc_Ctrl.in.b_cruiseEna) {

+ 2 - 0
Applications/foc/core/PMSM_FOC_Core.h

@@ -264,6 +264,7 @@ DQ_t  *PMSM_FOC_GetDQCurrent(void);
 bool PMSM_FOC_SetCtrlMode(u8 mode);
 u8 PMSM_FOC_GetCtrlMode(void);
 void PMSM_FOC_SetOpenVdq(float vd, float vq);
+void PMSM_FOC_SetOpenVdq_Immediate(float vd, float vq);
 bool PMSM_FOC_EnableCruise(bool enable);
 bool PMSM_FOC_Set_Speed(float rpm);
 bool PMSM_FOC_Set_Torque(float trque);
@@ -312,6 +313,7 @@ bool PMSM_FOC_PauseCruise(void);
 bool PMSM_FOC_ResumeCruise(void);
 void PMSM_FOC_Change_VelLoop_Params(float wcv, float b0);
 void PMSM_FOC_Change_TrqLoop_Params(float wcv, float b0);
+void PMSM_FOC_ABC2Dq(float a, float b, float c, float *d, float *q);
 
 #endif /* _PMSM_FOC_Core_H__ */
 

+ 252 - 0
Applications/foc/motor/mot_params_ind.c

@@ -0,0 +1,252 @@
+#include "foc/motor/motor.h"
+#include "foc/core/PMSM_FOC_Core.h"
+#include "math/fast_math.h"
+#include "foc/motor/mot_params_ind.h"
+#include "libs/logger.h"
+#include "prot/can_foc_msg.h"
+
+/*
+参考 MC_Simulink\modules\off_line_params_ind 仿真模型
+*/
+
+static void _rs_ind_timer_handler(shark_timer_t *);
+static shark_timer_t _rs_ind_timer = TIMER_INIT(_rs_ind_timer, _rs_ind_timer_handler);
+static void _ldq_ind_timer_handler(shark_timer_t *);
+static shark_timer_t _ldq_ind_timer = TIMER_INIT(_ldq_ind_timer, _ldq_ind_timer_handler);
+
+static float rs_id_max, rs_vd_max, rs_vd_now, rs_est_value;
+static s32 rs_meas_time;
+static bool b_rs_ind = false, b_rs_ested = false, b_ldq_ind = false, b_ld_ested = false, b_lq_ested = false;;
+void mot_params_ind_rs(float vd_max, float id_max, s32 time) {
+	if (b_rs_ind || b_ldq_ind) {
+		return;
+	}
+	b_rs_ind = true;
+	b_rs_ested = false;
+	rs_id_max = id_max;
+	rs_vd_max = vd_max;
+	rs_vd_now = 2.0f;
+	rs_meas_time = time;
+	PMSM_FOC_SetOpenVdq_Immediate(rs_vd_now, 0);
+
+	shark_timer_post(&_rs_ind_timer, 10);
+}
+
+void mot_params_ind_stop(void) {
+	shark_timer_cancel(&_rs_ind_timer);
+	shark_timer_cancel(&_ldq_ind_timer);
+	u32 mask = cpu_enter_critical();
+	b_rs_ind = false;
+	b_ldq_ind = false;
+	PMSM_FOC_SetOpenVdq(0, 0);
+	cpu_exit_critical(mask);
+}
+
+static void _rs_ind_timer_handler(shark_timer_t *t) {
+	bool finish = false;
+	static int wait_iq_0_cnt = 0;
+	if (!b_rs_ind) {
+		PMSM_FOC_SetOpenVdq(0, 0);
+		return;
+	}
+	if (PMSM_FOC_Get()->out.s_RealIdq.d < rs_id_max) {
+		rs_vd_now += 0.1f;
+		wait_iq_0_cnt = 0;
+		if (rs_vd_now >= rs_vd_max) {
+			PMSM_FOC_SetOpenVdq(0, 0);
+			b_rs_ind = false;
+			sys_debug("id not reach max id %f\n", PMSM_FOC_Get()->out.s_RealIdq.d);
+			return;
+		}
+		PMSM_FOC_SetOpenVdq_Immediate(rs_vd_now, 0);
+	}else {
+		if (ABS(PMSM_FOC_Get()->out.s_FilterIdq.q) > 1.0f) {
+			wait_iq_0_cnt++;
+			if (wait_iq_0_cnt >= 200) {
+				PMSM_FOC_SetOpenVdq(0, 0);
+				b_rs_ind = false;
+				sys_debug("iq is bigger chan 1, %f\n", PMSM_FOC_Get()->out.s_FilterIdq.q);
+				return;
+			}
+		}else {
+			float *iabc = PMSM_FOC_Get()->in.s_iABC;
+			float d, q;
+			PMSM_FOC_ABC2Dq(SIGN(iabc[0]), SIGN(iabc[1]), SIGN(iabc[2]), &d, &q);
+			float dtc = ((float)CONFIG_HW_DeadTime/(float)FOC_PWM_Half_Period) * PMSM_FOC_Get()->in.s_vDC * 1.5f;
+			float vd = (rs_vd_now - dtc) * TWO_BY_THREE;
+			float rs = vd / (PMSM_FOC_Get()->out.s_RealIdq.d + 0.00000000001f);
+			rs_est_value = LowPass_Filter(rs_est_value, rs, 0.2f);
+			if (rs_meas_time-- <= 0) {
+				mc_ind_motor_start(false);
+				mot_params_ind_stop();
+				finish = true;
+				b_rs_ested = true;
+				sys_debug("est rs = %f\n", rs_est_value);
+				sys_debug("vd is %f\n", rs_vd_now);
+			}
+		}
+	}
+	if (!finish) {
+		shark_timer_post(&_rs_ind_timer, 10);
+	}
+}
+
+float mot_params_get_est_rs(void) {
+	return rs_est_value;
+}
+
+bool mot_params_rs_ested(void) {
+	return b_rs_ested;
+}
+
+static float *v_samples = NULL, *i_samples = NULL;
+static float hj_v, hj_freq, hj_n, hj_w, hj_samples, K_terms, Vdead;
+static float hj_real, hj_image;
+static u16   n_ind_ld, n_samples;
+static float ld_est_value, lq_est_value;
+void mot_params_ind_inductance(float v, float freq, u16 l_type) {
+	if (b_ldq_ind || b_rs_ind) {
+		return;
+	}
+	
+	hj_v = v;
+	hj_freq = freq;
+	hj_n = (float)FOC_PWM_FS / hj_freq;
+	hj_samples = hj_n * 20;
+	K_terms = (s32) (0.5f + hj_samples*hj_freq/(float)FOC_PWM_FS);
+	Vdead = PMSM_FOC_Get()->in.s_vDC * 0.5f * (float)CONFIG_HW_DeadTime / (float)FOC_PWM_period;
+	hj_w = 360.0f / hj_n;
+
+	float fft_angle = 360.0f / hj_samples * K_terms;
+	SinCos_Lut(fft_angle, &hj_image, &hj_real);
+	hj_real = hj_real * 2.0f;
+	n_ind_ld = l_type;
+	n_samples = 0;
+	if (v_samples) {
+		os_free(v_samples);
+	}
+	if (i_samples) {
+		os_free(i_samples);
+	}
+	v_samples = os_alloc(sizeof(float) * hj_samples);
+	i_samples = os_alloc(sizeof(float) * hj_samples);
+	if (v_samples != NULL && i_samples != NULL) {
+		b_ldq_ind = true;
+		shark_timer_post(&_ldq_ind_timer, 50);
+	}
+}
+
+static void _ldq_ind_timer_handler(shark_timer_t *t) {
+	if (n_samples >= (hj_samples + 1)) {
+		mc_ind_motor_start(false);
+		mot_params_calc_inductance();
+		mot_params_ind_stop();
+	}else {
+		shark_timer_post(&_ldq_ind_timer, 50);
+	}
+}
+
+
+void mot_params_ind_ld(float v, float freq) {
+	b_ld_ested = false;
+	mot_params_ind_inductance(v, freq, L_TYPE_D);
+}
+
+void mot_params_ind_lq(float v, float freq) {
+	b_lq_ested = false;
+	mot_params_ind_inductance(v, freq, L_TYPE_Q);
+}
+
+void mot_params_high_freq_inject(void) {
+	if (!b_ldq_ind) {
+		return;
+	}
+	float hj_angle = hj_w * (float)n_samples;
+	rand_angle(hj_angle);
+	float s, c;
+	SinCos_Lut(hj_angle, &s, &c);
+	float vd = 0, vq = 0;
+	if (n_ind_ld == 1) {
+		vd = hj_v * c;
+	}else {
+		vq = hj_v * c;
+	}
+	PMSM_FOC_SetOpenVdq_Immediate(vd, vq);
+}
+
+bool mot_params_hj_sample_vi(float vd, float vq, float id, float iq) {
+	if (!b_ldq_ind) {
+		return true;
+	}
+	if (n_samples >= 1 && (n_samples) <= (hj_samples + 1)) {
+		if (n_ind_ld == L_TYPE_D) {
+			v_samples[n_samples - 1] = vd;
+			i_samples[n_samples - 1] = id;
+		}else {
+			v_samples[n_samples - 1] = vq;
+			i_samples[n_samples - 1] = iq;
+		}
+	}
+	n_samples ++;
+	return false;
+}
+
+void goertzel_dft(float *x, float *real, float *image, float *mag) {
+	float y, d1 = 0, d2 = 0;
+	for (int i = 0; i < hj_samples; i++) {
+		y = x[i] + hj_real * d1 - d2;
+		d2 = d1;
+		d1 = y;
+	}
+	*real = d1 - (d2 * 0.5f * hj_real);
+	*image = -d2 * hj_image;
+	*mag = sqrtf(SQ(*real) + SQ(*image));
+}
+
+void mot_params_calc_inductance(void) {
+	float v_real, v_image, v_mag;
+	float i_real, i_image, i_mag;
+	if (!b_ldq_ind) {
+		return;
+	}
+	goertzel_dft(v_samples, &v_real, &v_image, &v_mag);
+	goertzel_dft(i_samples, &i_real, &i_image, &i_mag);
+
+	v_mag -= Vdead * hj_samples*0.5f;
+	
+	float z_angle = fast_atan_2(i_real, i_image) - fast_atan_2(v_real, v_image);
+	float s,c;
+	SinCos_Lut(z_angle, &s, &c);
+
+	float z_mag = v_mag / (i_mag + 0.0000001f);
+	float z_real = z_mag * c;
+	float z_image = z_mag * s;
+	float Ri = SQ(z_real - b_rs_ested) + SQ(z_image)/(z_real - b_rs_ested + 0.0000001f);
+	float l = Ri * (z_real - rs_est_value)/(hj_freq * 2 * PI * z_image + 0.0000001f);
+	if (n_ind_ld == L_TYPE_D) {
+		ld_est_value = l;
+		b_ld_ested = true;
+		sys_debug("ld = %f\n", ld_est_value);
+	}else {
+		lq_est_value = l;
+		b_lq_ested = true;
+		sys_debug("lq = %f\n", lq_est_value);
+	}
+	b_ldq_ind = false;
+}
+
+float mot_params_get_est_ld(void) {
+	return ld_est_value;
+}
+
+float mot_params_get_est_lq(void) {
+	return lq_est_value;
+}
+
+bool mot_params_ld_ested(void) {
+	return b_ld_ested;
+}
+bool mot_params_lq_ested(void) {
+	return b_lq_ested;
+}
+

+ 25 - 0
Applications/foc/motor/mot_params_ind.h

@@ -0,0 +1,25 @@
+#ifndef MOT_PARAMS_IND_H__
+#define MOT_PARAMS_IND_H__
+
+#include "os/os_types.h"
+
+#define L_TYPE_NONE 0
+#define R_TYPE   1
+#define L_TYPE_D 2
+#define L_TYPE_Q 3
+
+void mot_params_ind_rs(float vd_max, float id_max, s32 time);
+void mot_params_ind_ld(float v, float freq);
+void mot_params_ind_lq(float v, float freq);
+void mot_params_high_freq_inject(void);
+float mot_params_get_est_rs(void);
+bool mot_params_hj_sample_vi(float vd, float vq, float id, float iq);
+float mot_params_get_est_ld(void);
+float mot_params_get_est_lq(void);
+void mot_params_ind_stop(void);
+void mot_params_calc_inductance(void);
+bool mot_params_rs_ested(void);
+bool mot_params_ld_ested(void);
+bool mot_params_lq_ested(void);
+#endif /* MOT_PARAMS_IND_H__ */
+

+ 53 - 2
Applications/foc/motor/motor.c

@@ -15,7 +15,7 @@
 #include "foc/core/thro_torque.h"
 #include "foc/core/F_Calc.h"
 #include "app/nv_storage.h"
-//#include "foc/core/torque.h"
+#include "foc/motor/mot_params_ind.h"
 #include "foc/limit.h"
 
 #ifdef CONFIG_DQ_STEP_RESPONSE
@@ -43,6 +43,7 @@ static motor_t motor = {
 	.mode = CTRL_MODE_OPEN,
 	.mos_lim = 0,
 	.motor_lim = 0,
+	.b_ind_start = false,
 	.u_set.idc_lim = IDC_USER_LIMIT_NONE,
 	.u_set.ebrk_torque = IDC_USER_LIMIT_NONE,
 	.u_set.ebrk_time = MAX_U16,
@@ -704,6 +705,46 @@ void mc_force_run_open(s16 vd, s16 vq) {
 	motor.b_force_run = true;
 }
 
+bool mc_ind_motor_start(bool start) {
+	if (start == motor.b_ind_start) {
+		return true;
+	}
+	if (start) {
+		motor.b_ignor_throttle = true;
+		MC_Check_MosVbusThrottle();
+		if (mc_unsafe_critical_error()) {
+			PMSM_FOC_SetErrCode(FOC_Have_CritiCal_Err);
+			return false;
+		}
+		pwm_up_enable(false);
+		pwm_turn_on_low_side();
+		task_udelay(500);
+		PMSM_FOC_Start(CTRL_MODE_OPEN);
+		phase_current_offset_calibrate();
+		pwm_start();
+		adc_start_convert();
+		pwm_enable_channel();
+		phase_current_calibrate_wait();
+		PMSM_FOC_Set_MotAngle(0);
+		PMSM_FOC_SetOpenVdq_Immediate(0, 0);
+		motor.b_ind_start = start;
+	}else {
+		u32 mask = cpu_enter_critical();
+		motor.b_ind_start = start;
+		PMSM_FOC_SetOpenVdq(0, 0);
+		cpu_exit_critical(mask);
+		delay_ms(500);
+		wdog_reload();
+		adc_stop_convert();
+		pwm_stop();
+		PMSM_FOC_Stop();
+		pwm_up_enable(true);
+		motor.b_ignor_throttle = false;
+		
+	}
+	
+	return true;
+}
 
 static void _encoder_zero_off_timer_handler(shark_timer_t *t){
 	if (!motor.b_calibrate) {
@@ -1064,7 +1105,12 @@ void ADC_IRQHandler(void) {
 	}
 #endif
 	motor_vbus_crit_low((s16)sample_vbus_raw()); //need fast detect vbus very low, to stop the motor
-
+	float vd, vq;
+	if (motor.b_ind_start) {
+		mot_params_high_freq_inject();
+		vd = PMSM_FOC_Get()->out.s_OutVdq.d;
+		vq = PMSM_FOC_Get()->out.s_OutVdq.q;
+	}
 	if (!PMSM_FOC_Schedule()) {/* FOC 角度错误,立即停机 */
 		if (PMSM_FOC_Is_Start()) {
 			pwm_disable_channel();
@@ -1086,6 +1132,11 @@ void ADC_IRQHandler(void) {
 			}
 		}
 	}
+	if (motor.b_ind_start) {
+		float id = PMSM_FOC_Get()->out.s_RealIdq.d;
+		float iq = PMSM_FOC_Get()->out.s_RealIdq.q;
+		mot_params_hj_sample_vi(vd, vq, id, iq);
+	}
 	TIME_MEATURE_END();
 }
 

+ 2 - 0
Applications/foc/motor/motor.h

@@ -28,6 +28,7 @@ typedef struct {
 	bool   b_start;
 	float  throttle;
 	bool   b_ignor_throttle;
+	bool   b_ind_start;
 	bool   b_calibrate;
 	bool   b_force_run;
 	bool   b_runStall; //是否堵转
@@ -107,6 +108,7 @@ u16 mc_get_ebrk_time(void);
 bool mc_critical_err_is_set(u8 err);
 bool mc_hwbrk_can_shutpower(void);
 void mc_start_current_rec(bool rec);
+bool mc_ind_motor_start(bool start);
 
 static __INLINE float motor_encoder_get_angle(void) {
 #ifdef USE_ENCODER_HALL

+ 1 - 1
Applications/os/heap_4.c

@@ -38,7 +38,7 @@
 
 #define portBYTE_ALIGNMENT			8
 #define portBYTE_ALIGNMENT_MASK 	0x0007
-#define configTOTAL_HEAP_SIZE    (10*1024)
+#define configTOTAL_HEAP_SIZE    (14*1024)
 #define configASSERT(x)
 /* Block sizes must not get too small. */
 #define heapMINIMUM_BLOCK_SIZE	( ( size_t ) ( xHeapStructSize << 1 ) )

+ 7 - 0
Applications/prot/can_foc_msg.c

@@ -140,6 +140,13 @@ void can_report_ext_status(u8 can) {
 	shark_can0_send_ext_message(0x1A014D43, data, sizeof(data));
 }
 
+void can_report_motparam(float v, u8 type) {
+	u8 data[8];
+	encoder_can_key(data, CMD_2_CAN_KEY(Foc_MotPara_Report));
+	encode_u8(data + 1, type);
+	encode_float(data + 3, v);
+	can_send_message(get_indicator_can_id(0x45), data, sizeof(data), 0);
+}
 
 void can_response_vols(u8 can, u8 key) {
 	u8 data[16];

+ 2 - 0
Applications/prot/can_foc_msg.h

@@ -18,5 +18,7 @@ void can_mcast_foc_status2(void);
 void can_plot1(s16 v1);
 void can_plot2(s16 v1, s16 v2);
 void can_plot3(s16 v1, s16 v2, s16 v3);
+void can_report_motparam(float v, u8 type);
+
 #endif	/*_Can_Foc_Msg_H__ */
 

+ 62 - 50
Project/MC105_V3.uvoptx

@@ -527,6 +527,18 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>24</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Applications\foc\motor\mot_params_ind.c</PathWithFileName>
+      <FilenameWithoutPath>mot_params_ind.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -537,7 +549,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -549,7 +561,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -561,7 +573,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -573,7 +585,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -593,7 +605,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -605,7 +617,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -617,7 +629,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -629,7 +641,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -649,7 +661,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -661,7 +673,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -673,7 +685,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -685,7 +697,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -697,7 +709,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -709,7 +721,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -721,7 +733,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -733,7 +745,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -745,7 +757,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -757,7 +769,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>42</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -769,7 +781,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -781,7 +793,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>43</FileNumber>
+      <FileNumber>44</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -793,7 +805,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>44</FileNumber>
+      <FileNumber>45</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -805,7 +817,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>45</FileNumber>
+      <FileNumber>46</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -825,7 +837,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>46</FileNumber>
+      <FileNumber>47</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -837,7 +849,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>47</FileNumber>
+      <FileNumber>48</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -849,7 +861,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>48</FileNumber>
+      <FileNumber>49</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -861,7 +873,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>49</FileNumber>
+      <FileNumber>50</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -873,7 +885,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>50</FileNumber>
+      <FileNumber>51</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -885,7 +897,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>51</FileNumber>
+      <FileNumber>52</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -905,7 +917,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>52</FileNumber>
+      <FileNumber>53</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -917,7 +929,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>53</FileNumber>
+      <FileNumber>54</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -929,7 +941,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>54</FileNumber>
+      <FileNumber>55</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -949,7 +961,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>55</FileNumber>
+      <FileNumber>56</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -961,7 +973,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>56</FileNumber>
+      <FileNumber>57</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -973,7 +985,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>57</FileNumber>
+      <FileNumber>58</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -985,7 +997,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>58</FileNumber>
+      <FileNumber>59</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -997,7 +1009,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>59</FileNumber>
+      <FileNumber>60</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1009,7 +1021,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>60</FileNumber>
+      <FileNumber>61</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1021,7 +1033,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>61</FileNumber>
+      <FileNumber>62</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1033,7 +1045,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>62</FileNumber>
+      <FileNumber>63</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1045,7 +1057,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>63</FileNumber>
+      <FileNumber>64</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1057,7 +1069,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>64</FileNumber>
+      <FileNumber>65</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1069,7 +1081,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>65</FileNumber>
+      <FileNumber>66</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1081,7 +1093,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>66</FileNumber>
+      <FileNumber>67</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1093,7 +1105,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>67</FileNumber>
+      <FileNumber>68</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1105,7 +1117,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>68</FileNumber>
+      <FileNumber>69</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1117,7 +1129,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>69</FileNumber>
+      <FileNumber>70</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1129,7 +1141,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>70</FileNumber>
+      <FileNumber>71</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1149,7 +1161,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>71</FileNumber>
+      <FileNumber>72</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1161,7 +1173,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>72</FileNumber>
+      <FileNumber>73</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1173,7 +1185,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>73</FileNumber>
+      <FileNumber>74</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>

+ 5 - 0
Project/MC105_V3.uvprojx

@@ -508,6 +508,11 @@
               <FileType>1</FileType>
               <FilePath>..\Applications\foc\motor\motor_param.c</FilePath>
             </File>
+            <File>
+              <FileName>mot_params_ind.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Applications\foc\motor\mot_params_ind.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>

+ 64 - 52
Project/MC105_V3_Z100.uvoptx

@@ -227,7 +227,7 @@
 
   <Group>
     <GroupName>Foc</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -403,7 +403,7 @@
 
   <Group>
     <GroupName>Motor</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -467,6 +467,18 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>24</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Applications\foc\motor\mot_params_ind.c</PathWithFileName>
+      <FilenameWithoutPath>mot_params_ind.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
@@ -477,7 +489,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -489,7 +501,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -501,7 +513,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -513,7 +525,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -533,7 +545,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -545,7 +557,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>29</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -557,7 +569,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>30</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -569,7 +581,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -589,7 +601,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -601,7 +613,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -613,7 +625,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -625,7 +637,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -637,7 +649,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -649,7 +661,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -661,7 +673,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -673,7 +685,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -685,7 +697,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -697,7 +709,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>42</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -709,7 +721,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -721,7 +733,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>43</FileNumber>
+      <FileNumber>44</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -733,7 +745,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>44</FileNumber>
+      <FileNumber>45</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -745,7 +757,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>45</FileNumber>
+      <FileNumber>46</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -765,7 +777,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>46</FileNumber>
+      <FileNumber>47</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -777,7 +789,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>47</FileNumber>
+      <FileNumber>48</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -789,7 +801,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>48</FileNumber>
+      <FileNumber>49</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -801,7 +813,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>49</FileNumber>
+      <FileNumber>50</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -813,7 +825,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>50</FileNumber>
+      <FileNumber>51</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -825,7 +837,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>51</FileNumber>
+      <FileNumber>52</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -845,7 +857,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>52</FileNumber>
+      <FileNumber>53</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -857,7 +869,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>53</FileNumber>
+      <FileNumber>54</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -869,7 +881,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>54</FileNumber>
+      <FileNumber>55</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -889,7 +901,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>55</FileNumber>
+      <FileNumber>56</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -901,7 +913,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>56</FileNumber>
+      <FileNumber>57</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -913,7 +925,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>57</FileNumber>
+      <FileNumber>58</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -925,7 +937,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>58</FileNumber>
+      <FileNumber>59</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -937,7 +949,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>59</FileNumber>
+      <FileNumber>60</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -949,7 +961,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>60</FileNumber>
+      <FileNumber>61</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -961,7 +973,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>61</FileNumber>
+      <FileNumber>62</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -973,7 +985,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>62</FileNumber>
+      <FileNumber>63</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -985,7 +997,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>63</FileNumber>
+      <FileNumber>64</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -997,7 +1009,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>64</FileNumber>
+      <FileNumber>65</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1009,7 +1021,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>65</FileNumber>
+      <FileNumber>66</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1021,7 +1033,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>66</FileNumber>
+      <FileNumber>67</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1033,7 +1045,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>67</FileNumber>
+      <FileNumber>68</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1045,7 +1057,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>68</FileNumber>
+      <FileNumber>69</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1057,7 +1069,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>69</FileNumber>
+      <FileNumber>70</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1069,7 +1081,7 @@
     </File>
     <File>
       <GroupNumber>9</GroupNumber>
-      <FileNumber>70</FileNumber>
+      <FileNumber>71</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1089,7 +1101,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>71</FileNumber>
+      <FileNumber>72</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1101,7 +1113,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>72</FileNumber>
+      <FileNumber>73</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -1113,7 +1125,7 @@
     </File>
     <File>
       <GroupNumber>10</GroupNumber>
-      <FileNumber>73</FileNumber>
+      <FileNumber>74</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>

+ 5 - 0
Project/MC105_V3_Z100.uvprojx

@@ -508,6 +508,11 @@
               <FileType>1</FileType>
               <FilePath>..\Applications\foc\motor\motor_param.c</FilePath>
             </File>
+            <File>
+              <FileName>mot_params_ind.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Applications\foc\motor\mot_params_ind.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>