模型是使用数学方程和图表对系统进行抽象和简化的描述。本主题中的建模概念为理解用Simulink数学描述系统的过程提供了背景金宝app®软件工具。
一个框图是在Simulink编辑器中模型的可视化表示。金宝app编辑器允许您添加从表示基本模型组件的块库中选择的块。基本元件包括积分器、增益和和块。块之间通过信号和事件线相互连接,以直观地构建模型方程。
系统的经典框图是用块和线图形化地画出来的。这些框图的历史源自于工程学领域,如反馈控制理论和信号处理。块图中的块本身定义了模型。基本模型之间的关系由连接块的信号线表示。框图中的块和线共同描述了系统的整体模型。
金宝appSimulink扩展了经典的框图:
将一组方程(块方法)添加到每个块,该块定义输入信号,输出信号和块状态变量之间的基于时间的关系。
向每个块添加参数,以指定模型方程中的系数。
通过评估随时间变化的关系,为方框图的数值解提供引擎,其中时间从用户指定的“开始时间”开始,到用户指定的“停止时间”结束
也可以看看:金宝app模型方框图,交互式地构建和编辑模型,模拟.
一个块是Simulink编辑器的一个基本建模构造。金宝app从内置的Simulink库中添加块来执行特定的操作。金宝app您还可以创建自定义块。一些块有输入信号、输出信号和状态。大多数块都有用于指定块行为的参数。块是否有参数以及这些参数的性质是特定于每个块的。
每个块表示Simulink引擎的一组方程式。方程表示为块方法。上面显示的块具有以下块方法。金宝app
在模拟框图期间评估块方法。块方法的评估在仿真环路内执行,其中每个循环通过仿真环路表示在给定时间点的框图的评估。
虚拟块在模型中组织和提供图形层次结构,但它们不影响模拟结果。在模型仿真期间,Simulink在执行之前将块展开金宝app,这个过程称为扁平化。这种扩展类似于C或c++等编程语言中的宏工作方式。
金宝appSimulink定义了以下虚拟块:
虚拟子系统- 使用虚拟子系统封装更大模型中的相关和功能部分。一个虚拟子系统块具有该参数的复选框当作原子单位对待清除。
轮廓尺寸和外港-使用端口块将数据(信号)和事件(函数调用)从子系统块或引用模型块外部移动到块内部,反之亦然。
公共汽车创造者,总线分配,总线选择器-总线块将信号组合成一个虚拟总线,并围绕一个复杂的框图管理信号的路由。虚拟总线是一种图形化的便利,并且不会改变模型的行为。
非虚拟块在模型中提供执行控制和图形层次结构。金宝appSimulink定义了以下非虚拟子系统和模型块:
原子子系统和模型-块在一个原子子系统块或模型块,它在每个时间步骤中引用作为单个单元(原子执行)执行的模型。对于原子子系统块,参数的复选框当作原子单位对待被选中。
你可以放置任何Simulink块在金宝app原子子系统或引用的模型,包括具有不同执行率的块。这种灵活性提供了在执行级别进行分组模型的功能方面的优势。
在下面的例子中,车辆模型是原子子系统模拟汽车结构的积木。控制模型引用自模型块。
启用和/或触发 -原子子系统要么模型块执行其执行由来自信号的外部数据控制。包含一个使能够要么触发块,或两者兼而有之。为触发块,参数触发类型设置为升起
,落下
, 要么要么
.
功能呼叫 -原子子系统要么模型块的执行由来自函数调用发起者(例如statflow)的事件控制®图表或一个函数调用生成器,S函数, 要么击球块)。包含一个触发块与触发类型设置为函数调用
.
金宝appSimulink定义了以下非虚拟组件子系统块。
行动子系统-原子子系统块,其执行由来自动作发起者的事件控制(例如,如果要么切换案例块)。包含一个行动港口块内子系统块。
While迭代器子系统原子子系统块,它在每个模型时间步骤中运行多个迭代。包含一个而迭代器通过评估逻辑条件来控制迭代次数的块。
while迭代器子系统类似于函数调用子系统,因为它可以在给定的时间步骤中运行任意数量的迭代。while迭代器子系统与函数调用子系统的不同之处在于,它没有单独的启动器。
用于迭代器子系统 -原子子系统块,它在每个模型时间步骤中运行固定数量的迭代。包含一个对迭代器块,它控制迭代次数。
看到非虚拟块和虚拟块.
一个遮罩是仅显示选定块参数的自定义块参数界面。子系统块的掩码允许您提供一个接口,用于在子系统内的块上设置参数子系统块而无需导航模型层次结构。
看到掩盖基础知识.
自定义块是扩展Simulink内置功能的新块。金宝app您可以在模型中使用自定义块的库。
下面的块定义了自定义块的算法,可以是图形化的,也可以是程序化的:
MATLAB®函数-使用MATLAB语言编写MATLAB函数代码,在Simulink模型中运行。金宝app看到用块实现MATLAB函数.
MATLAB系统-带来现有系统
基于对象matlab。系统
仿真软件。金宝app看到MATLAB系统块.
子系统——画一个表示算法的框图,把这个框图包装在Simulink的一个实例中金宝app子系统块,然后使用Simulink块掩码为块提供一个参数对话框。金宝app看到子系统,原子子系统,代码重用子系统.
C调用者——将外部C代码集成到Simulink模型中。金宝app看到使用C调用程序块集成C代码.
S-Function -通过创建一个MATLAB文件或一个MEX文件,以编程方式创建一个自定义块,该文件包含块的系统函数。生成的文件称为s函数。然后将s函数与Simulink的实例关联起来金宝appS函数块在模型中。看到S函数.
一个线是Simulink编辑器的一个基本建模构造。金宝app线路连接模块的输出端口和其他模块的输入端口。
信号线在模拟过程中,将数据从一个块传输到另一个块。信号是时变量,在所有时间点(连续)或指定时间点(离散)具有值。信号源对应于在评估其块输出方法期间写入信号的块。信号的目标是在评估其块输入方法期间读取信号的块。
您可以指定信号属性,包括信号名称、数据类型(例如,双精度、32位整数)、数字类型(例如,实数、复数)和维数(例如,一维、二维、多维数组)。许多块可以接受或输出任何数据类型或维度的信号。其他块对它们可以处理的信号的属性施加了限制。
在模拟过程中,通过记录信号来保存数据。
为了响应函数调用或动作发起者,事件行发送一个事件到子系统要么模型块。接收该事件的块在时间步骤期间在一次或多次内执行块。函数调用启动器包括StateFlow图表,函数调用生成器块,S函数块,击球块。行动倡议者包括如果和切换案例块。
资料包括Simulink用于生成模拟模型行为产生的输出值的参数和输入信号值。金宝app
类型的数据:
模型参数-在模型中指定块和信号参数的变量。包括MATLAB变量、参数和信号数据对象、数据类型对象和总线对象。
模型配置参数——通过指定控制模型行为的设置来确定模型如何运行的参数。
仿真数据-驱动仿真的输入数据和由仿真生成的输出数据。
数据对象——数据类的实例,允许您指定信号、状态和块参数的特征。使用金宝appsimulink.signal.
和金宝app仿真软件。参数
类以创建数据对象。看到数据对象.
位置的数据:
块的参数—使用块参数直接指定数值。您还可以输入一个变量名并在Simulink模型工作空间、Simulink数据字典或MATLAB基础工作空间中定义其值。金宝app
Matlab基础工作区-使用MATLAB基础工作空间来保存变量,从模型分离在一个mat文件或MATLAB脚本。
金宝appSimulink将基本工作空间和数据字典视为单个全局名称空间。如果基本工作空间和引用的数据字典具有相同的变量名,那么Simulink将使用数据字典中的变量值。金宝app
MATLAB基础工作空间包含全局变量,并且对所有Simulink模型可见。金宝app
金宝appSimulink模型工作空间- 使用模型工作区定义并存储本地数据变量。在模型工作区中定义的变量仅在模型的范围内可见,其中名称空间唯一。因此,您可以在多个模型工作区中使用相同的变量名称,您可以为每个模型中的名称分配唯一的变量值。
使用Model Explorer在数据字典中定义变量。在里面建模选项卡上,单击模型浏览器.在左侧窗格中,选择模型工作区。
模型工作空间变量的值是从模型中保存的值初始化的,从一个单独的mat文件或MATLAB文件,或使用与模型一起保存的MATLAB代码初始化的。
金宝app模型数据字典—使用数据字典定义和存储全局数据,在模型之间共享数据,跟踪数据变化。数据保存在一个与模型分离的文件中。
创建数据字典文件。在里面建模选项卡,在设计,点击数据词典.点击新并输入一个带有扩展名的文件名.sldd
.
使用Model Explorer在数据字典中定义变量。在里面建模选项卡上,单击模型浏览器.在左侧窗格中,选择设计数据.
看到什么是数据字典?.
导入导出数据-从MATLAB基础工作区、mat文件或电子表格导入仿真信号。使用源块或信号编辑器块。使用信号日志记录导出仿真结果。信号保存为向量(t, X, Y)
对于每个主要时间步骤的时间、状态和输出。
参数是影响仿金宝app真和代码生成结果的Simulink模型特性。
模型配置参数指定在编译、模拟和代码生成期间的模型行为,例如要使用的求解器以及要显示的错误和警告类型。
要指定模型配置参数,请在建模选项卡上,单击模型设置.打开“配置参数”对话框。
看到设置型号配置参数.
块的参数定义模型动力学和数学。块是否有可以设置的参数,以及这些参数的性质是特定于每个块的。要指定块参数,请打开块参数对话框,或在建模选项卡,在设计,请按下列其中一项:
属性检查器—直接指定块参数或为参数值输入变量名。
模型数据编辑器—使用变量指定块参数。
模型浏览器—使用变量指定块参数。
看到设置块参数值.
如果在大型模型的许多位置使用单个参数,那么更新该参数的每个实例可能是一项困难的任务。相反,输入一个变量名作为参数的值,然后使用下列方法之一定义变量:
金宝appSimulink模型工作区-创建模型工作区变量并给变量赋值。您定义的参数是特定于模型的,并与模型一起保存。使用MATLAB变量,便于维护。使用一个金宝app仿真软件。参数
对象来控制其他属性,包括数据类型、维和单元。看到使用模型管理器编辑和管理工作区变量.
金宝appSimulink数据字典-在数据字典中创建设计数据变量,并将字典链接到模型。在模型仿真过程中,Simulink从数据字典中检索金宝app数据。
MATLAB基础工作空间 - 在MATLAB基础工作区中,使用任何MATLAB机制定义参数来定义变量。例如,您可以使用MAT文件并在打开模型时加载变量。使用MATLAB表达式指定参数变量值。金宝appSimulink在运行模拟之前评估表达式。看到保存并加载工作区变量.
使用MATLAB基础工作空间或Simulink数据字典来定义变量在使用多个金宝app型号的相同参数集时非常有用。此机制还允许您对同一模型使用不同的参数值集。
也可以看看:通过创建变量共享和重用块参数值,创建、编辑和管理工作区变量.
当您从多个model块引用相同的模型时,您将创建实例的模型。您可以设置块参数,以便为模型的每个实例使用相同的值或不同的值。
使用不同的值,
在参考模型的模型工作区中,创建一个MATLAB变量或金宝app仿真软件。参数
目的。
输入参数名称和默认参数价值.选择论点复选框创建模型参数.
对于引用模型中的块,为块参数的值输入模型参数的名称。
对于每个模型块,打开块参数对话框,选择实例参数选项卡,并为实例参数输入一个带有模型参数名称的值。
也可以看看:参数化可重用引用模型的实例.
可以在模拟过程中更改可调块参数的值。这允许您以交互方式确定参数的最合适值。更改可调参数的值时,更改将在下一时间步开始时生效。例如,控制器的增益参数获得块是可调的。您可以在模拟运行时更改块增益。看到调整和实验块参数值.
中指定参数建模选项卡,在设计,点击属性检查器.单击一个块显示块参数和属性。
也可以看看:指定块的属性.
属性是一般不金宝app影响仿真结果的Simulink模型特性。要指定属性,请在建模选项卡,在设计,点击属性检查器.
使用“属性”检查器打开,单击框图中的空白区域,或在框图中建模选项卡上,选择模型设置>模型属性.模型属性包括:
通用-模型文件的名称和位置。
设计数据–在模型外部定义的变量,用于参数化模型及其块和信号。
回调 - 在发生特定模型事件时执行的命令。
打开属性检查器,选择一个块,然后选择属性标签。块特性包括:
块注释-块下方显示所选块参数的值。
回调-当特定块事件发生时执行的命令。例如,您可以设置一个MATLAB脚本来使用表达式加载和定义块参数变量。
优先级-设置块的相对执行顺序。一个较低的值在一个较大的优先级值之前执行块。
标记-可编程搜索的块标识符。
打开属性检查器,选择一个端口,然后选择属性选项卡。您可以使用属性检查器修改端口对象、信号和端口块的属性。子系统块上的端口还有一个端口块选项卡,该选项卡包含相关端口块的属性。
将显示这些子系统块的端口块属性:
这些块上的端口显示一个与端口块类型同名的选项卡,并列出Model Explorer窗口中显示的属性。例如,一个EnablePort块选项卡显示为端口上的端口使能够块,资料,消息, 要么事件显示端口上的选项卡州流程块。
只读块的端口属性是不可编辑的。例如,锁定的链接库块、屏蔽块和受保护的引用模型的端口属性是只读的。
端口块属性开启模型块只在模型加载时显示。
中设置属性模拟选项卡,在准备,点击属性检查器.单击空白区域以显示模型属性。单击块以显示块属性。
也可以看看:指定块的属性,自定义模型行为的回调.
的状态模型的值是由它的值定义的状态变量.状态变量是一组变量,其在时刻0时的值,以及模型输入和模型方程的值,可以决定模型在仿真期间的行为。状态变量的例子包括电机位置和速度、电感电流、电容电压、溶液温度和气体压力。
如果块的当前输出值是前一个输出值的函数,则块定义了一个需要在时间步骤之间保存的状态变量。因此,计算块输出需要保存当前时间步长的状态变量值,以便在计算后续时间步长的输出时使用。
在模拟过程中,提供了以下工具来确定、初始化和记录模型状态:
的数据导入/导出模型的“配置参数”对话框的窗格(请参见国家信息)允许您为模型状态指定初始值,并在MATLAB工作空间中以数组或结构变量的形式记录仿真期间每个时间步骤的状态值。
打开“配置参数”对话框。选择状态检查块用于登录到MATLAB变量xout
.
在MATLAB命令窗口中,列出在每个时间步骤中积分器块状态的记录值。
> > xout {1} . values。资料ans = 0.0000 1.8127 3.2968 4.5119 . . .
的模型
命令显示有关模型定义的状态的信息,包括状态的总数和用初始值定义每个状态的块。
列出模型中的块vehicle_model
与状态。在MATLAB命令窗口中,输入模型函数,然后列出带有状态的块。
(sys, x0, str, ts) = vehicle_model ([],[],[],' 大小的)str = {vehicle_model /集成商的}
Simu金宝applink调试器显示模拟过程中每个时间步骤的状态值,以及Simulink调试器的状态值州
命令显示有关模型当前状态的信息(请参见金宝appSimulink调试器).
在MATLAB命令窗口中,启动Simulink调试器,然后输入命令金宝app州
.
sldebug 'vehicle_model' (sldebug @0): >> states for 'vehicle_model': Idx Value (system:block:element Name' BlockName') 0。0 (0:0:0 CSTATE 'vehicle_model/Integrator')
块参数对话框(和ContinuousStateAttributes
参数)允许您为那些使用连续状态的块(如Integrator)的状态指定名称。这可以简化对状态记录的数据的分析,特别是当一个块有多个状态时。
一个连续状态定义了所有的时间值。连续状态的一个例子是模拟速度计上显示的汽车速度,指针位置随着轮胎的旋转而不断变化。
具有连续状态和块参数的块初始条件包括:
一般来说,除简单模型外,不存在对常微分方程表示的状态积分的解析方法。对状态进行积分需要使用数值方法。
一个离散状态仅在特定时间定义。它是连续状态的近似值,其中状态以周期性或非周期性的时间间隔更新。一个离散状态的例子是在数字速度计上显示的汽车速度,数字速度计每秒钟更新一次,而不是连续的。
具有离散状态的块包括:
计算块的离散状态需要知道它在前一个时间步长的值以及块的当前输入值。金宝appSimulink提供了两种类型的离散求解器:
固定步骤离散求解器 - 确定固定的步骤尺寸,以击中所有模型的离散状态的所有样本时间,而不管状态是否实际在采样时间点击时更改值。
可变步长离散解算器-改变步长以确保采样时间只在状态值改变时发生。
一个混合模型有连续状态和离散状态。求解这类模型需要选择既满足连续状态积分的精度约束又满足离散状态的样本时间区间约束的步长。金宝appSimulink通过将离散解算器的下一个样本时间间隔作为连续解算器的附加约束来满足这个要求。连续解算器选择一个步长,将模拟推进到但不超过下一个离散样本时间。连续求解器可以在距离下一个样本时间点较短的时间步处满足其精度约束,但即使其精度约束允许它超过下一个样本时间点,它也不能超过这一步。
您可以使用任何集成方法模拟混合系统,但某些方法比其他方法更有效。对于大多数混合系统,ode23
和ODE45.
在效率方面优于其他求解器。由于与样本相关的不连续和持有的离散块,不要使用ode15s
和ode113.
混合系统的求解器。
采样时间是指定执行块方法生成输出和更新块内部状态的速率(1 /采样时间)的时间间隔。时间是框图的固有组成部分,框图的仿真结果随时间而变化。
示例时间被指定为:
Continuous–根据解算器设置以可变时间运行块。
离散-块在明确指定的特定时间运行。
在下面的示例中,控制器以指定的采样时间为的离散速率运行0.01
而Simulink则确定车辆金宝app模型具有连续的采样时间。
因此,确定系统在一段时间内的行为需要从时间跨度的开始到时间跨度的结束,以一种称为时间步长或时间间隔的方式重复求解模型。在连续时间步上求解模型的过程称为模拟模型所代表的系统。
另请参阅什么是样本时间?,样本时间类型,指定采样时间,查看采样时间信息.
每个Simu金宝applink块都有一个示例时间,用来定义块执行的时间。大多数块允许您通过SampleTime
范围。共同选择包括离散,连续和继承的样本时间。
常见的时间类型样本 | 采样时间 | 例子 |
---|---|---|
离散 | [T年代To ] |
单位延迟,数字滤波器 |
连续的 | (0,0) | 积分器,衍生 |
继承了 | [-1,0] | 增益,和 |
对于离散块,采样时间是一个向量[Ts, To],其中Ts是连续采样时间之间的时间间隔或周期,To是采样时间的初始偏移量。相反,非离散块的样本时间由有序对表示,这些有序对使用零、负整数或无穷大来表示特定类型的样本时间。例如,连续块的标称样本时间为[0,0],用于建模状态连续变化的系统(例如,汽车加速),而继承块的样本时间类型用符号表示为[- 1,0],然后,S金宝appimulink根据模型中继承的块的上下文确定实际值。
注意,不是所有的块都接受所有类型的样本时间。例如,一个离散块不能接受连续的采样时间。
作为一种视觉帮助,Simulink允金宝app许任意框图的可选颜色编码和注释,以指示框图样本时间的类型和速度。您可以捕获图例中的所有颜色和注释(参见查看采样时间信息).
有关示例时间的更详细讨论,请参见采样时间.
单位是用来测量一个量的总量。
金宝appSimulink单元被指定为轮廓尺寸块或者外港在Simulink模型组件边界处的块参数。金宝app金宝appSimulink模型组件包括子系统块,模型块、状态流图和Simulink到Simscape™转换器块。金宝app中显示模型上的单元调试选项卡上,选择信息覆盖>单位.
也可以看看:Simulink模型中的单位规范金宝app,转换单位.
直接引线是块的输出端口信号由其输入端口信号的值计算的地方。输出信号值是输入信号值的函数。
直接馈通模块包括获得,产品,和,数学函数块。
具有直接馈通的块之间的信号回路称为代数循环.代数循环通常发生在具有直接馈通的块的输入端口直接由同一块的输出端口驱动或间接通过具有直接馈通的其他块驱动时。
在下面的模型中,两个获得带有直接馈通的块创建了一个代数循环:
也可以看看:代数循环概念.
一个人工代数循环当原子子系统或模型块导致Simulink检测代数循环时发生,即使子系统的内容不包含从输入到输出的直接馈通。金宝app当您创建原子子系统时,所有的import块都是直接馈通的,从而导致一个代数循环。
从包含的模型开始,它代表了一个简单的比例控制的电厂描述
可以用状态空间的形式重写为
该系统既没有代数变量,也没有直接馈通,也不包含代数回路。
按照如下步骤修改模型:
将Controller和Plant模块封装在一个子系统中。
在“子系统”对话框中,选择当作原子单位对待使子系统成为原子。
在里面诊断模型配置参数的窗格,设置代数循环参数到错误
.
当模拟这个模型时,会发生一个代数循环,因为子系统是直接馈通的,即使原子子系统中的路径不是直接馈通的。模拟因代数循环错误而停止。
金宝appSimulink使用了一种叫做讨论二阶导数过零检测在模拟过程中,在不采用过小的时间步长的情况下,精确地定位一个不连续点。通常这种技术可以提高模拟运行时间。