entry

Класс: matlab. DiscreteEventSystem
Пакет: matlab

Действие события, когда сущность входит в элемент хранилища

Синтаксис

[entity,events]=entry(obj,storage,entity,source)
[entity,events,out1,...]=entry(obj,storage,entity,source,in1,...)

Описание

[entity,events]=entry(obj,storage,entity,source) задает действия события объекта при входе сущности в хранилище.

[entity,events,out1,...]=entry(obj,storage,entity,source,in1,...) такие действия события объекта, когда блок имеет один или несколько портов входного сигнала и/или выходных портов сигнала.

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

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

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

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

Сущность, вводящий компонент хранения. Сущность имеет следующие поля:

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

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

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

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

Исходное местоположение сущности, такого как вход порт или элемент хранения. В нем есть следующие поля:

  • type (character vector) - Задайте input или storage

  • index (double) - Входной или запоминающий индекс

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

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

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

Сущность, поступающий в хранилище, возможно, с измененными данными. См. сущность.

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

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

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

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

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

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

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

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

Примеры

Действие события при входе в сущность

Действие события для входа сущности в хранилище.

function [entity,events] = entry(obj,storage,entity,src)
    % Specify event actions when entity entered storage.
    disp(['Entity of ID ' num2str(entity.sys.id) ...
          ' has entered storage element ' num2str(storage)]);
    switch src.type
        case 'input'
            disp(['Entity came from input port ' num2str(src.index)]);
        case 'storage'
            disp(['Entity came from storage element ' num2str(src.index)]);
    end
    events = [ ...
        obj.eventDestroy(), ...    % Destroy the newly entered entity
        obj.eventIterate(2, '')];  % Iterate entities in storage element 2
end

Создайте пользовательский блок хранения сущностей для задержки сущностей

В этом примере показов, как использовать методы Системного объекта дискретных событий для создания пользовательского блока хранения сущностей, который имеет один порт входа, один порт выхода и один элемент хранения. Дискретный Системный объект события является экземпляром matlab.DiscreteEventSystem класс, который позволяет использовать методы реализации и обслуживания, предоставляемые этим классом. Затем вы используете блок MATLAB Discrete-Event System, чтобы интегрировать системный объект в SimEvents® модель.

Пользовательский блок MATLAB Discrete-Event System принимает сущность из его входного порта и пересылает его к своему выходному порту с заданной задержкой. Для получения дополнительной информации смотрите Сущности задержки с пользовательской Сущностью блоком хранилища.

classdef CustomEntityStorageBlock < matlab.DiscreteEventSystem
                        
    % A custom entity storage block with one input, one output, and one storage. 
 
    % Nontunable properties 
    properties (Nontunable)
    % Capacity
        Capacity = 1;
    % Delay
        Delay=4;
    end
    
    methods (Access=protected)        
        function num = getNumInputsImpl(~)
            num = 1;
        end
        
        function num = getNumOutputsImpl(~)
            num = 1;
        end      
        
        function entityTypes = getEntityTypesImpl(obj)
            entityTypes = obj.entityType('Car');
        end
        
        function [inputTypes,outputTypes] = getEntityPortsImpl(obj)
            inputTypes = {'Car'};
            outputTypes = {'Car'};
        end

        function [storageSpecs, I, O] = getEntityStorageImpl(obj)
            storageSpecs = obj.queueFIFO('Car', obj.Capacity);
            I = 1;
            O = 1;
        end
       
    end
    
   methods
       
        function [entity,event] = CarEntry(obj,storage,entity,source)
            % Specify event actions when entity enters storage.
        
             event = obj.eventForward('output', 1, obj.Delay);
           
        end
     
    end
    
end
Введенный в R2016a