Диспетчер нарахувань 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 |
sqrt(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_va | Поточна потужність у Вт/ВА (в залежності від типу лічильника тут може бути вказана повна або активна потужність) |
power_w | Поточна активна потужність у ватах |
opower_va | Уоллбокс: Поточна потужність, що пропонується у ВА, відноситься до всіх 3 фаз. |
import_wh | Спожита енергія, Вт∙год |
export_wh | Введена енергія у Вт-год |
dt | Час, що минув з моменту останнього оновлення (в секундах) |
inputN | Вхідний номер N блоку, 1 = активний, 0 = неактивний |
soc | SOC, рівень заряду у відсотках (лічильник/накопичувач) |
id | Ідентифікатор пристрою, Modbus ID |
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_err | 1, якщо є помилка COM, інакше 0 |
com_err2 | 1, якщо помилка COM присутня довше ніж 12 секунд, інакше 0 |
M1.current_l1 | Струм лічильника М1, фаза 1 |
E2.import_wh | Спожито Вт∙год від EVSE E2 |
E3.power_va | Поточна потужність заряду від E3 |
Якщо ви використовуєте формули для лічильника типу "Вираз", ви також можете опустити ідентифікатор пристрою. Тоді назви полів будуть відноситися до цього лічильника, наприклад, 'power_va' - це потужність цього лічильника у Ваттах/ВА. Ви можете використовувати 'dt' для реалізації деяких розширених функцій, наприклад, у лічильнику типу "Expression":
import_wh + M1.power_va * dt / 3600
оновлює отриману енергію на основі потужності за минулий час оновлення(power_va * (20 - dt) + M1.power_va * dt) / 20
згладжує потужність за останні 20 секунд.date
date.year | Поточний рік |
date.month | Місяць від 0..11 |
date.day | День з 1..31 |
date.weekday | День тижня Пн=0, Вт=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.dst | 0 = зимовий час, 1 = літній час |
PB (cFos Power brain only)
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: надлишок сонячної енергії, який менеджер зарядки розрахував би самостійно за власними формулами
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 - М1.струм
.
M1 - це лічильник, який вимірює споживання квартири. Управління навантаженням cFos Charging Manager спочатку намагається забезпечити EVSE максимальним струмом по відношенню до потужності підключення будинку, але потім обмежує його до 16А за вирахуванням споживання квартири.