140 lines
3.3 KiB
C
140 lines
3.3 KiB
C
#ifndef __MODE_PWMP_HD_H__
|
|
#define __MODE_PWMP_HD_H__
|
|
#include "main.h"
|
|
#include "filter.h"
|
|
|
|
/*********************************** 宏定义 ***********************************/
|
|
#define FSM_WAIT(st) BIT_SET(st, BIT7)
|
|
#define FSM_IS_WAIT(st) (st & BIT7)
|
|
|
|
#define EXECUTE_PLAN EXECUTE_PLAN_1 // 执行方案
|
|
#define CON_MAX 4095 // 驱动最大值
|
|
#define CON_MIN 0 // 驱动最小值
|
|
|
|
/************************************ 枚举 ************************************/
|
|
// 模式任务
|
|
typedef enum
|
|
{
|
|
MINOR_PROCESS_CONTROL, // 控制
|
|
MINOR_PROCESS_ADJUST, // 整定
|
|
MINOR_PROCESS_TEST, // 测试
|
|
MINOR_PROCESS_STOP, // 停止
|
|
} mode_minor_process_state_e;
|
|
|
|
// 算法方案
|
|
typedef enum
|
|
{
|
|
EXECUTE_PLAN_1,
|
|
EXECUTE_PLAN_2,
|
|
EXECUTE_PLAN_3,
|
|
EXECUTE_PLAN_4,
|
|
} execute_plan_minor_e;
|
|
|
|
// 执行标志
|
|
typedef enum
|
|
{
|
|
EXECUTE_NONE = 0, // 不执行输出
|
|
EXECUTE_OUT = 1, // 执行输出
|
|
} execute_e;
|
|
|
|
// 整定状态
|
|
typedef enum
|
|
{
|
|
ADJUST_DISABLE, // 整定禁用
|
|
ADJUST_ONGING, // 整定进行中
|
|
ADJUST_OK, // 整定成功
|
|
|
|
} minor_adjust_state_e;
|
|
|
|
// 整定步骤
|
|
typedef enum
|
|
{
|
|
MINOR_ADJUST_IDEL,
|
|
MINOR_ADJUST_OVER,
|
|
|
|
} minor_adjust_step_e;
|
|
|
|
/*********************************** 结构体 ***********************************/
|
|
// 滤波器
|
|
typedef struct
|
|
{
|
|
lpf_window_t *handle;
|
|
uint16_t value;
|
|
|
|
} minor_filter_t;
|
|
|
|
// 执行器
|
|
typedef struct
|
|
{
|
|
execute_e code; // 执行标志
|
|
uint16_t dac; // 输出值
|
|
} execute_rsp_t;
|
|
|
|
// 存储数据
|
|
typedef struct
|
|
{
|
|
} mode_pwmp_hd_storage_data_t;
|
|
|
|
typedef union
|
|
{
|
|
uint8_t data[128];
|
|
mode_pwmp_hd_storage_data_t storage;
|
|
|
|
} mode_pwmp_hd_params_u;
|
|
|
|
// 测试任务
|
|
typedef struct
|
|
{
|
|
uint16_t output;
|
|
uint16_t travel_adc;
|
|
uint16_t minor_adc;
|
|
float32 drive_current;
|
|
|
|
} minor_test_t;
|
|
|
|
// 整定任务
|
|
typedef struct
|
|
{
|
|
BOOL enable; // 整定使能
|
|
minor_adjust_step_e step; // 当前整定步骤
|
|
minor_adjust_step_e next_step; // 下个整定步骤
|
|
minor_adjust_step_e execute_step; // 执行整定步骤
|
|
|
|
} minor_adjust_t;
|
|
|
|
// 控制任务
|
|
typedef struct
|
|
{
|
|
__IO uint32_t enter_count; // 用于100ms蓝牙输出计时器
|
|
float32 ctrl_target; // 目标值
|
|
float32 ctrl_feedback; // 反馈值
|
|
float32 real_error; // 实际误差
|
|
uint16_t current_adc; // 当前ADC值
|
|
|
|
} minor_control_t;
|
|
|
|
// 小回路模式句柄
|
|
typedef struct
|
|
{
|
|
uint8_t process_state; // 当前任务
|
|
uint8_t adjust_state; // 整定状态
|
|
minor_filter_t target_lpf; // 目标滤波器
|
|
minor_filter_t actual_lpf; // 实际滤波器
|
|
execute_rsp_t execute; // 执行器
|
|
minor_test_t test; // 测试任务
|
|
minor_adjust_t adjust; // 整定任务
|
|
minor_control_t control; // 控制任务
|
|
mode_pwmp_hd_params_u *save; // 存储数据
|
|
void (*params_save_cb)(void); // 存储函数
|
|
} mode_minor_t;
|
|
|
|
/*********************************** 外部声明 ***********************************/
|
|
extern mode_minor_t *mode_minor;
|
|
|
|
void mode_minor_init(uint16_t positioner_model, mode_pwmp_hd_params_u *params, void (*params_save_cb)(void));
|
|
void mode_minor_dinit(void);
|
|
void mode_minor_process(void);
|
|
void minor_process_state_set(mode_minor_process_state_e state);
|
|
|
|
#endif // __MODE_PWMP_HD_H__
|