1 Star 10 Fork 10

GuanGuan / 无感浮点FOC开源库

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
PIController.c 1.40 KB
一键复制 编辑 原始数据 按行查看 历史
GuanGuan 提交于 2023-06-21 07:45 . V1.0.0
#include "PIController.h"
#include "FocConfig.h"
/**
* @brief pi计算
* @param target目标值 real实际值
* @return out输出值
*/
void PIControllerStep(PIController_t *pi)
{
float integ,out;
pi->err = pi->target - pi->real;
integ = pi->integral;
integ += pi->ki * pi->err * FOC_PWM_PERIOD;
out = integ + pi->kp * pi->err;
//防止积分饱和,限幅处理
if(out > pi->maxValue)
{
out = pi->maxValue;
}
else if(out < pi->minValue )
{
out = pi->minValue;
}
else
{
}
// if(pi->integSat < integ)
// {
// integ = pi->integSat;
// }
// else if(-pi->integSat > integ)
// {
// integ = -pi->integSat;
// }
pi->integral = integ;
pi->out = out;
}
/**
* @brief pi计算
* @param target目标值 real实际值
* @return
*/
void SpeedLoopStep(PIController_t *pi)
{
float integ,out;
pi->err = pi->target - pi->real;
integ = pi->integral;
integ += pi->ki * pi->err;
out = integ + pi->kp * pi->err;
//防止积分饱和,限幅处理
if(pi->integSat < integ)
{
integ = pi->integSat;
}
else if(-pi->integSat > integ)
{
integ = -pi->integSat;
}
pi->integral = integ;
pi->out = out + pi->lastout;
if(pi->out > pi->maxValue)
{
pi->out = pi->maxValue;
}
else if(pi->out < pi->minValue )
{
pi->out = pi->minValue;
}
else
{
}
pi->lastout = pi->out;
}
C
1
https://gitee.com/guanmingweiabc/foc_float.git
git@gitee.com:guanmingweiabc/foc_float.git
guanmingweiabc
foc_float
无感浮点FOC开源库
master

搜索帮助