Класс: matlab. DiscreteEventSystem
Пакет: matlab
Действие события при завершении таймера
[entity,events]=timer(obj,storage,entity,tag)
[entity,events,out1,...]=timer(obj,storage,entity,tag,in1,...)
[
задает действия события для при завершении запланированного таймера.entity
,events
]=timer(obj
,storage
,entity
,tag
)
[
задает такие действия события, когда блок имеет один или несколько портов входного сигнала и/или выходных портов сигнала.entity
,events
,out1
,...]=timer(obj
,storage
,entity
,tag
,in1
,...)
Сущность при завершении таймера для obj системного объекта дискретных событий.
function [entity,events] = timer(obj,storage,entity,tag) % Check which timer of the entity has expired, and forward the % entity to the next location accordingly. switch tag case 'ServiceComplete' entity.done = 1; events = obj.eventForward('output', 1, 0); case 'Timeout' entity.done = 0; events = obj.eventForward('storage', 2, 0); end end
Этот пример использует пользовательский блок хранения сущностей с одним входом, двумя выходами и элементом хранения. Сущность типа Part
с TimeOut
атрибут входит в хранилище пользовательского блока, который будет обработан. TimeOut
определяет максимально допустимое время вычислений деталей. Когда компонент входит в хранилище, активируются два события таймера. Один таймер отслеживает время вычислений детали в печи. Когда этот таймер истекает, сущность переадресовывается на вывод 1
. Другой таймер действует как fail-safe и отслеживает, если превышено максимально допустимое время вычислений или нет. Когда этот таймер истекает, процесс завершается, и сущность переадресуется на выход 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
blocked
| destroy
| entry
| exit
| generate
| getEntityTypesImpl
| iterate
| matlab.DiscreteEventSystem
| setupEvents