文档

动态系统建模

框图语义

动态系统的经典框图模型在图形上由块和线(信号)组成。这些框图模型的历史来源于工程领域,如反馈控制理论和信号处理。块图中的块本身定义了一个动态系统。用信号连接各块来说明框图中各基本动态系统之间的关系。在一个框图中,块和线共同描述了一个整体的动态系统。

的仿真软万博1manbetx件®Product通过引入两类块(非虚拟块和虚拟块)的概念扩展了这些经典的框图模型。非虚拟块表示基本系统。虚拟块的存在只是为了图形化和组织方便:它们对由框图模型描述的方程组没有影响。您可以使用虚拟块来提高模型的可读性。

一般来说,块和线可以用来描述许多“计算模型”。一个例子就是流程图。流程图由块和线组成,但是不能用流程图语义来描述一般的动态系统。

术语“基于时间的框图”用于将描述动态系统的框图与其他形式的框图区分开来,术语框图(或模型)用于指基于时间的框图,除非上下文需要明确的区分。

总结基于时间的方框图的含义:

  • 万博1manbetxSimulink框图定义了信号和状态变量之间基于时间的关系。方框图的解是通过评估这些关系随时间的变化而得到的,其中时间从用户指定的“开始时间”开始,到用户指定的“停止时间”结束。对这些关系的每一次评估都被称为一个时间步长。

  • 信号表示随时间变化的量,并为框图开始和停止时间之间的所有时间点定义。

  • 信号和状态变量之间的关系由一组用块表示的方程来定义。每个块由一组方程组成(块方法)。这些方程定义了输入信号、输出信号和状态变量之间的关系。方程定义中固有的是参数的概念,它是方程中发现的系数。

创建模型

Simu万博1manbetxlink产品提供了一个图形化编辑器,允许您创建和连接从块类型库中选择的块类型的实例块库)。提供的块库表示可以用作构建块的基本系统。Simulink提供的块称为内置块。万博1manbetx用户还可以创建自己的块类型,并使用Simulink编辑器在图中创建它们的实例。万博1manbetx用户定义的块称为自定义块。

时间

时间是框图的固有组成部分,因为框图模拟的结果会随着时间而变化。换句话说,框图表示动态系统的瞬时行为。因此,确定系统随时间的行为需要以称为时间步长的间隔重复求解模型,从时间跨度的开始到时间跨度的结束。在连续的时间步骤上求解模型的过程被称为模拟模型所代表的系统。

通常情况下,某些系统的当前值,以及模型的输出是时间变量先前值的函数。这样的变量称为状态。因此,从框图计算模型的输出需要保存当前时间步的状态值,以便在计算后续时间步的输出时使用。此任务在定义状态的模型的模拟过程中执行。

在Simulink模型中可以出现两种状态:离散状态和连续状态。万博1manbetx连续状态不断变化。连续状态的例子有汽车的位置和速度。离散状态是连续状态的近似值,其中状态使用有限(周期性或非周期性)间隔更新(重新计算)。离散状态的一个例子是数字里程表上显示的汽车位置,它每秒钟更新一次,而不是连续更新。在极限条件下,当离散状态时间间隔趋近于零时,离散状态等价于连续状态。

块隐式地定义了模型的状态。特别是,需要部分或全部以前的输出来计算当前输出的块隐式定义了一组需要在时间步骤之间保存的状态。这样的块被称为具有状态。

下面是一个具有状态的块的图形表示:

定义连续状态的块包括以下标准Simulink块:万博1manbetx

一个模型的状态总数是由它的所有块定义的所有状态的和。确定关系图中的状态数量需要解析关系图,以确定它所包含的块的类型,然后聚合由定义状态的块类型的每个实例定义的状态数量。此任务在模拟的编译阶段执行。

与各国合作

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

  • 模型命令显示关于模型定义的状态的信息,包括模型定义的状态总数、定义每个状态的块以及每个状态的初始值。

  • Simu万博1manbetxlink调试器显示模拟过程中每个时间步骤的状态值,以及Simulink调试器的状态值命令显示关于模型当前状态的信息(参见万博1manbetx仿真软件调试器).

  • 数据导入/导出模型的“配置参数”对话框的窗格(请参阅状态信息)允许您指定模型状态的初始值,并在MATLAB中以数组或结构变量的形式记录模拟过程中每个时间步的状态值®工作区。

  • 块参数对话框(和ContinuousStateAttributesparameter)允许你为那些使用连续状态的块(比如Integrator)的状态命名。这可以简化记录状态的数据分析,特别是当一个块有多个状态时。

    带载荷约束的两圆柱模型模型演示了连续状态的日志记录。

