Menedżer ładowania cFos umożliwia dynamiczną ocenę formuł. Funkcjonalność ta jest dostępna dla licznika typu "Wyrażenie" oraz dla reguł naliczania opłat typu "Formuła".
Można zatem skonfigurować liczniki, które obliczają wartości z innych liczników lub EVSE i utrzymują je w gotowości oraz wyświetlają je. Reguły ładowania mogą również wykorzystywać formuły do dynamicznego obliczania prądu ładowania, a także uzyskiwać dostęp do liczników i EVSE (w tym liczników typu "Expression").
Z formułami możliwe są następujące operacje:
+ - * / % | Dodawanie, odejmowanie, mnożenie, dzielenie, modulus |
& | | bitowe AND i OR |
^ | Obliczanie potęgi, np. 10^2 = 100 |
min(x,y) | Minimum x i y, możliwe więcej niż 2 argumenty |
max(x,y) | Maksymalnie x i y, możliwe więcej niż 2 argumenty |
abs(x) | Wartość bezwzględna x, np. abs(-2) = 2 |
clamp(x,min,max) | Wartość x = min (jeśli x < min), x = max (jeśli x > max), w przeciwnym razie zachować x |
sqrt(x) | Zaokrąglenie x do liczby całkowitej. Przykład: Zaokrąglenie do 1 miejsca po przecinku: round(10*x)/10. |
sqrt(x) | Pierwiastek kwadratowy z x |
exists(x) | true jeśli zmienna x istnieje, w przeciwnym razie false |
Ponadto możliwe są następujące wyrażenia logiczne:==
(równe), !=
(nierówne), <
(mniej), <=
(mniej-równe), >
(większe), >=
(większe-równe), !
(nie), ||
(logiczne Or), &&
(logiczne And), ?
(operator warunkowy, np. x ? y : z
, zwraca y jeśli x
jest prawdziwe, w przeciwnym razie z
)
Pozwala to np. na wyłączenie prądu w zależności od warunków: M1.current >= 6500 ? M1.current : 0
zwraca prąd M1 jeśli jest większy niż 6,5A i 0 w przeciwnym wypadku, co wstrzymuje ładowanie. Dla takich warunków możliwe jest również odpytywanie wejść (patrz poniżej)
Możliwe są następujące nazwy:
Mx | Licznik z identyfikatorem jednostki x, np. M1 |
Ex | EVSE z identyfikatorem urządzenia x, np. E1 |
Możliwy jest również dostęp do wirtualnych liczników, takich jak nadwyżka solarna, pobór z sieci lub "Power avail. for EVSEs" (moc dostępna dla wallboxów), poprzez ustawienie licznika, a następnie użycie odpowiedniego ID urządzenia w formule.
Następnie można uzyskać dostęp do poszczególnych wartości jednostek za pomocą punktu. Są one nazywane w następujący sposób:
current_l1 | Prąd fazy 1 w mA |
current_l2 | Prąd fazy 2 w mA |
current_l3 | Prąd fazy 3 w mA |
current | Prąd fazy bieżącej w mA (w przypadku reguł ładowania Charging Manager odpytuje wszystkie fazy po kolei; w przypadku liczników typu "Expression" obowiązuje odpowiednia faza, do której odnosi się formuła. Jeżeli określiliście formułę dla "Prądu L1", możecie pominąć pola dla Prądu L2 i L3. Wtedy używana jest formuła dla prądu L1) |
power_va | Aktualna moc w Watt/VA (w zależności od typu miernika może być tu podana moc pozorna lub moc czynna) |
power_w | Aktualna moc czynna w watach |
opower_va | Wallbox: Aktualna moc oferowana w VA odniesiona do wszystkich 3 faz. |
import_wh | Energia pobrana w Wh |
export_wh | Wtłoczona energia w Wh |
dt | Czas, który upłynął od ostatniej aktualizacji (w sekundach) |
inputN | Numer wejścia N urządzenia, 1 = aktywny, 0 = nieaktywny |
soc | SOC, poziom naładowania w procentach (licznik/magazyn) |
id | Device Id, Modbus ID |
txn_duration | Czas trwania bieżącej transakcji w sekundach (EVSE) |
txn_energy | Energia naładowania bieżącej transakcji w Wh (EVSE) |
min_current | Minimalny prąd ładowania w mA (EVSE) |
max_current | Maksymalny prąd ładowania w mA (EVSE) |
state | Status: 1 oczekuje, 2 podłączony, 3 ładowanie, 4 ładowanie z wentylacją, 5 błąd, 6 offline (EVSE) |
cphases | Liczba faz ładowania (0-3) |
pphases | Liczba przewidywanych faz ładowania (0-3) |
budget | KWh w ramach bieżącego budżetu |
budget_amount | W obecnym budżecie maksymalna ilość kWh |
budget_used | KWh wykorzystane w ramach bieżącego budżetu |
com_err | 1, jeśli jest błąd COM, w przeciwnym razie 0 |
com_err2 | 1, jeżeli błąd COM jest obecny dłużej niż 12 sekund, w przeciwnym razie 0 |
M1.current_l1 | Prąd licznika M1, faza 1 |
E2.import_wh | Pobrana Wh przez EVSE E2 |
E3.power_va | Aktualna moc ładowania z E3 |
Jeżeli wykorzystasz formuły dla miernika typu "Expression", możesz również pominąć ID urządzenia. Wtedy nazwy pól odnoszą się do tego miernika, np. 'power_va' jest wtedy mocą tego miernika w Watt/VA. Przy pomocy 'dt' można zrealizować kilka rozszerzonych funkcji, np. w mierniku typu "Expression":
+ M1.power_va * dt / 3600
aktualizuje energię pozyskiwaną na podstawie mocy w poprzednim czasie aktualizacji(power_va * (20 - dt) + M1.power_va * dt) / 20
wygładza moc w ciągu ostatnich 20 sekund.date
date.year | Rok bieżący |
date.month | Miesiąc od 0..11 |
date.day | Dzień od 1..31 |
date.weekday | Dzień powszedni Mo=0, Tue=1, ... Sun=6 |
date.yearday | Dzień w roku od 0..366 |
date.hour | Godzina od 0..23 |
date.minute | Minuta od 0..60 |
date.second | Drugi od 0..60 |
date.daysecond | Drugi dzień tego dnia od 0..86399 |
date.dayminute | Minuta tego dnia od 0..1439 |
date.dst | 0 = czas zimowy, 1 = czas letni |
PB (cFos Power brain only)
PB.input1 | S0 Input 1, 1 = aktywny, 0 = nieaktywny |
PB.input2 | S0 Input 2, 1 = aktywny, 0 = nieaktywny |
CM Zmienne menedżera ds. ładowania
Zmienne te mogą być ustawione przez administratora w zakładce "Konfiguracja". Na przykład, jeśli administrator ustawi zmienną "var_x" na 1,5, CM.var_x zwraca wartość 1,5.
Zmienne predefiniowane:
_num_charging: Liczba aktualnie ładujących się wallboxów
_num_charging1: Liczba aktualnie ładujących się wallboxów, 1 jeśli żaden nie jest ładowany
_max_total_current: Maksymalny prąd przyłącza domowego w mA na fazę
_max_total_evse_current: Maksymalny prąd dla skrzynek ściennych w mA (na fazę)
_price: Bieżąca cena energii elektrycznej
_price_level: Bieżący poziom cen energii elektrycznej, -2=bardzo drogi, -3=drogi, -4=normalny, -5=tani, -6=bardzo tani _surplus: aktualna nadwyżka energii słonecznej w watach _org_surplus: Nadwyżka energii słonecznej, która zostałaby obliczona przez Zarządcę opłat niezależnie od jego własnych formuł
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
Chcesz dodatkowo ograniczyć prąd ładowania w odniesieniu do licznika zużycia mieszkania. W tym celu można ustawić regułę ładowania o wzorze 16000 - M1.prąd
.
M1 to licznik, który mierzy zużycie prądu przez mieszkanie. Zarządzanie obciążeniem przez cFos Charging Manager najpierw próbuje zapewnić EVSE maksymalny prąd w stosunku do mocy przyłączeniowej domu, ale następnie ogranicza go do 16A minus zużycie mieszkania.