В этом примере показано, как использовать действия события блока Entity Queue, блок Simulink Function и блок Entity Gate для моделирования системы хранения бутылок с ограниченной емкостью.
Этот пример использует блоки Сущности Generator, Сущность Queue, Сущности Server и Сущности Terminator, чтобы смоделировать линию сборки для системы хранения бутылок с ограниченной емкостью по весу. Блок Entity Generator представляет поступление бутылок. Каждая бутылка имеет gallons
атрибут, значение которого варьируется от 0
и 10
, для указания количества жидкости, которую она несет. Блок Entity Queue представляет хранилище с ограниченной емкостью. Блок Entity Server представляет обработку бутылок до того, как они покинут объект.
Система управления хранением жидкости развертывается с помощью блока Simulink Function и блока Entity Gate, чтобы позволить бутылкам входить в систему хранения, пока общее хранимое количество галлона меньше 50
галлонов. Это количество соответствует максимально допустимому весу памяти. Принято, что вес бутылки незначителен. Блок Entity Gate имеет два состояния: открытое и закрытое. Блок Simulink Function контролирует количество жидкости в хранилище и управляет состоянием блока Entity Gate.
Цель построения системы управления хранением жидкости состоит в том, чтобы позволить бутылкам заходить в хранилище очереди, пока общее количество галлона для хранения не превышает 50
галлонов.
Чтобы создать систему управления хранением жидкости:
Блок Simulink Function используется с сигнатурой функции check_capacity(value,direction)
для управления блоком Entity Gate. Когда блок отправляет сообщение со значением 1
откроется окно Enable Gate, в котором будут разрешены контейнеры в хранилище. В противном случае, когда блок отправляет сообщение со значением 0
, ворота остаются закрытыми.
В блоке Entity Queue, в полях действие входа и Exit action, check_capacity(entity.gallons,1)
и check_capacity(entity.gallons,-1)
отправьте значение галлона контейнера в блок Simulink Function. Второй вход check_capacity(~,~)
функция принимает значение 1
когда сущность входит в очередь и -1
когда сущность выходит из очереди.
В блоке Simulink Function блок MATLAB Function создает логику, чтобы управлять ключами. Блок принимает три входов.
v
- значение gallon
атрибут для каждой сущности, который входит или выходит из блока.
direction
принимает значение 1
или -1
чтобы указать, входит ли сущность в блок или выходит из него.
myLimit
- емкость емкости для жидкости в галлонах.
Блок MATLAB Function имеет два выхода.
y
принимает значение 1
открыть ворота, когда достаточно хранилища, и 0
в противном случае.
t
- количество галлонов жидкости в хранилище.
Блок MATLAB Function содержит следующую логику, чтобы открыть и закрыть ворота.
function [y,t] = fcn(v,d,myLimit) % Initialize the persistent variable total that represents the total % number of gallons of liquid in the storage. persistent total % Initialize the variable total. if isempty(total) total = 0; end % Add or subtract the gallons carried by the entering or exiting % entity. d is 1 if the entitiy enters the storage and -1 otherwise. total = total + d*v; % Update total number of gallons in the storage. t = total; % Compare the total value with myLimit. Containers can have maximum 10 % gallons of liquid. if total > (myLimit-10) % Keep the gate closed. y = 0; else % Open the gate to allow containers. y = 1; end end
Симулируйте модель. Наблюдайте количество контейнеров в жидком хранилище.
Также наблюдайте количество жидкости в хранилище на протяжении всей симуляции, которое не превышает 50
галлонов.