电机控制基于的仿真演示_第1页
电机控制基于的仿真演示_第2页
电机控制基于的仿真演示_第3页
电机控制基于的仿真演示_第4页
电机控制基于的仿真演示_第5页
已阅读5页,还剩186页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(优选)电机控制基于的仿真当前第1页\共有191页\编于星期六\10点1Simulink简介Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。使用Simulink来建模、分析和仿真各种动态系统(包括连续系统、离散系统和混合系统),将是一件非常轻松的事情。它提供了一种图形化的交互环境,只需用鼠标拖动的方法便能迅速地建立起系统框图模型,甚至不需要编写一行代码。利用Simulink进行系统的建模仿真,其最大的优点是易学、易用,并能依托MATLAB提供的丰富的仿真资源。当前第2页\共有191页\编于星期六\10点提供了仿真库的扩充和定制机制Simulink的开放式结构允许用户扩展仿真环境的功能:采用MATLAB、FORTRAN和C代码生成自定义模块库,并拥有自己的图标和界面。与MATLAB工具箱的集成由于Simulink可以直接利用MATLAB的诸多资源与功能,因而用户可以直接在Simulink下完成诸如数据分析、过程自动化、优化参数等工作。当前第3页\共有191页\编于星期六\10点Simulink应用领域当前第4页\共有191页\编于星期六\10点2Simulink启动及模型建立Simulink的启动主要有以下两种方法:在MATLAB的命令窗口中输入simulink,结果是在桌面上出现一个SimulinkLibraryBrowser的窗口。单击MATLAB主窗口的快捷按钮,打开SimulinkLibraryBrowser窗口。当前第5页\共有191页\编于星期六\10点Simulink模型窗口的建立

在Simulink中打开一个空白的模型窗口的方法:选中Simulink菜单系统中的File|New|Model菜单项后,会生成一个Simulink窗口;单击Simulink工具栏中的“新建模型”图标;在MATLAB的命令窗口中选择File|New|NewModel菜单项;

当前第6页\共有191页\编于星期六\10点启动Simulink,建立系统模型的基本操作依次表示新建、打开系统模型文件依次表示新建、打开与保存系统模型文件当前第7页\共有191页\编于星期六\10点Simulink的模块库Simulink的模块库能够对系统模块进行有效的管理与组织可以直接将模块库中的模块拖动或者拷贝到用户的系统模型中以构建动态系统模型。

模块搜索

模块描述

系统模块

系统模块库

当前第8页\共有191页\编于星期六\10点Simulink公共模块库Simulink中最为基础、最为通用的模块库,它可以被应用到不同的专业领域中。

连续模块continuous、非连续模块discontinuous离散模块discrete、查找表模块Look-upTable数学运算MathOperations模型验证模块ModelVerification模型扩充工具Model-WideUtilities端口和子系统模块Ports&Subsystems、信号属性模块SignalAttributes信号路由模块SignalRouting、接收模块Sinks输入模块Sources用户自定义函数模块User-DefinedFunctions当前第9页\共有191页\编于星期六\10点Simulink的部分专业模块库DSPBlockset数字信号处理工具包Fixed-PointBlockset定点运算控制系统仿真工具包PowerSystemBlockset电力电动系统工具包Dials&GaugesBlockset交互图形和控制面板设计工具包CommunicationsBlockset通讯系统工具包CDMAReferenceBlocksetCDMACDMA通讯系统设计和分析工具包NonlinearControlDesignBlockset非线性控制设计工具箱MotorolaDSPDeveloper’sKitMotorolaDSP开发工具箱TIDSPDeveloper’sKitTIDSP开发工具箱当前第10页\共有191页\编于星期六\10点对Simulink库浏览器的基本操作有:(1)使用鼠标左键单击系统模块库,如果模块库为多层结构,则单击“+”号载入库。(2)使用鼠标右键单击系统模块库,可在单独的窗口打开库。(3)使用鼠标左键单击系统模块,在模块描述栏中显示此模块的描述。(4)使用鼠标右键单击系统模块,可以得到:系统模块的帮助信息;将系统模块插入到系统模型中;查看系统模块的参数设置;以及回到系统模块的上一层库。

此外还可以进行以下操作:

(1)使用鼠标左键选择并拖动系统模块,并将其拷贝到系统模型中。

(2)在模块搜索栏中搜索所需的系统模块。当前第11页\共有191页\编于星期六\10点例:简单系统的输入为一个正弦波信号,输出为此正弦波信号与一个常数的乘积。要求建立系统模型,并以图形方式输出系统运算结果。已知系统的数学描述为系统输入:u(t)=sint,t≥0

系统输出:y(t)=au(t),a≠0当前第12页\共有191页\编于星期六\10点相关操作:模块库SineWave来自sources;Gain来自MathOperations;Scope来自Sinks连接方法(1)拖动对应端口进行连接(2)单击起始模块后,按Ctrl键再单击目标模块模块复制传统方式Ctrl+C/Ctrl+V、或Ctrl键再拖动模块模块插入对于单输入单输出模块,只需将这个模块移到线上就可以自动连接。当前第13页\共有191页\编于星期六\10点连线操作连线分支使用鼠标右键单击需要分支的信号连线(光标变成“+”),然后拖动到目标模块。使用鼠标左键单击并拖动以改变信号连线的路径。按下Shift键的同时,在信号连线上单击鼠标左键并拖动,可以生成新的节点。在节点上使用鼠标左键单击并拖动,可以改变信号连线路径。当前第14页\共有191页\编于星期六\10点信号组合

