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

Process Tank

Накапливает вещество до уровня Вместимости, опционально задерживает (к примеру, обрабатывает) его определенное время, после чего выпускает. Параметр Вместимость является динамическим и рассчитывается в начале каждого цикла, т.е., первый раз в начале моделирования и после этого каждый раз, когда вещество полностью покидает блок. Вы можете обновить значение параметра Вместимость в любое время с помощью функции updateCapacity(). Вместимость этого резервуара может быть неограниченной. Скорость потока на входе не ограничена, скорость потока на выходе может быть опционально ограничена. Заданное положительное значение скорости потока не должно быть ниже значения RATE_TOLERANCE, т.е. меньше 1.0e-9. Если при перерасчете скорость потока опускается ниже значения RATE_TOLERANCE, она приводится к нулю.

Партия на выходе может быть выбрана равной той же, что вошла в блок, быть партией по умолчанию или другой партией.

Блок ProcessTank позволяет задать действия, которые будут выполняться в следующих случаях:

  • при наполнении резервуара
  • при окончании задержки (вещество готово покинуть блок)
  • при опустошении резервуара
Демо-модель: ProcessTank Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Свойства

Вместимость
Общий объем вещества, который должен накопиться в резервуаре до того, как начнется обработка (задержка). Неограниченную вместимость можно задать, прописав infinity в поле данного свойства.
Тип значения: double
Время задержки
Время, которое вещество должно находиться в резервуаре после того, как будет достигнут уровень Вместимости и прежде, чем оно сможет покинуть блок.
Синтаксис: double delayTime
Установить новое значение во время выполнения: set_delayTime(новое значение)
Скорость на выходе ограничена
Если пункт отмечен флажком ( true ), вы можете выбрать другой верхний предел скорости потока на выходе из резервуара.
Синтаксис: boolean limitRateOut
Установить новое значение во время выполнения: set_limitRateOut(новое значение)
Макс. скорость на выходе
[Параметр виден и применяется только в том случае, если установлена опция Скорость на выходе ограничена]
Определяет другой верхний предел скорости потока на выходе из резервуара. Значение по умолчанию составляет 1 куб. метр в секунду.
Синтаксис: double maxRateOut
Установить новое значение во время выполнения: set_maxRateOut(новое значение)
Партия на выходе
Определяет партию на выходе из резервуара. Выберите один из вариантов:
  • Та же, что и вошла в блок — партия на выходе является той же, что попала в резервуар
  • По умолчанию — партия на выходе равна партии по умолчанию BatchTypes.DEFAULT_BATCH
  • Другая — партия на выходе определяется параметром Партия ниже
Получить значение: modeOutputBatch
Установить новое значение во время выполнения: set_modeOutputBatch(новое значение)
Допустимые значения:
ProcessTank.OUTPUT_BATCH_IN1 — Та же, что и вошла в блок
ProcessTank.OUTPUT_BATCH_DEFAULT — По умолчанию
ProcessTank.OUTPUT_BATCH_CUSTOM — Другая
Партия
[Параметр виден и применяется только в том случае, если установлена опция Партия на выходе: Другая]
Определяет партию на выходе. Партия на выходе может зависеть от поступившей в блок партии (для этого используйте переменную originalbatch).
Тип значения: Object
Локальная переменная: Object originalbatch — поступившая в блок партия
Изменить цвет партии
[Параметр виден и применяется только в том случае, если установлена опция Партия на выходе: Другая]
Если отмечено флажком, цвет партии определяется параметром Цвет партии, в противном случае, применяется стандартная карта цветов.
Синтаксис: boolean customOutputBatchColor
Установить новое значение во время выполнения: set_customOutputBatchColor(новое значение)
Цвет партии
[Параметр виден и применяется только в том случае, если установлена опция Изменить цвет партии]
Определяет цвет партии на выходе.
Тип значения: Color
Локальная переменная: Object batch — партия

Анимация

Резервуар
Здесь вы указываете элемент разметки пространства Резервуар, который используется в качестве анимации этого резервуара.
Синтаксис: StorageTank storageTank
Установить новое значение во время выполнения: set_storageTank(новое значение)
Отображать партии в блоке
Если отмечено флажком, иконка блока будет отображать текущий цвет партии.
Синтаксис: boolean showBatchesInFlowchart
Установить новое значение во время выполнения: set_showBatchesInFlowchart(новое значение)

Действия

При наполнении
Действие выполняется, когда вещество достигло уровня Вместимости и впускной клапан перекрывается.
При готовности
Действие выполняется, когда вещество находится в резервуаре необходимое время (если нужно), до того, как оно покинет резервуар.
При опустошении
Действие выполняется, когда вещество полностью покинуло резервуар, до начала нового цикла.
При изменении скорости
Действие выполняется, когда изменяется скорость любого (входящего или исходящего) потока. Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
Локальные переменные:
double inrate — текущая скорость во входном порте
double outrate — текущая скорость в выходном порте

