Создайте пользовательский блок Resource Acquirer

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

Предположим, что вы управляете оборудованием, которое производит детали из двух различных материалов, материалов 1 и материальное 2, для выполнения порядков. После производства детали ее оценивают на предмет обеспечения качества.

Два метода проверки для контроля качества:

  • Тест 1 используется для деталей, полученных из материала 1.

  • Тест 2 используется для деталей, полученных из материала 2

После производственной фазы позиции маркируются на основе материала для применения правильного теста.

Чтобы сгенерировать пользовательское поведение, вы создаете object™ Системы с дискретным событием с помощью matlab.DiscreteEventSystem методы классов для управления ресурсами.

Создайте системный объект дискретных событий

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

Блок принимает сущность типа Part в свое хранилище емкостью 1. Сущность имеет атрибут Test для указания материала, из которого производится деталь. На основе значения атрибута сущность получает ресурс из заданного блока Resource Pool и покидает блок, который будет протестирован.

 Смотрите код, чтобы сгенерировать пользовательский блок для получения ресурсов

Поведение пользовательских блоков

  1. Определите Test1 и Test2 введите ресурсы, которые будут приобретены типом сущности Part.

    function resNames = getResourceNamesImpl(obj)
        % Define the names of the resources to be acquired.
        resNames = obj.resourceType('Part', {'Test1', 'Test2'}) ;
    end
  2. Сущность входит в хранилище. Если его entity.data.Test значение 1, сущность произведена из Material1. Сущность приобретает 1 ресурс из блока Resource Pool с ресурсами типа Test1. Точно так же, Если его entity.data.Test значение 2сущность получает один ресурс от блока Resource Pool с ресурсами типа Test2.

    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, it acquires resource of type Test1.    
            resReq = obj.resourceSpecification('Test1', 1);
            else
            % If the entity is produced from Material2, it acquires resource of type 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

    После того, как ресурс успешно приобретен, resourceAcquired вызывает пересылку сущности.

Реализуйте Пользовательский Блок

  1. Сохраните .m файл как CustomBlockAcquireResources. Связать системный объект с SimEvents® моделировать при помощи блока MATLAB Discrete-Event System. Дополнительные сведения о связывании см. в разделе Создание пользовательских блоков с использованием системного блока MATLAB Discrete-Event.

  2. Создайте модель SimEvents с помощью блока MATLAB Discrete-Event System, блока Entity Generator и блока Entity Terminator и двух блоков Resource Pool. Соедините блоки как показано на схеме.

    Пометьте Entity Generator блок как Генератор Детали и Entity Terminator блок как Departure for Testing.

  3. В генераторе деталей:

    1. На вкладке Entity generation установите Generate entity at simulation start значение off.

    2. На вкладке Entity type установите Entity type name равным Part и Attribute Name к Test.

    3. На вкладке Event Actions, в Generate action field введите:

      entity.Test= randi([1 2]);

      Части генерируются со временем межгенерация 1 и их Test значение атрибута 1 или 2 для указания вида материала.

  4. В блоке Resource Pool:

    1. Установите Resource name равным Test1 и параметр Reusable upon release для off.

    2. На вкладке Statistics выведите статистику Amount available, avail и соедините ее с возможностями.

  5. В блоке Resource Pool1:

    1. Установите Resource name равным Test2 и параметр Reusable upon release для off.

    2. На вкладке Statistics выведите статистику Amount available, avail и соедините ее с возможностями.

  6. Щелкните правой кнопкой мыши путь сущности от «Генератора элементов» до блока MATLAB Discrete-Event System и выберите Log Selected Signals.

  7. Симулируйте модель.

    • Наблюдайте за Test значения атрибутов входящих сущностей в пользовательский блок. Три сущности требуют тестирования 1, а семь сущностей - теста 2.

    • Заметьте, что три ресурса типа Test1 приобретаются сущностями.

    • Заметьте, что семь ресурсов типа Test2 приобретаются сущностями.

См. также

| | | | | | |

Похожие темы