主要内容

金宝app仿真软件模型

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

框图

一个框图是Simulink编辑器中模型的可视化表示。金宝app编辑器允许您添加从表示基本模型组件的块库中选择的块。基本组件包括积分器,增益和求和块。用信号线和事件线将各个块连接起来,直观地构建模型方程。

框图语义

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

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

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

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

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

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

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

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

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

虚拟块

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

金宝appSimulink定义了以下虚拟块:

  • 虚拟子系统—使用虚拟子系统将相关的功能部件封装在一个更大的模型中。一个虚拟子系统Block有对应参数的复选框作为原子单位处理清除。

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

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

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

Nonvirtual块

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

  • 原子子系统和模型块原子子系统Block or a模型块,在每个时间步引用作为单个单元执行的模型(原子执行)。对于Atomic Subsystem块,选中参数的复选框作为原子单位处理被选中。

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

    在下面的示例中,车辆模型是原子子系统积木,包含模拟汽车力学的积木。控件中引用了控制模型模型块。

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

  • 函数调用,原子子系统模型块,其执行由函数调用启动器(如状态流)的事件控制®图表或函数调用生成器功能,或打穿越块)。包含一个触发块与触发类型设置为函数调用

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

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

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

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

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

看到非虚拟块和虚拟块

块面具

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

看到屏蔽原理

自定义模块

自定义模块是扩展了Simulink内置功能的新模块。金宝app您可以创建自定义块库以在您的模型中使用。

下面的块定义了自定义块的算法,可以用框图图形化地定义,也可以用编程方式定义:

  • MATLAB®函数-使用MATLAB语言编写一个运行在Simulink模型中的MATLAB函数。金宝app看到用块实现MATLAB函数

  • MATLAB系统-带来现有的系统的对象matlab。系统仿真软件。金宝app看到MATLAB系统块

  • 子系统-绘制一个表示算法的框图,将该框图封装在Simulink的实例中金宝app子系统块,然后使用Simulink块掩码为块提供一个参数对话框。金宝app看到子系统,原子子系统,代码复用子系统

  • 将您的外部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基本工作空间将与模型分离的变量保存在MATLAB文件或MATLAB脚本中。

    金宝appSimulink将基本工作区和数据字典视为单个全局名称空间。如果基本工作区和引用的数据字典具有相同的变量名,则Simulink使用数据字典中的变量值。金宝app

    MATLAB基本工作空间包含全局变量,对所有Simulink模型都可见。金宝app

    看到信号加载技术的比较导出仿真数据

  • 金宝appSimulink模型工作区—使用模型工作区定义和存储本地数据变量。在模型工作空间中定义的变量仅在具有唯一名称空间的模型范围内可见。因此,您可以在多个模型工作区中使用相同的变量名,并且您可以为每个模型中的名称分配一个唯一的变量值。

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

    模型工作空间变量的值初始化来自与模型一起保存的值,来自单独的mat文件或MATLAB文件,或者使用与模型一起保存的MATLAB代码。

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

  • 金宝appSimulink数据字典-使用数据字典定义和存储全局数据,在模型之间共享数据,并跟踪对数据所做的更改。数据保存在与模型分离的文件中。

    创建数据字典文件。在建模选项卡,在设计,点击数据字典。点击并输入带有扩展名的文件名.sldd

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

    看到什么是数据字典?

  • 导入和导出数据-从MATLAB基本工作区、mat文件或电子表格中导入仿真信号。创建输入信号使用源块或信号编辑器块。使用信号记录导出仿真结果。信号被保存为矢量[t, X, Y]对于时间,每个主要时间步的状态和输出。

参见:确定在哪里为Simulink模型存储变量和对象金宝app符号解析

参数

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

型号配置参数

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

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

看到设置模型配置参数

块的参数

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

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

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

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

看到设置块参数值

块参数变量

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

  • 金宝appSimulink模型工作区-创建模型工作区变量并为变量赋值。您定义的参数是特定于模型的,并随模型一起保存。使用MATLAB变量便于维护。使用一个金宝app仿真软件。参数对象来控制其他属性,包括数据类型、维度和单位。看到使用模型资源管理器编辑和管理工作区变量

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

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

当您为多个模型使用相同的一组参数时,使用MATLAB基本工作区或Simul金宝appink数据字典来定义变量非常有用。这种机制还允许您对同一模型使用不同的参数值集。

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

模型参数和实例参数

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

使用不同的值,

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

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

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

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

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

可调块参数

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

用属性检查器设置块参数

要指定参数,在建模选项卡,在设计,点击属性检查器。单击块,显示块的参数和属性。

参见:指定块属性

属性

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

模型属性

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

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

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

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

看到管理模型版本并指定模型属性

块的属性

打开属性检查器后,选择一个块,然后选择属性选项卡。块属性包括:

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

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

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

  • 标签——可编程搜索的块标识符。

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

要设置属性,在模拟选项卡,在准备,点击属性检查器。单击空白区域以显示模型属性。单击块以显示块属性。

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

状态变量

状态一个模型的值是由它的状态变量。状态变量是一组变量,它们在时间为零时的值,以及模型输入和模型方程的值,可以决定模拟期间模型的行为。状态变量的例子包括电机位置和速度,电感电流,电容电压,溶液温度和气体压力。

