80 lines
2.6 KiB
C
80 lines
2.6 KiB
C
/**
|
|
* @file mode.h
|
|
* @author xxx
|
|
* @date 2023-09-18 10:37:29
|
|
* @brief
|
|
* @copyright Copyright (c) 2023 by xxx, All Rights Reserved.
|
|
*/
|
|
|
|
#ifndef __MODE_H__
|
|
#define __MODE_H__
|
|
|
|
#include "lib.h"
|
|
#include "filter.h"
|
|
#include "mode_def.h"
|
|
|
|
#include "mode_dac.h"
|
|
#include "mode_pwmp.h"
|
|
#include "mode_pwmp_hd.h"
|
|
#include "mode_control.h"
|
|
|
|
typedef enum
|
|
{
|
|
MODE_VARIABLE_FREQUENCY_CONTROL_ALGORITHM, ///< 变频控制算法 xushenghao
|
|
MODE_CONSTANT_CONTROL_ALGORITHM, ///< 恒定控制算法 gaopengjie
|
|
MODE_SPEED_CONTROL_ALGORITHM, ///< 速度控制算法 zhangxiaoming
|
|
MODE_FREQUENCY_DOMAIN_CONTROL_ALGORITHM, ///< 频域控制算法 hangdian
|
|
} mode_algorithm_e;
|
|
|
|
/// 测试项目
|
|
typedef enum
|
|
{
|
|
TEST_ITEM_NONE, // 无测试项目
|
|
TEST_ITEM_DIAGNOSIS, // 性能诊断
|
|
TEST_ITEM_MANUAL, // 手动按键测试
|
|
TEST_ITEM_MAX,
|
|
} test_item_e;
|
|
|
|
typedef union
|
|
{
|
|
mode_dac_storage_data_t dac;
|
|
pwmp_storage_pars_t pwmp;
|
|
mode_pwmp_hd_storage_data_t pwmp_hd;
|
|
mode_control_storage_t control;
|
|
} mode_params_u;
|
|
|
|
typedef struct
|
|
{
|
|
BOOL state; // TRUE:算法控制器可以运行 FALSE:算法控制器不可以运行
|
|
uint8_t *mode; // 模式
|
|
} mode_ctrl_t;
|
|
|
|
typedef struct
|
|
{
|
|
mode_interface_req_t interface_req; ///< 模式接口请求
|
|
|
|
// 内部变量
|
|
test_item_e test_item; ///< 测试项目
|
|
mode_adjust_initiate_e adjust_initiate; ///< 自整定发起方式,用于上位机整定流程
|
|
uint16_t positioner_model; ///< 定位器型号
|
|
__IO mode_ctrl_t ctrl; ///< 控制器
|
|
|
|
kalman_t loop_current_km; ///< 环路电流卡尔曼滤波器
|
|
lpf_t pressure_cross_point_lpf; ///< 压力交叉点滤波器
|
|
lpf_window_t show_target_window; ///< 显示目标滤波
|
|
lpf_window_t pressure_s_window; ///< 压力S滤波
|
|
lpf_window_t pressure_a_window; ///< 压力A滤波
|
|
lpf_window_t pressure_b_window; ///< 压力B滤波
|
|
} mode_t;
|
|
|
|
extern void mode_init(void); ///< 工作模式初始化
|
|
extern void mode_enter_test(test_item_e item); ///< 模式测试
|
|
extern mode_t *mode_get(void); ///< 获取工作模式
|
|
extern void mode_master_detection(void); ///< 工作模式处理
|
|
extern void mode_travel_statistics(void); ///< 行程统计
|
|
extern void mode_ctrl_process(void); ///< 算法控制模块
|
|
extern void mode_ctrl_gather(void); ///< 算法控制模块数据采集
|
|
extern void mode_ctrl_output(void); ///< 控制输出模式函数
|
|
extern void mode_pressure_statistics(void); ///< 压力统计
|
|
#endif
|