MATLAB仿真技术与应用.docx

上传人:b****6 文档编号:8111584 上传时间:2023-01-28 格式:DOCX 页数:16 大小:431.23KB
下载 相关 举报
MATLAB仿真技术与应用.docx_第1页
第1页 / 共16页
MATLAB仿真技术与应用.docx_第2页
第2页 / 共16页
MATLAB仿真技术与应用.docx_第3页
第3页 / 共16页
MATLAB仿真技术与应用.docx_第4页
第4页 / 共16页
MATLAB仿真技术与应用.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

MATLAB仿真技术与应用.docx

《MATLAB仿真技术与应用.docx》由会员分享,可在线阅读,更多相关《MATLAB仿真技术与应用.docx(16页珍藏版)》请在冰豆网上搜索。

MATLAB仿真技术与应用.docx

MATLAB仿真技术与应用

例2-1已知一个系统的微分方程为:

其中,状态变量初始条件

,输入u为阶跃函数,要求利用SIMULINK对系统建立仿真模型,并绘制时域响应曲线。

在利用SIMULINK创建模型之前,先把微分方程进行拉普拉斯变换,得到每个微分方程的传递函数,即用传递函数的形式表示系统。

连接信号之后的系统模型图exam2_1

系统时域响应曲线

例7-9一个控制系统由5个子系统组成,组成结构如下图

各子系统的传递函数分别为:

试在MATLAB中分别用仿真模块建模和仿真命令编程两种方法进行仿真,并绘制系统的阶跃响应曲线图。

首先在Simulink环境下将所需要的仿真模块连接起来,并将各模块的参数设置好。

系统的仿真模型图exam7_9

系统的阶跃响应

MATLAB程序如下:

%controlsystemsimulation

clearall;

clc;

num1=[151];

den1=[2156];

G1=tf(num1,den1);

z=-6;

p=[-2;-20];

k=4;

G2=zpk(z,p,k);

G3=tf(10,[110]);

num4=[11];

den4=[136];

G4=tf(num4,den4);

H=0.1;

Gf=(G1*G2+G3)*G4;

G=feedback(Gf,H);

GG=tf(G);

step(G);

%axis([01000.35])

gridon

程序运行后得到的阶跃响应曲线如图所示。

系统的阶跃响应

程序运行结果为:

Zero/pole/gain:

12(s+0.3845)(s+1)(s+2.199)(s+7.054)(s+18.45)

-----------------------------------------------------------------------------------------

(s+19.99)(s+9.88)(s+7.077)(s+1.993)(s+0.4234)(s^2+3.137s+6.217)

Transferfunction:

12s^5+349s^4+2699s^3+6654s^2+5612s+1320

---------------------------------------------------------------------------------------------------------------

s^7+42.5s^6+628.7s^5+4227s^4+1.441e004s^3+2.788e004s^2+2.684e004s+7332

从结果可以看出,采用仿真模块建模实现仿真的方法与采用仿真命令实现仿真的方法得到的仿真结果是完全相同的。

采用哪一种方法进行仿真,可以根据实际情况而定。

一般说来,采用仿真模块建模实现仿真的方法更简单、方便,但采用仿真命令实现仿真的方法更灵活。

2.4.1利用输出模块分析

利用SIMULINK输出模块进行仿真结果分析输出有以下几种方法:

观察输出轨迹;

以文件形式输出;

直接显示数据输出;

用表盘和量计显示输出;

进行数字信号处理、分析输出。

1.观察输出轨迹

⑴信号输入到Scope模块或XYGraph(相轨迹示波器)模块观察输出轨迹。

图exam2_21

⑵将输出信号写入返回变量,并利用MATLAB命令绘图

在仿真结束后,在MATLAB工作空间自动生成两个变量tout和yout,分别返回时间矢量和各个输出端子的仿真结果。

执行plot(tout,yout)得图示结果。

图exam2_23

⑶使用ToWorkspace模块把输出写入到MATLAB工作空间,然后通过MATLAB的绘图命令绘制输出轨迹。

图exam2_25

2.以文件形式输出仿真结果

利用输出模块中的Tofile模块可以将仿真结果以Mat文件的格式直接保存到数据文件中。

3.直接显示数据输出

4.表盘和量计显示输出

Dials&Gauges

5.信号处理、分析输出

DSP模块、SIMULINKExtra模块

图exam2_29

2.5子系统

随着研究的系统越来越大,越来越复杂,直接使用基本的SIMULINK模块创建的系统模型会十分庞大,而且信号的传输方向也会变得十分不明显。

为了简化模型以及增加它的可读性,可以将一些独立功能的模块化分成一组,构成子系统。

2.5.1子系统的创建

使用子系统不仅可以使仿真模型中显示的模块数量减少,便于读图,而且还建立了层次化的仿真模型框图,子系统模块在一个层次,组成各个子系统的模块在另外一个层次。

创建子系统的方法有两种:

一种是利用模型中已经存在的模块创建子系统;另一种是通过向子系统模块加入新的模块创建子系统。

1.通过已有模块创建子系统

图exam2_33

通过比例、微分、积分模块创建PID控制器子系统的具体步骤:

⑴选中组成PID控制器的所有模块;

⑵执行Edit/Createsubsystem命令,则会把已经选中的模块装入一个名为subsystem的模块中。

2.通过子系统模块创建子系统

Simulink\CommonUsedBlocks\Subsystem

复制一个Subsystem模块到仿真模型窗口,然后双击该模块,产生一个模型窗口,最后利用创建SIMULINK仿真模型的方法把子系统包含的所有模块复制到其中,对其进行信号连接。

创建PID控制器子系统的具体过程:

2.5.2子系统的封装

