Класс: matlab. DiscreteEventSystem
Пакет: matlab
Создайте событие генерации сущности
event=eventGenerate(storageID,tag,delay,priority)
создает событие для генерации сущности. Затем можно запланировать это событие, вернув его в качестве выходного аргумента при реализации метода действия события, такого как event
=eventGenerate(storageID
,tag
,delay
,priority
)entry
.
Задайте событие генерации сущности в элементе хранения 3
.
function event = setupEvents(obj) % Define an entity generation event % - A new entity shall be created in storage element 3 % - The event has a custom tag 'seed' % - The event shall be executed 0.5 second later % - The new entity shall be initialized with a priority of 200 event = obj.eventGenerate(3, 'seed', 0.5, 200); end
В этом примере показано, как создать пользовательский исходный блок, который генерирует сущности и управляет дискретными состояниями при реализации методов System object™ с дискретным событием.
Для получения дополнительной информации смотрите Пользовательский блок Генератора сущностей с входным сигналом и выходным сигналом.
classdef CustomEntityStorageBlockGeneration < matlab.DiscreteEventSystem... & matlab.system.mixin.Propagates % A custom entity generator block. % Nontunable properties properties (Nontunable) % Generation period period = 1; end properties(DiscreteState) % Entity priority priority; % Entity value value; end % Discrete-event algorithms methods function [events, out1] = setupEvents(obj) % Set up entity generation events at simulation start. events = obj.eventGenerate(1,'mygen',obj.period,obj.priority); % Set up the initial value of the output signal. out1 = 10; end function [entity,events,out1] = generate(obj,storage,entity,tag,in1) % Specify event actions when entity is generated in storage. entity.data = obj.value; % The priority value is assigned from the input signal. obj.priority = in1; % Output signal is the assigned priority value. out1 = obj.priority; events = [obj.eventForward('output',1,0) ... obj.eventGenerate(1,'mygen',obj.period,obj.priority)]; end end methods(Access = protected) function entityTypes = getEntityTypesImpl(obj) entityTypes = obj.entityType('Material'); end function [inputTypes,outputTypes] = getEntityPortsImpl(obj) % Specify entity input and output ports. Return entity types at % a port as strings in a cell array. Use empty string to % indicate a data port. inputTypes = {''}; outputTypes = {'Material',''}; end function resetImpl(obj) % Initialize / reset discrete-state properties. obj.priority = 10; obj.value = 1:12; end function [storageSpecs, I, O] = getEntityStorageImpl(obj) storageSpecs = obj.queueFIFO('Material', 1); I = 0; O = [1 0]; end function num = getNumInputsImpl(obj) % Define total number of inputs for system with optional % inputs. num = 1; end function num = getNumOutputsImpl(~) % Define total number of outputs. num = 2; end function [out1 out2] = getOutputSizeImpl(obj) % Return size for each output port. out1 = [1 12]; out2 = 1; end function [out1 out2] = getOutputDataTypeImpl(obj) % Return data type for each output port. out1 = "double"; out2 = "double"; end function [out1 out2] = isOutputComplexImpl(obj) % Return true for each output port with complex data. out1 = false; out2 = false; end function [sz,dt,cp] = getDiscreteStateSpecificationImpl(obj,name) % Return size, data type, and complexity of discrete-state % specified in name. switch name case 'priority' sz = [1 1]; case 'value' sz = [1 12]; end dt = "double"; cp = false; end end end
cancelGenerate
| cancelTimer
| eventDestroy
| eventForward
| eventIterate
| eventTimer