在利用Simulink进行系统仿真时,在很多情况下,需要将系统中某些模块的输出信号(一般为标量)组合成一个向量信号,并将得到的信号作为另外一个模块的输入。来自SignalRouting的BusCreator当前第15页\共有191页\编于星期六\10点3Simulink模型仿真系统模块参数设置与系统仿真参数设置双击系统模块,打开系统模块的参数设置对话框。在参数设置对话框中设置合适的模块参数。设置合适的系统仿真参数以进行动态系统的仿真在Simulation菜单的Simulationparameters...子菜单中进行设置,如仿真时间等运行仿真单击系统模型编辑器上的Play图标(黑色三角)或选择Simulation菜单下的Start便可以对系统进行仿真分析。仿真结束后双击Scope模块以显示系统仿真的输出结果当前第16页\共有191页\编于星期六\10点4Simulink子系统介绍Simulink提供的子系统功能可以大大地增强Simulink系统模型框图的可读性。子系统可以理解为一种“容器”,此容器能够将一组相关的模块封装到一个单独的模块中,并且与原来系统模块组的功能一致。当前第17页\共有191页\编于星期六\10点子系统建立方法(2种)在已有的系统模型中建立子系统:首先框选待封装的区域,即在模型编辑器背景中单击鼠标左键并拖动,选中需要放置到子系统中的模块与信号(或在按下Shift键的同时,用鼠标左键单击所需模块);然后选择Edit菜单下的CreateSubsystem,即可建立子系统。建立空的子系统:Subsystems模块库中的模块建立子系统。这样建立的子系统内容为空,然后双击子系统对其进行编辑。当前第18页\共有191页\编于星期六\10点子系统操作在生成子系统之后,用户可以对子系统进行各种与系统模块相类似的操作,这时子系统相当于具有一定功能的系统模块。例如,子系统的命名、子系统视图的修改、子系统的显示颜色等等。当然子系统也有其特有的操作,如子系统的显示(用鼠标左键双击子系统模块即可打开子系统)、子系统的封装等等。当前第19页\共有191页\编于星期六\10点Inport输入模块与Outport输出模块

在系统模型中建立子系统时,Simulink会自动生成Inport模块(Sources模块库中的In1模块)与Outport模块(Sinks模块库中的Out1模块)。Inport模块作为子系统的输入端口,Outport作为子系统的输出端口,它们被用来完成子系统和主系统之间的通讯。

Inport和Outport用来对信号进行传递,不改变信号的任何属性;另外,信号标签可以越过它们进行传递。如果需要建立多输入多输出的子系统,则需要使用多个Inport模块与Outport模块,而且最好使用合适的名称对Inport模块与Outport模块进行命名。当前第20页\共有191页\编于星期六\10点5Simulink与Matlab的接口设计由MATLAB工作空间变量设置系统模块参数模块参数可以是常量也可以工作空间变量直接使用MATLAB工作空间中的变量设置模块参数。使用变量的表达式设置模块参数。例如,如果a是定义在MATLAB中的变量,则表达式a、a^2+5、exp(–a)等均可以作为系统模块的参数当前第21页\共有191页\编于星期六\10点将信号输出到MATLAB工作空间中

使用示波器模块Scope的输出信号,可以使用户对输出的信号进行简单的定性分析。使用Sinks模块库中的ToWorkspace模块,可以轻易地将信号输出到MATLAB工作空间中。信号输出的名称在ToWorkspace模块的对话框中设置,此对话框还可以设置输出数据的点数、输出的间隔,以及输出数据的类型等。其中输出类型有三种形式:数组、结构以及带有时间变量的结构。仿真结束或暂停时信号被输出到工作空间中。当前第22页\共有191页\编于星期六\10点使用工作空间变量作为系统输入信号

Simulink与MATLAB的数据交互是相互的,除了可以将信号输出到MATLAB工作空间中之外,用户还可以使用MATLAB工作空间中的变量作为系统模型的输入信号。使用Sources模块库中的FromWorkspace模块可以将MATLAB工作空间中的变量作为系统模型的输入信号。此变量的格式如下所示:

>>t=0:0.1:10; >>x=sin(t); >>input=[t',x'];

系统输入信号input的作用相当于Sources模块中的SineWave模块当前第23页\共有191页\编于星期六\10点向量与矩阵Simulink所使用的信号可以是标量也能够传递和使用向量信号。例如,向量增益可以作用在一个标量信号上,产生一个向量输出。Simulink最重要的特性就是支持矩阵形式的信号,它可以区分行和列向量并传递矩阵。通过对模块做适当的配置,可以使模块能够接受矩阵作为模块参数。当前第24页\共有191页\编于星期六\10点MATLABFunction与Function模块

除了使用上述的方式进行Simulink与MATLAB之间的数据交互,用户还可以使用FunctionsandTables模块库中的Function模块(简称为Fcn模块)或FunctionsandTables模块库中的MATLABFunction模块(简称为MATLABFcn模块)进行彼此间的数据交互。

Fcn模块一般用来实现简单的函数关系,在Fcn模块中:

(1)输入总是表示成u,u可以是一个向量。

(2)可以使用C语言表达式,例如sin(u[1])+cos(u[2])。

(3)输出永远为一个标量。当前第25页\共有191页\编于星期六\10点(2)可以使用C语言表达式,例如sin(u[1])+cos(u[2])。

(3)输出永远为一个标量。

MATLABFcn一般用来调用MATLAB函数来实现一定的功能,在MATLABFcn模块中:

(1)所要调用的函数只能有一个输出(可以是一个向量)。

(2)单输入函数只需使用函数名,多输入函数输入需要引用相应的元素,如mean、sqrt、myfunc(u(1),u(2))。

(3)在每个仿真步长内都需要调用MATLAB解释器。

使用Fcn模块与MATLABFcn模块进行Simulink与MATLAB之间的数据交互。当前第26页\共有191页\编于星期六\10点使用Fcn与MATLABFcn模块进行数据交互

函数表达式

Matlab函数

MATLAB函数当前第27页\共有191页\编于星期六\10点6Scope高级使用技术打印输出

参数设置

视图整体缩放

Y轴缩放

视图自动缩放

X轴缩放

保存当前坐标轴设置

恢复坐标轴设置

悬浮Scope开关

悬浮时信号选择

去除坐标轴选择

当前第28页\共有191页\编于星期六\10点1)Scope的参数设置使用Scope模块的参数设置选项卡能够对系统仿真输出结果显示进行更多的控制,而不仅仅是上述的简单控制。图36、图37所示分别为Scope模块参数设置选项卡中的General选项卡与DataHistory选项卡。当前第29页\共有191页\编于星期六\10点Scope模块的General选项卡坐标系标签

坐标系数目

