exponenta event banner

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

В этом примере показано, как использовать действия события блока очереди объектов, блок функции Simulink и блок литника объекта для моделирования системы хранения бутылок с ограниченной емкостью.

В этом примере используются блоки Entity Generator, Entity Queue, Entity Server и Entity Terminator для моделирования сборочной линии для системы хранения бутылок с ограниченной емкостью. Блок генератора объектов представляет поступление бутылок. Каждая бутылка имеет gallons атрибут, значение которого находится в диапазоне от 0 и 10, чтобы указать количество жидкости, которую он несет. Блок Entity Queue представляет хранилище с ограниченной емкостью. Блок Entity Server представляет обработку бутылок до того, как они покинут объект.

Система управления хранением жидкости развертывается с использованием функционального блока Simulink и блока Entity Gate, чтобы позволить бутылкам входить в систему хранения, если общее количество хранящихся галлонов меньше, чем 50 галлонов. Это количество соответствует максимально допустимому весу, поддерживаемому хранилищем. Предполагается, что вес бутылки ничтожно мал. Блок «Литник объекта» имеет два состояния: открытое и закрытое. Блок Simulink Function контролирует количество жидкости в хранилище и управляет состоянием блока Entity Gate.

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

Цель создания системы управления хранением жидкости состоит в том, чтобы позволить бутылкам входить в очередь хранения до тех пор, пока общее количество галлонов хранения не превысит 50 галлонов.

Для создания системы управления хранением жидкости:

  • Блок функции Simulink используется с сигнатурой функции check_capacity(value,direction) для управления блоком «Литник объекта». Когда блок отправляет сообщение со значением 1, откроется окно Включить литник (Enable Gate), чтобы разрешить контейнеры в хранилище. В противном случае, когда блок отправляет сообщение со значением 0ворота остаются закрытыми.

  • В блоке Entity Queue, в полях Entry action и Exit action, check_capacity(entity.gallons,1) и check_capacity(entity.gallons,-1) отправить значение галлона контейнера в блок функции Simulink. Второй вход check_capacity(~,~) функция принимает значение 1 когда объект входит в очередь и -1 когда объект выходит из очереди.

  • В блоке Simulink Function блок MATLAB Function создает логику для управления затвором. Блок принимает три входа.

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

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

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

  • Функциональный блок MATLAB имеет два выхода.

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

  2. t - количество галлонов жидкости в хранилище.

  • Функциональный блок MATLAB содержит следующую логику для открытия и закрытия затвора.

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

См. также

|

Связанные темы