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

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

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

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