timer

Класс: 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,...) задает такие действия события, когда блок имеет один или несколько портов входного сигнала и/или выходных портов сигнала.

Входные параметры

расширить все

Дискретно-событийный Системный объект.

Индекс элемента хранения.

Сущность события таймера. Сущность имеет следующие поля:

  • sys (MATLAB structure) - В нем есть следующие поля:

    • id (double) - Идентификатор сущности

    • priority (double) - Приоритет сущности

  • data - Данные сущности

Тег текущего выполняемого события таймера.

Любые входы данных объекта. Эти входные аргументы существуют только, когда объект имеет входы данных.

Выходные аргументы

расширить все

Сущность с измененным значением.

События, запланированные после возвратов метода. Использование matlab.DiscreteEventSystem методы класса для создания событий. Каждое событие имеет следующие поля:

  • type (character vector) - Тип события

  • delay (double) - Задержка перед событием

  • priority (double) - Приоритет мероприятия

  • Storage (double) - Индекс элемента хранения данных

  • tag (character vector) - Тег события

  • location (MATLAB structure) - Источник или место назначения сущности

Выходы объекта. Вы должны задать эти выходные аргументы, когда объект имеет выходы.

Примеры

Действие события при завершении таймера

Сущность при завершении таймера для 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
Введенный в R2016a
Для просмотра документации необходимо авторизоваться на сайте