主要内容

金宝app仿真软件模型

模型是使用数学方程和图表对系统进行抽象和简化的描述。本主题中的建模概念为理解用Simulink数学描述系统的过程提供了背景金宝app®软件工具。

框图

一种框图是在Simulink编辑器中模型的可视化表示。金宝app编辑器允许您添加从表示基本模型组件的块库中选择的块。基本元件包括积分器、增益和和块。块之间通过信号和事件线相互连接,以直观地构建模型方程。

框图语义

系统的经典框图是用块和线图形化地画出来的。这些框图的历史源自于工程学领域,如反馈控制理论和信号处理。块图中的块本身定义了模型。基本模型之间的关系由连接块的信号线表示。框图中的块和线共同描述了系统的整体模型。

金宝appSimulink扩展了经典的框图:

  • 向每个块添加一组方程(块方法),定义输入信号、输出信号和块状态变量之间基于时间的关系。

  • 向每个块添加参数,指定来自模型方程的系数。

  • 通过评估随时间变化的关系,为框图的数值解提供一个引擎,其中时间从用户指定的“开始时间”开始,并在用户指定的“停止时间”结束。

参见:金宝app模型方框图以交互方式构建和编辑模型模拟

一种是Simulink编辑器的一个基本建模构造。金宝app从内置Simulink库中添加块以执行特定操作。金宝app您还可以创建自定义块。一些块具有输入信号,输出信号和状态。大多数块都有用于指定块行为的参数。块是否具有参数,并且这些参数的性质是特定于每个块的。

每个块代表Simulink引擎的一组方程。金宝app这些方程用块方法表示。上面显示的块有以下的块方法。

在模块图的仿真过程中对模块方法进行了评估。块方法的评估是在一个仿真循环中执行的,其中通过仿真循环的每个循环表示在给定时间点对框图的评估。

虚拟块

虚拟块在模型中组织和提供图形层次结构,但它们不影响模拟结果。在模型仿真期间,Simulink在执行之前将块展开金宝app,这个过程称为扁平化。这种扩展类似于C或c++等编程语言中的宏工作方式。

金宝appSimulink定义以下虚拟块:

  • 虚拟子系统—使用虚拟子系统将相关的功能部件封装到一个更大的模型中。一种虚拟子系统块中有参数的复选框归因于原子单位清除。

  • 轮廓尺寸外港-使用端口块从外部移动数据(信号)和事件(函数调用)子系统块或模型块到块内,反之亦然。

  • 总线的创造者总线分配总线选择器-总线块将信号组合成一个虚拟总线,并围绕一个复杂的框图管理信号的路由。虚拟总线是一种图形化的便利,并且不会改变模型的行为。

非虚拟块和虚拟块信号类型复合信号的类型

Nonvirtual块

非虚拟块在模型中提供执行控制和图形层次结构。金宝appSimulink定义了下面的非虚拟子系统模型块:

  • 原子子系统和模型-块在一个原子子系统块或A.模型块,它在每个时间步骤中引用作为单个单元(原子执行)执行的模型。对于一个原子子系统块时,该参数的复选框归因于原子单位被选中。

    你可以放置任何Simulink块在金宝app原子子系统或引用模型,包括具有不同执行速率的块。这种灵活性提供了在执行级别对模型的功能方面进行分组的优势。

    在下面的例子中,车辆模型是原子子系统模拟汽车结构的积木。控制模型引用自模型块。

  • 启用和/或触发-原子子系统模型块,其执行由来自信号的外部数据控制。包含一个启用触发块,或两者兼而有之。为触发块,参数触发类型被设置为不断上升的下降,或要么

  • 函数调用,原子子系统模型块的执行由来自函数调用发起者(例如statflow)的事件控制®图表或一个函数调用生成器功能,或打穿越块)。包含A.触发块与触发类型设置为函数调用

金宝appSimulink定义了以下非虚拟组件子系统块。

  • 行动子系统 -原子子系统块执行其执行由动作启动器的事件控制(例如,如果开关情况块)。包含一个行动的港口块内子系统块。

  • While迭代器子系统原子子系统在每个模型时间步骤期间运行多次迭代的块。包含A.而迭代器块,通过计算逻辑条件来控制迭代次数。

    while迭代器子系统类似于函数调用子系统,因为它可以在给定的时间步骤中运行任意数量的迭代。while迭代器子系统与函数调用子系统的不同之处在于,它没有单独的启动器。

  • 迭代器子系统原子子系统块,它在每个模型时间步骤中运行固定数量的迭代。包含A.对迭代器块,它控制迭代次数。

非虚拟块和虚拟块

块面具

一种块面具是仅显示所选块参数的自定义块参数接口。一个面具子系统块允许您提供一个接口,用于在块上设置参数子系统块,而不必在模型层次结构中导航。

屏蔽原理

自定义模块

