主要内容

定时器

班级:离散事件系统
包裹:matlab软件

计时器完成时的事件操作

语法

[实体,事件]=计时器(对象,存储,实体,标记)
[entity,events,out1,…]=计时器(obj,storage,entity,tag,in1,…)

说明

[实体,事件]=计时器(目标,存储,实体,标签)指定计划计时器完成时的事件操作。

[实体,事件,出口1,…]=计时器(目标,存储,实体,标签,,...)当块具有一个或多个输入信号端口和/或信号输出端口时,指定此类事件操作。

输入参数

全部展开

离散事件系统对象。

存储元素的索引。

计时器事件的实体。实体具有以下字段:

  • 系统(MATLAB)结构)-它有以下字段:

    • 身份证件(双重的)-实体ID

    • 优先(双重的)-实体优先级

  • 数据-实体数据

当前正在执行的计时器事件的标记。

对象的任何数据输入。这些输入参数仅在对象具有数据输入时存在。

输出参数

全部展开

值已更改的实体。

方法返回后要安排的事件。使用离散事件系统类方法来创建事件。每个事件都有以下字段:

  • 类型(特征向量)-事件类型

  • 延迟(双重的)-事件发生前的延迟

  • 优先(双重的)-事件优先级

  • 保管部(双重的)-存储元素的索引

  • 标签(特征向量)-事件标签

  • 位置(MATLAB)结构)-实体的源或目标位置

对象的数据输出。当对象有数据输出时,必须指定这些输出参数。

示例

计时器完成时的事件操作

离散事件系统对象计时器完成时转发实体目标.

功能[实体,事件]=计时器(对象,存储,实体,标记)%检查实体的哪个计时器已过期,并转发%实体相应地移动到下一个位置。转换标签案例'服务完成'entity.done=1;事件=obj.eventForward('输出', 1, 0);案例'超时'entity.done=0;事件=obj.eventForward('存储', 2, 0);结束结束

带有计时器事件的自定义实体存储块

本例使用一个具有一个输入、两个输出和一个存储元素的自定义实体存储块。类型的实体零件具有超时属性输入要处理的自定义块的存储。超时确定零件允许的最大加工时间。当一个部件进入存储器时,两个定时器事件被激活。一个计时器跟踪烤箱中零件的加工时间。当此计时器过期时,实体将被转发到输出1.. 另一个计时器充当故障保护,并跟踪是否超过了允许的最大处理时间。当此计时器过期时,进程终止,实体被转发到输出2..

有关详细信息,请参阅具有多个计时器事件的自定义实体存储块.

类定义CustomEntityStorageBlockTimer%具有一个输入端口、两个输出端口和一个存储器的自定义实体存储块。%不可更改的属性属性(不可更改)%容量容量=1;结束方法(访问=受保护)功能num=getNumInputsImpl(~)num=1;结束功能num=getNumOutputsImpl(~)num=2;结束功能entityTypes=getEntityTypesImpl(obj)entityTypes=obj.entityType('零件');结束功能[inputTypes,outputTypes]=GetEntityPortSiml(obj)输入类型={'零件'}; 输出类型={'零件''零件'};结束功能[storageSpecs,I,O]=getEntityStorageImpl(obj)storageSpecs=obj.queueFIFO('零件',目标容量);I=1;O=[11];结束结束方法功能[实体,事件]=PartEntry(对象,存储,实体,源)%指定实体进入存储时的事件操作。ProcessingTime=randi([1 15]);event1=obj.eventTimer('超时',entity.data.TimeOut);event2=obj.eventTimer('处理完成',处理时间);事件=[event1 event2];结束功能[实体,事件]=计时器(对象,存储,实体,标记)%指定计划计时器完成时的事件操作。event=obj.initEventArray;转换标签案例'处理完成'event=对象eventForward('输出', 1, 0);案例'超时'event=对象eventForward('输出', 2, 0);结束结束结束结束
R2016a引入