менеджер зарядки cFos - формулы

Менеджер тарификации cFos позволяет динамически оценивать формулы. Эта функциональность доступна для счетчика типа "Выражение" и для правил тарификации типа "Формула".

Поэтому можно настроить счетчики, которые вычисляют значения от других счетчиков или EVSE, держат их наготове и отображают. Правила зарядки могут также использовать формулы для динамического расчета тока зарядки, а также обращаться к счетчикам и EVSE (включая счетчики типа "Выражение").

С формулами возможны следующие операции:

+ - * / %Сложение, вычитание, умножение, деление, модуль
& |побитовое И и ИЛИ
^Расчет мощности, например, 10^2 = 100
min(x,y)Минимум x и y, возможно более 2 аргументов
max(x,y)Максимум x и y, возможно более 2 аргументов
abs(x)Абсолютное значение x, например, abs(-2) = 2
clamp(x,min,max)Значение x = min (если x < min), x = max (если x > max), иначе сохранить x
sqrt(x)Округлите x до целого числа. Пример: округление до 1 десятичного знака: round(10*x)/10.
sqrt(x)Квадратный корень из x
exists(x)true, если переменная x существует, иначе false

Кроме того, возможны следующие логические выражения:

== (равно), != (неравно), < (меньше), <= (меньше-равно), > (больше), >= (больше-равно), ! (не), || (логическое Or), && (логическое And), ? (условный оператор, например, x ? y : z, возвращает y, если x истинно, иначе z)

Это позволяет, например, отключать ток в зависимости от условий: M1.current >= 6500 ? M1.current : 0 возвращает ток M1, если он больше 6.5A, и 0 в противном случае, что приостанавливает зарядку. Для таких условий можно также запросить входы (см. ниже)

Возможны следующие названия:

MxСчетчик с идентификатором устройства x, например, M1
ExEVSE с идентификатором устройства x, например, E1

Также можно получить доступ к виртуальным счетчикам, таким как избыток солнечной энергии, потребление сети или "Power avail. for EVSEs" (мощность, доступная для настенных блоков), установив счетчик, а затем используя соответствующий ID устройства в формуле.

Затем вы можете получить доступ к отдельным значениям единиц измерения с помощью точки. Они вызываются следующим образом:

current_l1Ток фазы 1 в мА
current_l2Ток фазы 2 в мА
current_l3Ток фазы 3 в мА
currentТок текущей фазы в мА (для правил зарядки Менеджер зарядки запрашивает все фазы последовательно; для счетчиков типа "Выражение" применяется соответствующая фаза, к которой относится формула. Если вы задали формулу для "Тока L1", вы можете опустить поля для Тока L2 и L3. Тогда будет использоваться формула для тока L1)
power_vaТекущая мощность в Ватт/ВА (в зависимости от типа счетчика здесь может быть указана кажущаяся или активная мощность)
power_wТекущая активная мощность в ваттах
opower_vaНастенная коробка: Текущая предлагаемая мощность в ВА, относящаяся ко всем 3 фазам.
import_whПотребляемая энергия в Вт
export_whИнжектированная энергия в Втч
dtВремя, прошедшее с момента последнего обновления (в секундах)
inputNНомер входа N устройства, 1 = активен, 0 = неактивен
socSOC, уровень заряда в процентах (счетчик/накопитель)
idИдентификатор устройства, идентификатор Modbus
txn_durationПродолжительность текущей операции в секундах (EVSE)
txn_energyЗаряженная энергия текущей транзакции в Втч (EVSE)
min_currentМинимальный зарядный ток в мА (EVSE)
max_currentМаксимальный зарядный ток в мА (EVSE)
stateСтатус: 1 ожидание, 2 подключен, 3 заряжается, 4 заряжается с вентиляцией, 5 ошибка, 6 отключен (EVSE)
cphasesКоличество фаз зарядки (0-3)
pphasesКоличество прогнозируемых фаз зарядки (0-3)
budgetКВтч по текущему бюджету
budget_amountПри текущем бюджете максимальное количество кВт/ч
budget_usedКВт/ч, использованных в рамках текущего бюджета
com_err1, если есть ошибка COM, иначе 0
com_err21, если ошибка COM присутствует более 12 секунд, иначе 0

Пример
M1.current_l1Ток счетчика M1, фаза 1
E2.import_whПотребляемый Вт от EVSE E2
E3.power_vaТекущая мощность зарядки от E3

Если вы используете формулы для измерителя типа "Expression", вы также можете опустить ID устройства. Тогда названия полей относятся к этому счетчику, например, 'power_va' - это мощность этого счетчика в Ватт/ВА. Вы можете использовать 'dt' для реализации нескольких расширенных функций, например, в счетчике типа "Выражение":

  • Формула для 'import_wh': import_wh + M1.power_va * dt / 3600 обновляет полученную энергию на основе мощности за прошедшее время обновления
  • Формула для 'power_va': (power_va * (20 - dt) + M1.power_va * dt) / 20 сглаживает мощность за последние 20 секунд.

Глобальные переменные

date

date.yearТекущий год
date.monthМесяц от 0..11
date.dayДень от 1..31
date.weekdayБудний день Mo=0, Tue=1, ... Солнце=6
date.yeardayДень в году от 0...366
date.hourЧас от 0..23
date.minuteМинута от 0...60
date.secondСекунда от 0...60
date.daysecondВторое число текущего дня от 0...86399
date.dayminuteМинута текущего дня от 0..1439
date.dst0 = зимнее время, 1 = летнее время

PB (cFos Power brain only)

PB.input1S0 Input 1, 1 = активен, 0 = неактивен
PB.input2S0 Input 2, 1 = активен, 0 = неактивен

CM Переменные менеджера зарядки

Эти переменные могут быть установлены администратором в разделе "Конфигурация". Например, если администратор установит переменную 'var_x' равной 1,5, CM.var_x вернет значение 1,5.

Предопределенные переменные:
_num_зарядка: Количество настенных ящиков, которые в настоящее время заряжаются
_num_charging1: количество заряжающихся в данный момент настенных ящиков, 1, если ни один из них не заряжается
_max_total_current: Максимальный ток подключения дома в мА на фазу
_max_total_evse_current: Максимальный ток для стенных коробок в мА (на фазу)
_price: Текущая цена на электроэнергию
_price_level: Текущий уровень цен на электроэнергию, -2=очень дорогая, -3=дорогая, -4=нормальная, -5=дешевая, -6=очень дешевая _surplus: Текущий избыток солнечной энергии в ваттах _org_surplus: Солнечный излишек, который был бы рассчитан Управляющим по тарифам независимо от его собственных формул

Benutzung der globalen Objekte:
charge 8A starting at 8:00am: date.dayminute >= 480 ? 8000 : 0
charge 16A on Saturday and Sunday: date.weekday == 5 || date.weekday == 6 ? 16000 : 0
charge 6A if input 2 active: PB.input2 ? 6000 : 0 charge 6A if CM variable non-zero: cm.var1 ? 6000 : 0

Пример применения

Вы хотите дополнительно ограничить зарядный ток по отношению к счетчику потребления квартиры. Для этого вы можете установить правило зарядки с формулой 16000 - M1.current.
M1 - это счетчик, который измеряет потребление квартиры. Управление нагрузкой cFos Charging Manager сначала пытается обеспечить EVSE максимальным током по отношению к мощности подключения дома, но затем ограничивает его до 16A минус потребление квартиры.