word版本hslogic_基于Simulink的自适应模糊控制器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Simulink的自适应模糊控制器
1.从论文的结构中可以看到,整个系统的完整结构为:
那么系统的自适应模糊控制模块可以简化为如下的结构:
只不过模糊输入的三个变量都是通过输出反馈得到的数据,从而构成自适应反馈系统。

按论文中的说法:
航向角偏差,舷摇角速度,
航迹偏差,输出为命令舵角。

由于您要求的是完全按照论文的要求做,所以下面我们开始根据论文的要求分步骤设计:设计准备
初始路经数据xd和yd的产生。

具体查看以下函数。

这个是默认六个点P1,P2,P3,P4,P5,P6图,我们需要得到点之间的路经的坐标。

其结果如下:
在matlab的workspace中,我们可以看到,我们得到了中间点坐标。

共6004个。

具体点的个数可以根据实际的需要进行求解。

首先我们要弄的是如下的结构:
下面开始编辑模糊模块fis文件。

打开并运行得到如下的窗口。

下面我们根据论文中的要求进行编辑。

其结果如下所示:
模糊规则如下所示:共49个规则。

这样就定义好了fis文件
下面在用simulink搭建模块之前,需要加载fis文件,运行如下的代码。

这样的话,我们就完成了整个系统的核心部分,模糊模块,下面要在simulink构建仿真环境。

第二部分,我们将介绍自适应模糊系统的设计与实现。

注意论文的conditions模块是归一化模块,就是将输入的信号的幅度变为-3.3之间。

具体的理论是,假设输入的信号是x1,x2,x3,x4,………………..
则conditions的计算公式是x = 3*x/max(x1,x2,x3,。


本系统,信号源采用的是m文件生成的数据,在simulink中自动加载进去。

由公式
其中xd和yd就是导入的数据。

真个模块如下所示:
首先在simulink中需要构建一个求反正切的模块,由于反正切没有直接模块,我们需要用查找表进行设计。

找到这个模块。

双击:
点击EDIT
这里就是查找表的内容,我们可以增加数值,实现查找表。

完成反正切后的表格如下所示:
这样设置以后,然后OK,就能生成反正切的表格了。

这个就是反正切模块。

对于这个模块,就是对角度求导数就行了。

比较简单,其simulink如下所示:
上面的部分,是基本模块模块的设置,下面将针对自适应模糊模块进行设置。

注意,这里和上面的区别就是,输入的e,r和输出的y都乘以一个增益,而这个增益由自适应反馈控制。

首先要得到d的值。

在论文中d的值计算公式为:
这个模块的FGC就是以下这个模块
这个模块也是一个模糊控制器。

具体的设置方法前面已经介绍了,下面给出设置结果。

下面开始进行仿真。

第一步,假设知道角度的前提下进行仿真(论文中为提供这个步骤)
这个模块是假设角度已知的情况进行计算的.
其中对应于
对应于
从而通过e和r输入模糊控制模块,
这个模块是船舶航向运行方程的传递函数。

参数这里是任意设置的。

仿真得到如下的结果:
然后用最常用的方波进行检测,。

上面的结果说明FUZZY这个模块已经正确了。

下面开始论文中的仿真。

第二部,开始仿真基本模糊系统
其simulink模块如下所示:
由于本模块的主要输入和相关,而是系统通过模糊控制反馈得到的,所以这里我们需要用MATLAB模拟产生的数据作为仿真参数。

通过仿真得到如下的结果:
第三部分,开始仿真自适应模糊系统
也就是第二部分的几个增益值改为自动调整的值。

针对这个问题,论文中可能有点问题,因为三个FGC是同样的模块,但是每个模块的输入是相同的两个,而输出信号却是ke,kr,ky三个不同的值,这个有点不可能,我们通过验证,对于Kr和Ky这两个值直接设置为1即可,这里我们只对Ke进行自适应调整。

其仿真结果如下所示:
比原先的略微好那么一点点。

以上的步骤解决了论文中的几个模糊的问题,下面设计路线仿真那个问题。

最后要仿真那个路线图,但是仿真路线图之前,需要先重点解决如下的问题。

就是上次你想单独让我们看的部分:
然后之前你要求的重点是:
这里重点对你的这个部分做设计,介绍与仿真这个就涉及到一个拐点问题。

本课题的way points为:
p0=[0 0];
p1=[1000 0];
p2=[1000 2000];
p3=[3000 2500];
p4=[4000 2000];
p5=[4000 0];
p6=[2000 -1000];
整个论文内容非常丰富,所以代码包很多,下面进行说明。

由于本系统中涉及到很多模块在simulink中没有,所以无法100%simulink中实现,这里我们结合MATLAB的m程序一起设计。

每个代码前都有一个标号,下面进行逐次说明。

这个主要是初始化way point。

已经模拟一个路经的坐标值,并保存船的速度!这个代码包,主要是用来产生路线,就是将路线数字化。

其运行结果会得到
这个就是整个路经的所有的点的坐标。

这个运行后会打开fuzzy编辑器。

编辑好以后,产生如下的文件:
加载fis文件。

(注意每次运行simulink文件前,这个代码必须先运行)
然后运行下面这个mdl文件。

进行基本的测试。

然后运行和查看仿真结果。

然后运行
然后运行
最后运行。

相关文档
最新文档