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

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

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

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

    Маркируйте блок Entity Generator как блок Part Generator и Entity Terminator как Отъезд в Тестирование.

  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 получены сущностями.

Смотрите также

| | | | | | |

Похожие темы