上一篇介绍了建立系统模型的三种方法,这一篇介绍如何调节pid,并用MATLAB仿真

调节pid的目标就是使得从模型中得到的增益能够使物理系统正常工作

调节pid的理论分析

pid的一般形式如下图

经过移动化简可以得到

现在我们的问题就简化成了在哪里放置这两个极点,和设置多大的增益?

在给微分器加上滤波器,相当于系统多了一个极点,滤波器的相关内容之后介绍

MATLAB仿真

仿真使用的模型还是我们上一篇使用的电机模型

随便取一个之前的模型进行pid控制仿真

先初始化电机模型的变量,再加上pid的必要模型,开始仿真

随便调了几下pid参数,得到下图的效果

调节零点位置和增益的方法

新名词介绍

根轨迹图(root locus)是控制理论及稳定性理论中,绘图分析的方式,可以看到在特定参数(一般会是反馈系统的环路增益)变化时,系统极点的变化。

说实话,这东西以前我听都没听过,在经过线上线下查找资料才算知道了这么个东西。

简单的说,这个图可以用来判断非时变系统系统的稳定性,以及计算系统增益并实现它的控制器

手画这个图是有许多规则的,不过我没有去了解,毕竟我时间也不多,只知道可以用MATLAB画

进入主题

有两种方法用于调节:Pole placement 和 Loop shaping

Pole placement

一个简单的开环系统,他的根轨迹图是这样的

在加入PID后,会引入新的零点和极点,就会变成这样

这种调节方法就是通过调节增益,从而得到希望的系统性能

Loop shaping

这个方法和上面的类似,换了种形式的图

论文介绍,这两种方法的性能都是差不多的,loop-shaping多了两个优点,(i)不需要在FRF上拟合LTI模型来设计控制器,并且(ii)随着控制器系数的平滑变化,增益调度的实现更加缓慢。

对于我来说,暂时只管怎么用,好不好用,就没有深入学习了

MATLAB仿真

下图是我用之前的模型随意调的pid的阶跃响应,可以看出是不符合我们的期望的,下面我们就使用MATLAB进行pid调节

我们首先需要做的是打开analysis->control design->control system designer,然后按照下面三张图所示,添加需要调节的pid模块,添加需要的信号

在control system designer的菜单栏中点击tuning methods,在下拉框中选择root locus editor,就可以得到下图

在new plot下选择new step,在弹出窗口按下图配置

最终效果如下

手动pid调节

手动调节说实话我是不太懂,我这里只是随便乱调一下表示可以手动修整而已

这里使用的是pole placement的方法,loop shaping也是类似的

自整定pid

这里主要还是介绍自整定pid,毕竟方便,不需要懂太多相关知识

在tuning methods下选择pid tuning

可以在弹出窗口中选择pid控制器的类型、性能等等,最后附上调节效果图

最后弄完后要在菜单栏选择update blocks

结尾

调节好的模型已上传github的项目库

参考资料