显示时间范围

悬浮Scope开关

当前第30页\共有191页\编于星期六\10点Scope模块的Datahistory选项卡信号显示点数限制

保存信号至工作空间变量

当前第31页\共有191页\编于星期六\10点下面简单介绍一下各选项卡的功能与使用。

1)坐标系数目(Numberofaxes)功能描述:在一个Scope输出模块中使用多个坐标系窗口同时输出多个信号。在默认设置下,Scope模块仅显示一个坐标系窗口。

2)悬浮Scope开关(Floatingscope)功能描述:将Scope模块切换为悬浮Scope模块。当前第32页\共有191页\编于星期六\10点3)显示时间范围(Timerange)功能描述:设置信号显示的时间范围。注意:信号显示的时间范围与系统仿真时间范围并不等同,并且坐标系所示的时间范围并非为绝对时间,而是指相对时间范围,坐标系的左下角的时间偏移(Timeoffset)给出了时间的起始偏移量(即显示时间范围的起始时刻)。

4)坐标系标签(Ticklabels)功能描述:确定Scope模块中各坐标系是否带有坐标轴标签。下方坐标系使用标签(bottomaxisonly)以及都不使用标签(none)。用户最好使用标签,这有利于对信号的观察理解.当前第33页\共有191页\编于星期六\10点5)信号显示点数限制(Limitdatapointstolast)功能描述:限制信号显示的数据点的数目,Scope模块会自动对信号进行截取以显示信号的最后n个点(这里n为设置的数值)。6)保存信号至工作空间变量(Savedatatoworkspace)

功能描述:将由Scope模块显示的信号保存到Matlab工作空间变量中,以便于对信号进行更多的定量分析。数据保存类型有三种:带时间变量的结构体(structurewithtime)、结构体(structure)以及数组变量(Array)。这与前面所介绍的Sinks模块库中的Toworkspace模块类似。当前第34页\共有191页\编于星期六\10点此外,在Scope模块中的坐标系中单击鼠标右键,选择弹出菜单中坐标系属性设置命令(axesproperties),将弹出下图所示的坐标系属性设置对话框。用户可以对Scope模块的坐标系标题与显示信号范围进行合适的设置,以满足仿真输出结果显示的需要。当前第35页\共有191页\编于星期六\10点坐标系属性设置对话框 设置信号显示幅值范围坐标系标题:一般采用信号名称当前第36页\共有191页\编于星期六\10点7S函数的设计和调用S函数是扩展Simulink功能的强有力工具,它使用户可以利用MATLAB、C语言、C++语言等程序创建自己定义的Simulink模块。C,C++,Ada,andFortanS-Functions需要编译为Mex文件,就和其它MEX文件一样,Simulink可以随时动态的调用这些文件。S函数使用的是一种比较特殊的调用格式,可以和Simulink求解器交互式操作。S-Functions功能非常全面,适用于连续、离散以及混合系统。S函数允许用户向模型中添加自己编写的模块,只要按照一些简单的规则,就可以在S-Functions添加设计算法。在编写好S-Functions之后就可以在S-Functions模块中添加相应得函数名,也可以通过封装技术来订制自己的交互界面。当前第37页\共有191页\编于星期六\10点S函数的调用在Simulink使用S-Functions的方法就是从Simulink中的User-DefinedFunctions模块库中向Simulink模型文件窗口中拖放S-Function模块。然后在S-Functions模块的对话框中的S-FunctionsName框中输入S函数的文件名,在S-FunctionsParameters框中输入S函数的参数值。在点击edit的选项后可以编辑S函数的代码部分,利用S函数实现需要的功能主要是代码部分的修改。当前第38页\共有191页\编于星期六\10点对于代码部分的修改,可以使用MATLAB语言按照S-Functions的格式来编写代码。MATLAB提供了一个模板文件,方便S-Function的编写,该模板文件位于MATLAB根目录toolbox/Simulink/blocks下

模板函数的代码如下:function[sys,x0,str,ts]=sfuntmpl(t,x,u,flag)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);case2,sys=mdlUpdate(t,x,u);

case3,

sys=mdlOutputs(t,x,u);

