马达驱动软件问题

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;

}

blob.png

6 条回答