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