Класс: 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
cancelIterate | cancelTimer | eventDestroy | eventForward | eventGenerate | eventTimer