Mix Tank

Создает смесь из веществ, поступающих из разных источников, количеством до пяти штук, опционально задерживает (т.е. обрабатывает) полученную смесь в течение определенного времени, после чего выпускает. Пропорции веществ в смеси можно определить либо указав объем каждого вещества, либо указав общий объем и доли компонентов. Новая смесь начнет накапливаться только после того, как предыдущая полностью покинула блок. Изначально резервуар пуст. Вы можете изменить объем каждого вещества или общий объем вещества в резервуаре, вызвав функцию updateAmounts(), когда резервуар пуст.
Скорость потока на входе не ограничена, скорость потока на выходе можно опционально ограничить. Заданное положительное значение скорости потока не должно быть ниже значения RATE_TOLERANCE, т.е. меньше 1.0e-9. Если при перерасчете скорость потока опускается ниже значения RATE_TOLERANCE, она приводится к нулю.
Вместимость данного резервуара может быть неограниченной.
Вы можете явно указать новую партию смеси, либо выбрать в качестве партии смеси партию по умолчанию BatchTypes.DEFAULT_BATCH.
Блок MixTank позволяет вам указать действия, которые будут выполняться в момент завершения смешивания (когда все компоненты полностью поступили в блок), в момент окончания задержки, полного выхода смеси из блока.
Свойства
- Смешивать
- Определяет процесс смешивания:
- Заданные объемы - пользователь указывает объемы для каждого компонента (входного порта)
- Заданные доли - пользователь указывает общий объем и процентные доли для каждого компонента (входного порта). Доли нормализуются.
Синтаксис: 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 capacity() - Возвращает максимальный объем смеси, который может содержаться в резервуаре. Если объем меньше значения Utils.TOLERANCE, функция возвращает 0.
boolean isEmpty() - Проверяет, не пуст ли резервуар.
boolean isEmptying() - Проверяет, закончена ли обработка смеси, открыт ли выход, закрыты ли входы и не пуст ли еще резервуар.
boolean isFilling() - Проверяет, наполняется ли резервуар, т.е. хотя бы один из входов открыт, выход закрыт и объем ниже требуемой Вместимости.
boolean isProcessing() - Проверяет, обрабатывается ли сейчас смесь, т.е. все входы и выходы закрыты и выполняется задержка для обработки.
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 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() - Выполняет принудительный пересчет выходной партии и ее цвета в соответствии с текущими заданными параметрами.
double amountOf(int input) - Возвращает объем определенного компонента, который в данный момент находится в резервуаре. Компонент определяется номером входа (1..5).
double amountOf(int input, AmountUnits units) - Возвращает объем определенного компонента (в заданных единицах измерения объема), который в данный момент находится в резервуаре. Компонент определяется номером входа (1..5).
double remainingTime() - Возвращает оставшееся время задержки (в секундах), если смесь в данный момент задерживается (в процессе "обработки"). В остальных случаях возвращает 0.
double remainingTime(TimeUnits units) - Возвращает оставшееся время задержки (в указанных единицах измерения времени), если смесь в данный момент задерживается (в процессе "обработки"). В остальных случаях возвращает 0. Например, remainingTime(MINUTE) возвращает оставшееся время задержки в минутах.
void resetStats() - Сбрасывает собранную блоком статистику, включая статистику, собранную на его портах.
Порты
- in1, in2, ... , in5
- Порты входа.
- out
- Порт выхода.