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

Блок принимает объект типа Part к своему хранилищу с емкостью 1. Объект имеет атрибут Test для указания материала, из которого производится деталь. На основе значения атрибута сущность получает ресурс из указанного блока пула ресурсов и удаляет проверяемый блок.
См. Код для создания пользовательского блока для получения ресурсов
Определить 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 ресурс из блока пула ресурсов с ресурсами типа Test1. Аналогично, если его entity.data.Test значение равно 2объект получает один ресурс из блока пула ресурсов с ресурсами типа 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. Свяжите объект System с моделью SimEvents ® с помощью блока MATLAB Discrete-Event System. Дополнительные сведения о связывании см. в разделе Создание пользовательских блоков с помощью системного блока дискретных событий MATLAB.
Создайте модель SimEvents, используя блок системы дискретных событий MATLAB, блок генератора объектов и блок терминатора объектов и два блока пула ресурсов. Подключите блоки, как показано на схеме.
Маркировать блок генератора объектов как генератор деталей и блок терминатора объектов как отправление для тестирования.

В генераторе деталей:
На вкладке Создание объекта (Entity generation) задайте для параметра Генерировать объект в начале моделирования (Generate entity at simulation start) значение off.
На вкладке Тип объекта задайте имя типа объекта как Part и имя атрибута для Test.
На закладке Действия с событиями в поле Создать действие введите:
entity.Test= randi([1 2]);
Детали создаются со временем между поколениями. 1 и их Test значение атрибута - 1 или 2 для указания вида материала.
В блоке Пул ресурсов:
Задайте для имени ресурса значение Test1 и параметр Reusable после освобождения для off.
На вкладке Статистика выведите доступную сумму, воспользуйтесь статистикой и подключите ее к области.
В блоке Pool1 ресурсов:
Задайте для имени ресурса значение Test2 и параметр Reusable после освобождения для off.
На вкладке Статистика выведите доступную сумму, воспользуйтесь статистикой и подключите ее к области.
Щелкните правой кнопкой мыши путь к объекту от генератора деталей до блока системы дискретных событий MATLAB и выберите «Регистрировать выбранные сигналы».
Моделирование модели.
Наблюдать за Test значения атрибутов входящих объектов в пользовательский блок. Для трех объектов требуется тест 1, а для семи объектов требуется тест 2.

Обратите внимание, что три ресурса типа Test1 приобретаются организациями.

Обратите внимание, что семь ресурсов типа Test2 приобретаются организациями.

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