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