exponenta event banner

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

Спецификация ресурса в пользовательском блоке получения ресурсов

В этом примере показано, как использовать методы управления ресурсами для создания настраиваемого блока хранения сущностей, в котором сущности получают ресурсы из указанных блоков пула ресурсов.

Предположим, что вы управляете объектом, который производит детали из двух различных материалов, материалов 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