Класс: matlab. DiscreteEventSystem
Пакет: matlab
Действие события при создании сущности
[entity,events]=generate(obj,storage,entity,tag)
[entity,events,out1,...]=generate(obj,storage,entity,tag,in1,...)
[
задает действия события объекта, когда сущность создаётся внутри компонента хранилища. entity
,events
]=generate(obj
,storage
,entity
,tag
)
[
задает такие действия объекта, когда блок имеет один или несколько портов входного сигнала и/или выходных портов сигнала.entity
,events
,out1
,...]=generate(obj
,storage
,entity
,tag
,in1
,...)
Инициализируйте значения атрибутов, когда сущность генерируется в элементе хранения.
function [entity,events] = generate(obj,storage,entity,tag) % Specify event actions when entity generated in storage. % - For entitiy generation event of tag 'Adam', initialize the % entity so that its attribute 'gender' has value '0', and its % priority is '200'. % - For entity generation event of tag 'Eve', initialize the % entity so that its attribute 'gender' has value '1', and its % priority is '100'. % - An event is returned to forward the entity to storage % element 2 with a time delay of 0.6. switch tag case 'Adam' entity.data.gender = 0; entity.sys.priority = 200; case 'Eve' entity.data.gender = 1; entity.sys.priority = 100; end events = obj.eventForward('storage',2,0.6); end
В этом примере показов, как создать пользовательский исходный блок, который генерирует сущности и управляет дискретными состояниями при реализации методов Системного объекта дискретных событий.
Для получения дополнительной информации смотрите Пользовательский блок Генератора сущностей с входным сигналом и выходным сигналом.
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
blocked
| destroy
| entry
| exit
| getEntityPortsImpl
| getEntityStorageImpl
| getEntityTypesImpl
| iterate
| matlab.DiscreteEventSystem
| setupEvents
| timer