利用前面介绍的方法创建子系统,到达了简化模型、提高模型可读性的目的。

但是这样建立的子系统要从MATLAB工作空间直接获取变量,与SIMULINK模块库中的基本模块还有很大差别,存在着不少缺陷。

因此,需要对所创建的子系统进行封装,进一步完善子系统。

所谓子系统的封装技术就是将对应的子系统的内部结构隐藏起来。

这样在访问此子系统模块时就只出现一个参数设置对话框,只要将所需要的变量参数输入到对话框中即可。

实际上,SIMULINK的基本模块也是子系统封装后得到的,所以子系统封装之后与基本模块是一致的。

子系统的封装过程如下:

⑴选中已创建的子系统,在仿真模型窗口的菜单栏执行Edit/Masksubsystem命令,将会打开MaskEditor对话框。

⑵利用封装编辑器可以实现子系统对话框的设计。

需要设计的内容主要包括子系统的图形标示、变量参数以及模块描述和帮助信息。

⑶关闭封装编辑器,则得到了新建的封装之后的子系统模块。

1.封装编辑器

⑴Icon选项卡

①Masktype文本框:

可以任意填写,它接受中、英文输入。

②Drawingcommands(图形标示命令)文本框:

对封装后的子系统进行图形标识。

可以使用plot命令绘制图形,可以使用disp命令在子系统的图标上写入字符串名称,可以使用image函数进行图像显示。

③Iconframe(标识边框):

设置模块图标是否有边框,VisibleorInvisible。

④Icontransparency(标识透明):

OpaqueorTransparent。

默认值Opaque:

图标上的图形会将子系统模块的端口信息覆盖。

⑤Iconrotation:

FixedorRotates.默认值Fixed,表示在旋转或反转子系统模块时,图标不会随之旋转或翻转。

Rotates,则表示在旋转或反转子系统模块时,图标会随之旋转或翻转。

⑥Drawingcoordinates(units):

Autoscal\Pixelse\Normalized.默认的格式Autoscale

⑵Initialization选项卡

在进行子系统模块封装时,最重要的一步就是设计子系统模块变量参数设置对话框,这需要在Initialization选项卡中完成,可以对封装子系统模块的参数设置对话框进行变量参数的提示与设置的设计。

Initializationcommands,用于定义生成封装子系统模块过程中所需要的变量。

例如,封装系统模块过程中如果使用MATLAB的plot绘制模块图标,在此可以定义所需要的变量。

⑶Documentation选项卡

Documentation选项卡提供给用户编写封装子系统模块的性质说明和帮助信息。

Masktype\Blockdescription\Blockhelp

2.封装实例:

PID控制器子系统模块封装

⑴模块显示“PIDController”:

在Drawingcommands中输入disp(‘PIDController’)。

⑵在Parameters(以前版本在Initialization中)选项卡中设计封装后子系统参数设置对话框,PID控制器需要传递的变量参数有3个,单击Add按钮3次,即生成3个需要传递变量的位置。

⑶在Documentation选项卡中,为PID控制器子系统模块添加文字说明。

2.5.3条件执行子系统

在simulink模块库中,Enable模块和Trigger模块是比较特殊的模块,如果把这样的模块放到某个子系统中,该子系统会在给定的控制信号的控制下执行,这样的子系统称为条件执行子系统(conditionallyexecutedsubsystem)。

1.Enabledsubsystem

Enabledsubsystem只有控制信号为正时,才执行子系统,否则禁止执行。

实际上,它就是数字电路中的电平触发。

当它处于禁止状态时,为了保持系统输出的连续性,它也有信号输出。

用户可以选择继续保持禁止前的信号输出,也可以将子系统强制复位再指定输出值。

⑴Simulink\Ports&Subsystems\EnabledSubsystem

⑵设置Enable模块参数的方法:

首先双击Enable模块,然后进行设置heldorreset。

⑶通过选通showoutputport复选框以设置是否允许系统输出使能控制信号。

⑷Enabledsubsystem的Out1模块,设置Enabledsubsystem在禁止状态下的输出信号。

在Outputwhendisabled中,如果选择held,则在禁止状态下的输出将保持禁止前的状态值;如果选择reset,则子系统被强制复位,并且此时的输出需要在InitialOutput中设置。

⑸使用Enablesubsystem模块实现半波整流系统的仿真。

半波整流系统在输入信号为正时,输出原信号,否则输出为零。

图exam2_45

2.Triggeredsubsystem

Triggeredsubsystem是在触发信号发生的瞬间执行子系统,然后保持子系统的输出状态,直到下一个触发信号到来。

⑴Simulink\Ports&Subsystems\TriggeredSubsystem

⑵用户可以对触发信号进行如下设置:

①上升沿触发:

②下降沿触发:

③边沿触发:

当输入信号发生变化时,即出现上升沿或下降沿时,均执行Triggeredsubsystem。

④另外,还有一种使Triggeredsubsystem执行的情况,就是函数调用触发,此时Triggeredsubsystem的执行取决于S函数内部的逻辑,而与触发信号无关。

⑶仿真系统的仿真模型如图所示,这里使用下降沿触发。

图exam2_48

3.EnableandTriggeredsubsystem

2.5.4定义自己的模块库

如果用户建立了很多封装子系统模块,常常需要建立自己的模块库,用于分门别类地存储这些模块。

另外,在进行仿真建模时,为了减少打开模块库的次数和方便系统仿真建模,用户通常也需要将实现某种功能的一组常用模块统一放置在同一模块库中。

创建模块库方法:

在SimulinkLibraryBrowser窗口的菜单栏中执行File/New/Library命令,将需要存放在同一个模块库中的模块复制到模块库窗口即可。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1