Этот пример показывает, как использовать методы управления ресурсами, чтобы создать пользовательский блок системы хранения сущности, в котором сущности получают ресурсы от заданных блоков Пула ресурсов.
Предположим, что вы управляете средством, которое производит части из двух различных материалов, материального 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 и двух блоков Пула ресурсов. Соедините блоки как показано в схеме.
Маркируйте блок Entity Generator как блок Part Generator и Entity Terminator как Отъезд в Тестирование.
В генераторе части:
Во вкладке 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