Valve

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

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

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

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

Демо модель: Valve

Параметры

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

Функции

double amountPassed() - Возвращает общий объем вещества, прошедший через клапан, начиная с запуска процесса моделирования.

double amountPassed(AmountUnits units) - Возвращает общий объем вещества (в указанных единицах измерения объема),  прошедший через клапан, начиная с запуска процесса.

double currentRate()- Возвращает текущую скорость потока вещества на выходе из блока.

double currentRate(FlowRateUnits units) -  Возвращает текущую скорость потока вещества (в указанных единицах измерения скорости) на выходе из блока.

double averageRate() - Возвращает среднюю скорость вещества во время прохода через клапан за все время работы. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено текущее значение скорости.

double averageRate(FlowRateUnits units) - Возвращает среднюю скорость (в указанных единицах измерения скорости) вещества во время прохода через клапан за все время работы. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено текущее значение скорости.

boolean isClosed() - Проверяет, закрыт ли в данный момент клапан. Возвращает true, если клапан закрыт, и false, если он открыт.

open() - Открывает клапан. Устанавливает максимальную скорость равной скорости, заданной в параметре Скорость, когда открыт.

close() - Закрывает клапан (устанавливает значение максимальной скорости в ноль).

toggle()- Переключает состояние клапана между "открыт" и "закрыт". Если клапан в данный момент закрыт, то вызов данной функции открывает его, и наоборот.

double dispense(double amount) - Открывает клапан, если он закрыт, позволяя заданному объему жидкости пройти через него, и затем закрывает.

double dispense(double amount, AmountUnits units)Открывает клапан, если он Изначально закрытпозволяя заданному объему жидкости (в указанных единицах измерения объемапройти через него, и затем закрывает и выполняет действие  При завершении выдачи.

double amountDispensedSoFar() - Если в данный момент происходит выдача, инициированная вызовом функции dispense(), этот метод возвращает количество вещества (в заданных единицах, если указано), которое было выдано на данный момент. В других случаях, возвращает 0.

double amountDispensedSoFar(AmountUnits units) - Если в данный момент происходит выдача, инициированная вызовом функции dispense(), этот метод возвращает количество вещества (в заданных единицах измерения объема), которое было выдано на данный момент. В других случаях, возвращает 0.

double amountPassedInPortion() - Когда установлена опция Повторяющееся действие для скорости, данная функция возвращает объем жидкости, прошедшей через клапан в текущей порции. Этот объем меньше, чем заданный в параметре Размер порции. Если действие не установлено, то данная функция возвращает 0.

double amountPassedInPortion(AmountUnits units) Когда установлена опция Повторяющееся действие для скорости, данная функция возвращает объем жидкости (в заданных единицах измерения объема), прошедшей через клапан в текущей порции. Этот объем меньше, чем заданный в параметре Размер порции. Если действие не установлено, то данная функция возвращает 0.

double utilization() - Возвращает текущее значение использования пропускной способности клапана,  то есть текущая входная скорость, деленная на максимальную скорость, когда открыт. Если клапан Изначально закрыт, текущая максимальная скорость равна 0 или не ограничена, то возвращает 0.

double utilizationTotal() - Возвращает среднее значение использования пропускной способности клапана за все время работы, то есть общий объем вещества, прошедшего через клапанделенный на максимальный объем, который мог пройти, зависит от (возможно переменной) скорости, когда открыт и временем, когда закрыт. Если модель не обнаружила никаких событий в будущем и установила время в бесконечность, будет возвращено мгновенное значение использования клапана. Если скорость, когда открыт, хоть раз была выставлена неограниченной, функция вернет ноль.

void resetStats() - Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.

Порты

in
Входной порт.
out
Выходной порт.