timer

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

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

развернуть все

Объект Discrete-event System.

Индекс запоминающего элемента.

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

  • sys (MATLAB structure) — Это имеет эти поля:

    • id 'double') — ID сущности

    • priority 'double') — Приоритет сущности

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

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

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

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

развернуть все

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

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

  • type Символьный вектор) — Тип события

  • delay 'double') — Задерживаются перед событием

  • priority 'double') — Приоритет события

  • Storage 'double') — Индекс запоминающего элемента

  • tag Символьный вектор) — Тег события

  • 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. Другой таймер действует как отказоустойчивое и дорожки, если максимальное позволенное время вычислений превышено или нет. Когда этот таймер истекает, процесс отключен, и сущность передается выходу 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