eventGenerate

Класс: 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

Создайте пользовательский блок, чтобы сгенерировать сущности

В этом примере показано, как создать пользовательский исходный блок, который генерирует сущности и управлять дискретными состояниями при реализации дискретной системы событий 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
Введенный в R2016a