上一节 在matlab建模,这一节PID控制.
一、模型
直接先放一张matlab simulink的模型(只有直线速度环和平衡环,串联PID),就在上一节的基础上加了两个PID。
二、PID控制
PID的好处就是可以不用动力学建模(当然用最好,从根轨迹分析去找参数),免去一大堆的公式计算(就算炼丹式调参),但是不好调参,至于PID的原理,可以去b站后cdsn搜,一搜一大堆,个人推荐去B站搜,视频直接点。
注意几点:P 比例项存在zero稳态误差,占整个控制量的50%-60%左右
;D并不影响稳态(把对象往稳态拉回来),只影响动态(拉得有多快);I主要影响稳态;
为了安全起见,有几个trick:
1.积分限幅;如果用了积分I,如果被控对象被卡住(或者被人按住),那可能E(误差)就飘很大,所以可以考虑对积分进行条件判断进行限制;
2.积分分离:为防止E突变很大,导致I突变,超调量就变得很大,可以在E一定范围内积分才继续(当E大于某个阈值时就不要进行I积分,该轮的ei为0);
3.微分先行: 防止一开始E突变,让D项不收E影响,不把E喂给D,而是直接把反馈喂给D;
(一)如何调PID
先了解PID相关的传递函数
以上就是如果知道模型(如平衡小车的动力学模型),直接用根轨迹分析,看看P D I不同参数下的表现来选取参数,但实际上很多情况是不知道模型的,可以按下面这种方面调参:
Ku 是临界P值大小,就算临近系统发散时的比例项P大小,Tu就算临界调节时间。
不过simulink里面有个直接帮你计算PID的选项,可以省事很多,如下图
本例的平衡小车matlab仿真做了两个控制环,一个速度环串接平衡环,调的时候先单独调平衡环,再加入速度环PID调速度环,平衡环不用D项,如果想手调可以参考上面的ZN方法试试。