1、按照PID控制器的离散形式,直接把系数代进去。
2、对微分项进行近似(乘一个时间常数很小的惯性环节)。
这两种方法随便找本PID相关的书都能找到。
离散pid形式:y(k)=y(k-1)+Kp{e(k)-e(k-1)+T/Ti*e(k)+Td/T*[e(k)-2*e(k-1)+e(k-2)]
y(k),y(k-1)分别是k和k-1时刻的输出量,
e(k),e(k-1),e(k-2)分别是k,k-1,k-2 时刻的偏差值.
照这个编应该很简单。
原因在于这几句:
if u(k)>16.4
u(k)=16.4
end
你对PID的控制量做了限制,也就是PID最大输出16.4,得加大PID输出才能跟上你的设定值2.
从传递函数上看你这个系统的增益很大,稳定性很差,从根轨迹图上看离散系统就不是稳定系统,虽然连续系统是稳定的。所以这个PID的控制量稍微一大系统就发散掉了,故程序对控制量做了限制。
去掉上面那几句之后,我粗调了一个Kp=4,Ki=0.05,如下图,控制效果不好,最后能稳定。主要还是控制系统几乎是处于临界稳定状态。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)