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