This repository has been archived on 2025-02-28. You can view files and clone it, but cannot push or open issues or pull requests.
controller-hd/User/application/mode/mode_control_adjust.h

84 lines
3.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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__