97 lines
3.6 KiB
C
97 lines
3.6 KiB
C
#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__
|