70 lines
1.9 KiB
C
70 lines
1.9 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_pwmp_hd.h"
|
|
|
|
|
|
typedef enum
|
|
{
|
|
MODE_CONSTANT_CONTROL_ALGORITHM, ///< 恒定控制算法 gaopengjie
|
|
MODE_VARIABLE_FREQUENCY_CONTROL_ALGORITHM, ///< 变频控制算法 xushenghao
|
|
MODE_SPEED_CONTROL_ALGORITHM, ///< 速度控制算法 zhangxiaoming
|
|
MODE_FREQUENCY_DOMAIN_CONTROL_ALGORITHM, ///< 频域控制算法 hangdian
|
|
} mode_algorithm_e;
|
|
|
|
/// 测试项目
|
|
typedef enum
|
|
{
|
|
NO_TEST_PROJECT = 0, // 无测试项目
|
|
MODE_DIAGNOSIS = 1, // 性能诊断
|
|
MANUAL_TEST = 2, // 手动按键测试
|
|
TEST_PROJECT_MAX,
|
|
} test_project_e;
|
|
|
|
typedef struct
|
|
{
|
|
mode_pwmp_hd_params_u mode_pwmp_hd_params; ///< PWMP HD模式参数
|
|
} mode_params_t;
|
|
|
|
typedef struct
|
|
{
|
|
BOOL state; // TRUE:算法控制器可以运行 FALSE:算法控制器不可以运行
|
|
uint8_t mode; // 模式
|
|
} mode_ctrl_t;
|
|
|
|
typedef struct
|
|
{
|
|
mode_interface_req_t interface_req; ///< 模式接口请求
|
|
|
|
// 内部变量
|
|
uint16_t positioner_model; ///< 定位器型号
|
|
__IO test_project_e test_project; ///< 测试项目
|
|
__IO mode_ctrl_t ctrl; ///< 控制器
|
|
__IO uint32_t alog_control_ticks; ///< 算法控制数据刷新计数器
|
|
lpf_window_t *show_loop_lpf;
|
|
lpf_window_t *show_actual_lpf;
|
|
kalman_t loop_kalman;
|
|
kalman_t show_actual_kalman;
|
|
} mode_t;
|
|
|
|
extern void mode_init(void); ///< 工作模式初始化
|
|
extern mode_t *mode_get(void); ///< 获取工作模式
|
|
extern void mode_detection(void); ///< 工作模式处理
|
|
extern void mode_travel_statistics(void); ///< 行程统计
|
|
extern void mode_process(void); ///< 算法控制模块
|
|
extern void mode_test_process(void); ///< 测试模式处理
|
|
|
|
#endif
|