使用MATLAB离散事件系统块创建自定义块
离散事件系统对象允许您使用MATLAB实现自定义事件驱动的实体流系统®语言。的MATLAB离散事件系统block使你能够使用离散事件系统对象在你的SimEvents中创建一个自定义块®模型。您可以通过一组MATLAB方法编写这样的离散事件系统对象。
您可以从头创建一个自定义离散事件系统对象™:
包含多个实体存储元素,每个存储元素包含多个SimEvents实体,并将其配置为按特定顺序对实体排序。
具有可以调度和执行多种类型事件的实体或存储元素。这些事件可以为实体创建、消费、搜索、传输和时间延迟等活动建模。
可以接受实体/信号作为输入/输出,产生实体和信号作为输出,支持内置数据类型和结构化/总线数据类型。
使用MATLAB工具箱对复杂系统进行计算和缩放。
的MATLAB离散事件系统块类似于MATLAB系统用这些区别来区分:
方法的实例化
matlab。DiscreteEventSystem
类而不是matlab。系统
类。的
matlab。DiscreteEventSystem
有自己的一套系统对象方法,专门用于离散事件系统。的
matlab。DiscreteEventSystem
类的一个子集MATLAB系统方法。有关此子集的完整列表,请参见创建一个离散事件系统对象.
离散事件系统框架中的实体类型、端口和存储
实体是系统处理的离散对象。实体有一个类型,而实体类型定义了一组实体,这些实体共享一组公共的数据规范和运行时方法。数据规范的例子包括维度、数据类型和复杂性。
类定义自定义实体类型时,请考虑这些指导原则getEntityTypesImpl
方法:
可以指定多种实体类型。每个类型必须有唯一的名称。
实体存储元素、输入端口和输出端口必须指定它们使用的实体类型。
指定或解析实体类型的公共数据规范。例如,具有相同实体类型的输入端口和输出端口必须具有相同的数据类型。
当转发一个实体时,源数据规格和目标数据规格在以下情况下必须相同:
从输入端口到存储元素
存储元素之间
从存储元素到输出端口
每个实体类型都可以共享一组公共的事件操作方法。在命名这些方法时,为了区分实体类型,使用以下约定:
entitytypeAction
例如,如果有两种实体类型,
车
而且卡车
,使用方法名,例如:carEntry truckEntry
在模拟过程中,一个实体总是占用一个单位的存储空间。这种存储空间由实体存储元素提供。一个离散事件System对象可以包含多个实体存储元素。使用getEntityStorageImpl
方法指定存储元素。存储空间是一个具有以下属性的容器:
实体类型—此存储正在处理的实体类型。
容量——存储可以包含的最大实体数量。
存储类型。存储实体排序标准(
先进先出
,后进先出
,优先级
).键名——用于排序的键名的属性名。仅当存储类型为时,此属性才适用
优先级
.排序方向——升序或降序优先队列。仅当存储类型为时,此属性才适用
优先级
.
您可以访问存储的任意位置上的任何实体并指定事件。
端口使离散事件系统对象能够与其他块或模型组件交换实体和数据。方法可以指定输入和输出端口的可变数量getNumInputsImpl
而且getNumOutputsImpl
方法。您还可以指定哪些端口是实体端口以及这些端口的实体类型。使用getEntityPortsImpl
方法指定这些端口属性。
事件
可以为离散事件System对象安排要执行的事件。事件与用户定义的操作相关联。事件操作通过更改状态或实体值并执行下一组事件来定义自定义行为。
你可以使用方法和函数来:
安排活动
定义响应事件的事件操作
初始化事件
取消事件
一个MATLAB离散事件系统对象可以有这些类型的事件:
存储事件—您可以在存储元素上调度这些事件。actor是一个存储元素。
您可以在存储元素中生成一个新的实体。
您可以迭代存储元素的每个实体。
实体事件——可以在实体上调度这些事件。行动者是一个实体。
您可以延迟一个实体。
可以将实体从其当前存储转发到另一个存储或输出端口。
您可以销毁存储元素的现有实体。
有关使用事件和事件操作的更多信息,请参见使用事件和事件动作自定义离散事件系统行为.
实现一个离散事件系统对象MATLAB离散事件系统块
要通过分配离散事件系统对象来实现自定义块,请执行以下步骤。
打开一个新模型并添加MATLAB离散事件系统块从SimEvents库。
在块对话框中,从新列表中,选择
基本
从模板创建一个System对象。根据需要修改模板并保存System对象。
您还可以使用代码插入选项从MATLAB编辑器中修改模板并定义离散事件系统对象。通过选择插入属性或插入方法, MATLAB编辑器添加预定义的属性,方法,状态,输入,或输出到您的系统对象。使用这些工具可以更快地创建和修改System对象,并通过减少键入错误来提高准确性。
如果System对象存在,则在块对话框中输入它的名称Discrete-event系统对象名称参数。单击列表箭头可查看当前文件夹中可用的离散事件系统对象。
的MATLAB离散事件系统块图标和端口标签更新为对应系统对象的图标和标签。假设您选择一个名为
myServer
并生成一个自定义实体服务器块,该块为实体提供服务,并通过输出端口输出每个实体。然后,块如模型中所示进行更新。
许多不同的MATLAB系统对象函数允许您捕获属性并实现自定义行为。提供的模板是简化的,但是可以通过编辑事件操作、引入操作和修改参数来增加复杂性。MATLAB System对象的面向对象编程特性使您能够扩展您的模型,并将其与SimEvents的图形化编程特性连接起来。
这些主题将引导您完成创建具有不同功能的自定义块的完整工作流。
对于其他的例子MATLAB离散事件系统block和discrete-event系统对象,请参见帮助浏览器中的SimEvents Examples。
若要使用提供的自定义块,请在SimEvents库中双击设计模式块。的MATLAB离散事件系统类别包含以下设计模式:
例子 | 应用程序 |
---|---|
定制的发电机 |
实现一个更复杂的实体生成器。 |
自定义服务器 | 使用自定义服务器。 |
选择队列 |
选择要从队列中输出的特定实体。 |
有关更多信息,请参见SimEvents通用设计模式.
另请参阅
matlab。DiscreteEventSystem
|matlab。系统