#ifndef __MODE_CONTROL_ADJUST_H__ #define __MODE_CONTROL_ADJUST_H__ #include "mode_control_def.h" typedef enum { CONTROL_ADJUST_IDEL, // 空闲 CONTROL_ADJUST_UPWARD_SLOPE, // 上升斜坡 CONTROL_ADJUST_DOWNWARD_SLOPE, // 下降斜坡 CONTROL_ADJUST_TUNING, // 自整定 CONTROL_ADJUST_SAVE, // 存储变量 CONTROL_ADJUST_BLEEDING, // 在整定状态中放气 CONTROL_ADJUST_AERATE, // 在整定状态中充气 CONTROL_ADJUST_STOP, CONTROL_ADJUST_FAIL, // 整定失败 CONTROL_ADJUST_PAUSE, // 整定暂停 CONTROL_ADJUST_TEST, } mode_control_adjust_state_e; // 整定状态 #define CONTROL_ADJUST_STEP LCD_ADJUST_STOP // 整定步骤 typedef struct { uint16_t out; uint16_t psb; uint16_t ipsb; float32 electric; } mode_control_adjust_data_t; typedef struct { uint16_t enter_count1; // 进入次数 mode_control_adjust_state_e adjust_state; mode_control_adjust_state_e adjust_state2; uint16_t *output; // 输出 __IO int16_t wait_count; __IO uint16_t current_psi_a; // 当前位置的A压力 __IO uint16_t last_psi_a; // 上一次位置的A压力 __IO uint16_t current_psb; // 当前位置AD值 BOOL wait_hode_flag; // 等待保持标志 BOOL adc_0_100_flag; // 判断0-100移动过程中ad值是增大还是减少,TRUE 增大,FALSE 减小 uint16_t adc_record_0; // 记录放气时阀门最小位置ad值 uint16_t adc_record_1; // 记录放气时阀门最小位置ad值 uint16_t adc_record_2; // 记录充气时阀门最大位置ad值 uint16_t adc_diff; uint16_t arr_record_0; uint16_t arr_record_1; uint16_t arr_record_2; uint16_t bleeding_min_arr; // 最小放气值 uint16_t bleeding_max_arr; // 最大放气值 uint16_t balance_arr; // 平衡值 uint16_t aerate_min_arr; // 最小充气值 uint16_t aerate_max_arr; // 最大充气值 uint32_t all_open_time; // 全开时间 uint32_t all_close_time; // 全关时间 uint32_t tmp_time; // 临时用来记录全开全关时间 __IO uint16_t arr_current; // 当前推动阀门的计数器 __IO uint16_t arr_last; // 上一次计数器值 uint8_t test_index; // 测试索引 BOOL ipsb_enable; // 是否启用ipsb mode_control_storage_t storage_data; // 存储数据,用于保留原始数据 stable_percent_step_t stable_percent_steps[EQUILIBRIUM_POINT_END]; // 稳定百分比 mode_control_adjust_data_t ads[800]; // 整定过程中的数据 uint16_t ads_index; // 整定数据索引 mode_control_adjust_tuning_pi_state_e tuning_pi_state; // 自整定状态 mode_control_move_dir_e tuning_pi_dir; // 自整定方向 uint8_t tuning_pi_sst_index; } mode_control_adjust_t; extern mode_control_adjust_t *mode_control_adjust; extern mode_control_adjust_t *mode_control_adjust_get(void); extern void mode_control_adjust_process(uint8_t *state); extern void mode_control_adjust_stop(uint8_t *state); #endif // __MODE_CONTROL_ADJUST_H__