Класс: matlab. DiscreteEventSystem
Пакет: matlab
Создать событие таймера сущности
event=eventTimer(tag,delay)
создает событие для задержки объекта на определенный период времени. Затем можно запланировать таймер, вернув его в качестве выходного аргумента при реализации метода действия события, такого как event=eventTimer(tag,delay)entry.
Определите событие таймера.
function [entity,event] = entry(obj,storage,entity,src) % Define a timer event % - The event is regarding the entity in current event action context % - The event has a custom tag 'timeout' % - The event will be executed 3.0 seconds later event = obj.eventTimer('timeout', 3.0); end
В этом примере используется пользовательский блок хранения объектов с одним входом, двумя выходами и элементом хранения. Объект типа Part с TimeOut входит в хранилище обрабатываемого пользовательского блока. TimeOut определяет максимально допустимое время обработки позиций. При поступлении компонента в хранилище активируются два события таймера. Один таймер отслеживает время обработки детали в печи. Когда этот таймер истекает, объект перенаправляется на выход 1. Другой таймер действует как отказоустойчивый и отслеживает, превышается ли максимально допустимое время обработки. По истечении этого таймера процесс завершается, и объект пересылается на выход. 2.
Дополнительные сведения см. в разделе Блок хранилища настраиваемых сущностей с несколькими событиями таймера.
classdef CustomEntityStorageBlockTimer < matlab.DiscreteEventSystem % A custom entity storage block with one input port, two output ports, and one storage. % Nontunable properties properties (Nontunable) % Capacity Capacity = 1; end methods (Access=protected) function num = getNumInputsImpl(~) num = 1; end function num = getNumOutputsImpl(~) num = 2; end function entityTypes = getEntityTypesImpl(obj) entityTypes = obj.entityType('Part'); end function [inputTypes,outputTypes] = getEntityPortsImpl(obj) inputTypes = {'Part'}; outputTypes = {'Part' 'Part'}; end function [storageSpecs, I, O] = getEntityStorageImpl(obj) storageSpecs = obj.queueFIFO('Part', obj.Capacity); I = 1; O = [1 1]; end end methods function [entity,event] = PartEntry(obj,storage,entity,source) % Specify event actions when entity enters storage. ProcessingTime=randi([1 15]); event1 = obj.eventTimer('TimeOut', entity.data.TimeOut); event2 = obj.eventTimer('ProcessComplete', ProcessingTime); event = [event1 event2]; end function [entity, event] = timer(obj,storage,entity,tag) % Specify event actions for when scheduled timer completes. event = obj.initEventArray; switch tag case 'ProcessComplete' event = obj.eventForward('output', 1, 0); case 'TimeOut' event = obj.eventForward('output', 2, 0); end end end end
cancelDestroy | cancelForward | cancelGenerate | cancelIterate | cancelTimer | eventDestroy | eventForward | eventGenerate | eventIterate