Simulink建模与仿真(精华版)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2.2、仿真运行原理 、
Simulink仿真包括两个阶段;初始化阶段和模型执行阶段 仿真包括两个阶段; 仿真包括两个阶段 (1) 模块初始化 在初始化阶段主要完成以下工作: 在初始化阶段主要完成以下工作: 模型参数传给Matlab进行估值,得到的数值结果将作为模型 进行估值, ① 模型参数传给 进行估值 的实际参数; 的实际参数; 展开模型的各个层次, ② 展开模型的各个层次,每一个非条件执行的子系统被它所包 含的模块所代替; 含的模块所代替;
上 页
下 页
3
Simulink的特点 的特点: 的特点
(1)丰富的可扩充的预定义模块库 ; 丰富的可扩充的预定义模块库 (2)交互式的图形编辑器来组合和管理直观的模块图 ; 交互式的图形编辑器来组合和管理直观的模块图 (3)以设计功能的层次性来分割模型,实现对复杂设计的管理; 以设计功能的层次性来分割模型, 以设计功能的层次性来分割模型 实现对复杂设计的管理; (4)通过 通过Model Explorer 导航、创建、配置、搜索模型中的任 导航、创建、配置、 通过 意信号、参数、属性, 意信号、参数、属性,生成模型代码 ; (5)提供 提供API(Application Programming Interface,应用程序编程接口 应用程序编程接口) 提供 应用程序编程接口 用于与其他仿真程序的连接或与手写代码集成 ; (6)使用 使用Embedded MATLAB™ 模块在 模块在Simulink和嵌入式系统 使用 和嵌入式系统 执行中调用MATLAB算法 ; 执行中调用 算法 (7)使用定步长或变步长运行仿真,根据仿真模式 使用定步长或变步长运行仿真, 使用定步长或变步长运行仿真 根据仿真模式(Normal, Accelerator,Rapid Accelerator)来决定以解释性的方式运行 来决定以解释性的方式运行 或以编译C代码的形式来运行模型 或以编译 代码的形式来运行模型 ; (8)图形化的调试器和剖析器来检查仿真结果,诊断设计的性 图形化的调试器和剖析器来检查仿真结果, 图形化的调试器和剖析器来检查仿真结果 能和异常行为 ; (9)可访问 可访问MATLAB从而对结果进行分析与可视化,定制建模环境, 从而对结果进行分析与可视化, 可访问 从而对结果进行分析与可视化 定制建模环境, 定义信号参数和测试数据; 定义信号参数和测试数据; (10)模型分析和诊断工具来保证模型的一致性,确定模型中的错误。 模型分析和诊断工具来保证模型的一致性, 模型分析和诊断工具来保证模型的一致性 确定模型中的错误。
5
上 页
下 页
3.2 基本操作
3.2.1 模型基本结构
一个典型的Simulink模型包括如下三种类型的元素: 一个典型的Simulink模型包括如下三种类型的元素: 模型包括如下三种类型的元素 ① 信号源模块 ② 被模拟的系统模块 ③ 输出显示模块
源模块
系统模块
显示模块
图3.1.1 Simulink模型元素关联图 模型元素关联图 如图3.1.1所示说明了这三种元素之间的典型关系 所示说明了这三种元素之间的典型关系。 如图3.1.1所示说明了这三种元素之间的典型关系。 系统模块作为中心模块 作为中心模块, Simulink仿真建模所要解决的主要部分 仿真建模所要解决的主要部分; ▽ 系统模块作为中心模块,是Simulink仿真建模所要解决的主要部分; 信号源模块为系统的输入 它包括常数信号源或函数信号发生器( 为系统的输入, ▽ 信号源模块为系统的输入,它包括常数信号源或函数信号发生器(如正 弦和阶跃函数波等)和用户自己在Matlab中创建的自定义信号 中创建的自定义信号。 弦和阶跃函数波等)和用户自己在Matlab中创建的自定义信号。 显示模块主要是接收系统的输出 输出显示的形式包括图形显示, 主要是接收系统的输出, ▽ 显示模块主要是接收系统的输出,输出显示的形式包括图形显示,示波器 库中 显示和输出到文件或MATLAB工作空间中三种 输出模块主要在Sinks库中。 显示和输出到文件或MATLAB工作空间中三种. 输出模块主要在Sinks库中。 工作空间中三种.
Simulink 仿真基础
1 Simulink的概述 Simulink的概述 2 基本操作 3 基本模块 4 建模方法 5 系统仿真举例
1
3.1 Simulink的概述 Simulink的概述
Simulink已经成为动态系统建模和仿真领域中应用最为广泛的软件 已经成为动态系统建模和仿真领域中应用最为广泛的软件 之一。 可以很方便地创建和维护一个完整的模块, 之一。Simulink可以很方便地创建和维护一个完整的模块,评估不 可以很方便地创建和维护一个完整的模块 同的算法和结构,并验证系统的性能。由于Simulink是采用模块组 同的算法和结构,并验证系统的性能。由于 是采用模块组 合方式来建模,从而可以使得用户能够快速、 合方式来建模,从而可以使得用户能够快速、准确地创建动态系统 的计算机仿真模型,特别是对复杂的不确定非线性系统,更为方便。 的计算机仿真模型,特别是对复杂的不确定非线性系统,更为方便。 Simulink模型可以用来模拟线性和非线性、连续和离散或者两者的 模型可以用来模拟线性和非线性、 模型可以用来模拟线性和非线性 混合系统,也就是说它可以用来模拟几乎所有可能遇到的动态系统。 混合系统,也就是说它可以用来模拟几乎所有可能遇到的动态系统。 另外Simulink还提供一套图形动画的处理方法,使用户可以方便的 还提供一套图形动画的处理方法, 另外 还提供一套图形动画的处理方法 观察到仿真的整个过程。 观察到仿真的整个过程。 Simulink没有单独的语言,但是它提供了 函数规则。所谓的 函数 没有单独的语言, 函数规则。 没有单独的语言 但是它提供了S函数规则 所谓的S函数 可以是一个M函数文件 函数文件、 程序、 或 语言程序等,通过 可以是一个 函数文件、FORTRAN程序、C或C++语言程序等 通过 程序 语言程序等 特殊的语法规则使之能够被Simulink模型或模块调用。S函数使 模型或模块调用。 函数使 特殊的语法规则使之能够被 模型或模块调用 Simulink更加充实、完备,具有更强的处理能力。 更加充实、 更加充实 完备,具有更强的处理能力。
上 页 下 页
2
一样, 也不是封闭的,他允许用户可以很方 同Matlab一样,Simulink也不是封闭的 他允许用户可以很方 一样 也不是封闭的 便的定制自己的模块和模块库。同时Simulink也同样有比较完 便的定制自己的模块和模块库。同时 也同样有比较完 整的帮助系统,使用户可以随时找到对应模块的说明, 整的帮助系统,使用户可以随时找到对应模块的说明,便于应 用。 目前,随着软件的升级换代, 目前,随着软件的升级换代,在软硬件的接口方面有了很大的 改进,使用Simulink可以很方便地进行实时的信号控制和处理、 可以很方便地进行实时的信号控制和处理、 改进,使用 可以很方便地进行实时的信号控制和处理 信息通信以及DSP的处理。世界上许多知名的大公司已经使用 的处理。 信息通信以及 的处理 Simulink作为他们产品设计和开发的强有力工具。 作为他们产品设计和开发的强有力工具。 作为他们产品设计和开发的强有力工具 综上所述, 就是一种开放性的, 综上所述,Simulink就是一种开放性的,用来模拟线性或非线 就是一种开放性的 性的以及连续或离散的或者两者混合的动态系统的强有力的系 统级仿真工具。 统级仿真工具。
上 页 下 页个模块的输出。 ① 首先,按照排序所决定的次序计算每个模块的输出。 然后,根据当前时刻的输入和状态来决定状态的微分; ② 然后,根据当前时刻的输入和状态来决定状态的微分;得到微分 向量后再把它返回给解法器; 向量后再把它返回给解法器;后者用来计算下一个采样点的状态 向量。一旦新的状态向量计算完毕, 向量。一旦新的状态向量计算完毕,被采样的数据源模块和接受 模块才被更新。 模块才被更新。 在仿真开始时模型设定待仿真系统的初始状态和输出。 在仿真开始时模型设定待仿真系统的初始状态和输出。在每 一时间中, 计算系统的输入、 一时间中,Simulink计算系统的输入、状态和输出,并更新模型 计算系统的输入 状态和输出, 来反映计算出的值。在仿真结束时,模型得出系统的输入、 来反映计算出的值。在仿真结束时,模型得出系统的输入、状态 和输出。 和输出。 在每个时间步中,Simulink所采取的动作依次为: 在每个时间步中, 所采取的动作依次为: 所采取的动作依次为 按排列好的次序更新模型中模块的输出。 ① 按排列好的次序更新模型中模块的输出。Simulink通过调用模块 通过调用模块 的输出函数计算模块的输出。 只把当前值、 的输出函数计算模块的输出。Simulink只把当前值、模块的输入 只把当前值 以及状态量传给这些函数计算模块的输出。对于离散系统, 以及状态量传给这些函数计算模块的输出。对于离散系统, Simulink只有在当前时间是模块采样时间的整数倍时,才会更新 只有在当前时间是模块采样时间的整数倍时, 只有在当前时间是模块采样时间的整数倍时 模块的输出。 模块的输出。
上 页 下 页
7
模型中的模块按更新的次序进行排序。 ③ 模型中的模块按更新的次序进行排序。排序算法产生一个列表以确 保具有代数环的模块在产生它的驱动输入的模块被更新后才更新。 保具有代数环的模块在产生它的驱动输入的模块被更新后才更新。 当然,这一步要先检测出模型中存在的代数环。 当然,这一步要先检测出模型中存在的代数环。 决定模型中有无显示设定的信号属性,例如名称、数据类型、 ④ 决定模型中有无显示设定的信号属性,例如名称、数据类型、数值 类型以及大小等, 类型以及大小等,并且检查每个模块是否能够接受连接到它输入端 的信号。 使用属性传递的过程来确定未被设定的属性, 的信号。Simulink使用属性传递的过程来确定未被设定的属性,这 使用属性传递的过程来确定未被设定的属性 个过程将源信号的属性传递到它所驱动的模块的输入信号; 个过程将源信号的属性传递到它所驱动的模块的输入信号; 决定所有无显示设定采样时间的模块的采样时间; ⑤ 决定所有无显示设定采样时间的模块的采样时间; 分配和初始化用于存储每个模块的状态和输入当前值的存储空间。 ⑥ 分配和初始化用于存储每个模块的状态和输入当前值的存储空间。 完成这些工作后就可以进行仿真了。 完成这些工作后就可以进行仿真了。 (2) 模型执行 一般模型是使用数值积分来进行仿真的。所运用的仿真解法器( 一般模型是使用数值积分来进行仿真的。所运用的仿真解法器(仿真 算法)依赖于模型提供它的连续状态微分能力。 算法)依赖于模型提供它的连续状态微分能力。计算微分可以分两 步进行: 步进行:
上 页 下 页
4
Simulink的启动 的启动
(1) 在MATLAB6.5的命令窗口中输入 的命令窗口中输入simulink 的命令窗口中输入 结果是在桌面上出现一个称为Simulink Library Browser的窗口, 的窗口, 结果是在桌面上出现一个称为 的窗口 在这个窗口中列出了按功能分类的各种模块的名称。 在这个窗口中列出了按功能分类的各种模块的名称。 当然用户也可以通过MATLAB主窗口的快捷按钮来打开 主窗口的快捷按钮来打开Simulink 当然用户也可以通过 主窗口的快捷按钮来打开 Library Browser窗口。 窗口。 窗口 (2) 在MATLAB6.5的命令窗口中输入 的命令窗口中输入simulink3 的命令窗口中输入 结果是在桌面上出现一个用图标形式显示的Library :simulink3的 结果是在桌面上出现一个用图标形式显示的 的 Simulink模块库窗口。 模块库窗口。 模块库窗口 两种模块库窗口界面只是不同的显示形式, 两种模块库窗口界面只是不同的显示形式,用户可以根据各人喜 好进行选用,一般说来第二种窗口直观、形象,易于初学者, 好进行选用,一般说来第二种窗口直观、形象,易于初学者,但 使用时会打开太多的子窗口。 使用时会打开太多的子窗口。 (3) 在MATLAB6.5的主桌面中的工具栏中点击图标 的主桌面中的工具栏中点击图标 (与第 (1)种所打开的窗口一样 种所打开的窗口一样) 与第 种所打开的窗口一样 即可. 即可
上 页 下 页
6
Simulink模型并不一定要包含全部的三种元素,在实际应用 模型并不一定要包含全部的三种元素, 模型并不一定要包含全部的三种元素 中通常可以缺少其中的一个或两个。 中通常可以缺少其中的一个或两个。 例如,若要模拟一个系统偏离平衡位置后的恢复行为, 例如,若要模拟一个系统偏离平衡位置后的恢复行为,就可 以建立一个没有输入而只有系统模块加一个显示模块的模型。 以建立一个没有输入而只有系统模块加一个显示模块的模型。 在某种情况下, 在某种情况下,也可以建立一个只有源模块和显示模块的系 若需要一个由几个函数复合的特殊信号, 统。若需要一个由几个函数复合的特殊信号,则可以使用源模块 生成信号并将其送入Matlab工作间或文件中。 工作间或文件中。 生成信号并将其送入 工作间或文件中