matlab中如何将PID控制器离散化

matlab中如何将PID控制器离散化,第1张

两种做法:

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,如下图,控制效果不好,最后能稳定。主要还是控制系统几乎是处于临界稳定状态。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12052033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存