117 lines
4.1 KiB
C
117 lines
4.1 KiB
C
#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__
|