主要内容

具有多个计时器事件的自定义实体存储块

离散事件系统允许实现不同的事件类型来操作实体和存储。有时,所需的行为涉及作用于同一存储或实体的多个事件。此示例演示如何在离散事件系统框架中处理作用于同一目标的多个事件。在本例中,生成一个自定义实体存储块来实现标签,这是标识符之一,当多个计时器事件作用于同一实体时。要查看事件标识符列表,请参见使用事件和事件动作自定义离散事件系统行为

要打开模型并观察自定义块的行为,请参见CustomEntityStorageBlockWithTwoTimerEventsExample

创建具有多个计时器事件的离散事件系统对象

假设使用离散事件系统对象™来表示使用烘箱加工金属部件的设备。根据检测到的金属不同,处理时间也不同。为安全起见,零件有最大允许加工时间。

  • 如果烘箱处理时间少于允许的最大时间,零件将被处理并离开烘箱和设备。

  • 如果检测到的金属有错误,使用时间超过最大允许的加工时间,加工过程将停止,零件将从烘箱中取出重新布线进行进一步加工。

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

这个示例生成自定义块,并使用自定义标记惟一地标识针对同一实体的这两个计时器事件。

参见生成带有计时器事件的自定义存储块的代码

自定义块的行为

  1. 生成一个具有一个输入、两个输出和一个存储元素的自定义块。有关创建基本存储元素的详细信息,请参见用MATLAB离散事件系统块实现一个离散事件系统对象

    函数num = getNumInputsImpl(~) num = 1;结束函数num = getNumOutputsImpl(~) num = 2;结束函数entityTypes = getEntityTypesImpl(obj) entityTypes = obj. entitytype“部分”);结束函数[inputTypes,outputTypes] = getEntityPortsImpl(obj) inputTypes = {“部分”};outputTypes = {“部分”“部分”};结束函数[storagesops, I, O] = getEntityStorageImpl(obj) storagesops = obj. queuefifo (“entity1”, obj.Capacity);I = 1;O = [1 1];结束
  2. 调用两个带有标记的计时器“超时”而且“ProcessComplete”当实体进入存储时。

    函数(实体、事件)= PartEntry (obj、存储实体,源)指定实体进入存储时的事件操作。ProcessingTime = randi([1 15]);% TimeOut属性指定带有TimeOut标记的计时器的过期时间event1 = obj.eventTimer (“超时”, entity.data.TimeOut);计时器ProcessComplete的过期时间是介于% 1和15。event2 = obj.eventTimer (“ProcessComplete”, ProcessingTime);事件= [event1 event2];结束
  3. 第一个过期的定时器决定实体的转发行为。

    函数[entity, event] = timer(obj,storage,entity,tag)指定计划计时器完成时的事件操作。事件= obj.initEventArray;开关标签情况下“ProcessComplete”如果ProcessComplete先过期,实体将被转发到输出1。事件= obj.eventForward (“输出”1 0);情况下“超时”%如果TimeOut先过期,实体被转发到输出2。事件= obj.eventForward (“输出”2 0);结束结束

实现自定义的块

  1. 保存.m文件CustomEntityStorageBlockTimer.将System对象链接到SimEvents®通过使用MATLAB离散事件系统块。有关链接的更多信息,请参见使用MATLAB离散事件系统块创建自定义块

  2. 创建一个SimEvents模型,包括MATLAB离散事件系统块,一个实体发电机块,两个实体终结者块。如模型所示连接块。

  3. 实体发电机布洛克:

    1. 实体类型选项卡,设置属性名称作为超时

    2. 事件动作选项卡,产生行动字段:

      实体。超时= 10;
  4. 实体终结者而且实体Terminator1块,输出到达的实体数量,a统计并将它们连接到作用域。

  5. 将模拟时间增加到One hundred.并对模型进行仿真。注意,根据相应的计时器到期,实体被转发到相应的输出。

另请参阅

|||||||

相关的话题

Baidu
map