eventAcquireResource

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

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

Синтаксис

event = eventAcquireResource(resourceSpec,tag)

Описание

event = eventAcquireResource(resourceSpec,tag) создает событие для получения ресурсов из существующих блоков Resource Pool. Можно задать имена и количество ресурсов для приобретения. Для получения дополнительной информации смотрите 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

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

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