Procházet zdrojové kódy

工厂测试&修改名称

Signed-off-by: kevin <huhui@sharkgulf.com>
kevin před 2 roky
rodič
revize
f522c8989d

+ 5 - 7
Applications/app/factory.c

@@ -18,7 +18,8 @@ static bool start_pwm_adc(void) {
 	delay_ms(10);
 	phase_current_offset_calibrate();
 	pwm_start();
-	delay_us(10); //wait for ebrake error
+	delay_us(10);
+	get_motor()->b_start = true;
 	adc_start_convert();
 	phase_current_calibrate_wait();
 	if (phase_curr_offset_check()) {
@@ -33,6 +34,7 @@ static void stop_pwm_adc(void) {
 	adc_stop_convert();
 	pwm_stop();
 	pwm_up_enable(true);
+	get_motor()->b_start = false;
 	cpu_exit_critical(mask);
 }
 
@@ -48,7 +50,7 @@ void can_process_factory_message(can_message_t *can_message){
 			break;
 		case BUILD_CMD_KEY(0xE1):
 		{
-			if (factory_mode == 0) {
+			if (!factory_is_running()) {
 				response[2] = 1;
 				break;
 			}
@@ -118,11 +120,7 @@ void can_process_factory_message(can_message_t *can_message){
 	}
 }
 
-u8 factory_get_mode(void) {
-	return factory_mode;
-}
-
 bool factory_is_running(void) {
-	return (factory_mode == 0);
+	return (factory_mode == 0x5A);
 }
 

+ 2 - 2
Applications/foc/mc_config.h

@@ -35,7 +35,7 @@ typedef struct
 	u16	max_fw_id;
 	u16 max_torque;
 	s16 encoder_offset;
-}motor_t;
+}mot_params_t;
 
 typedef struct {
 	float kp;
@@ -100,7 +100,7 @@ typedef struct {
 
 typedef struct {
 	u8 version;
-	motor_t m;
+	mot_params_t m;
 	controller_t c;
 	settings_t s;
 	gear_t g_n[CONFIG_MAX_GEARS];

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

@@ -14,6 +14,7 @@
 #include "foc/core/F_Calc.h"
 #include "foc/core/etcs.h"
 #include "app/nv_storage.h"
+#include "app/factory.h"
 #include "foc/motor/mot_params_ind.h"
 #include "foc/motor/throttle.h"
 #include "foc/limit.h"
@@ -32,7 +33,7 @@ static void _encoder_zero_off_timer_handler(shark_timer_t *);
 static shark_timer_t _encoder_zero_off_timer = TIMER_INIT(_encoder_zero_off_timer, _encoder_zero_off_timer_handler);
 static void _led_off_timer_handler(shark_timer_t *);
 static shark_timer_t _led_off_timer = TIMER_INIT(_led_off_timer, _led_off_timer_handler);
-m_contrl_t motor = {
+motor_t motor = {
 	.s_direction = POSITIVE,
 	.n_gear = 0,
 	.b_high_vol_mode = false,
@@ -87,6 +88,10 @@ static void MC_Check_MosVbusThrottle(void) {
 	sys_debug("ibus offset %d\n", offset);
 	sample_ibus_offset(offset);
 
+	if (factory_is_running()) {
+		return;
+	}
+
 	gpio_phase_u_detect(false);
 	float abc[3];
 	get_phase_vols_filtered(abc);
@@ -125,6 +130,9 @@ static void MC_Check_MosVbusThrottle(void) {
 static int hw_brk_err_cnt = 0;
 static int hw_brk_no_err_cnt = 0;
 static u32 _self_check_task(void *p) {
+	if (factory_is_running()) {
+		return 1000;
+	}
 	if (get_tick_ms() < 500) { //启动500ms内检测刹车状态是否正常,应该是没有刹车
 		if (mc_detect_hwbrake() && hw_brk_err_cnt++ >= 60) {
 			mc_set_critical_error(FOC_CRIT_BRK_Err);
@@ -244,7 +252,7 @@ void mc_init(void) {
 	shark_timer_post(&_led_off_timer, 5000);
 }
 
-m_contrl_t * mc_params(void) {
+motor_t * get_motor(void) {
 	return &motor;
 }
 
@@ -1586,6 +1594,10 @@ void Sched_MC_mTask(void) {
 	/* 母线电流,实际采集的相电流矢量大小的计算 */
 	mot_contrl_calc_current(&motor.controller);
 
+	if (factory_is_running()) {
+		motor.n_CritiCalErrMask = 0;
+		return;
+	}
 	if ((mot_contrl_get_dc_current(&motor.controller) > (CONFIG_HW_MAX_DC_CURRENT * 1.1f)) || (mot_contrl_get_dc_current(&motor.controller) < CONFIG_HW_MAX_CHRG_CURRENT)) {
 		vbus_err_cnt ++;
 		if (vbus_err_cnt >= 5) {

+ 4 - 3
Applications/foc/motor/motor.h

@@ -73,9 +73,10 @@ typedef struct {
 	mot_contrl_t controller;
 	user_rt_set u_set; //用户运行时设置
 	fan_t  fan[2];
-}m_contrl_t;
-extern m_contrl_t motor;
-m_contrl_t * mc_params(void);
+}motor_t;
+
+extern motor_t motor;
+motor_t * get_motor(void);
 void mc_init(void);
 bool mc_start(u8 mode);
 bool mc_stop(void);