持续的状态

计算一个连续状态需要知道它的变化率或导数。由于连续状态的变化率本身通常是连续变化的(即,本身就是一种状态),计算当前时间步长的连续状态值需要从模拟开始对其导数进行积分。因此,对连续状态建模需要表示积分运算和在每个时间点计算状态导数的过程。万博1manbetxSimulink框图使用Integrator块来表示积分,并使用连接到Integrator块的输入的块链来表示计算状态导数的方法。连接到积分器块的输入的块链是常微分方程(ODE)的图形对应。

一般来说,除了简单的动力系统,不存在用常微分方程表示的现实世界动力系统的状态积分的分析方法。对状态进行积分需要使用称为ODE求解器的数值方法。这些不同的方法以计算精度换取计算工作量。Simu万博1manbetxlink产品提供了最常见的ODE集成方法的计算机化实现,并允许用户在模拟系统时决定使用哪一种方法来集成由Integrator块表示的状态。

计算当前时间步长的连续状态值需要从模拟开始时对其值进行积分。数值积分的精度又取决于时间步长间隔的大小。一般来说,时间步长越小,模拟越准确。一些ODE求解器,称为可变时间步求解器,可以根据状态的变化率自动改变时间步的大小,以在模拟过程中达到指定的精度水平。对于固定步长求解器,用户可以指定时间步长;对于变步长求解器,可以自动确定步长。为了使计算工作量最小化,对于变化最快的模型状态,变步长求解器选择与实现用户指定的整体精度水平一致的最大步长。这确保了所有模型状态都按照用户指定的精度计算。

离散状态

计算一个离散状态需要知道它在当前时间步的值和它在前一个时间步的值之间的关系。这将这种关系称为状态更新函数。离散状态不仅依赖于它在前一个时间步的值,而且依赖于模型输入的值。因此,对离散状态建模需要对状态在前一个时间步对系统输入的依赖进行建模。万博1manbetxSimulink块图使用特定类型的块(称为离散块)来指定更新函数和连接到离散块输入的块链,以模拟系统的离散状态对其输入的依赖关系。

与连续状态一样,离散状态对模拟时间步长设置了约束。具体来说,步长必须确保模型状态的所有采样时间都被命中。这个任务被分配给Simulink系统中一个叫做离散求解器的组件。万博1manbetx提供了两个离散求解器:固定步长离散求解器和变步长离散求解器。固定步长离散求解器确定一个固定步长,该步长达到模型所有离散状态的所有采样时间,而不管这些状态在采样时间是否实际改变值。相比之下,可变步长离散求解器改变步长以确保采样时间命中仅在状态值改变时发生。

混合系统建模

混合系统是同时具有离散和连续状态的系统。严格地说,任何同时具有连续和离散采样时间的模型都被视为混合模型,假设模型同时具有连续和离散状态。求解这样的模型需要选择一个步长,既要满足连续状态积分的精度约束,又要满足离散状态的采样命中时间约束。Simu万博1manbetxlink软件通过将离散求解器确定的下一个采样时间命中作为连续求解器的附加约束来满足这一要求。连续求解器必须选择一个步长,使模拟达到但不超过下一个采样时间。连续求解器可以采取比下一次采样时间短的时间步长来满足其精度限制,但即使精度限制允许,它也不能采取超过下一次采样时间的时间步长。

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

块的参数

许多标准块的关键属性是参数化的。例如,Simulink Constant块的Constant值是一个参数。万博1manbetx每个参数化块都有一个块对话框,允许您设置参数的值。可以使用MATLAB表达式指定参数值。万博1manbetxSimulink在运行模拟之前计算表达式。您可以在模拟过程中更改参数的值。这允许您以交互方式确定参数的最合适值。

