#ifndef __MODE_DEF_H__ #define __MODE_DEF_H__ typedef enum { ADJUST_INITIATE_NONE = 0, // 无 ADJUST_INITIATE_INTERNAL, // 内部发起 ADJUST_INITIATE_EXTERNAL, // 外部发起 } mode_adjust_initiate_e; // 自整定发起方式 typedef enum { // 整定无错误 ADJUST_STEP_NONE_ERROR = 0, // 输入气源压力:输入气源压力错误 ADJUST_STEP_INPUT_PRESSURE_ERROR, // A口压力:A口压力错误 ADJUST_STEP_A_PRESSURE_ERROR, // B口压力:B口压力错误 ADJUST_STEP_B_PRESSURE_ERROR, // 小回路:小回路错误 ADJUST_STEP_SMALL_LOOP_ERROR, // IP回路电流异常 ADJUST_STEP_IP_LOOP_ERROR, // EPM驱动异常 ADJUST_STEP_EPM_LOOP_ERROR, // 查找上下限位:下限位错误 ADJUST_STEP_FIND_LOWER_LIMIT_ERROR, // 查找上下限位:上限位错误 ADJUST_STEP_FIND_UPPER_LIMIT_ERROR, // 启动电流范围:启动电流范围错误 ADJUST_STEP_START_CURRENT_RANGE_ERROR, // 最终位置电流范围:最终位置电流范围错误 ADJUST_STEP_FINAL_CURRENT_RANGE_ERROR, // 起终点电流差:起终点电流差错误 ADJUST_STEP_START_FINAL_CURRENT_DIFF_ERROR, // 磁条最小值:磁条最小值错误 ADJUST_STEP_MAGNETIC_MIN_ERROR, // 磁条最大值:磁条最大值错误 ADJUST_STEP_MAGNETIC_MAX_ERROR, // 10%位置的平衡值:10%位置的平衡值错误 ADJUST_STEP_10_PERCENT_BALANCE_ERROR, // 50%位置的平衡值:50%位置的平衡值错误 ADJUST_STEP_50_PERCENT_BALANCE_ERROR, // 执行机构:震荡、超调 ADJUST_STEP_EXECUTE_MECHANISM_ERROR, // 整定超时 ADJUST_STEP_TIMEOUT_ERROR, } mode_adjust_error_e; // 整定错误码 typedef struct { uint16_t pos0; ///< 位置0 ad uint16_t pos100; ///< 位置100 ad uint16_t pot0; ///< 位置0 输出 uint16_t pot100; ///< 位置100 输出 uint16_t current0; ///< 位置0 电流(毫安,放大100倍, 0.01ma=1) uint16_t current100; ///< 位置100 电流(毫安,放大100倍,0.01ma=1) uint16_t open_time; ///< 全开时间(秒) uint16_t close_time; ///< 全关时间(秒) float32 kp; ///< pid 比例系数 float32 ki; ///< pid 积分系数 float32 kd; ///< pid 微分系数 } mode_adjust_data_t; 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_STEP_1 = 1, LCD_ADJUST_STEP_2, LCD_ADJUST_STEP_3, LCD_ADJUST_STEP_4, LCD_ADJUST_STEP_5, LCD_ADJUST_STEP_6, LCD_ADJUST_STEP_7, LCD_ADJUST_STOP, // 停止 } lcd_adjust_step_e; // 整定步骤 typedef enum { MODE_DIAGNOSIS_RUNING, // 诊断运行中 MODE_DIAGNOSIS_FINISH, // 诊断结束 MODE_DIAGNOSIS_FAIL, // 诊断失败 } mode_diagnosis_runing_state_e; typedef struct { void (*mode_process_stop)(void); // 停止:停止算法控制和整定,流程进入等待状态 void (*mode_process_start)(void); // 启动:开始算法控制 void (*mode_adjust_start)(void); // 整定开始 void (*mode_adjust_stop)(void); // 整定结束 void (*mode_get_adjust_data)(mode_adjust_data_t *data); // 获取整定数据 uint8_t (*mode_adjust_result)(void); // 整定开始后:获取整定结果 uint8_t (*mode_adjust_step_count)(void); // 获取整定步骤数量 uint8_t (*mode_adjust_step_current)(void); // 获取当前整定步骤 BOOL(*mode_control_idle) (void); // 控制是否空闲 BOOL(*mode_is_adjusting) (void); // 是否正在整定 } mode_interface_req_t; #endif // __MODE_DEF_H__