第7讲 Simulink工具箱
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章Simulink建模和仿真
7.1 Simulink的概述和基本操作
• ② 按排列好的次序更新模型中模块的状态,Simulink计算 一个模块的离散状态的方法时调用模块的离散状态更新函数 。而对于连续状态,则对连续状态的微分(在模块可调用的 函数里,有一个用于计算连续微分的函数)进行数值积分来 获得当前的连续状态。 • ③ 检查模块连续状态的不连续点。Simulink使用过零检测 来检测连续状态的不连续点。 • ④ 计算下一个仿真时间步的时间。这是通过调用模块获得 下一个采样时间函数来完成的。 • (3) 定模块更新次序 • 在仿真中,Simulink更新状态和输出都要根据事先确定的模 块更新次序,而更新次序对方针结果的有效性来说非常关键 。特别当模块的输出是当前输入值的函数时,这个模块必须 在驱动它的模块被更新之后才能被更新,否则,模块的输出 将没有意义。
计算机仿真技术
MATLAB/Simulink设计
湖南大学电气与信息工程学院
第7讲 MATLAB/Simulink设计
7.1 Simulink简介 7.2 模块库及简单建模 7.3 仿真运行及参数调整 7.4 子系统 7.5 S函数
1. Simulink简介
• Simulink 中的“Simu”一词表示可用于计算机仿真,而 “Link”一词表示它能进行系统连接,即把一系列模块连 接起来,构成复杂的系统模型。 • Simulink是一个用来对动态系统进行建模、仿真和分析 的软件包。它让用户把精力从编程转向模型的构造.使用 Simulink来建模、分析和仿真各种动态系统(包括连续系 统、离散系统和混合系统),将是一件非常轻松的事情。 • 利用Simulink进行系统的建模仿真,其最大的优点是易学、 易用,并能依托MATLAB提供的丰富的仿真资源。
• 近几年来,在学术界和工业领域,Simulink已经成为动态系 统建模和仿真领域中应用最为广泛的软件之一。Simulink可 以很方便地创建和维护一个完整地模块,评估不同地算法和 结构,并验证系统的性能。由于Simulink是采用模块组合方 式来建模,从而可以使得用户能够快速、准确地创建动态系 统的计算机仿真模型,特别是对复杂的不确定非线性系统, 更为方便。 • Simulink模型可以用来模拟线性和非线性、连续和离散或者 两者的混合系统,也就是说它可以用来模拟几乎所有可能遇 到动态系统。另外Simulink还提供一套图形动画的处理方法 ,使用户可以方便的观察到仿真的整个过程。 • Simulink没有单独的语言,但是它提供了S函数规则。所谓 的S函数可以是一个M函数文件、FORTRAN程序、C或C++语言 程序等,通过特殊的语法规则使之能够被Simulink模型或模 块调用。S函数使Simulink更加充实、完备,具有更强的处 理能力。
第七章Simulink建模和仿真
7.1 Simulink的概述和基本操作
•
•
• •
① 首先,按照排序所决定的次序计算每个模块的输出。 ② 然后,根据当前时刻的输入和状态来决定状态的微分; 得到微分向量后再把它返回给解法器;后者用来计算下一 个采样点的状态向量。一旦新的状态向量计算完毕,被采 样的数据源模块和接受模块才被更新。 在仿真开始时模型设定待仿真系统的初始状态和输出。在 每一个时间步中,Simulink计算系统的输入、状态和输出 ,并更新模型来反映计算出的值。在仿真结束时,模型得 出系统的输入、状态和输出。 在每个时间步中,Simulink所采取的动作依次为: ① 按排列好的次序更新模型中模块的输出。Simulink通过 调用模块的输出函数计算模块的输出。Simulink只把当前 值、模块的输入以及状态量传给这些函数计算模块的输出 。对于离散系统,Simulink只有在当前时间是模块采样时 间的整数倍时,才会更新模块的输出。
SIMULINK模型
• • • • 外表:直观的方框图 文件:MDL文件 数学:微分方程或差分方程 行为:模拟物理过程的动态性状
Simulink动态仿真
Simulink 基本操作 利用Simulink进行系统仿真的步骤是: ① 启动Simulink,打开Simulink模块库 ② 打开空白模型窗口; ③ 建立Simulink仿真模型; ④ 设置仿真参数,进行仿真; ⑤ 输出仿真结果。
7.1 Simulink的概述和基本操作
③ 模型中的模块按更新的次序进行排序。排序算法产生一个列表 以确保具有代数环的模块在产生它的驱动输入的模块被更新后才 更新。当然,这一步要先检测出模型中存在的代数环。 ④ 决定模型中有无显示设定的信号属性,例如名称、数据类型、 数值类型以及大小等,并且检查每个模块是否能够接受连接到它 输入端的信号。Simulink使用属性传递的过程来确定未被设定的 属性,这个过程将源信号的属性传递到它所驱动的模块的输入信 号; ⑤ 决定所有无显示设定采样时间的模块的采样时间; ⑥ 分配和初始化用于存储每个模块的状态和输入当前值的存储空 间。 完成这些工作后就可以进行仿真了。 2) 模型执行 一般模型是使用数值积分来进行仿真的。所运用的仿真解法器 (仿真算法)依赖于模型提供它的连续状态微分能力。计算微分 可以分两步进行:
matlab函数仿真与simulink仿真的区别 1、数据流仿真 按照数据流的顺序,依次执行,即处理的数据首先通过一 个运算阶后在激活下一个运算阶。
例如:m=16; n=15; k=11; fc=10000; fd=1000; fs=100000; msg=randint(k*100,1); code=encode(msg,n,k,'bch'); modu=dmod(code,fc,fd,fs,'qask',m); modu_noise=modu+randn(length(modu),1); demo=ddemod(modu_noise,fc,fd,fs,'qask',m); msg_r=decode(demo,n,k,'bch'); rate=biterr(msg,msg_r);
第七章 Simulink建模和仿真
7.1 Simulink的概述和基本操作
7.1.2 基本操作 一、模型基本结构 一个典型的Simulink模型包括如下三种类型的元素: ① 信号源模块 ② 被模拟的系统模块 ③ 输出显示模块 如图7.1.1所示说明了这三种元素之间的典型关系。系统 模块作为中心模块是Simulink仿真建模所要解决的主要部分; 信号源为系统的输入,它包括常数信号源函数信号发生器 (如正弦和阶跃函数波等)和用户自己在Matlab中创建的自 定义信号或Matlab工作间中三种。输出模块主要在Sinks库 中。
二、仿真运行原理
Simulink仿真包括两个阶段;初始化阶段和模型执行阶段 (1) 模块初始化 在初始化阶段主要完成以下工作: ① 模型参数传给Matlab进行估值,得到的数值结果将作为模 型的实际参数; ② 展开模型的各个层次,每一个非条件执行的子系统被它所 包含的模块所代替;
第七章Simulink建模和仿真
Simulink的模块库
• Simulink的模块库能够对系统模块进行有效的管理与组织 可以直接将模块库中的模块拖动或者拷贝到用户的系统模 型中以构建动态系统模型。
模块搜索 模块描述
系统模块 系统模块库
Simulink公共模块库
Simulink中最为基础、最为通用的模块库,它可以被应用到不同的专业领域中。 Simulink模块库按功能分为以下16类子模块库: • (1)Commonly Used Blocks:仿真常用模块库 • (2)Continuous:连续系统模块库 • (3)Discontinuities:非线性系统模块库 • (4)Discrete:离散系统模块库 • (5)Logic and Bit Operations:逻辑运算和位运算模块库 • (6)Lookup Tables:查找表模块库 • (7)Math Operations:数学运算模块库 • (8)Model Verification:模型验证模块库 • (9)Model-Wide Utilities:进行模型扩充的实用模块库 • (10)Ports & Subsystems:端口和子系统模块库 • (11)Signals Attributes:信号属性模块库 • (12)Signals Routing:提供用于输入、输出和控制的相关信号及相关处理的模块库 • (13)Sinks:仿真接收模块库 • (14)Sources:仿真输入源模块库 • (15)User-defined Functions:用户自定义函数模块库 • (16)Additional Math &Discrete:附加的数学和离散模块库
Simulink仿真过程 1.初始化阶段 ① 对模型的参数进行估计,得到它们实际计算的值。 ② 展开模型的各个层次; ③ 按照更新的次序对模型进行排序; ④ 确定那些显式化的信号属性,并检查每个模块是否能够接受连接它们输入端的信号; ⑤ 确定所有非显式的信号采样时间模块的采样时间; ⑥ 分配和初始化存储空间,以便存储每个模块的状态和当前值的输出。 2.模型执行阶段 模型仿真是通过数值积分来进行完成的,计算数值积分可以采用以下两步来进行: ① 按照秩序计算每个模块的积分; ②根据当前输入和状态来决定状态的微分,得到微分矢量,然后把它返回给解法器, 以计算下一个采样点的状态矢量。在每一个时间步中,Simulink依次解决下列问题: · 按照秩序更新模块的输出; · 按照秩序更新模块的状态; · 检查模块连续状态的不连续点; · 计算下一个仿真时间步的时间。
第七章Simu百度文库ink建模和仿真
7.1 Simulink的概述和基本操作
• 注意:不要把模块保存到模块文件的次序与仿真过程模块被更新 的次序相混淆。Simulink在模块初始化时以将模块排好正确的次 序。 • 为了建立有效的更新次序,Simulink根据输入和输出的关系将模 块分类。其中,当前输出依赖于当前输入的模块称为直接馈入模 块,所有其他的模块都称为非虚拟模块。直接馈入模块的例子有 Gain、Product和Sum模块;非直接馈入模块的例子有Integrator 模块(它的输出只依赖于它的状态),Constant模块(没有输入)和 Memory模块(它的输出只依赖于前一个模块的输入)。 • 基于上述分类,Simulink使用下面两个基本规则对模块进行排序 : • ① 每个模块必须在它驱动的所有模块更新之前被更新。这条规 则确保了模块被更新时输入有效。 • ② 若非直接馈入模块在直接馈入模块之前更新,则它们的更新 次序可以是任意的。这条规则允许Simulink在排序过程中忽略非 虚拟模块。 • 另外一个约束模块更新次序的因素是用户给模块设定优先级, Simulink在低优先级模块之前更新高优先级模块。
源模块 系统模块 显示模块
图7.1.1 Simulink模型元素关联图
第七章Simulink建模和仿真
7.1 Simulink的概述和基本操作
• Simulink模型并不一定要包含全部的三种元素,在实际应用 中通常可以缺少其中的一个或两个。例如,若要模拟一个系 统偏离平衡位置后的恢复行为,就可以建立一个没有输入而 只有系统模块加一个显示模块的模型。在某种情况下,也可 以建立一个只有源模块和显示模块的系统。若需要一个由几 个函数复合的特殊信号,则可以使用源模块生成信号并将其 送入Matlab工作间或文件中。
• 提供了仿真库的扩充和定制机制
– Simulink的开放式结构允许用户扩展仿真环境 的功能:采用MATLAB、FORTRAN和C代码 生成自定义模块库,并拥有自己的图标和界面。
• 与MATLAB工具箱的集成
– 由于Simulink可以直接利用MATLAB的诸多资 源与功能,因而用户可以直接在 Simulink下完 成诸如数据分析、过程自动化、优化参数等工 作。
Simulink应用领域
simulink在matlab家族中的位置
Stateflow
Blockset
coder
simulink RTW
Toolboxes
MATLAB
compiler
Simulink的启动主要有以下两种方法:
– 在MATLAB的命令窗口中输入simulink,结果 是在桌面上出现一个Simulink Library Browser的窗口。 – 单击MATLAB主窗口的快捷按钮 ,打开 Simulink Library Browser窗口 。
2、时间流仿真 所有模块在同一时间步长上同时执行。
信号发生 差错控制编码 数据 数字调制 差错控制译码 信宿 时间
2.模块库及简单建模
Simulink模型窗口的建立
在Simulink中打开一个空白的模型窗口的方法:
• 选中Simulink菜单系统中的File | New | Model菜单项后, 会生成一个Simulink窗口; • 单击Simulink工具栏中的“新建模型”图标; • 在MATLAB的命令窗口中选择File | New | New Model菜 单项;