参数化块有效地表示一组相似的块。例如,在创建模型时,您可以分别设置Constant块的每个实例的Constant value参数,以便每个实例的行为不同。因为它允许每个标准块表示一组块,块参数化极大地提高了标准Simulink库的建模能力。万博1manbetx看到块的参数而且块库获取更多信息。

可调参数

许多块参数是可调的。一个可调参数是一个参数,其值可以在不重新编译模型的情况下更改(参见模型编译有关编译模型的更多信息)。例如,增益块的增益参数是可调的。您可以在模拟运行时更改块的增益。如果参数不可调且模拟正在运行,则将禁用设置参数的对话框控件。

当您更改可调参数的值时,更改将在下一个时间步骤开始时生效。看到块的参数而且调优和实验块参数值获取更多信息。

块采样次数

每个Simu万博1manbetxlink块都有一个采样时间,它定义了块何时执行。大多数块允许您指定采样时间通过SampleTime参数。常见的选择包括离散、连续和继承采样时间。

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

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

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

作为一种视觉辅助工具,Simulin万博1manbetxk允许任意块图的可选颜色编码和注释,以指示块示例时间的类型和速度。您可以捕获一个图例中的所有颜色和注释(参见查看采样时间信息).

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

自定义模块

您可以创建自定义块库,然后在您的模型中使用它们。您可以以图形方式或编程方式创建自定义块。要以图形方式创建自定义块,您需要绘制一个表示块行为的块图,将此图包装在Simulink子系统块的实例中,并使用Simulink块掩码工具为块提供一个参数对话框。万博1manbetx要以编程方式创建块,您需要创建一个MATLAB文件或一个包含块的系统函数的mex文件(请参阅s函数基础).生成的文件称为s函数。然后将s -函数与模型中Simulink S-function块的实例关联起来。万博1manbetx您可以将参数对话框添加到S-Function块中,方法是将其包装在子系统块中,并将参数对话框添加到子系统块中。看到块的创建获取更多信息。

系统和子系统

Si万博1manbetxmulink框图可以由层组成。每一层都由一个子系统定义。子系统是整个框图的一部分,理想情况下对框图的含义没有影响。子系统的提供主要是为了帮助框图的组织方面。子系统不定义单独的框图。

Simu万博1manbetxlink软件区分了两种不同类型的子系统:虚拟和非虚拟。主要的区别在于,非虚拟子系统提供了控制子系统内容何时被评估的能力。

虚拟子系统

虚拟子系统在模型中提供图形层次结构。虚拟子系统不影响执行。在模型执行期间,Simulink引擎将所有虚拟子系统平展万博1manbetx,也就是说,Simulink在执行前将子系统展开。这种扩展非常类似于宏在C或c++等编程语言中的工作方式。粗略地说,顶层框图将有一个系统,称为根系统,以及几个派生自非虚拟子系统和框图中的其他元素的低层系统。您将在Simulink调试器中看到这些系统。万博1manbetx创建这些内部系统的行为通常被称为扁平化模型层次结构

Nonvirtual子系统

用粗体边框绘制的非虚拟子系统在模型中提供执行和图形层次结构。非虚拟子系统由Simulink引擎作为单个单元(原子执行)执行。万博1manbetx您可以创建有条件执行的子系统,这些子系统仅在先决条件(例如触发器、使能、函数调用或操作)发生时执行(参见有条件执行的子系统).万博1manbetxSimulink总是在执行非虚拟子系统之前计算该子系统执行期间使用的所有输入。万博1manbetxSimulink定义了以下非虚拟子系统。

原子子系统。原子子系统的主要特征是,原子子系统中的块作为单个单元执行。这提供了在执行级别对模型的功能方面进行分组的优势。任何Si万博1manbetxmulink块都可以放在一个原子子系统中,包括具有不同执行速率的块。控件创建原子子系统将其视为原子单位选项(请参阅原子子系统查看更多信息)。

启用子系统。一个已启用的子系统的行为与原子子系统类似,只不过它只在驱动子系统启用端口的信号大于零时才执行。要创建启用的子系统,请放置启用端口块子系统块。您可以配置已启用的子系统,以在子系统启用操作之前保持或重置已启用子系统中的块状态。只需选择启用时的状态参数。启用端口块。类似地,您可以配置已启用子系统的每个输出端口,以在子系统禁用操作之前保持或重置其输出。选择禁用时输出参数中的外港块。

