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_def.h

117 lines
4.1 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_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__