From 3b35db3b481fb348d0bea753a77e7491c270e856 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E6=99=9F=E6=98=8A?= <545403892@qq.com> Date: Fri, 26 Jan 2024 11:39:08 +0800 Subject: [PATCH] =?UTF-8?q?modify:=E8=B0=83=E6=95=B4=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MDK-ARM/controller-v2.uvoptx | 6 ++-- MDK-ARM/controller-v2.uvprojx | 2 +- MDK-ARM/controller-v2/controller-v2.4 | Bin 2598488 -> 2597732 bytes User/application/inc/mode.h | 1 + User/application/inc/mode_def.h | 35 +++++++++++++++++++ User/application/inc/mode_pwm.h | 5 --- User/application/inc/mode_pwmp_hd.h | 47 +++++++++++--------------- User/application/src/mode_pwmp_hd.c | 24 ++++++------- User/entity.h | 20 +---------- 9 files changed, 73 insertions(+), 67 deletions(-) create mode 100644 User/application/inc/mode_def.h diff --git a/MDK-ARM/controller-v2.uvoptx b/MDK-ARM/controller-v2.uvoptx index 102c116..090f79f 100644 --- a/MDK-ARM/controller-v2.uvoptx +++ b/MDK-ARM/controller-v2.uvoptx @@ -103,7 +103,7 @@ 1 0 0 - 4 + 6 @@ -114,13 +114,13 @@ - Segger\JL2CM3.dll + STLink\ST-LINKIII-KEIL_SWO.dll 0 DLGUARM - d + (105=-1,-1,-1,-1,0) 0 diff --git a/MDK-ARM/controller-v2.uvprojx b/MDK-ARM/controller-v2.uvprojx index b0c2238..263e7a2 100644 --- a/MDK-ARM/controller-v2.uvprojx +++ b/MDK-ARM/controller-v2.uvprojx @@ -10,7 +10,7 @@ controller-v2 0x4 ARM-ADS - 5060061::V5.06 update 1 (build 61)::ARMCC + 5060960::V5.06 update 7 (build 960)::.\ARMCC 0 diff --git a/MDK-ARM/controller-v2/controller-v2.4 b/MDK-ARM/controller-v2/controller-v2.4 index 87b3424e07b0d66925ff9693305421f961215d42..4c0c117f246655f12536ba3f317e9122d6710ac7 100644 GIT binary patch delta 45096 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

