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 87b3424..4c0c117 100644 Binary files a/MDK-ARM/controller-v2/controller-v2.4 and b/MDK-ARM/controller-v2/controller-v2.4 differ 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]; ///< 校准参数