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

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

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