В этом примере показано, как использовать методы управления ресурсами, чтобы создать пользовательский блок системы хранения сущности, в котором сущности получают ресурсы от заданных блоков 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.
Создайте модель SimEvents с помощью блока MATLAB Discrete-Event System, блока Entity Generator и блока Entity Terminator и двух блоков Resource Pool. Соедините блоки как показано в схеме.
Пометьте блок Entity Generator как блок Part 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