马达驱动软件问题
- BLDC001
- 免费
- 来自:马达驱动
- 2018-11-13
黄忠老师,请问众筹有感软件中关于PID的部分(代码如下),关于PID的计算用的是位置式PID算法还是增量式的?我的理解是EurDesir是设定的目标值,measure是实测的数值。他两的差值是Err,然后dat=Kp*e(t)-Ki*(e(t-1)),这似乎是和一些教材上的公式不一样啊。能否指点一下如下函数是如何实现PI计算的?谢谢!
int PidFun(unsigned int EurDesir,unsigned int measure)
{
int Err,dat;
Err = EurDesir-measure; //得到误差
dat = (sPID.kp * Err) - (sPID.ki * sPID.PreErr);
if(dat>10) dat = 10;
else if(dat< -10) dat = -10; //防止超调输出限制
sPID.PreErr = Err; //更新前次误差
return dat;
}