自定义模块是扩展了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的实例关联起来金宝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代码初始化的。

    模型的工作区在模型工作区中指定数据源

  • 金宝appSimulink数据字典—使用数据字典定义和存储全局数据,在模型之间共享数据,跟踪数据变化。数据保存在一个与模型分离的文件中。

    创建数据字典文件。在建模标签,下面设计,点击数据字典.点击并输入一个带有扩展名的文件名.sldd

    使用Model Explorer在数据字典中定义变量。在建模选项卡,单击模型浏览器.在左窗格中,选择设计数据

    什么是数据字典?

  • 导入导出数据-从MATLAB基础工作区、mat文件或电子表格导入仿真信号。使用源块或信号编辑器块。使用信号测井输出模拟结果。信号被保存为矢量[t,x,y]对于每个主要时间步骤的时间、状态和输出。

参见:确定Simulink模型中变量和对象的存储位置金宝app符号解析

参数

参数是影响仿金宝app真和代码生成结果的Simulink模型特性。

模型配置参数

模型配置参数在编译,模拟和代码生成期间指定模型行为,例如求解器使用以及要显示的错误和警告类型。

要指定模型配置参数,请在建模选项卡,单击模型设置.打开“配置参数”对话框。

设置型号配置参数

块的参数

块参数定义模型动力学和数学。块是否有可以设置的参数,以及这些参数的性质是特定于每个块的。要指定块参数,请打开块参数对话框,或在建模标签,下面设计,请按下列其中一项:

  • 属性检查器—直接指定块参数或为参数值输入变量名。

  • 模型数据编辑器—使用变量指定块参数。

  • 模型浏览器—使用变量指定块参数。

设置块参数值

块参数变量

如果在大型模型的许多位置使用单个参数,那么更新该参数的每个实例可能是一项困难的任务。相反,输入一个变量名作为参数的值,然后使用下列方法之一定义变量:

  • 金宝appSimulink Model Workspace - 创建模型工作区变量并将值分配给变量。您定义的参数特定于模型并使用该模型保存。使用MATLAB变量以易于维护。用一个金宝app仿真软件。参数对象来控制其他属性,包括数据类型、维和单元。看使用模型资源管理器编辑和管理工作区变量

  • 金宝appSimulink数据字典-在数据字典中创建设计数据变量,并将字典链接到模型。在模型仿真过程中,Simulink从数据字典中检索金宝app数据。

  • MATLAB基本工作区-在MATLAB基本工作区中,使用任何MATLAB机制定义变量的参数。例如,您可以使用mat文件并在打开模型时加载变量。使用MATLAB表达式指定参数变量值。金宝appSimulink在运行模拟之前计算表达式。看保存并加载工作区变量

当您为多个模型使用同一组参数时,使用MATLAB基础工作空间或Simuli金宝appnk数据字典来定义变量是非常有用的。这种机制还允许您为同一模型使用不同的参数值集。

参见:通过创建变量共享和重用块参数值创建、编辑和管理工作区变量

模型参数和实例参数

当您从多个引用相同的模型时模型块,您创建实例的模型。您可以设置块参数,以便为模型的每个实例使用相同的值或不同的值。

使用不同的值,

  1. 在参考模型的模型工作区中,创建一个MATLAB变量或金宝app仿真软件。参数对象。

  2. 输入参数名称和默认参数价值.选择论点复选框以创建一个模型参数

  3. 对于引用模型中的块,为块参数的值输入模型参数的名称。

  4. 为每一个模型块,打开块参数对话框,选择实例参数选项卡,并使用模型参数名称输入实例参数的值。

参见:参数化可重用引用模型的实例

可调参数块

您可以在模拟期间更改可调块参数的值。这允许您以交互方式为参数确定最合适的值。当更改可调参数的值时,更改将在下一个时间步骤开始时生效。例如,增益参数获得块是可调的。您可以在模拟运行时更改块增益。看调整和实验块参数值

使用属性检查器设置块参数

中指定参数建模标签,下面设计,点击属性检查器.单击一个块显示块参数和属性。

参见:指定块的属性

属性

属性是一般不金宝app影响仿真结果的Simulink模型特性。要指定属性,请在建模标签,下面设计,点击属性检查器

模型属性

打开属性检查器后,单击框图中的空白区域或建模选项卡上,选择模型设置>模型属性.模型属性包括:

  • 通用-模型文件的名称和位置。

  • 设计数据——在模型外部定义的变量,用于参数化模型及其模块和信号。

  • 回调——当特定模型事件发生时执行的命令。

管理模型版本和指定模型属性

块的属性

使用“属性检测器”打开,选择一个块,然后选择属性选项卡。块的属性包括:

  • 块注释-块下方显示所选块参数的值。

  • 调用 - 在发生特定块事件时执行的命令。例如,您可以使用表达式设置要加载的MATLAB脚本并定义块参数变量。

  • 优先级-设置块的相对执行顺序。一个较低的值在一个较大的优先级值之前执行块。

  • 标记-可编程搜索的块标识符。

端口属性

打开属性检查器,选择一个端口,然后选择属性选项卡。您可以使用属性检查器修改端口对象、信号和端口块的属性。子系统块上的端口还有一个端口块选项卡,该选项卡包含相关端口块的属性。

港口属性显示在属性检查器中

