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

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