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