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 |
round(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_w | Aktualna moc czynna w watach |
offered | Wallbox: Oferowany prąd w mA |
import_wh | Energia pobrana w Wh |
export_wh | Wtłoczona energia w Wh |
dt | Czas, który upłynął od ostatniej aktualizacji (w sekundach), tylko dla licznika "Expression", patrz także CM._dt. |
inputN | Numer wejścia N urządzenia, 1 = aktywne, 0 = nieaktywne, N to numer wejścia, zaczynając od 1. |
soc | SOC, poziom naładowania w procentach (licznik/pamięć) - jeśli jest obsługiwany przez urządzenie |
id | Device Id, Modbus ID |
txn_duration | Czas trwania bieżącej transakcji w sekundach (EVSE) |
charging_dur | Rzeczywisty czas ładowania bieżącej transakcji w sekundach (Wallbox) |
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) |
lb_cur_l1 | Aktualnie obliczony prąd fazy 1 w mA (stacja ładowania Wallbox). Tylko podczas obliczania zasad ładowania stacji ładowania, w przeciwnym razie 0 |
lb_cur_l2 | Obliczony prąd fazy 2 w mA (stacja ładowania Wallbox). Tylko podczas obliczania zasad ładowania stacji ładowania, w przeciwnym razie 0 |
lb_cur_l3 | Aktualnie obliczony prąd fazy 3 w mA (stacja ładowania Wallbox). Tylko podczas obliczania zasad ładowania stacji ładowania, w przeciwnym razie 0 |
lb_cur | Prąd obliczony dla bieżącej fazy w mA (stacja ładowania Wallbox). Tylko podczas obliczania zasad ładowania stacji ładowania Wallbox, w przeciwnym razie 0. Charging Manager odpytuje wszystkie fazy jedna po drugiej. |
surplus_pcur | Nadmiar prądu PV na (przewidywaną) fazę w mA |
surplus_wanted | 1, jeśli reguła nadwyżki PV została już zastosowana, w przeciwnym razie 0 |
budget | KWh lub minut w bieżącym budżecie |
budget_amount | Maksymalna liczba kWh lub minut w bieżącym budżecie |
budget_used | KWh lub minuty 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 |
reactive_power | Specyfikacja mocy biernej w watach (jeśli jest obsługiwana przez urządzenie), wartości dodatnie: Indukcyjna, wartości ujemne: Pojemnościowa |
switch_phases | Dla stacji ładowania z przełączaniem faz: Ręczne przełączanie faz, 1 = 1-fazowe, 3 = 3-fazowe, -1 = automatyczne przełączanie faz |
departure | Czas odlotu ISO 15118 jako jednostkowy znacznik czasu (dla stacji Wallbox, które to obsługują, w przeciwnym razie 0) |
req_energy | ISO 15118 Wymagana energia w Wh (dla stacji ładowania, które to obsługują, w przeciwnym razie 0) |
plugin_start | Znacznik czasu systemu Unix, czas włożenia kabla |
plugin_energy | Poprzednio naładowana energia w Wh od momentu podłączenia kabla |
M1.current_l1 | Prąd licznika M1, faza 1 |
E2.import_wh | Pobrana Wh przez EVSE E2 |
E3.power_w | Aktualna moc ładowania E3 w watach |
W przypadku korzystania z formuł dla miernika typu "Expression" można również pominąć identyfikator urządzenia. Wtedy nazwy pól odnoszą się do tego miernika, np. "power_w" jest wtedy mocą tego miernika w watach. Za pomocą 'dt' można zrealizować kilka rozszerzonych funkcji, np. w liczniku typu "Expression":
import_wh + M1.power_w * dt / 3600
aktualizuje pozyskiwaną energię w oparciu o moc w czasie poprzedniej aktualizacji(power_w * (20 - dt) + M1.power_w * 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 SO=0, Mon=1, Tue=2, ... Sat=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 |
date.timestamp | Unix timespamp, secs since 1.1.1970 |
PB (nur cFos Power Brain)
PB.input1 | S0 Input 1, 1 = aktywny, 0 = nieaktywny |
PB.input2 | S0 Input 2, 1 = aktywny, 0 = nieaktywny |
CM Zmienne menedżera ładowania
Zmienne te mogą być ustawione przez administratora w sekcji "Konfiguracja". Na przykład, jeśli administrator ustawi zmienną "var_x" na 1,5, CM.var_x zwróci 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 stacji ładowania 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ł
_storage_home_max_capacity: łączna pojemność magazynu, domu, jeśli określono w konfiguracji licznika, w Wh
_storage_home_capacity: Bieżąca pojemność magazynu, domu, jeśli określono w konfiguracji licznika, w Wh
_storage_all_max_capacity: całkowita pojemność pamięci masowej, All, jeśli określono w konfiguracji licznika, w Wh
_storage_all_capacity: bieżąca pojemność pamięci masowej, All, jeśli określono w konfiguracji licznika, w Wh
_max_total_current_prc: Procent dostępnego maksymalnego całkowitego prądu ładowania. Ta zmienna może być również zapisana (przez definicje licznika i zmienne Charging Manager)
_dt: czas, który upłynął od ostatniej aktualizacji (w sekundach).
Korzystanie z obiektów globalnych:
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
Uwaga:
W sekcji Liczniki niestandardowe znajdują się również instrukcje dotyczące korzystania z formuł z globalnymi zmiennymi i danymi wyjściowymi Charging Manager.
GM Liczniki globalne
GM.grid_demand | Odniesienie do sieci |
GM.consumed | Zużycie |
GM.produced | Generacja |
GM.consumed_evse | Zużycie samochodów elektrycznych |
GM.available_evse | Dostępna moc |
GM.surplus | Nadwyżka PV |
GM.storage_home | Memory Home |
GM.storage_all | Pamięć wszystkiego |
GM.error | Wydajność dzięki błędom |
Korzystanie z liczników globalnych
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.
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.
Za pomocą min_price(s), max_price(s) można określić najtańszą cenę dostawcy energii w euro, przy czym ceny są wyszukiwane od bieżącej godziny do maksymalnie s sekund dnia lub następnego dnia, np. min_price(25200) zwraca najtańszą cenę do godziny 7:00. Na przykład można utworzyć regułę ładowania z warunkiem CM._price <= min_price(25200) w celu ładowania w najkorzystniejszym czasie, ale z warunkiem, że chcesz wyruszyć na przykład od 8:00 (zakładając czas ładowania 1 godziny). Podobnie istnieją dwie funkcje min_price_secs(s) i max_price_secs(s), które zwracają czas rozpoczęcia najtańszej ceny w sekundach rozpoczętego dnia. Można je następnie porównać na przykład z date.daysecond.