主要内容

使用MATLAB离散事件系统块创建自定义块

离散事件系统对象允许您使用MATLAB实现自定义事件驱动的实体流系统®语言。的MATLAB离散事件系统块使您可以使用离散事件系统对象在Simevents中创建自定义块®模型。您可以通过一组MATLAB方法来编写这样的离散事件系统对象。

你可以从头开始创建一个自定义的离散事件系统对象™:

  • 包含多个实体存储元素,每个存储元素包含多个SimEvents实体,并将其配置为按特定顺序对实体进行排序。

  • 具有可以调度和执行多种类型事件的实体或存储元素。这些事件可以对实体创建、使用、搜索、传输和暂时延迟等活动进行建模。

  • 可以接受实体/信号作为输入/输出,产生实体和信号作为输出,支持内置数据类型和结构化/总线数据类型。万博1manbetx

  • 使用MATLAB工具箱进行复杂系统的计算和缩放。

MATLAB离散事件系统块类似于MATLAB系统用这些差异来阻挡:

  • 生成的离散事件系统对象是一个实例化matlab。DiscreteEventSystem而不是Matlab.System.类。

  • matlab。DiscreteEventSystem有自己的一组系统对象方法,该方法是离散事件系统。

  • matlab。DiscreteEventSystem也继承了一个子集MATLAB系统方法。有关这个子集的完整列表,请参见创建一个离散事件系统对象

在离散事件系统框架中的实体类型,端口和存储

实体是系统处理的离散对象。实体具有类型,而实体类型定义了共享一组公共数据规范和运行时方法的实体类。数据规范的例子包括维度、数据类型和复杂性。

使用该指定定义自定义实体类型时GetEntityTypesimpl.方法:

  • 您可以指定多种实体类型。每种类型必须具有唯一的名称。

  • 实体存储元素,输入端口和输出端口必须指定与之合作的实体类型。

  • 指定或解析实体类型的常用数据规范。例如,输入端口和具有相同实体类型的输出端口必须具有相同的数据类型。

  • 转发实体时,源和目标数据规范必须在这些实例中相同:

    • 从输入端口到存储单元

    • 存储元素之间

    • 从存储单元到输出端口

  • 每个实体类型都可以共享一组公共的事件操作方法。在命名这些方法时,为了区分实体类型,使用以下约定:

    ititytypeaction.

    例如,如果有两种实体类型,卡车,使用方法名称,例如:

    凯伦特里被装运车

在模拟过程中,一个实体总是占用一个存储空间单位。这种存储空间由实体存储元素提供。一个离散事件System对象可以包含多个实体存储元素。使用getEntityStorageImpl指定存储元素的方法。存储空间是具有这些属性的容器:

  • 实体类型 - 实体类型此存储正在处理。

  • 容量 - 存储可以包含的最大实体数。

  • 存储类型-存储实体排序的标准(FIFOLIFO,和优先权)。

  • 密钥名称 - 属性名称用作排序的关键名。仅当存储类型为时,此属性有效优先权

  • 排序方向-优先级队列升序或降序。仅当存储类型为时,此属性有效优先权

您可以在存储的任意位置访问任何实体并指定事件。

端口允许离散事件System对象与其他块或模型组件交换实体和数据。属性可以指定可变数量的输入和输出端口getnuminputsimpl.getnumoutputsimpl.方法。您还可以指定哪些端口是实体端口以及这些端口的实体类型。使用GetEnterityPortsimpl.指定这些端口属性的方法。

活动

您可以为离散事件System对象安排要执行的事件。事件与用户定义的操作相关联。事件操作通过更改状态或实体值并执行下一组事件来定义自定义行为。

您可以使用方法和函数来:

  • 安排活动

  • 定义响应事件的事件操作

  • 初始化事件

  • 取消事件

一个MATLAB离散事件系统对象可以有以下类型的事件:

  • 存储事件 - 您可以在存储元素上安排这些事件。演员是存储元素。

    • 您可以在存储元素中生成新实体。

    • 您可以迭代存储元素的每个实体。

  • 实体事件—您可以在实体上安排这些事件。Actor是一个实体。

    • 您可以延迟一个实体。

    • 您可以将一个实体从其当前存储器转发到另一个存储器或输出端口。

    • 您可以销毁存储元素的现有实体。

有关使用事件和事件操作的详细信息,请参阅使用事件和事件动作自定义离散事件系统行为

使用实现离散事件系统对象MATLAB离散事件系统

要通过分配离散事件System对象来实现自定义块,请遵循以下步骤。

  1. 打开一个新模型并添加MATLAB离散事件系统从Simevents库中块。

  2. 在块对话框中,从new列表中,选择基础从模板创建系统对象。

    根据需要修改模板,保存System对象。

    您还可以使用代码插入选项从Matlab编辑器修改模板并定义离散事件系统对象。通过选择插入属性插入方法,MATLAB编辑器将预定义的属性,方法,状态,输入或输出添加到您的系统对象。使用这些工具更快地创建和修改系统对象,并通过减少键入错误来提高精度。

  3. 如果存在System对象,在块对话框中输入System对象的名称Discrete-event系统对象名称参数。单击列表箭头以查看当前文件夹中的可用离散事件系统对象。

    MATLAB离散事件系统块图标和端口标签更新到相应系统对象的图标和标签。假设您选择命名的系统对象MyServer在您当前的文件夹中,并生成自定义实体服务器块,该块服务实体并通过输出端口输出每个实体。然后,块更新如模型所示。

许多不同的MATLAB系统对象函数允许您捕获属性并实现自定义行为。提供的模板被简化了,但是您可以通过编辑事件操作、引入操作和修改参数来增加复杂性。MATLAB System对象的面向对象编程特性使您能够缩放模型,并将其与SimEvents的图形编程特性进行接口。

这些主题将带领您完成创建具有不同功能的自定义块的完整工作流。

对于其他例子MATLAB离散事件系统块和离散事件系统对象,请参见帮助浏览器中的SimEvents示例。

要使用提供的自定义块,在SimEvents库中,双击设计模式块。的MATLAB离散事件系统类别包含以下设计模式:

示例 应用

自定义生成器

实现更复杂的实体生成器。

自定义服务器

使用自定义服务器。

选择队列

从队列中选择特定实体。

有关更多信息,请参阅Simevents常见的设计模式

另请参阅

|

相关的话题