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

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