39 lines
1.0 KiB
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;
|
|
}
|