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

Спецификация ресурса в блоке Custom Resource Acquirer

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