电机控制基于Simulink的仿真.ppt

上传人:tian****1990 文档编号:7817178 上传时间:2020-03-24 格式:PPT 页数:192 大小:2.86MB
返回 下载 相关 举报
电机控制基于Simulink的仿真.ppt_第1页
第1页 / 共192页
电机控制基于Simulink的仿真.ppt_第2页
第2页 / 共192页
电机控制基于Simulink的仿真.ppt_第3页
第3页 / 共192页
点击查看更多>>
资源描述
MATLAB Simulink设计 主讲 段清明仪器科学与电气工程学院 电机控制课程设计 1Simulink简介 Simulink是一个用来对动态系统进行建模 仿真和分析的软件包 使用Simulink来建模 分析和仿真各种动态系统 包括连续系统 离散系统和混合系统 将是一件非常轻松的事情 它提供了一种图形化的交互环境 只需用鼠标拖动的方法便能迅速地建立起系统框图模型 甚至不需要编写一行代码 利用Simulink进行系统的建模仿真 其最大的优点是易学 易用 并能依托MATLAB提供的丰富的仿真资源 提供了仿真库的扩充和定制机制Simulink的开放式结构允许用户扩展仿真环境的功能 采用MATLAB FORTRAN和C代码生成自定义模块库 并拥有自己的图标和界面 与MATLAB工具箱的集成由于Simulink可以直接利用MATLAB的诸多资源与功能 因而用户可以直接在Simulink下完成诸如数据分析 过程自动化 优化参数等工作 Simulink应用领域 2Simulink启动及模型建立 Simulink的启动主要有以下两种方法 在MATLAB的命令窗口中输入simulink 结果是在桌面上出现一个SimulinkLibraryBrowser的窗口 单击MATLAB主窗口的快捷按钮 打开SimulinkLibraryBrowser窗口 Simulink模型窗口的建立 在Simulink中打开一个空白的模型窗口的方法 选中Simulink菜单系统中的File New Model菜单项后 会生成一个Simulink窗口 单击Simulink工具栏中的 新建模型 图标 在MATLAB的命令窗口中选择File New NewModel菜单项 启动Simulink 建立系统模型的基本操作 Simulink的模块库 Simulink的模块库能够对系统模块进行有效的管理与组织可以直接将模块库中的模块拖动或者拷贝到用户的系统模型中以构建动态系统模型 Simulink公共模块库 Simulink中最为基础 最为通用的模块库 它可以被应用到不同的专业领域中 连续模块continuous 非连续模块discontinuous离散模块discrete 查找表模块Look upTable数学运算MathOperations模型验证模块ModelVerification模型扩充工具Model WideUtilities端口和子系统模块Ports Subsystems 信号属性模块SignalAttributes信号路由模块SignalRouting 接收模块Sinks输入模块Sources用户自定义函数模块User DefinedFunctions Simulink的部分专业模块库 对Simulink库浏览器的基本操作有 1 使用鼠标左键单击系统模块库 如果模块库为多层结构 则单击 号载入库 2 使用鼠标右键单击系统模块库 可在单独的窗口打开库 3 使用鼠标左键单击系统模块 在模块描述栏中显示此模块的描述 4 使用鼠标右键单击系统模块 可以得到 系统模块的帮助信息 将系统模块插入到系统模型中 查看系统模块的参数设置 以及回到系统模块的上一层库 此外还可以进行以下操作 1 使用鼠标左键选择并拖动系统模块 并将其拷贝到系统模型中 2 在模块搜索栏中搜索所需的系统模块 例 简单系统的输入为一个正弦波信号 输出为此正弦波信号与一个常数的乘积 要求建立系统模型 并以图形方式输出系统运算结果 已知系统的数学描述为系统输入 u t sint t 0系统输出 y t au t a 0 相关操作 模块库SineWave来自sources Gain来自MathOperations Scope来自Sinks连接方法 1 拖动对应端口进行连接 2 单击起始模块后 按Ctrl键再单击目标模块模块复制传统方式Ctrl C Ctrl V 或Ctrl键再拖动模块模块插入对于单输入单输出模块 只需将这个模块移到线上就可以自动连接 连线操作 连线分支使用鼠标右键单击需要分支的信号连线 光标变成 然后拖动到目标模块 使用鼠标左键单击并拖动以改变信号连线的路径 按下Shift键的同时 在信号连线上单击鼠标左键并拖动 可以生成新的节点 在节点上使用鼠标左键单击并拖动 可以改变信号连线路径 信号组合在利用Simulink进行系统仿真时 在很多情况下 需要将系统中某些模块的输出信号 一般为标量 组合成一个向量信号 并将得到的信号作为另外一个模块的输入 来自SignalRouting的BusCreator 3Simulink模型仿真 系统模块参数设置与系统仿真参数设置双击系统模块 打开系统模块的参数设置对话框 在参数设置对话框中设置合适的模块参数 设置合适的系统仿真参数以进行动态系统的仿真在Simulation菜单的Simulationparameters 子菜单中进行设置 如仿真时间等运行仿真单击系统模型编辑器上的Play图标 黑色三角 或选择Simulation菜单下的Start便可以对系统进行仿真分析 仿真结束后双击Scope模块以显示系统仿真的输出结果 4Simulink子系统介绍 Simulink提供的子系统功能可以大大地增强Simulink系统模型框图的可读性 子系统可以理解为一种 容器 此容器能够将一组相关的模块封装到一个单独的模块中 并且与原来系统模块组的功能一致 子系统建立方法 2种 在已有的系统模型中建立子系统 首先框选待封装的区域 即在模型编辑器背景中单击鼠标左键并拖动 选中需要放置到子系统中的模块与信号 或在按下Shift键的同时 用鼠标左键单击所需模块 然后选择Edit菜单下的CreateSubsystem 即可建立子系统 建立空的子系统 Subsystems模块库中的模块建立子系统 这样建立的子系统内容为空 然后双击子系统对其进行编辑 子系统操作在生成子系统之后 用户可以对子系统进行各种与系统模块相类似的操作 这时子系统相当于具有一定功能的系统模块 例如 子系统的命名 子系统视图的修改 子系统的显示颜色等等 当然子系统也有其特有的操作 如子系统的显示 用鼠标左键双击子系统模块即可打开子系统 子系统的封装等等 Inport输入模块与Outport输出模块在系统模型中建立子系统时 Simulink会自动生成Inport模块 Sources模块库中的In1模块 与Outport模块 Sinks模块库中的Out1模块 Inport模块作为子系统的输入端口 Outport作为子系统的输出端口 它们被用来完成子系统和主系统之间的通讯 Inport和Outport用来对信号进行传递 不改变信号的任何属性 另外 信号标签可以越过它们进行传递 如果需要建立多输入多输出的子系统 则需要使用多个Inport模块与Outport模块 而且最好使用合适的名称对Inport模块与Outport模块进行命名 5Simulink与Matlab的接口设计 由MATLAB工作空间变量设置系统模块参数模块参数可以是常量也可以工作空间变量直接使用MATLAB工作空间中的变量设置模块参数 使用变量的表达式设置模块参数 例如 如果a是定义在MATLAB中的变量 则表达式a a 2 5 exp a 等均可以作为系统模块的参数 将信号输出到MATLAB工作空间中使用示波器模块Scope的输出信号 可以使用户对输出的信号进行简单的定性分析 使用Sinks模块库中的ToWorkspace模块 可以轻易地将信号输出到MATLAB工作空间中 信号输出的名称在ToWorkspace模块的对话框中设置 此对话框还可以设置输出数据的点数 输出的间隔 以及输出数据的类型等 其中输出类型有三种形式 数组 结构以及带有时间变量的结构 仿真结束或暂停时信号被输出到工作空间中 使用工作空间变量作为系统输入信号Simulink与MATLAB的数据交互是相互的 除了可以将信号输出到MATLAB工作空间中之外 用户还可以使用MATLAB工作空间中的变量作为系统模型的输入信号 使用Sources模块库中的FromWorkspace模块可以将MATLAB工作空间中的变量作为系统模型的输入信号 此变量的格式如下所示 t 0 0 1 10 x sin t input t x 系统输入信号input的作用相当于Sources模块中的SineWave模块 向量与矩阵Simulink所使用的信号可以是标量也能够传递和使用向量信号 例如 向量增益可以作用在一个标量信号上 产生一个向量输出 Simulink最重要的特性就是支持矩阵形式的信号 它可以区分行和列向量并传递矩阵 通过对模块做适当的配置 可以使模块能够接受矩阵作为模块参数 MATLABFunction与Function模块除了使用上述的方式进行Simulink与MATLAB之间的数据交互 用户还可以使用FunctionsandTables模块库中的Function模块 简称为Fcn模块 或FunctionsandTables模块库中的MATLABFunction模块 简称为MATLABFcn模块 进行彼此间的数据交互 Fcn模块一般用来实现简单的函数关系 在Fcn模块中 1 输入总是表示成u u可以是一个向量 2 可以使用C语言表达式 例如sin u 1 cos u 2 3 输出永远为一个标量 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之间的数据交互 使用Fcn与MATLABFcn模块进行数据交互 6Scope高级使用技术 1 Scope的参数设置使用Scope模块的参数设置选项卡能够对系统仿真输出结果显示进行更多的控制 而不仅仅是上述的简单控制 图36 图37所示分别为Scope模块参数设置选项卡中的General选项卡与DataHistory选项卡 Scope模块的General选项卡 Scope模块的Datahistory选项卡 下面简单介绍一下各选项卡的功能与使用 1 坐标系数目 Numberofaxes 功能描述 在一个Scope输出模块中使用多个坐标系窗口同时输出多个信号 在默认设置下 Scope模块仅显示一个坐标系窗口 2 悬浮Scope开关 Floatingscope 功能描述 将Scope模块切换为悬浮Scope模块 3 显示时间范围 Timerange 功能描述 设置信号显示的时间范围 注意 信号显示的时间范围与系统仿真时间范围并不等同 并且坐标系所示的时间范围并非为绝对时间 而是指相对时间范围 坐标系的左下角的时间偏移 Timeoffset 给出了时间的起始偏移量 即显示时间范围的起始时刻 4 坐标系标签 Ticklabels 功能描述 确定Scope模块中各坐标系是否带有坐标轴标签 下方坐标系使用标签 bottomaxisonly 以及都不使用标签 none 用户最好使用标签 这有利于对信号的观察理解 5 信号显示点数限制 Limitdatapointstolast 功能描述 限制信号显示的数据点的数目 Scope模块会自动对信号进行截取以显示信号的最后n个点 这里n为设置的数值 6 保存信号至工作空间变量 Savedatatoworkspace 功能描述 将由Scope模块显示的信号保存到Matlab工作空间变量中 以便于对信号进行更多的定量分析 数据保存类型有三种 带时间变量的结构体 structurewithtime 结构体 structure 以及数组变量 Array 这与前面所介绍的Sinks模块库中的Toworkspace模块类似 此外 在Scope模块中的坐标系中单击鼠标右键 选择弹出菜单中坐标系属性设置命令 axesproperties 将弹出下图所示的坐标系属性设置对话框 用户可以对Scope模块的坐标系标题与显示信号范围进行合适的设置 以满足仿真输出结果显示的需要 坐标系属性设置对话框 设置信号显 示幅值范围 坐标系标题 一 般采用信号名称 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模块中添加相应得函数名 也可以通过封装技术来订制自己的交互界面 S函数的调用 在Simulink使用S Functions的方法就是从Simulink中的User DefinedFunctions模块库中向Simulink模型文件窗口中拖放S Function模块 然后在S Functions模块的对话框中的S FunctionsName框中输入S函数的文件名 在S FunctionsParameters框中输入S函数的参数值 在点击edit的选项后可以编辑S函数的代码部分 利用S函数实现需要的功能主要是代码部分的修改 对于代码部分的修改 可以使用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 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 M文件S Functions可用的子函数说明如下 1 mdlInitializeSizes 定义S Function模块的基本特性 包括采样时间 连续或者离散状态的初始条件和sizes数组 2 mdlDerivatives 计算连续状态变量的微分方程 3 mdlUpdate 更新离散状态 采样时间和主时间同步的要求 4 mdlOutputs 计算S Function的输出 5 mdlGetTimeOfNextVarHit 计算下一个采样时间点的绝对时间 6 mdlTerminate 结束仿真任务 S function默认的4个输入参数t x u和flag 他们的次序不能变动 各自代表的意义是 t 表示当前仿真时刻 是采用绝对计量的时间值 是从仿真开始模型运行时间的计量值 x 模块的状态向量 包括连续状态向量和离散状态向量 u 模块的输入向量 flag 执行不同操作的标记变量 S Function默认的4个返回参数为sys x0 str和ts 他们的次序也不能改变 代表的意义为 sys 通用返回函数 x0 初始状态值 当flag的值为0时才有效 str 没有明确定义 是MathWorks为将来应用所作的保留 ts 一个m 2矩阵 它的两列分别表示采样时间间隔和偏移 8使用命令操作对系统进行仿真 支持命令窗口运行仿真的函数有4个 即sim simset simget和set param 1 sim函数sim函数的作用是运行一个由Simulink建立的模型 其调用格式为 t x y sim modname timespan options ut 其中 t为返回的仿真时间向量 x为返回的状态矩阵 y为返回的输出矩阵 modname为系统Simulink模型文件名 timespan为仿真时间 options为仿真参数选择项 由simset设置 ut为选择外部产生输入 ut T u1 u2 un 说明 上述参数中 若省略timespan options ut则由框图模型的对话框SimulationParameters设置仿真参数 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 显示所有的参数名和它们可能的值 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的值 如果在该结构中未指定该参数 则返回一个空阵 用户只需输入能够唯一识别它的那个参数名称的前几个字符即可 对参数名称中字母的大小写不作区别 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 在使用这两个函数的时候 需要注意必须先把模型打开 第7章Simulink的应用 7 1Simulink工作平台的启动7 2Simulink仿真原理7 3Simulink模块库7 4仿真模型的建立和模块参数及属性的设置7 5其他应用模块集及Simulink扩展库 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模型 图7 2库模块浏览器 图7 3新建的空白模块窗口 7 2Simulink的仿真原理 7 2 1Simulink仿真模块通常 Simulink仿真系统包括输入 Input 状态 states 和输出 Output 三个部分 输入模块 即信号源模块 包括常数字信号源和用户自定义信号 状态模块 即被模拟的系统模块 是系统建模的核心和主要部分 输出模块 即信号显示模块 它能够以图形方式 文件格式进行显示 注意 在设计一个模型时 必须先确定这三个部分的意 以及它们之间的联系 Simulink的仿真模型并非一定要完全包括这三个部分 它可以缺少其中一个或者两个 Simulink的状态模块可以是连续的 离散的 或者它们二者的结合 7 2 2Simulink仿真过程1 初始化阶段 对模型的参数进行估计 得到它们实际计算的值 展开模型的各个层次 按照更新的次序对模型进行排序 确定那些显式化的信号属性 并检查每个模块是否能够接受连接它们输入端的信号 确定所有非显式的信号采样时间模块的采样时间 分配和初始化存储空间 以便存储每个模块的状态和当前值的输出 2 模型执行阶段模型仿真是通过数值积分来进行完成的 计算数值积分可以采用以下两步来进行 按照秩序计算每个模块的积分 根据当前输入和状态来决定状态的微分 得到微分矢量 然后把它返回给解法器 以计算下一个采样点的状态矢量 在每一个时间步中 Simulink依次解决下列问题 按照秩序更新模块的输出 按照秩序更新模块的状态 检查模块连续状态的不连续点 计算下一个仿真时间步的时间 7 3 1连续模块库 Continuous 在连续模块 Continuous 库中包括了常见的连续模块 这些模块如图所示 7 3Simulink模块库 在库模块浏览器中单击Simulink前面的 号 就能够看到Simulink的模块库 如图7 2所示 4 传递函数模块 TransferFcn 功能 用执行一个线性传递函数 5 零极点传递函数模块 Zero Pole 功能 用于建立一个预先指定的零点 极点 并用延迟算子s表示的连续 6 存储器模块 Memory 功能 保持输出前一步的输入值 7 传输延迟模块 TransportDelay 功能 用于将输入端的信号延迟指定的时间后再传输给输出信号 8 可变传输延迟模块 VariableTransportDelay 功能 用于将输入端的信号进行可变时间的延迟 1 积分模块 Integrator 功能 对输入变量进行积分 说明 模块的输入可以是标量 也可以是矢量 输入信号的维数必须与输入信号保持一致 2 微分模块 Derivative 功能 通过计算差分 u t近似计算输入变量的微分 3 线性状态空间模块 State Space 功能 用于实现以下数学方程描述的系统 7 3 2离散模块库 Discrete 离散模块库 Discrete 主要用于建立离散采样的系统模型 包括的主要模块 如图所示 1 零阶保持器模块 Zero Order Hold 功能 在一个步长内将输出的值保持在同一个值上 2 单位延迟模块 UnitDelay 功能 将输入信号作单位延迟 并且保持一个采样周期相当于时间算子z 1 3 离散时间积分模块 DiscreteTimeIntegrator 功能 在构造完全离散的系统时 代替连续积分的功能 使用的积分方法有 向前欧拉法 向后欧拉法 梯形法 4 离散状态空间模块 DiscreteStateSpace 功能 用于实现如下数学方程描述的系统 5 离散滤波器模块 DiscreteFilter 功能 用于实现无限脉冲响应 IIR 和有限脉冲响应 FIR 的数字滤波器 6 离散传递函数模块 DiscreteTransferFcn 功能 用于执行一个离散传递函数 7 离散零极点传递函数模块 DiscreteZero Pole 功能 用于建立一个预先指定的零点 极点 并用延迟算子z 1表示的离散系统 8 一阶保持器模块 FirstOrderHold 功能 在一定时间间隔内保持一阶采样 7 3 3函数与表格模块库 Function Table 函数与表格模块库 Function Table 主要实现各种一维 二维或者更高维函数的查表 另外用户还可以根据自己需要创建更复杂的函数 该模块库包括多个主要模块 如图7 7所示 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模块中运行 最后计算模块的输出值 7 3 4数学模块库 Math 数学模块库 Math 包括多个数学运算模块 如图7 8所示 3 矢量的点乘模块 DotProduct 功能 矢量的点乘模块 DotProduct 用于实现输入信号的点积运算 4 增益模块 Gain 功能 增益模块 Gain 的作用是把输入信号乘以一个指定的增益因子 使输入产生增益 1 求和模块 Sum 功能 求和模块 Sum 用于对多路输入信号进行求和运算 并输出结果 2 乘法模块 Product 功能 乘法模块 Product 用于实现对多路输入的乘积 商 矩阵乘法或者模块的转置等 5 常用数学函数模块 MathFunction 功能 用于执行多个通用数学函数 其中包含exp log log10 square sqrt pow reciprocal hypot rem mod等 6 三角函数模块 TrigonometricFunction 功能 用于对输入信号进行三角函数运算 共有10种三角函数供选择 7 特殊数学模块特殊数学模块中包括求最大最小值模块 MinMax 取绝对值模块 Abs 符号函数模块 Sign 取整数函数模块 RoundingFunction 等 8 数字逻辑函数模块数字逻辑函数模块包括复合逻辑模块 CombinationalLogic 逻辑运算符模块 LogicalOperator 位逻辑运算符模块 BitwiseLogicalOperator 等 9 关系运算模块 RelationalOperator 关系符号包括 等于 不等于 大于 大于等于 等 10 复数运算模块复数运算模块包括计算复数的模与幅角 ComplextoMagnitude Angle 由模和幅角计算复数 Magnitude AngletoComplex 提取复数实部与虚部模块 ComplextoRealandImage 由复数实部和虚部计算复数 RealandImagetoComplex 7 3 5非线性模块 Nonlinear 非线性模块 Nonlinear 中包括一些常用的非线性模块 如图7 9所示 1 比率限幅模块 RateLimiter 功能 用于限制输入信号的一阶导数 使得信号的变化率不超过规定的限制值 2 饱和度模块 Saturation 功能 用于设置输入信号的上下饱和度 即上下限的值 来约束输出值 3 量化模块 Quantizer 功能 用于把输入信号由平滑状态变成台阶状态 4 死区输出模块 DeadZone 功能 在规定的区内没有输出值 5 继电模块 Relay 功能 继电模块 Relay 用于实现在两个不同常数值之间进行切换 6 选择开关模块 Switch 功能 根据设置的门限来确定系统的输出 7 3 6信号与系统模块库 signals Systems 信号与系统模块库 signals Systems 包括的主要模块如图7 11所示 1 Bus信号选择模块 BusSelector 功能 用于得到从Mux模块或其它模块引入的Bus信号 2 混路器模块 Mux 功能 把多路信号组成一个矢量信号或者Bus信号 3 分路器模块 Demux 功能 把混路器组成的信号按照原来的构成方法分解成多路信号 4 信号合成模块 Merge 功能 把多路信号进行合成一个单一的信号 5 接收 传输信号模块 From Goto 功能 接收 传输信号模块 From Goto 常常配合使用 From模块用于从一个Goto模块中接收一个输入信号 Goto模块用于把输入信号传递给From模块 6 初始值设定模块 IC 功能 初始值设定模块 IC 用于设定与输出端口连接的模块的初始值 7 3 7信号输出模块 Sinks 信号输出模块 Sinks 包括的主要模块如图7 12所示 图7 12输出显示模块库 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 功能 停止仿真过程 当输入为非零时 停止系统仿真 7 3 8信号源模块库 Sources 信号源模块库 Sources 包括的主要模块如图7 13所示 图7 13信号源模块库 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的所有模块 查看相应的模块的使用方法和说明信息即可 7 4仿真模型的建立与模块参数与属性的设置 1 仿真模块的建立首先启动Simulink命令 建立一个空的模块窗口 untitled 然后利用Simulink提供的模块库 在此窗口中创建自己需要的Simulink模型 具体方法 在模块库浏览器中找到所需模块 选中该模块后右击鼠标 把它加入到一个模型窗口中即可完成模块的建立 图7 14添加模块 2 模块参数与属性的设置方法 在所建立的模型窗口中 选中相应的模块 单击右击鼠标 在弹出的快捷菜单中单击 Blockparameters 选项 如图7 15所示 即可打开该模块的参数设置对话框 如图7 16 a 所示 右击鼠标 在弹出的快捷菜单中单击 BlockProperties 选项 即可打开该模块的属性设置对话框 如图7 16 b 所示 图7 15Blockparamenters选项 3 模块的连接 一般情况下 每个模块都有一个或者多个输入口或者输出口 输入口通常是模块的左边的 符号 输出口是右边的 符号 模块的连接方法 把鼠标指针放到模块的输出口 这时 鼠标指针将变为 十字形 然后 拖运鼠标至其它模块的输入口 这时信号线就变成了带有方向箭头的线段 此时 说明这两个模块的连接成功 否则需要重新进行连接 4 运行仿真在运行仿真之前 首先保存已设置和连接的模型 然后就可以运行仿真 1 Simulink仿真注意 1 Simulink的数据类型由于Simulink在仿真过程中 始终都要检查模型的类型安全性 模型的类型安全性是指从该模型产生的代码不出现上溢或者下溢现象 当产生溢出现象时 系统将出错误 查看模块的数据类型的方法是 在模型窗口的菜单中执行Format PortDataTypes命令 这样每个模块支持的数据类型就显示出来了 要取消数据类型的查看方式 单击PortDataTypes去掉其前面的勾号即可 7 4 3Simulink仿真注意与技巧 图7 23查看模块支持的数据类型 2 数据的传输在仿真过程中 Simulink首先查看有没有特别设置的信号的数据类型 以及检验信号的输入和输出端口的数据类型是否产生冲突 如果有冲突 Simulink将停止仿真 并给出一个出错提示对话框 在此对话框中将显示出错的信号以及端口 并把信号的路径以高亮显示 遇到该情形 必须改变数据类型以适应模块的需要 3 提高仿真速度Simulink仿真过程 仿真的性能受诸多因素的影响 包括模型的设计和仿真参数的选择等 对于大多数问题 使用Simulink系统默认的解法和仿真参数值就能够比较好地解决 因素及解决方法 1 仿真的时间步长太小 针对这种情况可以把最大仿真步长参数设置为默认值auto 2 仿真的时间过长 可酌情减小仿真的时间 3 选择了错误的解法 针对这种情况可以通过改变解法器来解决 4 仿真的精度要求过高 仿真时 如果绝对误差限度太小 则会使仿真在接近零的状态附近耗费过多时间 通常 相对误差限为0 1 就已经足够了 5 模型包含一个外部存储块 尽量使用内置存储模块 4 改善仿真精度检验仿真精度的方法是 通过修改仿真的相对误差限和绝对误差限 并在一个合适的时间跨度反复运行仿真 对比仿真结果有无大的变化 如果变化不大 表示解是收敛的 说明仿真的精度是有效的 结果是稳定的 如果仿真结果不稳定 其原因可参是系统本身不稳定或仿真解法不适合 如果仿真的结果不精确 其原因很可能是 1 模型有取值接近零的状态 如果绝对误差过大 会使仿真在接近零区域运行的仿真时间太小 解决的办法是修改绝对误差参数或者修改初始的状态 2 如果改变绝对误差限还不能达到预期的误差限 则修改相对误差限 使可接受的误差降低 并减小仿真的步长 2 Simulink仿真技巧 连接分支信号线先连接好单根信号线 然后将鼠标指针放在已经连接好的信号线上 同时按住 Ctrl 键 拖动鼠标 连接到另一个模块 这样就可以根据需由一个信号源模块 引出多条信号线 如图7 28所示 图7 28引出多条信号线示例 模块的编辑技巧 1 调整模块大小 2 在同一窗口复制模块 3 删除模块 4 编辑模块标签 7 5其它应用模块集和Simulink扩展库 1 通信模块集 CommunicationsBlockset 图7 31通信模块集中的模块库 2 数字信号处理模块集 DSPBlockset 3 电力系统模块集 PowerSystemBlockset 4 Simulink扩展库 扩展信号输出模块库 AdditionalSinks 图7 35扩展信号输出模块库 扩展离散库 AdditionalDiscrete 扩展线性库 AdditionalLinear 图7 36扩展离散库 图7 37扩展线性库 转换库 Transformations 图7 38转换模块库 触发模块库 FlipFlops 图7 39触发模块库 线性化库 Linearization 图7 40线性化库 宇航模块库 AirspaceBlocks 图7 41宇航模块库 SIMULINK仿真基础 基本建模方法连续系统建模解微分方程 SIMULINK入门 MATLAB命令窗口运行指令 simulinkSIMULINK模块库浏览器 SimulinkLibraryBrowserSource子库建立一个简单的仿真系统 建立一个简单的仿真系统 点击 新建 建立新模型tst1用鼠标在信源模块中选取sinewave 拖曳至tst1窗口用鼠标在信宿模块中选取scope 拖曳至tst1窗口连线启动仿真 模块的基本操作 模块的选定选定单个和选定多个模块的复制复制 粘贴Ctrl键模块名操作点击模块名模块的样式Format菜单 简单建模 按住Ctrl 简单建模 支持向量显示 Mux 支持标量扩展 插入模块 SIMULINK模型 外表 直观的方框图文件 MDL文件数学 微分方程或差分方程行为 模拟物理过程的动态性状 加注释 simulink模型的一般性结构 信源 系统 信宿 数值分析 积分模块的应用 积分模块应用 复位积分 负变正时强迫清零 微分方程 构造微分方程求解模型 Simulink电路仿真 Simulink是MATLAB的一个重要的工具箱 是结合了框图界面和交互仿真能力的系统级设计和仿真工具 它以MATLAB核心数学 图形和语言为基础 可以让用户完成从算法开发 仿真或者模型验证的全过程 而不需要传递数据 重写代码或改变软件环境 在start进入Simulink菜单 选择SimulinkLibraryBrowser 打开Simulink库函数 选择FileNew打开编辑窗口 在MATLAB的Command窗口直接键入Simulink即可打开Simulink工作窗口 Simulink作为面向框图的仿真软件 具有以下的功能和优点 1 用方框图的绘制代替了程序的编写 构成任何一个系统框图有三个步骤 即选定典型环节 相互联结和给定环节参数 2 仿真的建立和运行是智能化的 首先 画好了框图并存起来 Simulink自动建立一个仿真的过程 其次 在运行时用户可以不给步长 只给出要求的仿真精度 软件会自动选择能保证给定精度的最大步长 使得在给定的精度要求下系统仿真具有最快的速度 3 输入输出信号来源形式的多样化 其输入信号可以是各种信号发生器 也可以来自一个设定的记录文件 还可以来自MATLAB的工作空间 workspace 输出信号也类似 这就扩大了仿真系统与各种外部软件和硬件的接口能力 Simulink工具箱中含有大量的仿真模块集 例如PowerSystemBlockset PSB DSPBlockset CommunicationBlockset CDMAReferenceBlockset NonlinearControlDesignBlockset等专门领域应用的仿真模块 研究MATLAB在电路仿真中的应用 主要用到的是Simulink节点下的CommonlyusedBlocks Sinks Sources等模块以及在电路仿真中最长用的PowerSystemBlockset DSP 模块 求i3 U4 U7 1 Simulink常用模块介绍要熟练地使用Simulink进行仿真 首先要求能够熟练使用Simlink常用模块 在模块浏览器中的Simulink节点下包含了搭建一个Simulink模块所需要的基本模块 本节主要对其中的Sources模块库 Sinks模块库 MathOperations库和Continuous模块库中的常用模块进行介绍 Sources模块阶跃函数 起始时间是第1秒而非0秒 双击step模块 对仿真起始时间 steptime 和阶跃值 Initialvalue Finalvalue 的大小进行设置 信号发生器 可以产生给定频率和幅值的正弦波 sinewave 方波 squarewave 和锯齿波 sawtoothwave 双击图标可以设置 定时器 显示仿真时间 在系统仿真时打开定时器 可以看到实时的仿真时间 正弦波 电路中常用到的正弦信号 SineWave 模块 双击图标 在弹出的窗口中调整相关参数 信号生成方式有两种 Timebased和Samplebased 如果以Timebased方式运行该模块 则需要用户设定波形的幅度 Amplitude 偏移 Bias 频率 Frequency 初相 Phase 几个参数 如果选择Samplebased方式 参数设置则为幅度 Amplitude 偏移 Bias 每周期采样数 Sampiesperperiod 和偏移采样数 Numberofoffsetsamples 两种工作方式中的各项参数都可以用关系式加以换算 每周期采样数 2 pi 频率 采样时间 频移采样数 初相 每周期采样数 2 pi 设置采样时间Sampletime 将此参数设置为零时表示以连续的方式工作 将此参数设置为大于零的值时则以所设采样时间工作 但要注意的是采用Samplebased模式的模块式不能以连续的方式工作的 从工作空间输入 从MATLABWorkspace输入已有的函数作为仿真的激励信号 首先要在MATLAB环境下建立一个时间向量和相应的函数值向量 然后将时间向量和函数值向量的名称 T U 填入该图标的对话框中 MathOperations模块加 减运算在Listofsigns文本框中可以选择多个数的加 减法运算 在Iconshape中选择圆形或方形符号 Gain 增益作为后续模块的增益系数 Continuous模块TransferFcn传递函数 设置numerator选项 分子多项式系数的降幂排列 Denominator选项 分母多项式系数的降幂排列 Sinks模块Sinks模块库中的模块主要功能是接受信号 并且将接受的信号显示出来 输出到工作空间 功能与FromWorkspace正好相反 把仿真结果连同输入信号输出到工作空间去 XY示波器 显示MATLAB的图形窗口 输入曲线是以时间为横轴的绘图区域 它的作用是将信号值直接显示在该模块的窗口中 输出信号是个直流信号时 我们就可以把它直接送到这个模块中 从模块窗口中直接读出输入信号的大小 示波器模块可以接受多个输入信号 每个端口的输入信号都将在一个坐标轴中显示 如果是向量或矩阵信号 则以不同的颜色表示每个元素信号 如果信号本身是离散的 则显示信号的阶梯图 1 示波器的工具栏 2 坐标轴的范围调整在坐标框内单击鼠标右键 在弹出的快捷菜单中执行 Axesproperties 命令 可以对坐标轴进行调整 如图4 1 1所示 Y min Y max 分别是设置Y轴的最小值和最大值 在 Title 中可以为坐标轴取个名字 默认是以输入信号线的标签作为坐标轴的名字 3 示波器的参数设置单击图标将弹出 示波器参数设置 Sope Parameters 对话框 General 选项卡中各个选项的含义如下 Numberofaxes 文本框 用于设置轴的个数 可以用于实现对多个输入信号的显示 Timerange 文本框 用于设置X轴 即时间轴 的显示范围 Sampling 下拉列表 当在该下拉列表选择 Decimation 选项时可设置显示频度 如其设为n 则每隔n 1个数据点都给予显示 如果选 Sampletime 可设置显示点采样时间 如果为0表示显示连续信号 1表示显示方式取决于输入信号 任何大于零的数据表示显示离散信号的时间间隔 Floatingscope 复选框 若选中该复选框 则表示示波器以游离方式工作 4 关于游离示波器工作在游离状态的示波器能够对模型中一条或多条信号线上的信号进行观察 而不用将示波器和信号线相连 观察具体的信号时可以在工具栏中单击图标 在打开的信号选择器中进行选择 2 SimPowerSystems模块介绍 DCVoltageSource直流电压源 在 ElectricalSources 模块内 SeriesRLCBranch串联RLC支路 设置参数可以去掉任一元件 将其变为单独的电阻 电容或电感的支路 将SeriesRLCBranch模块设置成单一电阻时 应将参数 Resistance 设置为所仿真电阻的真实值 Inductance 设置为0 Capacitance 设置为inf 将Series RLCBranch模块设置单一电感模块时 应将参数 Inductance 设置为所仿真电感的真实值 Resistance 设置为0 Capacitance 设置为inf 将SeriesRLCBranch设置单一电容模块时 应将参数 Capacitance 设置为所仿真电感的真实值 Resistance 和 Inductance 均设置为0 ParallelRLCBranch并联RLC支路 设置参数可以去掉任一元件 将其变为单独的电阻 电容或电感的支路 将ParallelRLCBranch模块设置成单一电阻时 应将参数 Resistance 设置为所仿真电阻的真实值 Inductance 设置为inf Capacitance 设置为0 将Parallel RLCBranch模块设置单一电感模块时 应将参数 Inductance 设置为所仿真电感的真实值 Resistance 设置为inf Capacitance 设置为0 将ParallelRLCBranch设置单一电容模块时 应将参数 Capacitance 设置为所仿真电感的真实值 Resistance 和 Inductance 均设置为inf CurrentMeasurement VoltageMeasurement在 Measurmrnts 模块内 可以用来测量所在支路的电流值和电压值 ControlledVoltageSource受控电压源 ControlledCurrentSource受控电流源
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!