exponenta event banner

eventAcquireResource

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

Создать событие получения ресурсов

Синтаксис

event = eventAcquireResource(resourceSpec,tag)

Описание

event = eventAcquireResource(resourceSpec,tag) создает событие для получения ресурсов из существующих блоков пула ресурсов. Можно указать имена и объем ресурсов для получения. Дополнительные сведения см. в разделе resourceSpecification.

Если все запрошенные ресурсы недоступны во время выполнения события, событие получения остается активным. Когда запрашиваемые ресурсы становятся доступными, событие переносится для немедленного выполнения.

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

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

Укажите имя и объем ресурсов, которые будут приобретены сущностями.

Пользовательский тег этого события получения ресурсов сущности. Тег можно использовать для идентификации события, когда несколько событий действуют на одну сущность. Дополнительные сведения об управлении несколькими событиями см. в разделе Блок хранилища настраиваемых сущностей с несколькими событиями таймера.

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

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

Событие, получающее ресурсы для сущности.

Примеры

Получение ресурсов после ввода

При вводе объекта в элемент хранения объект получает один ресурс типа Test1. Тег этого события получения ресурсов: TestTag.

function [entity,events] = entry(obj, storage, entity, source)
% On entity entry, acquire a resource from the specified pool.    
resourceSpec = obj.resourceSpecification('Test1', 1);
event = obj.eventAcquireResource(resourceSpec, 'TestTag');
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