timer
Class: matlab.DiscreteEventSystem
Namespace: matlab
Event action when timer completes
Syntax
[entity,events]=timer(obj,storage,entity,tag)
[entity,events,out1,...]=timer(obj,storage,entity,tag,in1,...)
Description
[
specifies event actions for when scheduled timer completes.entity
,events
]=timer(obj
,storage
,entity
,tag
)
[
specifies such event actions when the block has one or more input signal ports and/or
signal output ports.entity
,events
,out1
,...]=timer(obj
,storage
,entity
,tag
,in1
,...)
Input Arguments
Output Arguments
Examples
Event Action When Timer Completes
Forward entity when timer completes for discrete-event system object 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
Custom Entity Storage Block with Timer Events
This example uses a custom entity storage block with one input, two outputs, and a
storage element. An entity of type Part
with
TimeOut
attribute enters the storage of the custom block to
be processed. TimeOut
determines the maximum allowed processing
time of the parts. When a part enters the storage, two timer events are activated.
One timer tracks the processing time of the part in the oven. When this timer
expires, the entity is forwarded to output 1
. Another timer acts
as a fail-safe and tracks if the maximum allowed processing time is exceeded or not.
When this timer expires, the process is terminated and the entity is forwarded to
the output 2
.
For more information, see Custom Entity Storage Block with Multiple Timer Events.
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
Version History
Introduced in R2016a