exponenta event banner

вход

Класс: 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

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

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

Пользовательский блок системы дискретных событий MATLAB принимает объект из своего входного порта и направляет его в свой выходной порт с заданной задержкой. Дополнительные сведения см. в разделе Задержка объектов с помощью блока хранения настраиваемых объектов.

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