exponenta event banner

resourceAcquired

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

Действие события при успешном получении ресурсов

Синтаксис

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

Описание

[entity,event,out1,...] = resourceAcquired(obj,storage,entity,resources,tag,in1,...) определяет действие события для дискретного события System 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

Приобретатель настраиваемых ресурсов

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

Предположим, что вы управляете объектом, который производит детали из двух различных материалов, материалов 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