AnyLogic
Развернуть
Размер шрифта

Valve

Моделирует клапан на трубе, по которой транспортируется жидкость. Ограничивает скорость потока или полностью блокирует поток.

Клапан задает максимальную скорость потока, которая применяется, когда он открыт. Когда же клапан закрывается, то скорость потока становится равной нулю. Заданное положительное значение скорости потока не должно быть ниже значения RATE_TOLERANCE, т.е. меньше 1.0e-9. Если при перерасчете скорость потока опускается ниже значения RATE_TOLERANCE, она приводится к нулю.

Вы можете открывать и закрывать клапан во время выполнения модели вызовом функций open(), close() и toggle(). Вы также можете вызвать функцию dispense(), чтобы клапан пропустил только определенное количество жидкости, а потом закрылся. Кроме того, вы можете определить произвольно повторяющееся действие, которое будет выполняться каждый раз, когда партия вещества прошла через клапан.

Блок Valve является блоком с нулевой вместимостью, он не содержит вещество внутри.

Как и любой другой блок, блок Valve позволяет вам реагировать на новые партии, появляющиеся на входе.

Демо-модель: Valve Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Параметры

Максимальная скорость, когда открыт
Если данная опция выбрана, то максимальная скорость потока, проходящего через открытый клапан не будет ограничена. Ограничение максимальной скорости в этом случае должно быть задано другими блоками дальше по потоку либо до этого блока.
Синтаксис: boolean maxOpenRate
Скорость, когда открыт
[Параметр виден и применяется только в том случае, когда установлена опция Максимальная скорость, когда открыт ]
Максимальная скорость потока, когда клапан открыт.
Синтаксис: double openRate
Установить новое значение во время выполнения: set_openRate(новое значение)
Изначально закрыт
Определяет начальное состояние клапана, и позже данный параметр может быть использован для того, чтобы изменить состояние клапана.
Синтаксис: boolean closed

Анимация

Отобрать партии в блоке
Если данная опция установлена, то значок блока будет отображать цвет текущей партии.
Синтаксис: boolean showBatchesInFlowchart

Действия

Повторяющееся действие для порции
Если данная опция выбрана, вы можете задавать повторяющееся действие, которое будет выполняться каждый раз, когда определенный объем жидкости проходит через клапан.
Синтаксис: boolean actionOnPortion
Размер порции
[Параметр виден и применяется только в том случае, когда установлена опция Повторяющееся действие для порции ]
Объем жидкости для действия Повторяющееся действие для порции. Данное значение не может быть меньше значения Utils.TOLERANCE.
Синтаксис: double portionSize
При выдаче порции
[Параметр виден и применяется только в том случае, когда установлена опция Повторяющееся действие для порции]
Данное действие выполняется каждый раз, когда объем жидкости, заданный в параметре Размер порции, проходит через клапан. Не стоит путать это действие с действием При завершении выдачи. Подсчет порций не заканчивается после вызова функций dispense().
Локальная переменная: double amount — размер порции
При завершении выдачи
Действие выполняется, когда выдача указанного объема (инициированная функцией dispense()) закончена. Не стоит путать это действие с При выдаче порции.
Локальная переменная: double amount — выдаваемый объем
При новой партии
Действие выполняется, когда новая партия прибывает на вход клапана. Новая партия не обязательно начнет поступать в блок. В этом действии вы можете, например, закрыть или открыть выход клапана.
Локальная переменная: Object batch — партия
При изменении скорости
Действие выполняется, когда изменяется скорость потока. Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
Локальная переменная: double rate — текущая скорость

Функции

