Создает смесь из веществ, поступающих из разных источников, количеством до пяти штук, опционально задерживает (т.е. обрабатывает) полученную смесь в течение определенного времени, после чего выпускает. Пропорции веществ в смеси можно определить либо указав объем каждого вещества, либо указав общий объем и доли компонентов. Новая смесь начнет накапливаться только после того, как предыдущая полностью покинула блок. Изначально резервуар пуст. Вы можете изменить объем каждого вещества или общий объем вещества в резервуаре, вызвав функцию updateAmounts(), когда резервуар пуст.
Скорость потока на входе не ограничена, скорость потока на выходе можно опционально ограничить. Заданное положительное значение скорости потока не должно быть ниже значения RATE_TOLERANCE, т.е. меньше 1.0e-9. Если при перерасчете скорость потока опускается ниже значения RATE_TOLERANCE, она приводится к нулю.
Вместимость данного резервуара может быть неограниченной.
Вы можете явно указать партию смеси на выходе либо выбрать в качестве партии на выходе партию по умолчанию BatchTypes.DEFAULT_BATCH. Партия на выходе рассчитывается автоматически непосредственно после того, как все компоненты полностью поступили в блок Mix Tank, но перед вызовом кода, помещенного в поле действия При готовности смеси. Также вы можете заново рассчитать партию на выходе в любое удобное для вас время, вызвав функцию updateOutputBatch().
Блок MixTank позволяет вам указать действия, которые будут выполняться в момент завершения смешивания (когда все компоненты полностью поступили в блок), в момент окончания задержки, полного выхода смеси из блока.
Демо-модель: MixTank Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.- Смешивать
-
Определяет процесс смешивания:
- Заданные объемы — пользователь указывает объемы для каждого компонента (входного порта)
- Заданные доли — пользователь указывает общий объем и процентные доли для каждого компонента (входного порта). Доли нормализуются.
Синтаксис: boolean mixByAmounts
Установить новое значение во время выполнения: set_mixByAmounts(новое значение)
Допустимые значения:
true — Заданные объемы
false — Заданные доли -
[Параметр виден и применяется только в том случае, если Смешивать: Заданные доли]
Общий объем смеси. Заданное значение не может быть меньше значения Utils.TOLERANCE. Неограниченную вместимость можно задать, прописав infinity в поле данного свойства.Синтаксис: double totalAmount
Установить новое значение во время выполнения: set_totalAmount(новое значение) - Объем 1
-
[Параметр виден и применяется только в том случае, если Смешивать: Заданные объемы]
Объем компонента 1 (вещество, которое проходит через порт in1 ).Синтаксис: double amount1
Установить новое значение во время выполнения: set_amount1(новое значение) - Объем 2
-
[Параметр виден и применяется только в том случае, если Смешивать: Заданные объемы]
Объем компонента 2 (вещество, которое проходит через порт in2 ).Синтаксис: double amount2
Установить новое значение во время выполнения: set_amount2(новое значение) - Объем 3
-
[Параметр виден и применяется только в том случае, если Смешивать: Заданные объемы]
Объем компонента 3 (вещество, которое проходит через порт in3 ).Синтаксис: double amount3
Установить новое значение во время выполнения: set_amount3(новое значение) - Объем 4
-
[Параметр виден и применяется только в том случае, если Смешивать: Заданные объемы]
Объем компонента 4 (вещество, которое проходит через порт in4 ).Синтаксис: double amount4 Установить новое значение во время выполнения: set_amount4(новое значение) - Объем 5
-
[Параметр виден и применяется только в том случае, если Смешивать: Заданные объемы]
Объем компонента 5 (вещество, которое проходит через порт in5 ).Синтаксис: double amount5
Установить новое значение во время выполнения: set_amount5(новое значение) - Доля 1
-
[Параметр виден и применяется только в том случае, если Смешивать: Заданные доли]
Относительная доля компонента 1 (вещество, которое проходит через порт in1 ).Синтаксис: double fraction1
Установить новое значение во время выполнения: set_fraction1(новое значение) - Доля 2
-
[Параметр виден и применяется только в том случае, если Смешивать: Заданные доли]
Относительная доля компонента 2 (вещество, которое проходит через порт in2 ).Синтаксис: double fraction2
Установить новое значение во время выполнения: set_fraction2(новое значение) - Доля 3
-
[Параметр виден и применяется только в том случае, если Смешивать: Заданные доли]
Относительная доля компонента 3 (вещество, которое проходит через порт in3 ).Синтаксис: double fraction3
Установить новое значение во время выполнения: set_fraction3(новое значение) - Доля 4
-
[Параметр виден и применяется только в том случае, если Смешивать: Заданные доли]
Относительная доля компонента 4 (вещество, которое проходит через порт in4 ).Синтаксис: double fraction4
Установить новое значение во время выполнения: set_fraction4(новое значение) - Доля 5
-
[Параметр виден и применяется только в том случае, если Смешивать: Заданные доли]
Относительная доля компонента 5 (вещество, которое проходит через порт in5).Синтаксис: double fraction5
Установить новое значение во время выполнения: set_fraction5(новое значение) - Время задержки
-
Время, в течение которого смесь должна находиться в резервуаре после захода (после того, как все компоненты полностью попали в блок) и перед тем, как она начнет покидать его.
Синтаксис: double delayTime
Установить новое значение во время выполнения: set_delayTime(новое значение) - Скорость на выходе ограничена
-
Если пункт отмечен флажком ( true ), вы можете указать верхний предел скорости потока на выходе.
Синтаксис: boolean limitRateOut
Установить новое значение во время выполнения: set_limitRateOut(новое значение) - Макс. скорость на выходе
-
[Параметр виден и применяется только в том случае, если Скорость на выходе ограничена] Другой верхний предел скорости потока на выходе. Значение по умолчанию составляет 1 куб. метр в секунду.
Синтаксис: double maxRateOut
Установить новое значение во время выполнения: set_maxRateOut(новое значение) - Партия на выходе
-
Определяет партию на выходе из резервуара. Выберите один из вариантов:
- По умолчанию — партия на выходе равна партии по умолчанию BatchTypes.DEFAULT_BATCH
- Другая — партия на выходе определяется параметром Партия ниже
Узнать значение: modeOutputBatch
Установить новое значение во время выполнения: set_modeOutputBatch(новое значение) Допустимые значения:
ProcessTank.OUTPUT_BATCH_DEFAULT — По умолчанию
ProcessTank.OUTPUT_BATCH_CUSTOM — Другая -
[Параметр виден и применяется только в том случае, если Партия на выходе: Другая]
Определяет партию смеси (партию на выходе). Партия может зависеть от партий, поступивших в блок (они доступны здесь как локальные переменные).Тип значения: Object
Локальные переменные:
Object batch1 — партия, поступившая в порт in1
Object batch2 — партия, поступившая в порт in2
Object batch3 — партия, поступившая в порт in3
Object batch4 — партия, поступившая в порт in4
Object batch5 — партия, поступившая в порт in5 - Изменить цвет партии
-
[Параметр виден и применяется только в том случае, если Партия на выходе: Другая]
Если отмечено флажком, цвет партии определяется параметром Цвет партии, в противном случае, применяется стандартная карта цветов.Синтаксис: boolean customOutputBatchColor
Установить новое значение во время выполнения: set_customOutputBatchColor(новое значение) -
[Параметр виден и применяется только в том случае, если установлена опция Изменить цвет партии]
Определяет цвет партии на выходе.Тип значения: Color
Локальная переменная: Object batch — партия
- Резервуар
-
Здесь вы указываете элемент разметки пространства Резервуар, который используется в качестве анимации этого резервуара.
Синтаксис: StorageTank storageTank
Установить новое значение во время выполнения: set_storageTank(новое значение) - Отображать партии в блоке
-
Если отмечено флажком, иконка блока будет отображать текущий цвет партии.
Синтаксис: boolean showBatchesInFlowchart
Установить новое значение во время выполнения: set_showBatchesInFlowchart(новое значение)
- При окончании формирования
- Действие выполняется, когда все компоненты смеси полностью находятся в резервуаре.
- При готовности смеси
- Действие выполняется, когда готовая смесь находится в резервуаре необходимое время (если нужно), прежде чем покинуть резервуар.
- При опустошении
- Действие выполняется, когда смесь полностью покинула резервуар, до того, как новая смесь начнет поступать в него.
- При изменении скорости
- Действие выполняется, когда изменяется скорость любого потока. Текущие скорости доступны как локальные переменные in1rate .. in5rate (текущая скорость во входном порте in1 .. in5 ) и outrate (текущая скорость в выходном порте). Обратите внимание на то, что определенные изменения, произошедшие в результате выполнения данного действия, могут вызвать другое мгновенное изменение скорости, за которым сразу последует повторное выполнение действия При изменении скорости, что в итоге может привести к взаимной блокировке.
- Количество вещества
-
Функция Описание double amount() Возвращает объем смеси, содержащийся в данный момент в резервуаре (сумма всех компонентов). Если объем меньше значения Utils.TOLERANCE, функция возвращает 0. double amount(AmountUnits units) Возвращает объем смеси (в заданных единицах измерения объема), который находится в резервуаре в данный момент (сумма всех компонентов). Если объем меньше значения Utils.TOLERANCE, функция возвращает 0. double amountOf(int input) Возвращает объем определенного компонента, который в данный момент находится в резервуаре. Компонент определяется номером входа (1..5). double amountOf(int input, AmountUnits units) Возвращает объем определенного компонента (в заданных единицах измерения объема), который в данный момент находится в резервуаре. Компонент определяется номером входа (1..5). double amountPassedIn(int input) Возвращает общий объем жидкости, прошедший через заданный порт (1..5) c начала выполнения модели. double amountPassedIn(int input, AmountUnits units) Возвращает объем жидкости (в заданных единицах измерения объема), прошедший через заданный порт (1..5) с начала выполнения модели. double amountPassedOut() Возвращает общий объем жидкости, прошедший через выходной порт резервуара с начала выполнения модели. double amountPassedOut(AmountUnits units) Возвращает объем жидкости (в заданных единицах измерения объема), который прошел через выходной порт резервуара с начала выполнения модели. boolean updateAmounts() Если для смешивания указываются объемы каждого компонента, данная функция обновляет значения объемов. Если для смешивания указывается общий объем и процентные доли для каждого компонента, функция обновляет значение общего объема смеси, т.е. вынуждает резервуар перезапустить смешивание с новыми значениями параметров Объем 1..Объем 5 или новым значением параметра Вместимость (общий объем). Функцию можно вызвать в любое время, но во время вызова резервуар должен быть пустым. - Состояние и вместимость
-
Функция Описание double capacity() Возвращает максимальный объем смеси, который может содержаться в резервуаре. Если объем меньше значения Utils.TOLERANCE, функция возвращает 0. boolean isEmpty() Проверяет, не пуст ли резервуар. boolean isEmptying() Проверяет, закончена ли обработка смеси, открыт ли выход, закрыты ли входы и не пуст ли еще резервуар. boolean isFilling() Проверяет, наполняется ли резервуар, т.е. хотя бы один из входов открыт, выход закрыт и объем ниже требуемой Вместимости. boolean isProcessing() Проверяет, обрабатывается ли сейчас смесь, т.е. все входы и выходы закрыты и выполняется задержка для обработки. - Оставшееся время
-
Функция Описание double remainingTime() Возвращает оставшееся время задержки (в секундах), если смесь в данный момент задерживается (в процессе "обработки"). В остальных случаях возвращает 0. double remainingTime(TimeUnits units) Возвращает оставшееся время задержки (в указанных единицах измерения времени), если смесь в данный момент задерживается (в процессе "обработки"). В остальных случаях возвращает 0. Например, remainingTime(MINUTE) возвращает оставшееся время задержки в минутах. - Скорость потока
-
Функция Описание double currentRateIn(int input) Возвращает текущую скорость потока через заданный входной порт (1..5). double currentRateIn(FlowRateUnits units, int input) Возвращает текущую скорость потока (в заданных единицах измерения интенсивности) у заданного входного порта (1..5). double currentRateOut() Возвращает текущую скорость потока на выходе. double currentRateOut(FlowRateUnits units) Возвращает текущую скорость потока ( в заданных единицах измерения интенсивности) вещества на выходе. - Партии
-
Функция Описание int numberOfBatches() Возвращает 1, если резервуар опустошается в данный момент. В противном случае возвращает 5 — количество символических входящих партий в резервуаре, включая возможные партии с нулевой длиной. Object getBatch(int index) Возвращает объект, описывающий исходящую смесь, если резервуар опустошается в данный момент. При этом может использоваться только индекс 0. Если резервуар не опустошается, возвращает один из 5 входящих компонентов (включая возможные компоненты с нулевой длиной). Индекс 0 соответствует входу 5, а индекс 4 соответствует входу 1. Color getBatchColor(int index) Возвращает цвет исходящей смеси, если резервуар опустошается в данный момент. При этом может использоваться только индекс 0. Если резервуар наполняется или в нем идет обработка, функция возвращает цвет входящего компонента с заданным индексом. Индекс 0 соответствует входу 5, а индекс 4 соответствует входу 1. Если цвет исходящей партии отличается от цвета входящей партии, текущий цвет подвергается линейной интерполяции в ходе обработки так, чтобы соответствовать степени выполнения обработки. double getBatchSize(int index) Возвращает общее количество готовой смеси, находящейся в резервуаре, если резервуар опустошается в данный момент. При этом можно использовать только индекс 0. Если резервуар не опустошается, возвращает количество конкретного компонента с заданным индексом, поступившего в резервуар. Индекс 0 соответствует входу 5, а индекс 4 соответствует входу 1. double getBatchSize(int index, AmountUnits units) Возвращает общее количество готовой смеси, находящейся в резервуаре в указанных единицах измерения объема, если резервуар опустошается в данный момент. При этом можно использовать только индекс 0. Если резервуар не опустошается, возвращает количество конкретного компонента с заданным индексом, поступившего в резервуар. Индекс 0 соответствует входу 5, а индекс 4 соответствует входу 1. double updateOutputBatch() Выполняет принудительный пересчет выходной партии и ее цвета в соответствии с текущими заданными параметрами. - Сброс статистики
-
Функция Описание void resetStats() Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.
- in1, in2, ... , in5
- Порты входа.
- out
- Порт выхода.
-
Как мы можем улучшить эту статью?
-