触发子系统。通过在子系统中放置一个触发端口块,可以创建一个触发子系统。当在驱动子系统触发端口的信号上看到相对于零的上升边或下降边时,结果子系统就会执行。触发边的方向由触发类型参数。万博1manbetxSimulink将放置在触发子系统中的块的类型限制为没有显式采样时间的块(即,子系统中的块必须具有-1的采样时间),因为触发子系统的内容以非周期性的方式执行。一个Stateflow®图表也可以有一个通过使用状态流编辑器定义的触发端口。万博1manbetxSimulink不区分触发的子系统和触发的图表。

函数调用子系统。函数调用子系统是另一个块可以在模拟期间直接调用的子系统。它类似于过程式编程语言中的函数。调用函数调用子系统相当于调用子系统中按顺序包含的块的输出和更新方法。调用函数调用子系统的块称为函数调用启动器。状态流、函数调用生成器和s函数块都可以作为函数调用启动器。若要创建函数调用子系统,请拖动函数调用子系统块从Ports & subsystem库到您的模型中,并连接一个函数调用启动器到子系统顶部显示的函数调用端口。您也可以从头创建一个函数调用子系统子系统块,然后创建一个触发块,并设置触发器块触发类型函数调用

您可以配置一个函数调用子系统为触发(默认值)或周期性采样时间类型触发周期,分别。函数调用启动器可以在每个时间步中0次、1次或多次调用已触发的函数调用子系统。一个被触发的函数调用子系统中所有块的采样时间必须设置为inherited(-1)。

函数调用启动器只能在每个时间步调用一次周期函数调用子系统,并且必须周期性地调用子系统。如果发起者不定期地调用周期函数调用子系统,Simulink将停止模拟并显示错误消息。万博1manbetx周期函数调用子系统中的块可以指定非继承的采样时间或继承的(-1)采样时间。所有指定非继承采样时间的块必须指定相同的采样时间,也就是说,如果一个块指定0.1作为它的采样时间,所有其他块必须指定0.1或-1的采样时间。如果函数调用启动器以与子系统中块指定的采样时间不同的速率调用周期性函数调用子系统,Simulink将停止模拟并显示错误消息。万博1manbetx

启用和触发的子系统。项可以创建启用并触发的子系统触发端口Block和启用端口块子系统块。由此产生的子系统本质上是一个被触发的子系统,当子系统被启用时执行,并且在驱动子系统触发端口的信号上看到相对于零的上升边或下降边。触发边的方向由触发类型参数。由于被触发子系统的内容以非周期性的方式执行,因此Simulink将放置在启用和触发子系统中的块的类型限制为没有显式采样时间的块。万博1manbetx换句话说,子系统内的块必须有一个采样时间-1).

复位子系统。可重置子系统在每次采样时间命中时计算其输出,但也在触发时重置子系统的状态。可重置子系统重置其中所有块的状态,由相对于零的上升边或下降边触发。触发时,可重置子系统重置其状态并计算输出。

可重置子系统只支持它所包含的所有块的单一采样时间。万博1manbetx子系统中不同块的不同采样时间会导致错误。有关更多信息,请参见复位子系统

行动子系统。动作子系统可以被认为是启用的子系统和函数调用子系统的属性的交集。动作子系统被限制为单个采样时间(例如,连续的、离散的或继承的采样时间)。动作子系统必须由动作子系统的发起者执行。这是一个如果块或开关情况块。连接到给定操作子系统启动器的所有操作子系统必须具有相同的采样时间。操作子系统通过放置行动的港口块内的子系统块。子系统图标将自动适应块的类型(即,如果开关情况块),它正在执行动作子系统。

动作子系统的发起者最多只能执行一次动作子系统。动作子系统让你控制状态重置时通过恢复执行时的状态参数。行动的港口块。操作子系统还允许您控制是否通过禁用时输出参数。这类似于启用的子系统。

动作子系统的行为与函数调用子系统非常相似,因为它们必须由启动器块执行。函数调用子系统可以在任何给定的时间步骤中执行多次,而动作子系统最多只能执行一次.这一限制意味着与函数调用子系统相比,可以在操作子系统中放置更大的块集(例如,周期性块)。这个限制还意味着您可以控制状态和输出的行为。