1kSR~Hh5NsLHRW8OmPW~I_g2eEIz#RKT6SS^1 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 V6<`+@Qk%~qinmZ-{M^~}e*nkP$Z!Av diff --git a/User/application/inc/mode.h b/User/application/inc/mode.h index 2532670..000b695 100644 --- a/User/application/inc/mode.h +++ b/User/application/inc/mode.h @@ -9,6 +9,7 @@ #ifndef __MODE_H__ #define __MODE_H__ #include "lib.h" +#include "mode_def.h" #include "mode_dac.h" #include "mode_pwm.h" #include "mode_pwmp.h" diff --git a/User/application/inc/mode_def.h b/User/application/inc/mode_def.h new file mode 100644 index 0000000..5f47f01 --- /dev/null +++ b/User/application/inc/mode_def.h @@ -0,0 +1,35 @@ +#ifndef __MODE_DEF_H__ +#define __MODE_DEF_H__ +typedef enum +{ + POSITION_CHANGE, // 位置发生变化 + POSITION_NO_CHANGE, // 位置没变化,但是等待次数没到 + POSITION_NO_CHANGE_FOREVER, // 位置不再发生变化 +} valve_position_change_e; // 位置变化 + +typedef enum +{ + VALUE_POSITION_MIN, // 位置值最小 + VALUE_POSITION_MAX, // 位置值最大 +} mode_pwm_value_position_e; // 位置值 + +typedef enum +{ + // 这一部分只用于LCD整定界面 + LCD_ADJUST_IDEL = 1, // 准备中 + LCD_ADJUST_POSITION0, // 位置0 + LCD_ADJUST_POSITION100, // 位置100 + LCD_ADJUST_TIMER, // 计时 + LCD_ADJUST_TUNING, // 自整定 + LCD_ADJUST_SAVE, // 存储变量 + LCD_ADJUST_STOP, // 停止 +} lcd_adjust_step_e; // 整定步骤 + +typedef enum +{ + LCD_ADJUST_RESULT_OK, ///< 整定成功 + LCD_ADJUST_RESULT_FAIL, ///< 整定失败 + LCD_ADJUST_RESULT_ING, ///< 整定中 +} lcd_adjust_result_e; ///< 整定结果 + +#endif // __MODE_DEF_H__ diff --git a/User/application/inc/mode_pwm.h b/User/application/inc/mode_pwm.h index e2f1895..a08f59c 100644 --- a/User/application/inc/mode_pwm.h +++ b/User/application/inc/mode_pwm.h @@ -3,11 +3,6 @@ #include "lib.h" #include "filter.h" -typedef enum -{ - VALUE_POSITION_MIN, - VALUE_POSITION_MAX, -} mode_pwm_value_position_e; typedef enum { diff --git a/User/application/inc/mode_pwmp_hd.h b/User/application/inc/mode_pwmp_hd.h index e463fb5..e32ce23 100644 --- a/User/application/inc/mode_pwmp_hd.h +++ b/User/application/inc/mode_pwmp_hd.h @@ -33,25 +33,25 @@ typedef enum /*需要存储的变量*/ typedef struct { - uint8_t tuned_flag; // 是否整定过 1:整定过 0:未整定过 - uint8_t tuned_state; // 自整定结果 + uint8_t tuned_flag; // 是否整定过 1:整定过 0:未整定过 + uint8_t tuned_state; // 自整定结果 - uint16_t bleeding; // 放气值 - uint16_t inflation; // 充气值 - uint16_t arr_diff; // 控制区间 - uint16_t ad_diff; // 磁条区间 - uint16_t pwmp_min; // 控制最小值 - uint16_t pwmp_max; // 控制最大值 - uint16_t trip_0; // 磁条0位置AD - uint16_t trip_100; // 词条100位置AD - uint16_t trip_min0; // 小回路行程0位置AD - uint16_t trip_min100; // 小回路行程100位置AD - uint16_t current0; // 电流最小值 - uint16_t current100; // 电流最大值 - uint16_t all_open_time;// 全开时间 - uint16_t all_close_time;// 全关时间 - uint16_t prov_flag; // 磁条安装的正反:倒装:0 正装:1 - uint16_t valve_type; // 阀门正反行程:气开:ATO 气关:ATC + uint16_t bleeding; // 放气值 + uint16_t inflation; // 充气值 + uint16_t arr_diff; // 控制区间 + uint16_t ad_diff; // 磁条区间 + uint16_t pwmp_min; // 控制最小值 + uint16_t pwmp_max; // 控制最大值 + uint16_t trip_0; // 磁条0位置AD + uint16_t trip_100; // 词条100位置AD + uint16_t trip_min0; // 小回路行程0位置AD + uint16_t trip_min100; // 小回路行程100位置AD + uint16_t current0; // 电流最小值 + uint16_t current100; // 电流最大值 + uint16_t all_open_time; // 全开时间 + uint16_t all_close_time; // 全关时间 + uint16_t prov_flag; // 磁条安装的正反:倒装:0 正装:1 + uint16_t valve_type; // 阀门正反行程:气开:ATO 气关:ATC float32 kp; float32 ki; float32 kd; @@ -104,13 +104,6 @@ typedef struct /////////////////////////////////////////*共用部分BEGIN*//////////////////////////////////////////////// -typedef enum -{ - POSITION_CHANGE, // 位置发生变化 - POSITION_NO_CHANGE, // 位置没变化,但是等待次数没到 - POSITION_NO_CHANGE_FOREVER, // 位置不再发生变化 -} valve_position_change_hd_e; - typedef enum { PWMP_HD_ADJUST_IDEL, @@ -247,8 +240,8 @@ typedef enum /// 操作标志 typedef enum { - EXECUTE_NONE = 0, ///< 不执行任何操作 - EXECUTE_DAC = 1, ///< 执行DAC输出 + EXECUTE_HD_NONE = 0, ///< 不执行任何操作 + EXECUTE_HD_OUT = 1, ///< 执行输出 } execute_hd_e; /// 返回内容 diff --git a/User/application/src/mode_pwmp_hd.c b/User/application/src/mode_pwmp_hd.c index 1219eb5..58827ea 100644 --- a/User/application/src/mode_pwmp_hd.c +++ b/User/application/src/mode_pwmp_hd.c @@ -240,7 +240,7 @@ execute_rsp_hd_t *execute_dac(execute_plan_hd_e plan) case EXECUTE_PLAN_4: return execute_dac_plan4(); default: - rsp.code = EXECUTE_NONE; + rsp.code = EXECUTE_HD_NONE; return &rsp; } } @@ -261,7 +261,7 @@ static execute_rsp_hd_t *execute_dac_plan1() out *= (mode_pwmp_hd->pwmp_save->storage.pwmp_max + Control_diff * index_max) - (mode_pwmp_hd->pwmp_save->storage.pwmp_min - Control_diff * index_min); // 映射实际控制器的范围 out += mode_pwmp_hd->pwmp_save->storage.pwmp_min - Control_diff * index_min; // 对输出结果进行偏移处理 - rsp.code = EXECUTE_DAC; + rsp.code = EXECUTE_HD_OUT; rsp.dac = (uint32_t)out; /// 在执行了十次之后若系统认为稳定进入以下程序进行微调 @@ -359,7 +359,7 @@ static void set_step_signal(uint16_t signal_in) } /*判断阀门状态:移动、停止、停止但仍在等待*/ -static valve_position_change_hd_e pwmp_adjust_hd_valve_position_change(uint8_t *state, uint8_t next_state, uint8_t diff_adc_max) +static valve_position_change_e pwmp_adjust_hd_valve_position_change(uint8_t *state, uint8_t next_state, uint8_t diff_adc_max) { uint16_t diff_adc = 0; // uint16_t adc = get_actual_travel_adc(); @@ -437,7 +437,7 @@ static void pwmp_adjust_hd_idle(uint8_t *state, mode_pwmp_hd_adjust_state_e next } else { - valve_position_change_hd_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX); + valve_position_change_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX); switch (s) { @@ -475,7 +475,7 @@ static void pwmp_adjust_hd_rough_position0(uint8_t *state, mode_pwmp_hd_adjust_s } else { - valve_position_change_hd_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX); + valve_position_change_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX); current_adc = mode_pwmp_hd_adjust->psb_adc; if (ABS(current_adc - mode_pwmp_hd_adjust->adc_record_1) >= DIFF_ADC_MAX) @@ -627,7 +627,7 @@ static void pwmp_adjust_hd_accurate_position0(uint8_t *state, mode_pwmp_hd_adjus } else { - valve_position_change_hd_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX * 10); + valve_position_change_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX * 10); current_adc = mode_pwmp_hd_adjust->psb_adc; /*执行器发生动作*/ @@ -695,7 +695,7 @@ static void pwmp_adjust_hd_rough_position100(uint8_t *state, mode_pwmp_hd_adjust } else { - valve_position_change_hd_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX); + valve_position_change_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX); switch (s) { @@ -738,7 +738,7 @@ static void pwmp_adjust_hd_accurate_position100(uint8_t *state, mode_pwmp_hd_adj } else { - valve_position_change_hd_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX); + valve_position_change_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX); current_adc = mode_pwmp_hd_adjust->psb_adc; uint16_t adc_diff = ABS(current_adc - mode_pwmp_hd_adjust->adc_record_2); @@ -875,7 +875,7 @@ static void pwmp_adjust_hd_bleeding(uint8_t *state) } else { - valve_position_change_hd_e s = pwmp_adjust_hd_valve_position_change(state, mode_pwmp_hd_adjust->adjust_state, DIFF_ADC_MAX); + valve_position_change_e s = pwmp_adjust_hd_valve_position_change(state, mode_pwmp_hd_adjust->adjust_state, DIFF_ADC_MAX); current_adc = mode_pwmp_hd_adjust->psb_adc; switch (s) { @@ -973,7 +973,7 @@ static void pwmp_adjust_hd_PID_tuning(uint8_t *state, mode_pwmp_hd_adjust_state_ } else { - valve_position_change_hd_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX); + valve_position_change_e s = pwmp_adjust_hd_valve_position_change(state, next_state, DIFF_ADC_MAX); s_watch = s; /*获取实时行程*/ pid_autotune_hd->data.cur_actual = pid_autotune_hd->data.adjust_tmp_actual; @@ -1234,7 +1234,7 @@ void mode_pwmp_hd_process(void) else if (loop_current >= 4.5 && loop_current <= 19.5) { execute_res = execute_dac(EXECUTE_PLAN); // PID计算结果经过执行器处理 - if (execute_res->code == EXECUTE_DAC) // 执行DAC输出 + if (execute_res->code == EXECUTE_HD_OUT) // 执行DAC输出 { pdctrl_out(execute_res->dac); } @@ -1258,7 +1258,7 @@ void mode_pwmp_hd_process(void) { pdctrl_out(mode_pwmp_hd->output); mode_pwmp_hd->current_adc = get_actual_travel_adc(); - mode_pwmp_hd->duty_percent = ((float32)mode_pwmp_hd->output / (float32)ADC_OUT_MAX) * 100; + mode_pwmp_hd->duty_percent = ((float32)mode_pwmp_hd->output / (float32)OUT_MAX) * 100; mode_pwmp_hd->current_electric = ip2current(); break; } diff --git a/User/entity.h b/User/entity.h index 31b6383..baa0ca2 100644 --- a/User/entity.h +++ b/User/entity.h @@ -42,7 +42,7 @@ #define SELF_VCHART_LEN 17 ///< 自定义阀门特性长度 #define VALVE_SERIAL_NUM_LEN 16 ///< 阀门序列号长度 #define INST_SERIAL_NUM_LEN 16 ///< 定位器序列号长度 -#define ADC_OUT_MAX 4095 ///< ADC输出最大值 +#define OUT_MAX 4095 ///< 输出最大值 /** * ADC通道定义: 主频4、分频系数16,根据公式 TCONV(转换时间) = (采样时间 + 12.5 个周期)/(主频/ADC分频系数) 计算每个通道单个采集时间 @@ -383,24 +383,6 @@ typedef union } Bits; } driver_icon_enable_u; -typedef enum -{ - // 这一部分只用于LCD整定界面 - LCD_ADJUST_IDEL = 1, // 准备中 - LCD_ADJUST_POSITION0, // 位置0 - LCD_ADJUST_POSITION100, // 位置100 - LCD_ADJUST_TIMER, // 计时 - LCD_ADJUST_TUNING, // 自整定 - LCD_ADJUST_SAVE, // 存储变量 - LCD_ADJUST_STOP, // 停止 -} lcd_adjust_step_e; - -typedef enum -{ - LCD_ADJUST_RESULT_OK, ///< 整定成功 - LCD_ADJUST_RESULT_FAIL, ///< 整定失败 - LCD_ADJUST_RESULT_ING, ///< 整定中 -} lcd_adjust_result_e; #pragma pack() // 编译器中提供了#pragma pack(n)来设定变量以n字节对齐方式 extern volatile float32 calib_param[CALIBPARA_NUM][2]; ///< 校准参数