Класс: matlab.DiscreteEventSystem
Пакет: mATLAB
Создайте технические требования для захвата ресурса или события релиза ресурса
resRequest = resourceSpecification(resource,amount)
задает имена и сумму ресурсов для resRequest
= resourceSpecification(resource
,amount
)eventAcquireResource
или eventReleaseResource
запросы.
Например, этот код задает один модуль Resource1
и два модуля Resource2
.
resRequest = obj.resourceSpecification('Resource1', 1); resRequest = [resReq obj.resourceSpecification('Resource2', 2)];
Если вы задаете сумму для eventReleaseResource
больше, чем сумма, которая была получена ранее, все ранее полученные средства высвобождены.
Например, предположите, что сущность ранее получила три ресурса типа Resource1
и четыре ресурса типа Resource2
. Этот код задает суммы для eventReleaseResource
.
resRequest = obj.resourceSpecification('Resource1', 2); resRequest = [resReq obj.resourceSpecification('Resource2', 5)]; event = eventReleaseResource(resReq, ‘relinquish’);
После релиза сущность имеет один ресурс типа Resource1
и нулевые ресурсы типа Resource2
.
Можно задать релиз всех ранее полученных ресурсов при помощи eventReleaseAllResources
.
Когда сущность вводит запоминающий элемент, она получает ресурсы. Сущность получает один ресурс типа Resource1
и один ресурс типа Resource2
, которые заданы как технические требования. Технические требования затем используются для eventAcquireResource
с тегом MyResourceAcquireEvent
.
function [entity,events] = entry(obj, storage, entity, source) % On entry, acquire one resource of type Resource1 and one resource of type Resource2. resRequest(1) = obj.resourceSpecification('Resource1', 1); resRequest(2) = obj.resourceSpecification('Resource2', 1); events = obj.eventAcquireResource(resRequest, 'MyResourceAcquireEvent'); end
В этом примере показано, как использовать методы управления ресурсами, чтобы создать пользовательский блок системы хранения сущности, в котором сущности получают ресурсы от заданных блоков Resource Pool.
Предположим, что вы управляете средством, которое производит части из двух различных материалов, материального 1
и материальный 2
, выполнить порядки. После того, как часть производится, она оценена для гарантии качества.
Два метода тестирования для контроля качества:
Протестируйте 1, используется для частей, которые производятся из материального 1
.
Протестируйте 2, используется для частей, которые производятся из материального 2
После производственной стадии части помечены на основе их материала, чтобы применить правильный тест.
Для получения дополнительной информации смотрите, Создают Пользовательский Блок Получателя Ресурса.
classdef CustomBlockAcquireResources < matlab.DiscreteEventSystem % Custom resource acquire block example. methods(Access = protected) function num = getNumInputsImpl(obj) num = 1; end function num = getNumOutputsImpl(obj) num = 1; end function entityTypes = getEntityTypesImpl(obj) entityTypes(1) = obj.entityType('Part'); end function [input, output] = getEntityPortsImpl(obj) input = {'Part'}; output = {'Part'}; end function [storageSpec, I, O] = getEntityStorageImpl(obj) storageSpec(1) = obj.queueFIFO('Part', 1); I = 1; O = 1; end function resNames = getResourceNamesImpl(obj) % Define the names of the resources to be acquired. resNames = obj.resourceType('Part', {'Test1', 'Test2'}) ; end end 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, request Test1. resReq = obj.resourceSpecification('Test1', 1); else % If the entity is produced from Material2, request 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 end
matlab.DiscreteEventSystem
| eventForward
| cancelAcquireResource
| getResourceNamesImpl
| resourceAcquired
| eventReleaseResource
| eventAcquireResource