Simulink学习记录:一种非线性系统自适应控制器的搭建

matlab是控制人离不开的一个非常重要的一个工具,在计算、仿真等多方面科研工作中都会用到。simulink作为matlab中一种可视化的仿真工具,无疑对以上一系列工作的开展有着极大的帮助。

本文仅为作者本人对simulink这一工具的一个学习和复习,搭建的系统例子来源出自:

0基础直接带你上手matlab simulink仿真(不是标题党,讲解超级细致用心)(非线性系统自适应控制器的搭建)_哔哩哔哩_bilibili

作者本人毕业设计和后续工作是会深入用到simulink,并会接触PID和PI等控制系统。感觉这个up很不错,讲解很细致,续集里面也有关于PID控制系统的搭建。后续我也会接着观看。


正文

我的matlab是R2021a这个版本的。然后simulink就长这样。

其中,主要的功能都在这个库(Library Browser)里面

需要用到什么模块直接调用就OK了。不过我个人更倾向用以下快捷输入的方式来快速调用各种模块(前提是对各种模块的名字比较熟悉)

直接双击空白处,输入想要的模块的名字,选中即可!

这是最基本的东西,也是最重要的东西。咱需要做得就是去熟悉这些各种模块。

这里就记录本人操作过程中的一些不熟悉的点和个人认为重要、值得注意的点:

  1. ctrl+R:可以使模块旋转;

  1. 连线,按住右键选中间点进行连接;

  1. 右键点击拖动模块可以复制,左键点击进入该模块的设置;

  1. function模块:

关于function函数:一般不用加end,除非有嵌套;

然后关于函数块的调用:好像是从我这个版本开始Fcn模块就没有了。所以函数模块的调用一般都用这个:MATLAB Function

这个模块左键双击会跳转到大家熟悉的matlab界面,即直接在matlab里创建函数。

这个有两种用法:(可能有一种是我自己瞎摸索出来的)

(1)先确定好有几个参数,然后直接写好式子之后连线。

这种方法应该挺常用的嗷,使用的时候把y = u那个关系式改成自己需要的就可以了,如(y = a+b+c+d)

(2)通过Mux来连接,有点像以前的Fcn的用法(这是本人瞎搞出来的)

就像图中这三个,然后将左边的参数从上到下分别标注为u(1),u(2),u(3)等等,最后再用u(n)来写关系式。(以最下面这个sys函数为例)

  1. 子系统的快速创建。

框选——右键——create subsystem from selection (快捷键:ctrl + G)

  1. 关于微分积分的问题,咱们一般不用微分项而采用积分项。

因为微分项容易产生突变:如图以sint为例:

仿真器结果看出,有些函数用微分项是会产生突变的,所以尽量避免使用。而正确的方法就是采用积分项:

  1. 建议打开Diagnostic Viewer诊断窗口,在程序出错时,matlab能够精确的将错误定位到代码的第几行第几列,对于新手查错来说非常友好!


非线性系统自适应控制器的搭建

我也是按照前文提到的up的教程,自己搭建了一个非线性系统自适应控制器。在这其中学到了以上的不少内容,并且也自己发现并解决了不少问题。接下来就展示一下我的成果。

这个控制器长这个样子:

我自己搭建的系统长下面这样:很丑,很乱,所以这也就是S函数的优势就来了。想问我为啥没用S函数来搭建这个系统,问就是我还没学,隔几天了来。嘿嘿嘿。

左边那个蓝色的子系统长这样:

来看一下初始的仿真结果:

x1和x1d:

k和khat

更改几个参数得到的结果:

更改k值:

更改B(bias)值:

可以看出我们的仿真是成功并符合预期的!


未完待续!结束!

欢迎一起学习的友友跟我多多交流哇!

猜你喜欢

转载自blog.csdn.net/weixin_47723114/article/details/128592144