如果一个块的当前输出值是前一个输出值的函数,则该块定义了一个需要在时间步之间保存的状态变量。因此,计算块输出需要在当前时间步保存状态变量的值,以便在计算后续时间步的输出时使用。

与各国合作

在模拟过程中,提供了以下工具来确定、初始化和记录模型状态:

  • 数据导入/导出面板中的配置参数对话框(参见状态信息)允许您指定模型状态的初始值,并在仿真期间将每个时间步的状态值记录为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 /集成商的}
  • 在模拟过金宝app程中,Simulink调试器在每个时间步显示状态的值,而Simulink调试器的命令显示有关模型当前状态的信息(参见金宝app仿真软件调试器)。

    在MATLAB命令窗口中,启动Simulink调试器,然后输入命令金宝app

    sldebug 'vehicle_model' (sldebug @0): >> states 'vehicle_model'的连续状态:Idx值(系统:块:元素名称'BlockName') 0。0 (0:0:0 CSTATE 'vehicle_model/Integrator')
  • “块参数”对话框(以及ContinuousStateAttributes参数)允许您为那些使用连续状态的块(例如Integrator)的状态命名。这可以简化分析记录状态的数据,特别是当一个块有多个状态时。

持续的状态

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

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

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

离散状态

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

具有离散状态的块包括:

计算一个块的离散状态需要知道它在前一个时间步长的值以及块的当前输入值。金宝appSimulink提供了两种类型的离散求解器:

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

  • 变步长离散求解器-改变步长,以确保采样时间只发生在状态改变值的时候。

混合系统建模

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

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

样品时间

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

采样时间指定为:

  • 连续-块运行在可变时间基于求解器设置。

  • 离散-块在显式指定的特定时间运行。

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

因此,确定系统随时间的行为需要从时间跨度的开始到时间跨度的结束,以间隔(称为时间步长或时间间隔)重复地求解模型。以连续的时间步骤求解模型的过程称为模拟该模型所代表的系统。

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

块采样次数

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

常用示例时间类型 样品时间 例子
离散 T年代To 单位延迟,数字滤波器
连续 (0,0) 积分器,导
继承了 (1,0) 增益,和

对于离散块,采样时间是一个向量[Ts, To],其中Ts是连续采样时间之间的时间间隔或周期,To是采样时间的初始偏移量。相反,非离散块的样本时间由有序对表示,这些有序对使用零、负整数或无穷大来表示特定类型的样本时间。例如,连续块的标称采样时间为[0,0],用于对状态连续变化的系统(例如,汽车加速)进行建模,而您将继承块的采样时间类型象征性地表示为[- 1,0],然后Simulink根据模型中继承块的上下文确定实际值。金宝app

请注意,并非所有块都接受所有类型的采样时间。例如,离散块不能接受连续采样时间。

作为视觉辅助工具,Simulink允金宝app许对任何框图进行可选的颜色编码和注释,以指示块采样时间的类型和速度。您可以捕获图例中的所有颜色和注释(参见查看样本时间信息)。

有关示例时间的更详细讨论,请参见样品时间

单位

单位是用来衡量一个数量的总量。

金宝appSimulink单元被指定为轮廓尺寸块或外港块参数在一个Simulink模型组件的边界。金宝app金宝appSimulink模型组件包括子系统块,模型模块,状态流图表和Simulink到Simscape™转换器金宝app模块。在模型上显示单元调试选项卡上,选择信息覆盖>单位

参见:Simulink模型中的单元规范金宝app转换单位

直接引线

直接引线是从块的输入端口信号的值计算块的输出端口信号的地方。输出信号值是输入信号值的函数。

具有直接馈通的块包括获得产品总和,数学函数块。

代数循环

具有直接馈通的块之间的信号环路称为an代数循环。当具有直接馈通的块的输入端口直接由同一块的输出端口驱动或间接通过具有直接馈通的其他块驱动时,通常会发生代数回路。

在下面的模型中,两个获得直接馈通的块创建一个代数循环:

参见:代数循环概念

人工代数环

一个人工代数环发生在原子子系统或模型块导致Simulink检测到代数循环时,即使子系统的内容不包含从输入到输出的直接反馈。金宝app当您创建原子子系统时,所有的import块都是直接馈通的,从而导致代数循环。

从包含的模型开始,它代表了由。描述的工厂的简单比例控制

$$ G(s) = \frac{1}{s^2+2s+1}$$

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

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

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

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

按以下步骤修改模型:

  1. 将控制器和设备块封装在一个子系统中。

  2. 在“子系统”对话框中选择作为原子单位处理使子系统原子化。

  3. 诊断面板中,设置代数循环参数错误

在模拟此模型时,会出现代数循环,因为子系统是直接馈通的,即使原子子系统中的路径不是直接馈通。模拟因代数循环错误而停止。

讨论二阶导数过零检测

金宝appSimulink使用了一种称为讨论二阶导数过零检测在模拟过程中,不需要采用过小的时间步长就能准确地定位不连续点。通常这种技术可以改善模拟运行时间。