resourceAcquired

Класс: matlab.DiscreteEventSystem
Пакет: mATLAB

Действие события на успешный захват ресурса

Синтаксис

[entity,event,out1,...] = resourceAcquired(obj,storage,entity,resources,tag,in1,...)

Описание

[entity,event,out1,...] = resourceAcquired(obj,storage,entity,resources,tag,in1,...) задает действие события для дискретной системы событий object™ на успешный захват ресурса. Захват ресурса успешен, только если все заданные ресурсы получены.

Входные параметры

развернуть все

Объект Discrete-event System.

Индекс запоминающего элемента.

Сущность, которая получает ресурс. Сущность имеет эти поля:

  • sys (MATLAB structure) состоя из:

    • id 'double') — ID сущности

    • priority 'double') — Приоритет сущности

  • data — Данные сущности

Массив структур, который задает ресурсы, которые были получены.

Тег события захвата ресурса выполняющегося в данного момента.

First Data вводится.

Выходные аргументы

развернуть все

Сущность, получающая ресурс.

События, которые будут запланированы. Используйте matlab.DiscreteEventSystem методы класса создать события. Каждое событие имеет эти поля:

  • type Символьный вектор) — Тип события

  • delay 'double') — Задерживаются перед событием

  • priority 'double') — Приоритет события

  • storage 'double') — Индекс запоминающего элемента

  • tag Символьный вектор) — Тег события

  • location (MATLAB structure) — Источник или место назначения (см. источник),

First Data выводится.

Примеры

Действие события с захватом ресурса

Предположим, что сущность получает ресурсы успешно с запланированным eventAcquireResource и тегом этого события является MyResourceAcquireEvent. Затем этот захват вызывает resourceAcquired метод, чтобы передать сущности выходу.

function [entity,events] = entry(obj, storage, entity, source)
  % On entry, acquire one resource of type Resource1.
  resRequest = obj.resourceSpecification('Resource1', 1);
  events = obj.eventAcquireResource(resRequest, 'MyResourceAcquireEvent');       
end
        
function [entity,events] = resourceAcquired(obj, storage,...  
                            entity, resources, tag)
  % After resource acquisition, forward the entity to the output.                     
  events = obj.eventForward('output', storage, 0.0);
end

Пользовательский получатель ресурса

В этом примере показано, как использовать методы управления ресурсами, чтобы создать пользовательский блок системы хранения сущности, в котором сущности получают ресурсы от заданных блоков Resource Pool.

Предположим, что вы управляете средством, которое производит части из двух различных материалов, материального 1 и материальный 2, выполнить порядки. После того, как часть производится, она оценена для гарантии качества.

Два метода тестирования для контроля качества:

  • Протестируйте 1, используется для частей, которые производятся из материального 1.

  • Протестируйте 2, используется для частей, которые производятся из материального 2

После производственной стадии части помечены на основе их материала, чтобы применить правильный тест.

Для получения дополнительной информации смотрите, Создают Пользовательский Блок Получателя Ресурса.

classdef CustomBlockAcquireResources < matlab.DiscreteEventSystem
    % Custom resource acquire block example.
    
    methods(Access = protected)
        
        function num = getNumInputsImpl(obj)
            num = 1;
        end
        

        function num = getNumOutputsImpl(obj)
            num = 1;
        end

      
        function entityTypes = getEntityTypesImpl(obj)
            entityTypes(1) = obj.entityType('Part');
        end
        
        function [input, output] = getEntityPortsImpl(obj)
            input  = {'Part'};
            output = {'Part'};
        end
        
        function [storageSpec, I, O] = getEntityStorageImpl(obj)
            storageSpec(1) = obj.queueFIFO('Part', 1);
            I = 1;
            O = 1;
        end
        
        function resNames = getResourceNamesImpl(obj)
            % Define the names of the resources to be acquired.
            resNames = obj.resourceType('Part', {'Test1', 'Test2'}) ;
        end
       
    end
        
    methods
        
        function [entity,events] = entry(obj, storage, entity, source)
            % On entity entry, acquire a resource from the specified pool. 
            if entity.data.Test == 1
            % If the entity is produced from Material1, request Test1.    
            resReq = obj.resourceSpecification('Test1', 1);
            else
            % If the entity is produced from Material2, request Test2.     
            resReq = obj.resourceSpecification('Test2', 1);
            end
            % Acquire the resource from the corresponding pool.
            events = obj.eventAcquireResource(resReq, 'TestTag');
        end
        
        function [entity,events] = resourceAcquired(obj, storage,...  
                                   entity, resources, tag)
        % After the resource acquisition, forward the entity to the output.                    
            events = obj.eventForward('output', storage, 0.0);
        end
        
    end

end

Введенный в R2019a