exponenta event banner

eventIterate

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

Создать событие итерации сущности

Синтаксис

event=eventIterate(storageID,tag,priority)

Описание

event=eventIterate(storageID,tag,priority) создает событие для многократной обработки объектов элемента хранения. Затем можно запланировать это событие, вернув его в качестве выходного аргумента при реализации метода действия события, такого как exit.

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

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

Индекс элемента хранения. Объекты внутри этого элемента хранения будут итерируются.

Пользовательский тег этого события итерации сущности.

Приоритет события итерации сущности. Это значение должно быть положительным целым числом, где меньшее значение указывает на более высокий приоритет события.

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

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

Событие, обрабатывающее объекты определенного элемента хранения.

Примеры

Итерация объектов элемента хранения

Определение события для итерации объектов элемента хранения.

function event = exit(obj,storage,entity,dst)
    % Define an event to iterate entities of a storage element
    % - The event is regarding to storage element 2
    % - The event has a custom tag 'search'
    % - The event shall be executed at current simulation clock time
    % - The event has a priority of 10 (a smaller numeric value
    %   indicates a higher event priority) 
    event = obj.eventIterate(2, 'search', 10);
end

Блок хранилища настраиваемых сущностей с событием итерации

В этом примере пользовательский блок позволяет объектам входить в его элемент хранения через входной порт. Элемент хранения - это приоритетная очередь, которая сортирует объекты на основе их Diameter атрибут в порядке возрастания. Каждая запись объекта в хранилище блока вызывает событие итерации для отображения диаметра и положения каждого объекта в хранилище.

Дополнительные сведения см. в разделе Создание пользовательского блока хранилища сущностей с событием итерации.

classdef CustomEntityStorageBlockIteration < matlab.DiscreteEventSystem
    
    % A custom entity storage block with one input port and one storage element. 
    
    % Nontunable properties 
    properties (Nontunable)
        % Capacity
        Capacity = 5;
    end
    % Create the storage element with one input and one storage.
    methods (Access=protected)

        function num = getNumInputsImpl(obj)
            num = 1;
        end
        
        function num = getNumOutputsImpl(obj)
            num = 0;
        end
        
        function entityTypes = getEntityTypesImpl(obj)
            entityType1 = obj.entityType('Wheel');
            entityTypes = entityType1;
        end
        
        function [inputTypes,outputTypes] = getEntityPortsImpl(obj)
            inputTypes = {'Wheel'};
            outputTypes={};
            
        end
        
        function [storageSpecs, I, O] = getEntityStorageImpl(obj)
            storageSpecs = obj.queuePriority('Wheel',obj.Capacity, 'Diameter','ascending');
            I = 1;
            O = [];
            
        end
        
    end
    % Entity entry event action
    methods 

        function [entity, event] = WheelEntry(obj,storage,entity, source)
            % Entity entry invokes an iterate event.      
            event = obj.eventIterate(1, '');
        end

        % The itarate event action
        function [entity,event,next] = WheelIterate(obj,storage,entity,tag,cur)
            % Display wheel id, position in the storage, and diameter.
            coder.extrinsic('fprintf');
            fprintf('Wheel id %d, Current position %d, Diameter %d\n', ...
                entity.sys.id, cur.position, entity.data.Diameter);
            if cur.size == cur.position 
                fprintf('End of Iteration \n')
            end
            next = true;
            event=[];
        end
        
    end

end
Представлен в R2016a