Менеджер тарификации 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 |
round(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 |
| Ex | EVSE с идентификатором устройства x, например, E1 |
Также можно получить доступ к виртуальным счетчикам, таким как избыток солнечной энергии, потребление сети или "Power avail. for EVSEs" (мощность, доступная для настенных блоков), установив счетчик, а затем используя соответствующий ID устройства в формуле.
Затем вы можете получить доступ к отдельным значениям единиц измерения с помощью точки. Они вызываются следующим образом:
| current_l1 | Ток фазы 1 в мА |
| current_l2 | Ток фазы 2 в мА |
| current_l3 | Ток фазы 3 в мА |
| current | Ток текущей фазы в мА (для правил зарядки Менеджер зарядки запрашивает все фазы последовательно; для счетчиков типа "Выражение" применяется соответствующая фаза, к которой относится формула. Если вы задали формулу для "Тока L1", вы можете опустить поля для Тока L2 и L3. Тогда будет использоваться формула для тока L1) |
| power_w | Текущая активная мощность в ваттах |
| offered | Настенная коробка: Предлагаемый ток в мА |
| import_wh | Потребляемая энергия в Вт |
| export_wh | Инжектированная энергия в Втч |
| dt | Время, прошедшее с момента последнего обновления (в секундах), только для счетчика "Expression", см. также CM._dt. |
| inputN | Номер входа N устройства, 1 = активный, 0 = неактивный, N - номер входа, начиная с 1. |
| soc | SOC, уровень заряда в процентах (счетчик/память) - если поддерживается устройством |
| id | Идентификатор устройства, идентификатор Modbus |
| txn_duration | Продолжительность текущей операции в секундах (EVSE) |
| charging_dur | Фактическое время зарядки текущей транзакции в секундах (Wallbox) |
| txn_energy | Заряженная энергия текущей транзакции в Втч (EVSE) |
| min_current | Минимальный зарядный ток в мА (EVSE) |
| max_current | Максимальный зарядный ток в мА (EVSE) |
| state | Статус: 1 ожидание, 2 подключен, 3 заряжается, 4 заряжается с вентиляцией, 5 ошибка, 6 отключен (EVSE) |
| cphases | Количество фаз зарядки (0-3) |
| pphases | Количество прогнозируемых фаз зарядки (0-3) |
| lb_cur_l1 | Текущий расчетный ток фазы 1 в мА (настенный ящик). Только при расчете правил зарядки настенного блока, иначе 0 |
| lb_cur_l2 | Текущий расчетный ток фазы 2 в мА (настенный блок). Только при расчете правил зарядки настенного блока, иначе 0 |
| lb_cur_l3 | Текущий расчетный ток фазы 3 в мА (настенный ящик). Только при расчете правил зарядки настенного блока, иначе 0 |
| lb_cur | Ток, рассчитанный для текущей фазы, в мА (настенный ящик). Только при расчете правил зарядки настенного ящика, иначе 0. Менеджер зарядки запрашивает все фазы по очереди. |
| surplus_pcur | Ток превышения ПВ на (прогнозируемую) фазу в мА |
| surplus_wanted | 1, если правило PV surplus уже применялось, иначе 0 |
| budget | КВт/ч или минут по текущему бюджету |
| budget_amount | Максимальное количество кВт/ч или минут в рамках текущего бюджета |
| budget_used | КВт/ч или минут, использованных в рамках текущего бюджета |
| com_err | 1, если есть ошибка COM, иначе 0 |
| com_err2 | 1, если ошибка COM присутствует более 12 секунд, иначе 0 |
| reactive_power | Спецификация реактивной мощности в ваттах (если поддерживается устройством), положительные значения: Индуктивная, отрицательные значения: Емкостная |
| switch_phases | Для настенных коробок с переключением фаз: ручное переключение фаз, 1 = 1-фазное, 3 = 3-фазное, -1 = автоматическое переключение фаз |
| departure | Время отправления ISO 15118 в виде временной метки (для настенных ящиков, поддерживающих эту функцию, иначе 0) |
| req_energy | ISO 15118 Требуемая энергия в Втч (для настенных блоков, поддерживающих эту функцию, иначе 0) |
| plugin_start | Временная метка Unix, время прокладки кабеля |
| plugin_energy | Энергия предыдущего заряда в Вт с момента подключения кабеля к сети |
| M1.current_l1 | Ток счетчика M1, фаза 1 |
| E2.import_wh | Потребляемый Вт от EVSE E2 |
| E3.power_w | Текущая мощность зарядки E3 в ваттах |
Если вы используете формулы для измерителя типа "Expression", то идентификатор устройства можно не указывать. Тогда имена полей относятся к этому счетчику, например, 'power_w' - это мощность этого счетчика в ваттах. С помощью функции 'dt' можно реализовать несколько расширенных функций, например, для счетчика типа "Выражение":
import_wh + M1.power_w * dt / 3600 обновляется энергия, полученная из источника, на основе мощности за прошедшее время обновления(power_w * (20 - dt) + M1.power_w * dt) / 20 сглаживает мощность за последние 20 секунд.date
| date.year | Текущий год |
| date.month | Месяц от 0..11 |
| date.day | День от 1..31 |
| date.weekday | Будний день SO=0, Mon=1, Tue=2, ... Сб=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.dst | 0 = зимнее время, 1 = летнее время |
| date.timestamp | Unix timespamp, secs since 1.1.1970 |
PB (nur cFos Power Brain)
| PB.input1 | S0 Input 1, 1 = активен, 0 = неактивен |
| PB.input2 | S0 Input 2, 1 = активен, 0 = неактивен |
CM Переменные менеджера зарядки
Эти переменные могут быть установлены администратором в разделе "Конфигурация". Например, если администратор установит переменную 'var_x' равной 1,5, CM.var_x вернет значение 1,5.
Предопределенные переменные:
| _num_charging | Количество настенных ящиков с зарядкой |
| _num_charging1 | Количество заряжаемых в данный момент настенных ящиков, 1, если ни один из них не заряжается |
| _max_total_current | Максимальный ток подключения дома в мА на фазу |
| _max_total_evse_current | Максимальный ток для настенных коробок в мА на фазу |
| _price | Текущая цена на электроэнергию |
| _price_level | Текущий уровень цен на электроэнергию, -2=очень дорого, -3=дорого, -4=нормально, -5=дешево, -6=очень дешево |
| _surplus | Текущий избыток солнечной энергии в ваттах |
| _org_surplus | Избыток солнечной энергии в том виде, в котором Управляющий зарядкой рассчитал бы его независимо от своих собственных формул |
| _storage_home_max_capacity | Общая емкость накопителей, Home, если указано в конфигурации счетчика, в Втч |
| _storage_home_capacity | Текущая емкость хранилища, Home, если указано в конфигурации счетчика, в Втч |
| _storage_all_max_capacity | Общий объем хранилища, Все, если указано в конфигурации счетчика, в Втч |
| _storage_all_capacity | Текущая емкость хранилища, Все, если указано в конфигурации счетчика, в Втч |
| _storage_home_soc | Текущая SoC аккумуляторного(ых) хранилища(й) с ролью "Дом". Если емкость была указана хотя бы для одной системы хранения, Менеджер зарядки использует ее для расчета, в противном случае эта переменная предоставляет текущую SoC первой найденной системы хранения с ролью "Дом". |
| _storage_all_soc | Текущая SoC аккумуляторного(ых) хранилища(й) с ролью "Home+Car". Если емкость была указана хотя бы для одной системы хранения, менеджер зарядки использует ее для расчета, в противном случае эта переменная предоставляет текущую SoC первой найденной системы хранения с ролью "Дом+машина". |
| _max_total_current_prc | Процент от доступного максимального общего зарядного тока. Эта переменная также может быть записана (через определения счетчиков и переменные диспетчера зарядки) |
| _dt | Время, прошедшее с момента последнего обновления (в секундах). |
Использование глобальных объектов:
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
Примечание:
В разделе Пользовательские счетчики вы также найдете инструкции по использованию формул с глобальными переменными и выходами Charging Manager.
GM Глобальные счетчики
| GM.grid_demand | Ссылка на сеть |
| GM.consumed | Потребление |
| GM.produced | Поколение |
| GM.consumed_evse | Потребительские электронные автомобили |
| GM.available_evse | Доступная мощность |
| GM.surplus | Положительное сальдо PV |
| GM.storage_home | Дом памяти |
| GM.storage_all | Память обо всем |
| GM.error | Производительность через ошибку |
Использование глобальных счетчиков
Jeder Zähler hat die Felder power_w, current, current_l1, current_l2, current_l3, import_wh und export_wh,
z.B. GM.prod_pwr.current_l1 oder GM.cons_pwr.power_w
. Bei 'current' wird der Strom der gerade betrachteten Phase ausgewertet. Ströme werden in mA geliefert, Leistung in W, Energie in Wh.
Вы хотите дополнительно ограничить зарядный ток по отношению к счетчику потребления квартиры. Для этого вы можете установить правило зарядки с формулой 16000 - M1.current.
M1 - это счетчик, который измеряет потребление квартиры. Управление нагрузкой cFos Charging Manager сначала пытается обеспечить EVSE максимальным током по отношению к мощности подключения дома, но затем ограничивает его до 16A минус потребление квартиры.
Используя min_price(s), max_price(s), вы можете определить самую дешевую цену поставщика энергии в евро, при этом поиск цен ведется с текущего времени до max s секунд дня или следующего дня, например min_price(25200) возвращает самую дешевую цену до 7:00 утра. Например, вы можете создать правило зарядки с условием CM._price <= min_price(25200), чтобы заряжать в наиболее благоприятное время, но с условием, что вы хотите отправляться, например, с 8:00 утра (предполагается, что время зарядки составляет 1 час). Аналогично, есть две функции min_price_secs(s) и max_price_secs(s), которые возвращают время начала самой дешевой цены в секундах за начатый день. Затем их можно сравнить, например, с date.daysecond.
Менеджер зарядки cFos теперь может считывать SoC и дальность пробега автомобиля через API TRONITY(www.tronity.io). Вы можете зарегистрировать личный аккаунт в TRONITY, а затем зарегистрировать один или несколько автомобилей. Затем вы можете добавить свой идентификатор TRONITY и секрет TRONITY в пользовательском интерфейсе "Конфигурация" в cFos Charging Manager.
Используйте кнопку "Получить данные об автомобиле", чтобы отобразить список зарегистрированных в TRONITY автомобилей. Каждое транспортное средство имеет идентификатор. Используйте этот идентификатор для выражений и/или правил зарядки в диспетчере зарядки, например V1.soc или V1.range, если ваш автомобиль имеет идентификатор 1. V1.soc - это текущий уровень заряда в процентах. V1.range - текущий запас хода в километрах. Например, можно создать условие V1.soc < 50, которое будет истинным, если SoC составляет менее 50 %.