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

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

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

    Пометьте блок Entity Generator как блок Part 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 получены сущностями.

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

| | | | | | |

Похожие темы