resourceSpecification

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

Создайте технические требования для захвата ресурса или события релиза ресурса

Синтаксис

resRequest = resourceSpecification(resource,amount)

Описание

resRequest = resourceSpecification(resource,amount) задает имена и сумму ресурсов для eventAcquireResource или eventReleaseResource запросы.

Например, этот код задает один модуль Resource1 и два модуля Resource2.

resRequest = obj.resourceSpecification('Resource1', 1);
resRequest = [resReq obj.resourceSpecification('Resource2', 2)];

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

Например, предположите, что сущность ранее получила три ресурса типа Resource1 и четыре ресурса типа Resource2. Этот код задает суммы для eventReleaseResource.

resRequest = obj.resourceSpecification('Resource1', 2);
resRequest = [resReq obj.resourceSpecification('Resource2', 5)];
     event = eventReleaseResource(resReq, ‘relinquish’);

После релиза сущность имеет один ресурс типа Resource1 и нулевые ресурсы типа Resource2.

Можно задать релиз всех ранее полученных ресурсов при помощи eventReleaseAllResources.

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

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

Задайте имя ресурсов для eventAcquireResource или eventReleaseResource запросы. Можно задать больше чем один ресурс.

Задайте сумму ресурсов для eventAcquireResource или eventReleaseResource запросы.

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

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

Запрос ресурса о захвате или событии релиза, заданном как вектор из структур MATLAB.

Примеры

Простой пример спецификации ресурса

Когда сущность вводит запоминающий элемент, она получает ресурсы. Сущность получает один ресурс типа Resource1 и один ресурс типа Resource2, которые заданы как технические требования. Технические требования затем используются для eventAcquireResource с тегом MyResourceAcquireEvent.

  function [entity,events] = entry(obj, storage, entity, source)
            % On entry, acquire one resource of type Resource1 and one resource of type Resource2.
            resRequest(1) = obj.resourceSpecification('Resource1', 1);
            resRequest(2) = obj.resourceSpecification('Resource2', 1);
            events = obj.eventAcquireResource(resRequest, 'MyResourceAcquireEvent');       
  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