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