Dokumentacja

menedżer ds. ładowania cFos - Formuły

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:

MxLicznik z identyfikatorem jednostki x, np. M1
ExEVSE 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_l1Prąd fazy 1 w mA
current_l2Prąd fazy 2 w mA
current_l3Prąd fazy 3 w mA
currentPrą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_wAktualna moc czynna w watach
offeredWallbox: Oferowany prąd w mA
import_whEnergia pobrana w Wh
export_whWtłoczona energia w Wh
dtCzas, który upłynął od ostatniej aktualizacji (w sekundach)
inputNNumer wejścia N urządzenia, 1 = aktywne, 0 = nieaktywne, N to numer wejścia, zaczynając od 1.
socSOC, poziom naładowania w procentach (licznik/pamięć) - jeśli jest obsługiwany przez urządzenie
idDevice Id, Modbus ID
txn_durationCzas trwania bieżącej transakcji w sekundach (EVSE)
charging_durRzeczywisty czas ładowania bieżącej transakcji w sekundach (Wallbox)
txn_energyEnergia naładowania bieżącej transakcji w Wh (EVSE)
min_currentMinimalny prąd ładowania w mA (EVSE)
max_currentMaksymalny prąd ładowania w mA (EVSE)
stateStatus: 1 oczekuje, 2 podłączony, 3 ładowanie, 4 ładowanie z wentylacją, 5 błąd, 6 offline (EVSE)
cphasesLiczba faz ładowania (0-3)
pphasesLiczba przewidywanych faz ładowania (0-3)
lb_cur_l1Aktualnie obliczony prąd fazy 1 w mA (stacja ładowania Wallbox). Tylko podczas obliczania zasad ładowania stacji ładowania, w przeciwnym razie 0
lb_cur_l2Obliczony prąd fazy 2 w mA (stacja ładowania Wallbox). Tylko podczas obliczania zasad ładowania stacji ładowania, w przeciwnym razie 0
lb_cur_l3Aktualnie obliczony prąd fazy 3 w mA (stacja ładowania Wallbox). Tylko podczas obliczania zasad ładowania stacji ładowania, w przeciwnym razie 0
lb_curPrą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_pcurNadmiar prądu PV na (przewidywaną) fazę w mA
surplus_wanted1, jeśli reguła nadwyżki PV została już zastosowana, w przeciwnym razie 0
budgetKWh lub minut w bieżącym budżecie
budget_amountMaksymalna liczba kWh lub minut w bieżącym budżecie
budget_usedKWh lub minuty wykorzystane w ramach bieżącego budżetu
com_err1, jeśli jest błąd COM, w przeciwnym razie 0
com_err21, jeżeli błąd COM jest obecny dłużej niż 12 sekund, w przeciwnym razie 0
reactive_powerSpecyfikacja mocy biernej w watach (jeśli jest obsługiwana przez urządzenie), wartości dodatnie: Indukcyjna, wartości ujemne: Pojemnościowa
switch_phasesDla stacji ładowania z przełączaniem faz: Ręczne przełączanie faz, 1 = 1-fazowe, 3 = 3-fazowe, -1 = automatyczne przełączanie faz
departureCzas odlotu ISO 15118 jako jednostkowy znacznik czasu (dla stacji Wallbox, które to obsługują, w przeciwnym razie 0)
req_energyISO 15118 Wymagana energia w Wh (dla stacji ładowania, które to obsługują, w przeciwnym razie 0)
plugin_startZnacznik czasu systemu Unix, czas włożenia kabla
plugin_energyPoprzednio naładowana energia w Wh od momentu podłączenia kabla

Przykład
M1.current_l1Prąd licznika M1, faza 1
E2.import_whPobrana Wh przez EVSE E2
E3.power_wAktualna 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":

  • Jako formuła dla "import_wh": import_wh + M1.power_w * dt / 3600 aktualizuje pozyskiwaną energię w oparciu o moc w czasie poprzedniej aktualizacji
  • Jako wzór dla "power_w": (power_w * (20 - dt) + M1.power_w * dt) / 20 wygładza moc w ciągu ostatnich 20 sekund.

Zmienne globalne

date

date.yearRok bieżący
date.monthMiesiąc od 0..11
date.dayDzień od 1..31
date.weekdayDzień powszedni SO=0, Mon=1, Tue=2, ... Sat=6
date.yeardayDzień w roku od 0..366
date.hourGodzina od 0..23
date.minuteMinuta od 0..60
date.secondDrugi od 0..60
date.daysecondDrugi dzień tego dnia od 0..86399
date.dayminuteMinuta tego dnia od 0..1439
date.dst0 = czas zimowy, 1 = czas letni
date.timestampUnix timespamp, secs since 1.1.1970

PB (nur cFos Power Brain)

PB.input1S0 Input 1, 1 = aktywny, 0 = nieaktywny
PB.input2S0 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)

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_demandOdniesienie do sieci
GM.consumedZużycie
GM.producedGeneracja
GM.consumed_evseZużycie samochodów elektrycznych
GM.available_evseDostępna moc
GM.surplusNadwyżka PV
GM.storage_homeMemory Home
GM.storage_allPamięć wszystkiego
GM.errorWydajność 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.

Przykład zastosowania

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.

Funkcje

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.