#ifndef __MODE_DEF_H__ #define __MODE_DEF_H__ #define MODE_DIAGNOSIS_STORAGE_SIZE (12 * 1024) // 诊断存储空间大小 #define DIAGNOSIS_EPM_DBG 0 // 测试:诊断EPM调试 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_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 { MODE_DIAGNOSIS_EPM_STEP_ANCHOR_POINT = 1, // 第一步先找锚点 MODE_DIAGNOSIS_EPM_STEP_AERATE = 2, // 最大充气时间 MODE_DIAGNOSIS_EPM_STEP_BLEEDING = 3, // 最大放气时间 MODE_DIAGNOSIS_EPM_STEP_CONTROL = 4, // 控制 } mode_diagnosis_epm_step_e; typedef enum { MODE_DIAGNOSIS_RUNING, // 诊断运行中 MODE_DIAGNOSIS_FINISH, // 诊断结束 MODE_DIAGNOSIS_FAIL, // 诊断失败 } mode_diagnosis_runing_state_e; typedef struct { BOOL enabled; // 是否使能 float current_trip; // 当前行程 float drive_output; // 驱动输出 float pressure_A; // A口压力 float pressure_B; // B口压力 float feedback_current; // 反馈电流 // decompression的数据 int32_t decompression_current_trip; // 当前行程 int32_t decompression_drive_output; // 驱动输出 int32_t decompression_pressure_A; // A口压力 int32_t decompression_pressure_B; // B口压力 int32_t decompression_feedback_current; // 反馈电流 } mode_diagnosis_epm_data_t; // epm诊断需要采集的数据 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__