Диспетчер нарахувань cFos дозволяє проводити динамічну оцінку формул. Цей функціонал доступний для лічильника типу "Вираз" і для правил нарахування типу "Формула".
Таким чином, ви можете налаштувати лічильники, які обчислюють значення з інших лічильників або EVSE, підтримують їх у готовності та відображають їх. Правила зарядки можуть також використовувати формули для динамічного розрахунку струму зарядки, а також мати доступ до лічильників та EVSE (включаючи лічильники типу "Expression").
З формулами можливі наступні операції:
+ - * / % | Додавання, віднімання, множення, ділення, модуль |
& | | побітові І та АБО |
^ | Розрахунок потужності, наприклад, 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 |
Крім того, можливі наступні логічні вирази:==
(дорівнює), !=
(нерівно), <
(менше), <=
(менше-рівно), >
(більше), >=
(більше-рівно), !
(не), ||
(логічне "або"), &&
(логічне "і"), ?
(умовний оператор, наприклад, x ? y : z
, повертає y, якщо істина x, інакше z
)
Це дозволяє, наприклад, вимикати струм в залежності від умов: M1.current >= 6500 ? M1.current : 0
повертає струм M1, якщо він більше 6,5А і 0 в іншому випадку, що призупиняє зарядку. Для таких умов також є можливість опитування входів (див. нижче)
Можливі наступні назви:
Mx | Лічильник з ідентифікатором одиниці x, наприклад, M1 |
Ex | EVSE з ідентифікатором пристрою x, наприклад, E1 |
Також можна отримати доступ до віртуальних лічильників, таких як надлишок сонячної енергії, споживання з мережі або "Power avail. for EVSEs" (потужність, доступна для зарядних пристроїв), налаштувавши лічильник, а потім використавши відповідний ідентифікатор пристрою у формулі.
Потім за допомогою точки можна отримати доступ до окремих значень одиниць виміру. Вони називаються наступним чином:
current_l1 | Струм фази 1 в мА |
current_l2 | Струм фази 2 в мА |
current_l3 | Струм фази 3 в мА |
current | Струм поточної фази в мА (для правил тарифікації Менеджер тарифікації запитує всі фази по черзі; для лічильників типу "Вираз" застосовується відповідна фаза, до якої відноситься формула. Якщо ви вказали формулу для "Струм L1", то поля "Струм L2" та "L3" можна не заповнювати. Тоді використовується формула для струму L1) |
power_w | Поточна активна потужність у ватах |
offered | Wallbox: Пропонований струм у мА |
import_wh | Спожита енергія, Вт∙год |
export_wh | Введена енергія у Вт-год |
dt | Час, що минув з моменту останнього оновлення (у секундах), тільки для лічильника "Вираз", див. також CM._dt. |
inputN | Номер входу N пристрою, 1 = активний, 0 = неактивний, N - номер входу, починаючи з 1. |
soc | SOC, рівень заряду у відсотках (лічильник/пам'ять) - якщо підтримується пристроєм |
id | Ідентифікатор пристрою, Modbus ID |
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 в мА (wallbox). Тільки під час розрахунку правил заряджання wallbox, інакше 0 |
lb_cur_l2 | Розрахунковий струм фази 2 в мА (wallbox). Тільки під час розрахунку правил заряджання wallbox, інакше 0 |
lb_cur_l3 | Поточний розрахунковий струм фази 3 в мА (wallbox). Тільки під час розрахунку правил заряджання wallbox, інакше 0 |
lb_cur | Струм, розрахований для поточної фази в мА (зарядний пристрій). Тільки під час розрахунку правил заряджання wallbox, інакше 0. Менеджер заряджання запитує всі фази по черзі. |
surplus_pcur | Надлишковий струм фотоелектричних модулів на (прогнозовану) фазу в мА |
surplus_wanted | 1, якщо правило надлишку PV вже застосовано, інакше 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 | Струм лічильника М1, фаза 1 |
E2.import_wh | Спожито Вт∙год від EVSE E2 |
E3.power_w | Поточна потужність заряду E3 у ватах |
Якщо ви використовуєте формули для лічильника типу "Вираз", ви також можете опустити ідентифікатор пристрою. Тоді назви полів будуть посилатися на цей лічильник, наприклад, '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, Пн=1, Вт=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_charging1: Кількість настінних боксів, що заряджаються в даний момент, 1, якщо жоден не заряджається
_max_total_current: Максимальний струм підключення будинку в мА на фазу
_max_total_evse_current: Максимальний струм для настінних коробок у мА на фазу
_price: Поточна ціна на електроенергію
_price_level: Поточний рівень цін на електроенергію, -2=дуже дорогий, -3=дорогий, -4=нормальний, -5=дешевий, -6=дуже дешевий
_surplus: Поточний надлишок сонячної енергії у ватах
_org_surplus: надлишок сонячної енергії, який менеджер зарядки розрахував би самостійно за власними формулами
_storage_home_max_capacity: Загальна ємність сховища, будинку, якщо вказано в конфігурації лічильника, у Вт-год
_потужність_сховища_будинку: Поточна потужність сховища, будинку, якщо вказано в конфігурації лічильника, у Вт-год
_storage_all_max_capacity: Загальна ємність сховища, All, якщо вказано в конфігурації лічильника, у Вт
_storage_all_capacity: Поточна ємність сховища, All, якщо вказано у конфігурації лічильника, у Вт-год
_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
Примітка:
У розділі Користувацькі лічильники ви також знайдете інструкції щодо використання формул з глобальними змінними та результатами Диспетчера зарядки.
GM Глобальні лічильники
GM.grid_demand | Основне посилання |
GM.consumed | Споживання |
GM.produced | Покоління |
GM.consumed_evse | Споживання електромобілів |
GM.available_evse | Доступна потужність |
GM.surplus | Надлишок фотоелектричної енергії |
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 - М1.струм
.
M1 - це лічильник, який вимірює споживання квартири. Управління навантаженням cFos Charging Manager спочатку намагається забезпечити EVSE максимальним струмом по відношенню до потужності підключення будинку, але потім обмежує його до 16А за вирахуванням споживання квартири.
Використовуючи 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.