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™ после успешного приобретения ресурса. Получение ресурсов успешно только в том случае, если получены все указанные ресурсы.

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

расширить все

Дискретно-событийный Системный объект.

Индекс элемента хранения.

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

  • sys (MATLAB structure) в составе:

    • id (double) - Идентификатор сущности

    • priority (double) - Приоритет сущности

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

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

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

Первый вход данных.

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

расширить все

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

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

  • type (character vector) - Тип события

  • delay (double) - Задержка перед событием

  • priority (double) - Приоритет мероприятия

  • storage (double) - Индекс элемента хранения данных

  • tag (character vector) - Тег события

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

Первый вывод данных.

Примеры

Событие действия по приобретению ресурса

Предположим, что сущность успешно получает ресурсы с запланированной 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

После производственной фазы позиции маркируются на основе материала для применения правильного теста.

Дополнительные сведения см. в разделе Создание пользовательского блока Resource Acquirer.

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