foc学习笔记4

您所在的位置:网站首页 什么叫做串级控制 foc学习笔记4

foc学习笔记4

2023-07-29 05:20| 来源: 网络整理| 查看: 265

foc学习笔记4——速度环和位置环

PID的资料网上有很多,包括原理以及调试,相信大家对于PID都有着自己的理解,因此这里就不多介绍了。本节只讲一些针对电机的关键东西,避免新手朋友因为歧义而发生错误。

加上速度环和位置环的foc框图

在这里插入图片描述

什么叫串级PID

​ 这里先看一个我自己用的PID代码:

struct PID_Type{ float32_t kp; //P、I、D各自参数 float32_t ki; float32_t kd; float32_t target; //PID给定目标值 float32_t value; //由传感器之类的采集到的值 float32_t error; //目标减去测量值得到的误差 float32_t errSum; //积分项的累加和 float32_t errSumMax; //积分限幅 float32_t lastErr; //保存上一次的误差 float32_t errDt; //计算误差的增量 float32_t result; //最终计算结果 }; float32_t PIDGetResult(struct PID_Type *pid, float32_t valMax) { pid->error = pid->target - pid->value; pid->errSum += pid->error * pid->ki; if(pid->errSum > pid->errSumMax) pid->errSum = pid->errSumMax; else if(pid->errSum errSumMax) pid->errSum = -pid->errSumMax; pid->errDt = pid->error - pid->lastErr; pid->lastErr = pid->error; pid->result = pid->kp * pid->error + pid->errSum + pid->kd * pid->errDt; if(pid->result > valMax) pid->result = valMax; else if(pid->result result = -valMax; return pid->result; }

槽点比较多,知道意思就好。

​ 不知道有没有人对于串级PID的理解是这样的(我之前也有过困惑):

iqTarget = speedPID.result + positionPID.result;

iq目标等于速度环PID运算结果加上位置环PID运算结果。

​ 甚至是这样的:

uqTarget = iqPID.result + speedPID.result + positionPID.result;

uq给定值等于三环PID的运算结果。

这样是不对的!!!这不叫串级PID,应该叫并联PID!!!

​ 下面简单地展示一下串级PID到底是什么形式:

void CascadePID(float32_t target) { positionPID.target = target; speedPID.target = PIDGetResult(&positionPID, aa); idPID.target = 0; iqPID.target = PIDGetResult(&speedPID, bb); udTarget = PIDGetResult(&idPID, cc); uqTarget = PIDGetResult(&iqPID, cc); }

位置环的输出赋给速度环的目标,然后速度环的输出赋给iq电流环的目标,最终id、iq电流环的输出赋给ud、uq目标。本质就是外环的输出等于内环的输入,而最外环的输入则是人为给定的。

​ 我们还可以改变代码中aa、bb、cc的值来控制内环的最大输出。

补充说明

​ 有人可能要问了,能不能不要这种位置环->速度环->电流环->uq的形式,去掉速度环改成位置环->电流环->uq的形式,或者去掉电流环改成位置环->速度环->uq的形式。其实这样也是可以的,就是控制效果可能会差一些,PID会更难调一点,各位自行掂量吧。但别搞出什么速度环->电流环->位置环->uq的形式。

​ 再说一下三环的计算频率。电流环的频率是可以等于foc的运算频率的,而foc的运算频率最高能达到mos管的开关频率,高于开关频率就没有意义了。如果只是自己做着玩,我建议mos管开关频率高于16KHz,否则会很吵。所以如果你的单片机算的过来的话,foc运算频率就等于开关频率。如果算不过来STM32的高级定时器有个重复计数寄存器,可以输出几个pwm才产生一次中断,或者也可以在中断函数里软件计数。那么电流环以及foc的运算频率就定下来了,而速度环和位置环的频率要低于电流环频率几倍。比如开关频率是16k,foc运算频率和电流环频率也是16k,那么速度环和位置环的频率可以取2k甚至更低。速度环和位置环的频率可以一样也可以不一样,总之内环的频率不要比外环频率还低。

​ 最后关于调参或者参数整定这块,说实话本人没什么经验,基本就是瞎试然后看效果,各位自己琢磨吧。提一点就是电流环PI项就够了,速度环也只要PI项,位置环P项就够了也可以加一点D。

参考资料

视频:硬石相关章节



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3