使用属性检查器设置模型和块属性

设置属性,在模拟标签,下面准备,点击属性检查器.单击空格以显示模型属性。单击块以显示块属性。

参见:指定块的属性自定义模型行为的回调

状态变量

状态模型的值是由它的值定义的状态变量.状态变量是一组变量,其在时刻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 Debugger命令显示有关模型当前状态的信息(请参阅金宝app仿真软件调试器).

    在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')
  • 块参数对话框(以及roulesstateattributes.参数)允许您为那些使用连续状态的块(如Integrator)的状态指定名称。这可以简化对状态记录的数据的分析,特别是当一个块有多个状态时。

连续州

一种持续的状态定义了所有的时间值。连续状态的一个例子是模拟速度计上显示的汽车速度,指针位置随着轮胎的旋转而不断变化。

具有连续状态的块和块参数初始条件包括:

一般来说,除简单模型外,不存在对常微分方程表示的状态积分的解析方法。对状态进行积分需要使用数值方法。

离散状态

一种离散状态仅在特定时间定义。它是一种连续状态的近似,其中状态在周期性或非周期性时间间隔更新状态。离散状态的示例是在数字车速表上显示的汽车的速度,其每秒更新,而不是连续地更新。

具有离散状态的块包括:

计算块的离散状态需要在先前的时间步骤中了解其值,以及块的当前输入值。金宝appSimulink提供两种类型的离散求解器:

  • 固定步长离散解算器-确定一个固定步长,用于模型的所有离散状态的所有样本时间,不管状态是否在样本时间到达时实际改变值。

  • 可变步骤离散求解器 - 改变步长,以确保在状态变化值时仅发生采样时间点击。

混合动力系统建模

一种混合模型有连续状态和离散状态。求解这类模型需要选择既满足连续状态积分的精度约束又满足离散状态的样本时间区间约束的步长。金宝appSimulink通过将离散解算器的下一个样本时间间隔作为连续解算器的附加约束来满足这个要求。连续解算器选择一个步长,将模拟推进到但不超过下一个离散样本时间。连续求解器可以在距离下一个样本时间点较短的时间步处满足其精度约束,但即使其精度约束允许它超过下一个样本时间点,它也不能超过这一步。

您可以使用任何一种集成方法来模拟混合系统,但某些方法比其他方法更有效。对于大多数混合系统,ode23数值在效率方面优于其他求解器。由于与样本相关的不连续和持有的离散块,不要使用ode15s.ode113混合系统的求解器。

样品时间

样品时间是指定执行块方法生成输出和更新块内部状态的速率(1 /采样时间)的时间间隔。时间是框图的固有组成部分,框图的仿真结果随时间而变化。

采样时间为:

  • 连续-块运行在不同的时间基于求解器设置。

  • 离散-块在明确指定的特定时间运行。

在以下示例中,控制器以具有示例时间指定的离散速率运行0.01当Simulink确定车辆模金宝app型时,秒秒为秒,虽然是具有连续采样时间。

因此,确定系统在一段时间内的行为需要从时间跨度的开始到时间跨度的结束,以一种称为时间步长或时间间隔的方式重复求解模型。在连续时间步上求解模型的过程称为模拟模型所代表的系统。

另请参阅什么是样本时间?样本时间类型指定样品时间查看样本时间信息

块样品时间

每个Simu金宝applink块都有一个样本时间,该样本时间定义块时的执行。大多数块允许您通过a指定采样时间SampleTime参数。常见的选择包括离散、连续和继承的样本时间。

常见的时间类型样本 样品时间 例子
离散 [T.S.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块都是直接馈通的,从而导致一个代数循环。

从包含的模型开始,它代表了一个简单的比例控制的电厂描述

$ frc {1}{s^2+2s+1}$ frc {1}{s^2+2s+1

可以用状态空间的形式重写为

$ $ & # xA;左\点{x} = \ [& # xA;开始\{数组}{cc} & # xA;2 38 & #;1 \ \ & # xA; 1 & # 38;0 xA & #;结束\{数组}& # xA;正确\]& # xA; + \离开(& # xA; \开始{数组}{c} & # xA; 0 \ \ 1 & # xA;结束\{数组}& # xA; \右)& # xA; $ $

左$ $ & # xA; y = \[开始\{数组}{cc} 0 & # 38; 1 \结束数组{}\]& # xA; $ $

该系统既没有代数变量也不是直接馈通,也不包含代数环。

如以下步骤所述修改模型:

  1. 将Controller和Plant模块封装在一个子系统中。

  2. 在“子系统”对话框中,选择归因于原子单位使子系统成为原子。

  3. 诊断窗格中,设置模型配置参数代数循环参数错误

当模拟这个模型时,会发生一个代数循环,因为子系统是直接馈通的,即使原子子系统中的路径不是直接馈通的。模拟因代数循环错误而停止。

讨论二阶导数过零检测

金宝appSimulink使用了一种叫做讨论二阶导数过零检测在模拟过程中,在不采用过小的时间步长的情况下,精确地定位一个不连续点。通常这种技术可以提高模拟运行时间。