eventTimer

Класс: 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. Другой таймер действует как 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
Введенный в R2016a