case4,sys=mdlGetTimeOfNextVarHit(t,x,u);case9,sys=mdlTerminate(t,x,u);otherwiseerror(['Unhandledflag=',num2str(flag)]);end当前第39页\共有191页\编于星期六\10点function[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=0;sizes.NumOutputs=0;sizes.NumInputs=0;sizes.DirFeedthrough=1;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=[];str=[];ts=[00];functionsys=mdlDerivatives(t,x,u)sys=[];functionsys=mdlUpdate(t,x,u)sys=[];functionsys=mdlOutputs(t,x,u)sys=[];functionsys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime=1;sys=t+sampleTime;functionsys=mdlTerminate(t,x,u)sys=[];当前第40页\共有191页\编于星期六\10点M文件S-Functions可用的子函数说明如下:(1)mdlInitializeSizes:定义S-Function模块的基本特性,包括采样时间、连续或者离散状态的初始条件和sizes数组。(2)mdlDerivatives:计算连续状态变量的微分方程。(3)mdlUpdate:更新离散状态、采样时间和主时间同步的要求。(4)mdlOutputs:计算S-Function的输出。(5)mdlGetTimeOfNextVarHit:计算下一个采样时间点的绝对时间。(6)mdlTerminate:结束仿真任务。当前第41页\共有191页\编于星期六\10点S-function默认的4个输入参数t、x、u和flag,他们的次序不能变动,各自代表的意义是:

t:表示当前仿真时刻,是采用绝对计量的时间值,是从仿真开始模型运行时间的计量值。

x:模块的状态向量,包括连续状态向量和离散状态向量。

u:模块的输入向量。

flag:执行不同操作的标记变量。当前第42页\共有191页\编于星期六\10点S-Function默认的4个返回参数为sys、x0、str和ts,他们的次序也不能改变,代表的意义为:

sys:通用返回函数;

x0:初始状态值,当flag的值为0时才有效;

str:没有明确定义,是MathWorks为将来应用所作的保留。

ts:一个m×2矩阵,它的两列分别表示采样时间间隔和偏移。当前第43页\共有191页\编于星期六\10点8使用命令操作对系统进行仿真支持命令窗口运行仿真的函数有4个,即sim、simset、simget和set_param。(1)sim函数sim函数的作用是运行一个由Simulink建立的模型,其调用格式为:[t,x,y]=sim(modname,timespan,options,ut);当前第44页\共有191页\编于星期六\10点

其中,t为返回的仿真时间向量;

x为返回的状态矩阵;

y为返回的输出矩阵;

modname为系统Simulink模型文件名;

timespan为仿真时间;options为仿真参数选择项,由simset设置;ut为选择外部产生输入,ut=[T,u1,u2,…,un]。[说明]上述参数中,若省略timespan,options,ut则由框图模型的对话框SimulationParameters设置仿真参数。当前第45页\共有191页\编于星期六\10点(2)simset函数

simset函数用来为sim函数建立或编辑仿真参数或规定算法,并把设置结果保存在一个结构变量中。它有如下4种用法:

(a)options=simset(property,value,…):把property代表的参数赋值为value,结果保存在结构options中。

(b)options=simset(old_opstruct,property,value,…):把已有的结构old_opstruct(由simset产生)中的参数property重新赋值为value,结果保存在新结构options中。

(c)options=simset(old_opstruct,new_opstruct):用结构new_opstruct的值替代已经存在的结构old_opstruct的值。

(d)simset:显示所有的参数名和它们可能的值。当前第46页\共有191页\编于星期六\10点(3)simget函数

simget函数用来获得模型的参数设置值。如果参数值是用一个变量名定义的,simget返回的也是该变量的值而不是变量名。如果该变量在工作空间中不存在(即变量未被赋值),则Simulink给出一个出错信息。该函数有如下3种用法:

(a)struct=simget(modname):返回指定模型model的参数设置的options结构。

(b)value=simget(modname,property):返回指定模型model的参数property的值。

(c)value=simget(options,property):获取options结构中的参数property的值。如果在该结构中未指定该参数,则返回一个空阵。用户只需输入能够唯一识别它的那个参数名称的前几个字符即可,对参数名称中字母的大小写不作区别。当前第47页\共有191页\编于星期六\10点(4)set_param函数

set_param函数的功能很多,这里只介绍如何用set_param函数设置Simulink仿真参数以及如何开始、暂停、终止仿真进程或者更新显示一个仿真模型。

(a)设置仿真参数

调用格式为:

set_param(modname,property,value,…)

其中modname为设置的模型名,property为要设置的参数,value是设置值。这里设置的参数可以有很多种,而且和用simset设置的内容不尽相同,相关参数的设置可以参考有关资料。

(b)控制仿真进程

调用格式为:

set_param(modname,'SimulationCommand','cmd')

其中mode为仿真模型名称,而cmd是控制仿真进程的各个命令,包括start、stop、pause、comtinue或update。在使用这两个函数的时候,需要注意必须先把模型打开。当前第48页\共有191页\编于星期六\10点第7章Simulink的应用

7.1Simulink工作平台的启动

7.2Simulink仿真原理7.3Simulink模块库7.4仿真模型的建立和模块参数及属性的设置7.5其他应用模块集及Simulink扩展库当前第49页\共有191页\编于星期六\10点7.1Simulink工作平台启动Simulink,通常有两种方法:(1)在MATLAB命令窗口中直接输入Simulink命令;(2)在MATLAB工具栏上单击Simulink按钮,如图7.1所示。

图7.1启动Simulink

这样就可打开了Simulink的SimulinkLibraryBrower(库模块浏览器),如图7.2所示。在菜单栏中执行File/New/Model命令,就建立了一个名为untitled的模型窗口,如图7.3所示。在建立了空的模块窗口后,用户可以在此窗口中创建自己需要的Simulink模型。当前第50页\共有191页\编于星期六\10点图7.2库模块浏览器

图7.3新建的空白模块窗口

当前第51页\共有191页\编于星期六\10点7.2

Simulink的仿真原理7.2.1Simulink仿真模块通常,Simulink仿真系统包括输入(Input)、状态(states)和输出(Output)三个部分。·输入模块:即信号源模块,包括常数字信号源和用户自定义信号;·状态模块:即被模拟的系统模块,是系统建模的核心和主要部分;·输出模块:即信号显示模块,它能够以图形方式、文件格式进行显示。注意:在设计一个模型时,必须先确定这三个部分的意,以及它们之间的联系;Simulink的仿真模型并非一定要完全包括这三个部分,它可以缺少其中一个或者两个;Simulink的状态模块可以是连续的、离散的,或者它们二者的结合。当前第52页\共有191页\编于星期六\10点7.2.2Simulink仿真过程1.初始化阶段①对模型的参数进行估计,得到它们实际计算的值。②展开模型的各个层次;③按照更新的次序对模型进行排序;④确定那些显式化的信号属性,并检查每个模块是否能够接受连接它们输入端的信号;⑤确定所有非显式的信号采样时间模块的采样时间;⑥分配和初始化存储空间,以便存储每个模块的状态和当前值的输出。2.模型执行阶段模型仿真是通过数值积分来进行完成的,计算数值积分可以采用以下两步来进行:①按照秩序计算每个模块的积分;②根据当前输入和状态来决定状态的微分,得到微分矢量,然后把它返回给解法器,以计算下一个采样点的状态矢量。在每一个时间步中,Simulink依次解决下列问题:

·按照秩序更新模块的输出;

·按照秩序更新模块的状态;

·检查模块连续状态的不连续点;

·计算下一个仿真时间步的时间。当前第53页\共有191页\编于星期六\10点7.3.1连续模块库(Continuous)

在连续模块(Continuous)库中包括了常见的连续模块,这些模块如图所示。

7.3Simulink模块库

在库模块浏览器中单击Simulink前面的“+”号,就能够看到Simulink的模块库,如图7.2所示。

当前第54页\共有191页\编于星期六\10点4.传递函数模块(TransferFcn)功能:用执行一个线性传递函数。5.零极点传递函数模块(Zero-Pole)功能:用于建立一个预先指定的零点、极点,并用延迟算子s表示的连续。6.存储器模块(Memory)功能:保持输出前一步的输入值。7.传输延迟模块(TransportDelay)功能:用于将输入端的信号延迟指定的时间后再传输给输出信号。8.可变传输延迟模块(VariableTransportDelay)功能:用于将输入端的信号进行可变时间的延迟。1.积分模块(Integrator):功能:对输入变量进行积分。说明:模块的输入可以是标量,也可以是矢量;输入信号的维数必须与输入信号保持一致。2.微分模块(Derivative)功能:通过计算差分∆u/

∆t近似计算输入变量的微分。3.线性状态空间模块(State-Space)功能:用于实现以下数学方程描述的系统:当前第55页\共有191页\编于星期六\10点7.3.2离散模块库(Discrete)

离散模块库(Discrete)主要用于建立离散采样的系统模型,包括的主要模块,如图所示。1.零阶保持器模块(Zero-Order-Hold)功能:在一个步长内将输出的值保持在同一个值上。当前第56页\共有191页\编于星期六\10点2.单位延迟模块(UnitDelay)功能:将输入信号作单位延迟,并且保持一个采样周期相当于时间算子z-1

。3.离散时间积分模块(DiscreteTimeIntegrator)功能:在构造完全离散的系统时,代替连续积分的功能。使用的积分方法有:向前欧拉法、向后欧拉法、梯形法。4.离散状态空间模块(DiscreteStateSpace)功能:用于实现如下数学方程描述的系统:5.离散滤波器模块(DiscreteFilter)功能:用于实现无限脉冲响应(IIR)和有限脉冲响应(FIR)的数字滤波器。6.离散传递函数模块(DiscreteTransferFcn)功能:用于执行一个离散传递函数。7.离散零极点传递函数模块(DiscreteZero-Pole)功能:用于建立一个预先指定的零点、极点,并用延迟算子z-1表示的离散系统。8.一阶保持器模块(FirstOrderHold)功能:在一定时间间隔内保持一阶采样。当前第57页\共有191页\编于星期六\10点7.3.3函数与表格模块库(Function&Table)

函数与表格模块库(Function&Table)主要实现各种一维、二维或者更高维函数的查表,另外用户还可以根据自己需要创建更复杂的函数。该模块库包括多个主要模块、如图7.7所示。当前第58页\共有191页\编于星期六\10点1.一维查表模块(Look-UpTable)

一维查表模块(Look-UpTable)实现对单路输入信号的查表和线性插值。2.二维查表模块(Look-UpTable2-D)功能:根据给定的二维平面网格上的高度值,把输入的两个变量经过查表、插值,计算出模块的输出值,并返回这个值。说明:对二维输入信号进行分段线性变换。3.自定义函数模块(Fcn)功能:用于将输入信号进行指定的函数运算,最后计算出模块的输出值。说明:输入的数学表达式应符合C语言编程规范;与MATLAB中的表达式有所不同,不能完成矩阵运算。4.MATLAB函数模块(MATLABFcn)功能:对输入信号进行MATLAB函数及表达式的处理。说明:模块为单输入模块;能够完成矩阵运算。注意:从运算速度角度,Mathfunction模块要比Fcn模块慢。当需要提高速度时,可以考虑采用Fcn或者S函数模块。5.S-函数模块(S-Function)功能:按照Simulink标准,编写用户自己的Simulink函数。它能够将MATLAB语句、C语言等编写的函数放在Simulink模块中运行,最后计算模块的输出值。当前第59页\共有191页\编于星期六\10点7.3.4数学模块库(Math)

数学模块库(Math)包括多个数学运算模块,如图7.8所示。当前第60页\共有191页\编于星期六\10点3.矢量的点乘模块(DotProduct)功能:矢量的点乘模块(DotProduct)用于实现输入信号的点积运算。4.增益模块(Gain)功能:增益模块(Gain)的作用是把输入信号乘以一个指定的增益因子,使输入产生增益。1.求和模块(Sum)功能:求和模块(Sum)用于对多路输入信号进行求和运算,并输出结果。2.乘法模块(Product)功能:乘法模块(Product)用于实现对多路输入的乘积、商、矩阵乘法或者模块的转置等。5.常用数学函数模块(MathFunction)功能:用于执行多个通用数学函数,其中包含exp、log、log10、square、sqrt、pow、reciprocal、hypot、rem、mod等。当前第61页\共有191页\编于星期六\10点6.三角函数模块(TrigonometricFunction)功能:用于对输入信号进行三角函数运算,共有10种三角函数供选择。7.特殊数学模块特殊数学模块中包括求最大最小值模块(MinMax)、取绝对值模块(Abs)、符号函数模块(Sign)、取整数函数模块(RoundingFunction)等。8.数字逻辑函数模块数字逻辑函数模块包括复合逻辑模块(CombinationalLogic)、逻辑运算符模块(LogicalOperator)、位逻辑运算符模块(BitwiseLogicalOperator)等。9.关系运算模块(RelationalOperator)

关系符号包括:==(等于)、≠(不等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于)等。10.复数运算模块复数运算模块包括计算复数的模与幅角(ComplextoMagnitude-Angle)、由模和幅角计算复数(Magnitude-AngletoComplex)、提取复数实部与虚部模块(ComplextoRealandImage)、由复数实部和虚部计算复数(RealandImagetoComplex)。当前第62页\共有191页\编于星期六\10点非线性模块(Nonlinear)非线性模块(Nonlinear)中包括一些常用的非线性模块,如图7.9所示。当前第63页\共有191页\编于星期六\10点1.比率限幅模块(RateLimiter)功能:用于限制输入信号的一阶导数,使得信号的变化率不超过规定的限制值。2.饱和度模块(Saturation)功能:用于设置输入信号的上下饱和度,即上下限的值,来约束输出值。3.量化模块(Quantizer)功能:用于把输入信号由平滑状态变成台阶状态。4.死区输出模块(DeadZone)功能:在规定的区内没有输出值。5.继电模块(Relay)功能:继电模块(Relay)用于实现在两个不同常数值之间进行切换。6.选择开关模块(Switch)功能:根据设置的门限来确定系统的输出。当前第64页\共有191页\编于星期六\10点7.3.6信号与系统模块库(signals&Systems)信号与系统模块库(signals&Systems)包括的主要模块如图7.11所示。当前第65页\共有191页\编于星期六\10点1.Bus信号选择模块(BusSelector)功能:用于得到从Mux模块或其它模块引入的Bus信号。2.混路器模块(Mux)功能:把多路信号组成一个矢量信号或者Bus信号。3.分路器模块(Demux)功能:把混路器组成的信号按照原来的构成方法分解成多路信号。4.信号合成模块(Merge)功能:把多路信号进行合成一个单一的信号。5.接收/传输信号模块(From/Goto)功能:接收/传输信号模块(From/Goto)常常配合使用,From模块用于从一个Goto模块中接收一个输入信号,Goto模块用于把输入信号传递给From模块。6.初始值设定模块(IC)功能:初始值设定模块(IC)用于设定与输出端口连接的模块的初始值。当前第66页\共有191页\编于星期六\10点7.3.7信号输出模块(Sinks)

信号输出模块(Sinks)包括的主要模块如图7.12所示。图7.12输出显示模块库当前第67页\共有191页\编于星期六\10点1.示波器模块(Scope)功能:显示在仿真过程中产生的输出信号,用于在示波器中显示输入信号与仿真时间的关系曲线,仿真时间为x轴。2.二维信号显示模块(XYGraph)功能:在MATLAB的图形窗口中显示一个二维信号图,并将两路信号分别作为示波器坐标的x轴与y轴,同时把它们之间的关系图形显示出来。3.显示模块(Display)功能:按照一定的格式显示输入信号的值。可供选择的输出格式包括:short、long、short_e、long_e、bank等。4.输出到文件模块(ToFile)功能:按照矩阵的形式把输入信号保存到一个指定的MAT文件。第一行为仿真时间,余下的行则是输入数据,一个数据点是输入矢量的一个分量。5.输出到工作空间模块(ToWorkspace)功能:把信号保存到MATLAB的当前工作空间,是另一种输出方式。6.终止信号模块(Terminator)功能:中断一个未连接的信号输出端口。7.结束仿真模块(Stopsimulation)功能:停止仿真过程。当输入为非零时,停止系统仿真。当前第68页\共有191页\编于星期六\10点信号源模块库(Sources)信号源模块库(Sources)包括的主要模块如图7.13所示。图7.13信号源模块库当前第69页\共有191页\编于星期六\10点1.输入常数模块(Constant)功能:产生一个常数。该常数可以是实数,也可以是复数。2.信号源发生器模块(SignalGenerator)功能:产生不同的信号,其中包括:正弦波、方波、锯齿波信号。3.从文件读取信号模块(FromFile)功能:从一个MAT文件中读取信号,读取的信号为一个矩阵,其矩阵的格式与ToFile模块中介绍的矩阵格式相同。如果矩阵在同一采样时间有两个或者更多的列,则数据点的输出应该是首次出现的列。4.从工作空间读取信号模块(FromWorkspace)功能:从MATLAB工作空间读取信号作为当前的输入信号。5.随机数模块(RandomNumber)功能:产生正态分布的随机数,默认的随机数是期望为0,方差为1的标准正态分布量。6.带宽限制白噪声模块(BandLimitedWhiteNoise)功能:实现对连续或者混杂系统的白噪声输入。7.其它模块除以上介绍的常用模块外,还包括其模块。各模块功能可通过以下方法查看:先进入Simulink工作窗口,在菜单中执行Help/SimulinkHelp命令,这时就会弹出Help界面。然后用鼠标展开UsingSimulink\BlockReference\SimulinkBlockLibraries就可以看到Simulink的所有模块。查看相应的模块的使用方法和说明信息即可。

当前第70页\共有191页\编于星期六\10点当前第71页\共有191页\编于星期六\10点7.4仿真模型的建立与模块参数与属性的设置1.仿真模块的建立首先启动Simulink命令,建立一个空的模块窗口“untitled”

,然后利用Simulink提供的模块库,在此窗口中创建自己需要的Simulink模型。具体方法:在模块库浏览器中找到所需模块,选中该模块后右击鼠标,把它加入到一个模型窗口中即可完成模块的建立。

图7.14添加模块

当前第72页\共有191页\编于星期六\10点2.模块参数与属性的设置

方法:在所建立的模型窗口中,选中相应的模块,单击右击鼠标,在弹出的快捷菜单中单击“Blockparameters”选项(如图7.15所示),即可打开该模块的参数设置对话框,如图7.16(a)所示。右击鼠标,在弹出的快捷菜单中单击“BlockProperties”选项,即可打开该模块的属性设置对话框,如图7.16(b)所示。图7.15Blockparamenters选项

当前第73页\共有191页\编于星期六\10点3.模块的连接

一般情况下,每个模块都有一个或者多个输入口或者输出口。输入口通常是模块的左边的“>”符号;输出口是右边的“>”符号。

模块的连接方法:把鼠标指针放到模块的输出口,这时,鼠标指针将变为“+”十字形;然后,拖运鼠标至其它模块的输入口,这时信号线就变成了带有方向箭头的线段。此时,说明这两个模块的连接成功,否则需要重新进行连接。4.运行仿真在运行仿真之前,首先保存已设置和连接的模型,然后就可以运行仿真。当前第74页\共有191页\编于星期六\10点1.Simulink仿真注意(1)Simulink的数据类型由于Simulink在仿真过程中,始终都要检查模型的类型安全性。模型的类型安全性是指从该模型产生的代码不出现上溢或者下溢现象,当产生溢出现象时,系统将出错误。查看模块的数据类型的方法是:在模型窗口的菜单中执行Format/PortDataTypes命令,这样每个模块支持的数据类型就显示出来了。要取消数据类型的查看方式,单击PortDataTypes去掉其前面的勾号即可。7.4.3Simulink仿真注意与技巧图7.23查看模块支持的数据类型当前第75页\共有191页\编于星期六\10点(2)数据的传输在仿真过程中,Simulink首先查看有没有特别设置的信号的数据类型,以及检验信号的输入和输出端口的数据类型是否产生冲突。如果有冲突,Simulink将停止仿真,并给出一个出错提示对话框,在此对话框中将显示出错的信号以及端口,并把信号的路径以高亮显示。遇到该情形,必须改变数据类型以适应模块的需要。(3)提高仿真速度

Simulink仿真过程,仿真的性能受诸多因素的影响,包括模型的设计和仿真参数的选择等。对于大多数问题,使用Simulink系统默认的解法和仿真参数值就能够比较好地解决。因素及解决方法:(1)仿真的时间步长太小。针对这种情况可以把最大仿真步长参数设置为默认值auto。(2)仿真的时间过长。可酌情减小仿真的时间。(3)选择了错误的解法。针对这种情况可以通过改变解法器来解决。(4)仿真的精度要求过高。仿真时,如果绝对误差限度太小,则会使仿真在接近零的状态附近耗费过多时间。通常,相对误差限为0.1%就已经足够了。(5)模型包含一个外部存储块。尽量使用内置存储模块。当前第76页\共有191页\编于星期六\10点(4)改善仿真精度检验仿真精度的方法是:通过修改仿真的相对误差限和绝对误差限,并在一个合适的时间跨度反复运行仿真,对比仿真结果有无大的变化,如果变化不大,表示解是收敛的。说明仿真的精度是有效的,结果是稳定的。如果仿真结果不稳定,其原因可参是系统本身不稳定或仿真解法不适合。如果仿真的结果不精确,其原因很可能是:(1)模型有取值接近零的状态。如果绝对误差过大,会使仿真在接近零区域运行的仿真时间太小。解决的办法是修改绝对误差参数或者修改初始的状态。(2)如果改变绝对误差限还不能达到预期的误差限,则修改相对误差限,使可接受的误差降低,并减小仿真的步长。当前第77页\共有191页\编于星期六\10点2.Simulink仿真技巧■连接分支信号线先连接好单根信号线,然后将鼠标指针放在已经连接好的信号线上,同时按住“Ctrl”键,拖动鼠标,连接到另一个模块。这样就可以根据需由一个信号源模块,引出多条信号线。如图7.28所示。图7.28引出多条信号线示例

■模块的编辑技巧(1)调整模块大小

(2)在同一窗口复制模块(3)删除模块(4)编辑模块标签当前第78页\共有191页\编于星期六\10点7.5其它应用模块集和Simulink扩展库1.通信模块集(CommunicationsBlockset)图7.31通信模块集中的模块库当前第79页\共有191页\编于星期六\10点2.数字信号处理模块集(DSPBlockset)3.电力系统模块集(PowerSystemBlockset)当前第80页\共有191页\编于星期六\10点4.Simulink扩展库

•扩展信号输出模块库(AdditionalSinks)图7.35扩展信号输出模块库当前第81页\共有191页\编于星期六\10点•扩展离散库(AdditionalDiscrete)•扩展线性库(AdditionalLinear)图7.36扩展离散库图7.37扩展线性库当前第82页\共有191页\编于星期六\10点•转换库(Transformations)图7.38转换模块库•触发模块库(FlipFlops)图7.39触发模块库当前第83页\共有191页\编于星期六\10点•线性化库(Linearization)图7.40线性化库•宇航模块库(AirspaceBlocks)图7.41宇航模块库当前第84页\共有191页\编于星期六\10点SIMULINK仿真基础基本建模方法连续系统建模解微分方程当前第85页\共有191页\编于星期六\10点SIMULINK入门MATLAB命令窗口运行指令:simulinkSIMULINK模块库浏览器:SimulinkLibraryBrowserSource子库建立一个简单的仿真系统当前第86页\共有191页\编于星期六\10点当前第87页\共有191页\编于星期六\10点建立一个简单的仿真系统点击“新建”,建立新模型tst1用鼠标在信源模块中选取sinewave,拖曳至tst1窗口用鼠标在信宿模块中选取scope,拖曳至tst1窗口连线启动仿真当前第88页\共有191页\编于星期六\10点当前第89页\共有191页\编于星期六\10点模块的基本操作模块的选定选定单个和选定多个模块的复制复制/粘贴 Ctrl键模块名操作点击模块名模块的样式Format菜单当前第90页\共有191页\编于星期六\10点简单建模:按住Ctrl当前第91页\共有191页\编于星期六\10点当前第92页\共有191页\编于星期六\10点简单建模:当前第93页\共有191页\编于星期六\10点支持向量显示Mux当前第94页\共有191页\编于星期六\10点支持标量扩展当前第95页\共有191页\编于星期六\10点插入模块当前第96页\共有191页\编于星期六\10点SIMULINK模型外表:直观的方框图文件:MDL文件数学:微分方程或差分方程行为:模拟物理过程的动态性状当前第97页\共有191页\编于星期六\10点加注释当前第98页\共有191页\编于星期六\10点simulink模型的一般性结构信源系统信宿当前第99页\共有191页\编于星期六\10点数值分析:积分模块的应用当前第100页\共有191页\编于星期六\10点积分模块应用:复位积分负变正时强迫清零当前第101页\共有191页\编于星期六\10点微分方程当前第102页\共有191页\编于星期六\10点构造微分方程求解模型当前第103页\共有191页\编于星期六\10点Simulink电路仿真当前第104页\共有191页\编于星期六\10点

Simulink是MATLAB的一个重要的工具箱,是结合了框图界面和交互仿真能力的系统级设计和仿真工具。它以MATLAB核心数学,图形和语言为基础,可以让用户完成从算法开发,仿真或者模型验证的全过程,而不需要传递数据,重写代码或改变软件环境。

在start进入Simulink菜单,选择SimulinkLibraryBrowser,打开Simulink库函数,选择FileNew打开编辑窗口。在MATLAB的Command窗口直接键入Simulink即可打开Simulink工作窗口。

Simulink作为面向框图的仿真软件,具有以下的功能和优点:(1)用方框图的绘制代替了程序的编写。构成任何一个系统框图有三个步骤,即选定典型环节,相互联结和给定环节参数。

(2)仿真的建立和运行是智能化的。首先,画好了框图并存起来,Simulink自动建立一个仿真的过程;其次,在运行时用户可以不给步长,只给出要求的仿真精度,软件会自动选择能保证给定精度的最大步长,使得在给定的精度要求下系统仿真具有最快的速度。

当前第105页\共有191页\编于星期六\10点

(3)输入输出信号来源形式的多样化。其输入信号可以是各种信号发生器;也可以来自一个设定的记录文件;还可以来自MATLAB的工作空间(workspace).输出信号也类似,这就扩大了仿真系统与各种外部软件和硬件的接口能力。

Simulink工具箱中含有大量的仿真模块集,例如PowerSystemBlockset

(PSB),DSPBlockset,CommunicationBlockset,CDMA

ReferenceBlockset,NonlinearControlDesignBlockset

等专门领域应用的仿真模块。研究MATLAB在电路仿真中的应用,主要用到的是Simulink节点下的CommonlyusedBlocks,Sinks,Sources等模块以及在电路仿真中最长用的PowerSystemBlockset(DSP)模块。当前第106页\共有191页\编于星期六\10点求i3,U4,U7;当前第107页\共有191页\编于星期六\10点1.Simulink常用模块介绍要熟练地使用Simulink进行仿真,首先要求能够熟练使用Simlink常用模块。在模块浏览器中的Simulink节点下包含了搭建一个Simulink模块所需要的基本模块。本节主要对其中的Sources模块库、Sinks模块库、MathOperations库和Continuous模块库中的常用模块进行介绍。

Sources模块阶跃函数,起始时间是第1秒而非0秒。双击step模块,对仿真起始时间(steptime)和阶跃值(Initialvalue,Finalvalue)的大小进行设置。信号发生器,可以产生给定频率和幅值的正弦波(sinewave)、方波(squarewave)和锯齿波(sawtoothwave),双击图标可以设置。当前第108页\共有191页\编于星期六\10点

定时器,显示仿真时间,在系统仿真时打开定时器,可以看到实时的仿真时间。

正弦波,电路中常用到的正弦信号(SineWave)模块,双击图标,在弹出的窗口中调整相关参数。信号生成方式有两种:Timebased和Samplebased

。如果以Timebased方式运行该模块,则需要用户设定波形的幅度(Amplitude)、偏移(Bias)、频率(Frequency)、初相(Phase)几个参数;如果选择Samplebased方式,参数设置则为幅度(Amplitude)、偏移(Bias)、每周期采样数(Sampiesperperiod)和偏移采样数(Numberofoffsetsamples).

两种工作方式中的各项参数都可以用关系式加以换算:

每周期采样数=2*pi/(频率*采样时间)频移采样数=初相*每周期采样数/(2*pi)设置采样时间Sampletime,将此参数设置为零时表示以连续的方式工作,将此参数设置为大于零的值时则以所设采样时间工作。但要注意的是采用Samplebased模式的模块式不能以连续的方式工作的。当前第109页\共有191页\编于星期六\10点

从工作空间输入。从MATLABWorkspace输入已有的函数作为仿真的激励信号。首先要在MATLAB环境下建立一个时间向量和相应的函数值向量,然后将时间向量和函数值向量的名称[T,U]填入该图标的对话框中。

MathOperations模块加、减运算在Listofsigns文本框中可以选择多个数的加、减法运算。在Iconshape中选择圆形或方形符号。

Gain:增益作为后续模块的增益系数。

Continuous模块

TransferFcn传递函数,设置numerator选项,分子多项式系数的降幂排列。Denominator选项,分母多项式系数的降幂排列。

当前第110页\共有191页\编于星期六\10点

Sinks模块Sinks模块库中的模块主要功能是接受信号,并且将接受的信号显示出来。

输出到工作空间,功能与FromWorkspace正好相反,把仿真结果连同输入信号输出到工作空间去。

XY示波器:显示MATLAB的图形窗口。输入曲线是以时间为横轴的绘图区域。

它的作用是将信号值直接显示在该模块的窗口中。输出信号是个直流信号时,我们就可以把它直接送到这个模块中,从模块窗口中直接读出输入信号的大小。示波器模块可以接受多个输入信号,每个端口的输入信号都将在一个坐标轴中显示。如果是向量或矩阵信号,则以不同的颜色表示每个元素信号;如果信号本身是离散的,则显示信号的阶梯图。当前第111页\共有191页\编于星期六\10点

(1)示波器的工具栏

当前第112页\共有191页\编于星期六\10点(2)坐标轴的范围调整

在坐标框内单击鼠标右键,在弹出的快捷菜单中执行“Axesproperties”命令,可以对坐标轴进行调整,如图4.1-1所示。“Y-min”、“Y-max”分别是设置Y轴的最小值和最大值,在“Title”中可以为坐标轴取个名字,默认是以输入信号线的标签作为坐标轴的名字。当前第113页\共有191页\编于星期六\10点

(3)示波器的参数设置单击图标将弹出“示波器参数设置(‘Sope’Parameters)”对话框当前第114页\共有191页\编于星期六\10点当前第115页\共有191页\编于星期六\10点

“General”选项卡中各个选项的含义如下:①“Numberofaxes”文本框:用于设置轴的个数,可以用于实现对多个输入信号的显示。②“Timerange”文本框:用于设置X轴(即时间轴)的显示范围。③“Sampling”下拉列表:当在该下拉列表选择“Decimation”选项时可设置显示频度,如其设为n,则每隔n-1个数据点都给予显示。如果选“Sampletime”可设置显示点采样时间,如果为0表示显示连续信号,-1表示显示方式取决于输入信号,任何大于零的数据表示显示离散信号的时间间隔。④“Floatingscope”复选框:若选中该复选框,则表示示波器以游离方式工作。当前第116页\共有191页\编于星期六\10点(4)关于游离示波器工作在游离状态的示波器能够对模型中一条或多条信号线上的信号进行观察,而不用将示波器和信号线相连。观察具体的信号时可以在工具栏中单击图标,在打开的信号选择器中进行选择。当前第117页\共有191页\编于星期六\10点

2.SimPowerS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论