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/lib/control/custom/pid_c.c

39 lines
1.0 KiB
C

#include "pid_c.h"
/**
* @brief 设置PID控制器参数
* @param {PID_C} *self - PID控制器结构体指针
* @param {float32} kp - 比例系数
* @param {float32} ki - 积分系数
* @param {float32} kd - 微分系数
* @param {float32} out_min - 最小输出
* @param {float32} out_max - 最大输出
* @return {*} - 空
*/
static void _set_ctrl_prm(struct PID_C *self, float32 kp, float32 ki, float32 kd, float32 out_min, float32 out_max)
{
self->pri.kp = kp; /*比例系数*/
self->pri.ki = ki; /*积分系数*/
self->pri.kd = kd; /*微分系数*/
self->pri.deadband = 0.5; /*死区*/
self->pri.maximum = out_max; /*最大输出*/
self->pri.minimum = out_min; /*最小输出*/
self->pri.last_error = 0; /*上一次误差*/
self->pri.prev_error = 0; /*上上次误差*/
}
static float32 _PID(struct PID_C *self, float32 target, float32 feedback)
{
/**
* 实现PID算法
*/
return 0;
}
void pid_c_constructor(struct PID_C *self)
{
self->set_ctrl_prm = _set_ctrl_prm;
self->PID = _PID;
}