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

180 lines
9.2 KiB
C
Raw 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 __TUNE_H__
#define __TUNE_H__
#include <stdint.h>
#include "data_type_def.h"
/*-----------------------------------------------------------------------------
共享宏定义
-----------------------------------------------------------------------------*/
#define AUTO_TUNE_OBJ_NUM 1 /*定义同时需要自整定对象资源的最大个数*/
typedef int32_t TUNE_ID_t; /*自整定类型定义正常Id为>=0,若小于零则返回的Id错误*/
/*-----------------------------------------------------------------------------
数据类型定义
-----------------------------------------------------------------------------*/
typedef enum /*PID控制器类型*/
{
CONTROLER_TYPE_PI, /*PI控制器*/
CONTROLER_TYPE_PID, /*PID控制器*/
} TUNE_CONTROLER_TYPE_t;
typedef enum /*PID状态*/
{
TUNE_INIT = 0, /*PID自整定初始化中*/
TUNE_START_POINT, /*寻找起始点*/
TUNE_RUNNING, /*PID自整定中*/
TUNE_FAIL, /*整定失败*/
TUNE_SUCESS, /*整定成功*/
} TUNE_STAT_t;
typedef enum /*驱动器作用*/
{
POSITIVE_ACTION, /*设定值大于测量值时,执行单元执行高输出*/
NEGATIVE_ACTION, /*设定值大于测量值时,执行单元执行低输出*/
} DRIVER_ACTION_TYPE_t;
typedef struct TUNE_CFG_PARAM_tag
{
TUNE_CONTROLER_TYPE_t cTrlType; /*控制器类型默认PD控制器*/
DRIVER_ACTION_TYPE_t acterType; /*驱动器作用类型,默认正向作用*/
uint32_t hysteresisNum; /*反馈值在设定值处的迟滞相应个数默认为5*/
float32 maxOutputStep; /*最大输出阶跃值默认值为50*/
float32 minOutputStep; /*最小输出阶跃值默认值为0*/
float32 setpoint; /*整定设定值,默认值为为50*/
float32 ampStdDeviation; /*幅值标准差预期值,用来计算自整定波形是否稳定*/
float32 cycleStdDeviation; /*周期标准差预期值,用来计算自整定波形是否稳定*/
} TUNE_CFG_PARAM_t, *pTUNE_CFG_PARAM_t; /*pid自整定对象配置参数*/
typedef struct TUNE_OGJ_tag *pTUNE_OBJ_t; /*PID自整定参数*/
/*-----------------------------------------------------------------------------------
函数原型: void TUNE_Init(void)
功 能: 初始化自整定相关参数,使用默认的TUNE_CFG_PARAM_t参数初始化自整定参数
default cTrlType = CONTROLER_TYPE_PI,
default outputStep = 50,
default hysteresisNum = 5
输入参数: NA
输出参数: NA
返 回 值: true:pram is protected can't be modifid; false: writable
-----------------------------------------------------------------------------------*/
extern void TUNE_Init(void);
/*-----------------------------------------------------------------------------------
函数原型: TUNE_ID_t TUNE_New(pTUNE_CFG_PARAM_t pParam)
功 能: 新建一个PID自整定对象
输入参数: pParam自整定对象配置参数
输出参数: NA
返 回 值: <0则新建自整定对象失败可能对象资源已经用完需要通过更改AUTO_TUNE_OBJ_NUM宏定义
增加自整定对象资源,>=0,则为分配的自整定id后续函数调用均通过此Id
-----------------------------------------------------------------------------------*/
extern TUNE_ID_t TUNE_New(pTUNE_CFG_PARAM_t pParam);
/*-----------------------------------------------------------------------------------
函数原型: TUNE_ID_t TUNE_New(pTUNE_CFG_PARAM_t pParam)
功 能: 释放ID所示自整定对象资源
输入参数: id:自整定ID
输出参数: NA
返 回 值: false:资源释放失败true:资源释放成功
注意事项: 只有在tuneStat为TUNE_FAIL或者TUNE_SUCESS状态下才允许释放资源
-----------------------------------------------------------------------------------*/
extern BOOL TUNE_Release(TUNE_ID_t id);
/*-----------------------------------------------------------------------------------
函数原型: BOOL TUNE_Work(TUNE_ID_t id, float32 feedbackVal, float32*outputVal)
功 能: 自整定任务
输入参数: id:自整定ID
delayMsec:调用的时间间隔
输出参数: outputVal:输出值
返 回 值: true:自整定完成false:正在自整定中
注意事项: 该函数需要以固定的时间间隔调用
-----------------------------------------------------------------------------------*/
extern TUNE_STAT_t TUNE_Work(TUNE_ID_t id, float32 feedbackVal, float32 *outputVal, uint32_t delayMsec);
/*-----------------------------------------------------------------------------------
函数原型: BOOL TUNE_SetActerType(TUNE_ID_t id, float32 maxStep,DRIVER_ACTION_TYPE_t type)
功 能: 设置驱动器类型
输入参数: id:自整定ID
type:驱动器类型
输出参数: NA
返 回 值: true:设置成功false:设置失败
-----------------------------------------------------------------------------------*/
extern BOOL TUNE_SetActerType(TUNE_ID_t id, DRIVER_ACTION_TYPE_t type);
/*-----------------------------------------------------------------------------------
函数原型: BOOL TUNE_Setsetpoint(TUNE_ID_t id, float32 setpoint)
功 能: 设置自整定设定值
输入参数: id:自整定ID
setpoint:自整定设置值
输出参数: NA
返 回 值: true:设置成功false:设置失败
-----------------------------------------------------------------------------------*/
extern BOOL TUNE_Setsetpoint(TUNE_ID_t id, float32 setpoint);
/*-----------------------------------------------------------------------------------
函数原型: BOOL TUNE_SetOutStep(TUNE_ID_t id, float32 maxStep,float32 minStep)
功 能: 设置输出阶跃值
输入参数: id:自整定ID
maxStep:最大输出阶跃值
minStep:最大输出阶跃值
输出参数: NA
返 回 值: true:设置成功false:设置失败
------------------------------------------------------------------------------------*/
BOOL TUNE_SetOutStep(TUNE_ID_t id, float32 maxStep, float32 minStep);
/*-----------------------------------------------------------------------------------
函数原型: BOOL TUNE_SetCtrlType(TUNE_ID_t id, TUNE_CONTROLER_TYPE_t type)
功 能: 设置控制器类型
输入参数: id:自整定ID
type:
CONTROLER_TYPE_PIPI控制器,积分项不使用
CONTROLER_TYPE_PIDPID控制器
输出参数: NA
返 回 值: true:设置成功false:设置失败
-----------------------------------------------------------------------------------*/
extern BOOL TUNE_SetCtrlType(TUNE_ID_t id, TUNE_CONTROLER_TYPE_t type);
/*-----------------------------------------------------------------------------------
函数原型: float32 TUNE_GetKp(TUNE_ID_t id, float32 *pfactorP)
功 能: 获取整定后的P参数
输入参数: id:自整定ID
输出参数: pfactorP:整定后的P参数
返 回 值: true:获取成功,否则失败
-----------------------------------------------------------------------------------*/
extern float32 TUNE_GetKp(TUNE_ID_t id, float32 *pfactorP);
/*-----------------------------------------------------------------------------------
函数原型: float32 TUNE_GetKp(TUNE_ID_t id)
功 能: 获取整定后的I参数
输入参数: id:自整定ID
输出参数: pfactorI:整定后的I参数
返 回 值: true:获取成功,否则失败
-----------------------------------------------------------------------------------*/
extern float32 TUNE_GetKi(TUNE_ID_t id, float32 *pfactorI);
/*-----------------------------------------------------------------------------------
函数原型: float32 TUNE_GetKp(TUNE_ID_t id)
功 能: 获取整定后的D参数
输入参数: id:自整定ID
输出参数: pfactorD:整定后的D参数
返 回 值: true:获取成功,否则失败
---------------------------------------------------------------------------------------*/
extern float32 TUNE_GetKd(TUNE_ID_t id, float32 *pfactorD);
/*-----------------------------------------------------------------------------------
函数原型: float32 TUNE_GetKp(TUNE_ID_t id)
功 能: 获取整定后的PID参数
输入参数: id:自整定ID
输出参数: NA
返 回 值: true:获取成功,否则失败
-----------------------------------------------------------------------------------*/
extern BOOL TUNE_GetPID(TUNE_ID_t id, float32 *paramP, float32 *paramI, float32 *paramD);
/*-----------------------------------------------------------------------------------
函数原型: float32 TUNE_GetStat(TUNE_ID_t id, TUNE_STAT_t *pStat)
功 能: 获取PID自整定状态
输入参数: id:自整定ID
输出参数: stat自整定状态
返 回 值: true:获取成功,否则失败
-----------------------------------------------------------------------------------*/
extern BOOL TUNE_GetStat(TUNE_ID_t id, TUNE_STAT_t *pStat);
#endif /* __TUNE__H*/