Функции

Количество вещества
Функция Описание
double amount() Возвращает объем смеси, содержащийся в данный момент в резервуаре. Если объем меньше значения Utils.TOLERANCE, функция возвращает 0.
double amount(AmountUnits units) Возвращает объем смеси (в заданных единицах измерения объема), который находится в резервуаре в данный момент. Если объем меньше значения Utils.TOLERANCE, функция возвращает 0.
double amountPassedIn() Возвращает общий объем вещества, прошедший через входной порт резервуара, начиная с запуска процесса моделирования.
double amountPassedOut() Возвращает общий объем вещества, прошедший через выходной порт резервуара, начиная с запуска процесса моделирования.
double amountPassedIn(AmountUnits units) Возвращает общий объем вещества (в заданных единицах измерения объема), который прошел через входной порт резервуара с начала моделирования.
double amountPassedOut(AmountUnits units) Возвращает объем вещества (в заданных единицах измерения объема), который прошел через выходной порт резервуара с начала моделирования.
Состояние и вместимость
Функция Описание
boolean isEmpty() Проверяет, не пуст ли резервуар. Возвращает true, если резервуар пуст, и false в противном случае.
boolean isEmptying() Проверяет, закончена ли обработка вещества, открыт ли выход, закрыт ли вход и не пуст ли еще резервуар.
boolean isFilling() Проверяет, наполняется ли резервуар, т.е. вход открыт, выход закрыт и объем ниже требуемой Вместимости.
boolean isProcessing() Проверяет, обрабатывается ли сейчас вещество, т.е. вход и выход закрыты и выполняется задержка для обработки.
void forceProcessing() Если вызвать функцию у частично заполненного (не пустого) резервуара в процессе его наполнения, то впускной клапан будет перекрыт и сразу запустится процесс обработки вещества (вне зависимости от объема вещества в резервуаре). Не влияет на вместимость или время обработки. Выполняет действие При наполнении, как если бы резервуар был наполнен. Если вызвать функцию во время обработки вещества или опустошения резервуара, ничего не произойдет.
boolean updateCapacity() Принудительно обновляет данные о вместимости резервуара, т.е. заново рассчитывает значение динамического параметра Вместимость. Как правило, значение вместимости пересчитывается, когда вещество полностью покинуло резервуар. С помощью этой функции вы можете обновить данные о вместимости резервуара в любое время. При этом новое значение вместимости не должно быть ниже значения количества жидкости, содержащейся в резервуаре в данный момент.
Скорость потока
Функция Описание
double currentRateIn() Возвращает текущую скорость потока вещества на входе в блок.
double currentRateIn(FlowRateUnits units) Возвращает текущую скорость потока (в заданных единицах измерения интенсивности) вещества на входе.
double currentRateOut() Возвращает текущую скорость потока вещества на выходе из блока.
double currentRateOut(FlowRateUnits units) Возвращает текущую скорость потока (в заданных единицах измерения интенсивности) вещества на выходе из блока.
Партии
Функция Описание
int numberOfBatches() Возвращает количество партий, который в данный момент находятся в резервуаре, включая возможные партии с нулевым размером.
Object getBatch(int index) Возвращает партию с указанным индексом (index). Партия с индексом 0 — это партия, находящаяся ближе всего к выходу резервуара, а партия с индексом numberOfBatches()-1 — это партия, находящаяся ближе всего ко входу в резервуар.
double getBatchSize(int index) Возвращает размер партии с указанным индексом (index). Партия с индексом 0 — это партия, находящаяся ближе всего к выходу резервуара, а партия с индексом numberOfBatches()-1 — это партия, находящаяся ближе всего ко входу в резервуар.
double getBatchSize(int index, AmountUnits units) Возвращает размер партии с указанным индексом (index) в указанных единицах измерения объема. Партия с индексом 0 — это партия, находящаяся ближе всего к выходу резервуара, а партия с индексом numberOfBatches()-1 — это партия, находящаяся ближе всего ко входу в резервуар.
Color getBatchColor(int index) Возвращает цвет партии с указанным индексом. Если цвет исходящей партии отличается от цвета входящей партии, то текущий цвет подвергается линейной интерполяции в ходе обработки так, чтобы соответствовать степени выполнения обработки. Чтобы получить исходный цвет партии, вызовите функцию <имя элемента ProcessTank>.tank.getBatchColor().
double getBatchOffset(int index) Возвращает сумму размеров всех партий, расположенных ближе к выходу, чем партия с указанным индексом index (то есть, под данной партией). Функция предназначена для использования в случае создания нестандартной анимации для блока.
double updateOutputBatch() Выполняет принудительный пересчет выходной партии и ее цвета в соответствии с текущими заданными параметрами.
Сброс статистики
Функция Описание
void resetStats() Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.

Порты

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