Используйте действия события очереди для моделирования бака хранения

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

  1. v - значение gallon атрибут для каждой сущности, который входит или выходит из блока.

  2. direction принимает значение 1 или -1 чтобы указать, входит ли сущность в блок или выходит из него.

  3. myLimit - емкость емкости для жидкости в галлонах.

  • Блок MATLAB Function имеет два выхода.

  1. y принимает значение 1 открыть ворота, когда достаточно хранилища, и 0 в противном случае.

  2. 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 галлонов.

См. также

|

Похожие темы