Управление клапаном
Функция Описание
boolean isClosed() Проверяет, закрыт ли в данный момент клапан. Возвращает true, если клапан закрыт, и false, если он открыт.
void open() Открывает клапан. Устанавливает максимальную скорость равной скорости, заданной в параметре.
void close() Закрывает клапан (устанавливает значение максимальной скорости в ноль).
void toggle() Переключает состояние клапана между «открыт» и «закрыт». Если клапан в данный момент закрыт, то вызов данной функции открывает его, и наоборот.
Выдача вещества
Функция Описание
double dispense(double amount) Открывает клапан, если он закрыт, позволяя заданному объему жидкости пройти через него, и затем закрывает и выполняет действие При завершении выдачи. Заданное значение amount не может быть меньше значения Utils.TOLERANCE. Если выбрана опция Повторяющееся действие для порции, то в момент, когда заданный объем жидкости проходит через клапан и перед тем, как клапан снова закрывается, выполняется действие При выдаче порции. Если время выполнения этих двух действий совпадает, то порядок их вызова не детерминирован.
double dispense(double amount, AmountUnits units) Открывает клапан, если он закрыт, позволяя заданному объему жидкости (в указанных единицах измерения объема) пройти через него, и затем закрывает и выполняет действие При завершении выдачи. Заданное значение amount не может быть меньше значения Utils.TOLERANCE. Если выбрана опция Повторяющееся действие для порции, то в момент, когда заданный объем жидкости проходит через клапан и перед тем, как клапан снова закрывается, выполняется действие При выдаче порции. Если время выполнения этих двух действий совпадает, то порядок их вызова не детерминирован.
double amountBeingDispensed() Если в данный момент происходит выдача, возвращает количество выдаваемого вещества в метрах кубических или килограммах (в зависимости от настроек диаграммы процесса). В других случаях возвращает 0.
double amountBeingDispensed(AmountUnits units) Если в данный момент происходит выдача, возвращает количество выдаваемого вещества в указанных единицах измерения объема. В других случаях возвращает 0.
double amountDispensedSoFar() Если в данный момент происходит выдача, инициированная вызовом функции dispense(), этот метод возвращает количество вещества (в заданных единицах, если указано), которое было выдано на данный момент. В других случаях возвращает 0.
double amountDispensedSoFar(AmountUnits units) Если в данный момент происходит выдача, инициированная вызовом функции dispense(), этот метод возвращает количество вещества (в заданных единицах измерения объема), которое было выдано на данный момент. В других случаях возвращает 0.
Количество вещества
Функция Описание
double amountPassed() Возвращает общий объем вещества, прошедший через клапан, начиная с запуска процесса моделирования.
double amountPassed(AmountUnits units) Возвращает общий объем вещества (в указанных единицах измерения объема), прошедший через клапан, начиная с запуска процесса.
double amountPassedInPortion() Когда установлена опция Повторяющееся действие для скорости, данная функция возвращает объем жидкости, прошедшей через клапан в текущей порции. Этот объем меньше, чем заданный в параметре Размер порции. Если действие не установлено, то данная функция возвращает 0.
double amountPassedInPortion(AmountUnits units) Когда установлена опция Повторяющееся действие для скорости, данная функция возвращает объем жидкости (в заданных единицах измерения объема), прошедшей через клапан в текущей порции. Этот объем меньше, чем заданный в параметре Размер порции. Если действие не установлено, то данная функция возвращает 0.
Использование клапана
Функция Описание
double utilization() Возвращает текущее значение использования пропускной способности клапана, то есть текущая входная скорость, деленная на максимальную скорость, когда открыт. Если клапан Изначально закрыт, текущая максимальная скорость равна 0 или не ограничена, то возвращает 0.
double utilizationTotal() Возвращает среднее значение использования пропускной способности клапана за все время работы, то есть общий объем вещества, прошедшего через клапан, деленный на максимальный объем, который мог пройти, зависит от (возможно переменной) скорости, когда открыт и временем, когда закрыт. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено мгновенное значение использования клапана. Если скорость, когда открыт, хоть раз была выставлена неограниченной, функция вернет ноль.
Скорость потока
Функция Описание
double currentRate() Возвращает текущую скорость потока вещества на выходе из блока.
double currentRate(FlowRateUnits units) Возвращает текущую скорость потока вещества (в указанных единицах измерения скорости) на выходе из блока.
double averageRate() Возвращает среднюю скорость вещества во время прохода через клапан за все время работы. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено текущее значение скорости.
double averageRate(FlowRateUnits units) Возвращает среднюю скорость (в указанных единицах измерения скорости) вещества во время прохода через клапан за все время работы. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено текущее значение скорости.
Сброс статистики
Функция Описание
void resetStats() Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.

Порты

in
Входной порт.
out
Выходной порт.
Как мы можем улучшить эту статью?