而迭代器子系统。while迭代器子系统将在每个模型时间步上运行多次迭代。控件控制迭代次数而迭代器块的状态。while迭代器子系统通过放置而迭代器子系统块中的块。

while迭代器子系统与函数调用子系统非常相似,因为它可以在给定时间步内运行任意数量的迭代。while迭代器子系统不同于函数调用子系统,因为没有单独的启动器(例如,状态流程图)。此外,while迭代器子系统可以访问由对象可选生成的当前迭代数而迭代器块。方法启动时,while迭代器子系统还允许您控制是否重置状态启动时的状态参数。而迭代器块。

对于迭代器子系统。for迭代器子系统将在每个模型时间步骤中运行固定数量的迭代。迭代次数可以是for迭代器子系统的外部输入,也可以在对迭代器块。一个for迭代器子系统通过放置对迭代器子系统块中的块。

对象可选生成的当前迭代器号对迭代器块。for迭代器子系统还允许您控制当通过启动时的状态参数。对迭代器块。for迭代器子系统与while迭代器子系统非常相似,只是限制在任何给定时间步内的迭代次数是固定的。

对于每个子系统。for每个子系统允许您为输入信号的单个元素(或子数组)重复算法。在这里,算法由子系统中的块集表示,并应用于信号的单个元素(或子数组)。方法将子系统输入分解为元素(或子数组)为每一个块,它驻留在子系统中。的为每一个Block还允许您将各个结果的连接配置为输出信号。这个子系统的一个优点是,它为它处理的每个元素或子数组维护独立的状态集。此外,对于某些模型,for每个子系统提高了生成的代码的重用性万博1manbetx仿真软件编码器™

信号

这个词信号指在所有时间点上都有值的时变量。您可以指定广泛的信号属性,包括信号名称、数据类型(例如,8位、16位或32位整数)、数字类型(实数或复数)和维度(一维、二维或多维数组)。许多块可以接受或输出任何数据或数值类型和维度的信号。另一些则对它们可以处理的信号的属性施加限制。

在方框图上,信号用带箭头的线表示。信号的源对应于在计算其块方法(方程)期间写入信号的块。信号的目的地是在块的方法(方程)计算期间读取信号的块。

理解信号定义的一个好方法是考虑教室。老师负责在白板上写字,学生可以选择读白板上写的内容。Simulink信号也是如此:信号的读取器万博1manbetx(块方法)可以根据需要选择频繁或不频繁地读取信号。

有关信号的更多信息,请参见信号

块的方法

块表示多个方程。这些方程用分块法表示。这些块方法在块图的执行过程中被计算(执行)。这些块方法的评估在一个模拟循环中执行,其中通过模拟循环的每个循环表示在给定时间点对框图的评估。

方法类型

名称被分配给块方法执行的函数类型。常见的方法类型包括:

  • 输出

    计算给定当前时间步的输入和前一个时间步的状态的块的输出。

  • 更新

    计算块在当前时间步长的离散状态值,给定它在当前时间步长的输入和它在前一个时间步长的离散状态。

  • 衍生品

    给定块的输入和前一个时间步的状态值,计算当前时间步中块的连续状态的导数。

方法命名约定

块方法对不同类型的块以不同的方式执行相同类型的操作。Simu万博1manbetxlink用户界面和文档使用点表示法来表示块方法执行的特定功能:

BlockType。MethodType

例如,计算增益块输出的方法称为

收益。输出

Simu万博1manbetxlink调试器将命名约定更进一步,并使用块的实例名来指定方法类型和在模拟期间调用方法的块实例,例如:

g1。输出

模型的方法

除了块方法之外,还提供了一组计算模型属性及其输出的方法。Simu万博1manbetxlink软件在模拟过程中类似地调用这些方法,以确定模型的属性及其输出。模型方法通常通过调用相同类型的块方法来执行它们的任务。例如,模型Outputs方法按照模型指定的顺序调用它所包含的块的Outputs方法来计算其输出。模型导数方法类似地调用它所包含的块的导数方法来确定其状态的导数。

另请参阅

|

相关的例子

更多关于

这个话题有用吗?