В этом примере показано, как использовать методы управления ресурсами для создания пользовательского блока хранения сущностей, в котором сущности получают ресурсы от указанных блоков Resource Pool.
Предположим, что вы управляете оборудованием, которое производит детали из двух различных материалов, материалов 1 и материальное 2, для выполнения порядков. После производства детали ее оценивают на предмет обеспечения качества.
Два метода проверки для контроля качества:
Тест 1 используется для деталей, полученных из материала 1.
Тест 2 используется для деталей, полученных из материала 2
После производственной фазы позиции маркируются на основе материала для применения правильного теста.
Чтобы сгенерировать пользовательское поведение, вы создаете object™ Системы с дискретным событием с помощью matlab.DiscreteEventSystem методы классов для управления ресурсами.
Сгенерируйте пользовательский блок хранения сущности с одним входом, одним выходом и одним элементом хранения.

Блок принимает сущность типа Part в свое хранилище емкостью 1. Сущность имеет атрибут Test для указания материала, из которого производится деталь. На основе значения атрибута сущность получает ресурс из заданного блока Resource Pool и покидает блок, который будет протестирован.
Смотрите код, чтобы сгенерировать пользовательский блок для получения ресурсов
Определите Test1 и Test2 введите ресурсы, которые будут приобретены типом сущности Part.
function resNames = getResourceNamesImpl(obj) % Define the names of the resources to be acquired. resNames = obj.resourceType('Part', {'Test1', 'Test2'}) ; end
Сущность входит в хранилище. Если его 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 вызывает пересылку сущности.
Сохраните .m файл как CustomBlockAcquireResources. Связать системный объект с SimEvents® моделировать при помощи блока MATLAB Discrete-Event System. Дополнительные сведения о связывании см. в разделе Создание пользовательских блоков с использованием системного блока MATLAB Discrete-Event.
Создайте модель SimEvents с помощью блока MATLAB Discrete-Event System, блока Entity Generator и блока Entity Terminator и двух блоков Resource Pool. Соедините блоки как показано на схеме.
Пометьте Entity Generator блок как Генератор Детали и Entity Terminator блок как Departure for Testing.

В генераторе деталей:
На вкладке Entity generation установите Generate entity at simulation start значение off.
На вкладке Entity type установите Entity type name равным Part и Attribute Name к Test.
На вкладке Event Actions, в Generate action field введите:
entity.Test= randi([1 2]);
Части генерируются со временем межгенерация 1 и их Test значение атрибута 1 или 2 для указания вида материала.
В блоке Resource Pool:
Установите Resource name равным Test1 и параметр Reusable upon release для off.
На вкладке Statistics выведите статистику Amount available, avail и соедините ее с возможностями.
В блоке Resource Pool1:
Установите Resource name равным Test2 и параметр Reusable upon release для off.
На вкладке Statistics выведите статистику Amount available, avail и соедините ее с возможностями.
Щелкните правой кнопкой мыши путь сущности от «Генератора элементов» до блока MATLAB Discrete-Event System и выберите Log Selected Signals.
Симулируйте модель.
Наблюдайте за Test значения атрибутов входящих сущностей в пользовательский блок. Три сущности требуют тестирования 1, а семь сущностей - теста 2.

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

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

cancelAcquireResource | entry | eventAcquireResource | getResourceNamesImpl | matlab.DiscreteEventSystem | matlab.System | resourceAcquired | resourceSpecification