Upravitelj polnjenja cFos omogoča dinamično vrednotenje formul. Ta funkcionalnost je na voljo za števec vrste "Izraz" in za pravila za zaračunavanje vrste "Formula".
Zato lahko nastavite števce, ki izračunavajo vrednosti iz drugih števcev ali naprav EVSE ter jih hranijo in prikazujejo. Pravila za polnjenje lahko uporabljajo tudi formule za dinamično izračunavanje polnilnega toka ter dostopajo tudi do števcev in EVSE (vključno z števci tipa "Expression").
S formulami so možne naslednje operacije:
+ - * / % | Seštevanje, odštevanje, množenje, deljenje, modul |
& | | bitni AND in OR |
^ | Izračun moči, npr. 10^2 = 100 |
min(x,y) | Najmanj x in y, možna sta več kot 2 argumenta |
max(x,y) | Največ x in y, možna sta več kot 2 argumenta |
abs(x) | Absolutna vrednost x, npr. abs(-2) = 2 |
clamp(x,min,max) | Vrednost x = min (če je x < min), x = max (če je x > max), sicer ohrani x |
round(x) | Zaokrožite x na celo število. Primer: Zaokroževanje na eno decimalno mesto: round(10*x)/10. |
sqrt(x) | Kvadratni koren x |
exists(x) | true, če spremenljivka x obstaja, sicer false |
Poleg tega so mogoči naslednji logični izrazi:==
(enako), !=
(neenako), <
(manj), <=
(manj enako), >
(večje), >=
(večje enako), !
(ne), ||
(logični Or), &&
(logični And), ?
(pogojni operator, npr. x ? y : z
, vrne y, če je x res, sicer z
)
To omogoča, da se tok na primer izklopi glede na razmere: M1.current >= 6500 ? M1.current : 0
vrne tok M1, če je večji od 6,5 A, in 0 v nasprotnem primeru, kar ustavi polnjenje. Za take pogoje je mogoče poizvedovati tudi po vhodih (glej spodaj)
Možna so naslednja imena:
Mx | Merilnik z ID enote x, npr. M1 |
Ex | EVSE z ID naprave x, npr. E1 |
Dostop do virtualnih števcev, kot so presežek sončne energije, poraba omrežja ali "Power avail. for EVSEs" (moč, ki je na voljo za wallboxe), je mogoč tudi z nastavitvijo števca in nato z uporabo ustreznega ID naprave v formuli.
Do posameznih vrednosti enot lahko nato dostopate s pomočjo točke. Te se imenujejo na naslednji način:
current_l1 | Tok faze 1 v mA |
current_l2 | Tok faze 2 v mA |
current_l3 | Tok faze 3 v mA |
current | Tok trenutne faze v mA (pri pravilih za polnjenje upravitelj polnjenja poizveduje po vseh fazah eno za drugo; pri števcih tipa "Izraz" se uporablja ustrezna faza, na katero se nanaša formula. Če ste določili formulo za "Tok L1", lahko izpustite polji za Tok L2 in L3. Potem se uporabi formula za tok L1.) |
power_w | Trenutna aktivna moč v vatih |
offered | Wallbox: Ponujeni tok v mA |
import_wh | Porabljena energija v Wh |
export_wh | Vbrizgana energija v Wh |
dt | Čas, ki je pretekel od zadnje posodobitve (v sekundah), samo za števec "Expression", glej tudi CM._dt. |
inputN | Številka vhoda N naprave, 1 = aktiven, 0 = neaktiven, N je številka vhoda, začenši z 1. |
soc | SOC, stopnja napolnjenosti v odstotkih (števec/pomnilnik) - če naprava to podpira |
id | Id naprave, Modbus ID |
txn_duration | Trajanje trenutne transakcije v sekundah (EVSE) |
charging_dur | Dejanski čas polnjenja trenutne transakcije v sekundah (Wallbox) |
txn_energy | Napolnjena energija trenutne transakcije v Wh (EVSE) |
min_current | Najmanjši polnilni tok v mA (EVSE) |
max_current | Največji polnilni tok v mA (EVSE) |
state | Status: 1 čakanje, 2 priključen, 3 polnjenje, 4 polnjenje s prezračevanjem, 5 napaka, 6 brez povezave (EVSE) |
cphases | Število faz polnjenja (0-3) |
pphases | Število predvidenih faz polnjenja (0-3) |
lb_cur_l1 | Trenutni izračunani tok faze 1 v mA (wallbox). Samo med izračunom pravil za polnjenje wallboxa, sicer 0 |
lb_cur_l2 | Trenutno izračunani tok faze 2 v mA (wallbox). Samo med izračunom pravil za polnjenje wallboxa, sicer 0 |
lb_cur_l3 | Trenutno izračunani tok faze 3 v mA (wallbox). Samo med izračunom pravil za polnjenje wallboxa, sicer 0 |
lb_cur | Tok, izračunan za tokovno fazo, v mA (wallbox). Samo med izračunom pravil za polnjenje wallboxa, sicer 0. Upravitelj polnjenja poizveduje po vseh fazah eno za drugo. |
surplus_pcur | PV presežni tok na (predvideno) fazo v mA |
surplus_wanted | 1, če je bilo pravilo o presežku PV že uporabljeno, sicer 0 |
budget | KWh ali minutah v trenutnem proračunu |
budget_amount | Največje število kWh ali minut v trenutnem proračunu |
budget_used | Porabljene kWh ali minute v tekočem proračunu |
com_err | 1, če je prišlo do napake COM, sicer 0 |
com_err2 | 1, če je napaka COM prisotna dlje kot 12 sekund, sicer 0 |
reactive_power | Specifikacija jalove moči v vatih (če jo naprava podpira), pozitivne vrednosti: Induktivna, negativne vrednosti: kapacitivna |
switch_phases | Za stenske omarice s faznim preklopom: Ročni fazni preklop, 1 = 1-fazni, 3 = 3-fazni, -1 = samodejni fazni preklop |
departure | ISO 15118 čas odhoda kot časovni žig enote (za wallboxe, ki to podpirajo, sicer 0) |
req_energy | ISO 15118 Zahtevana energija v Wh (za wallboxe, ki to podpirajo, sicer 0) |
plugin_start | Časovni žig Unix, čas vstavitve kabla |
plugin_energy | Predhodno napolnjena energija v Wh od trenutka, ko je bil kabel priključen |
M1.current_l1 | Tok števca M1, faza 1 |
E2.import_wh | Porabljeni Wh EVSE E2 |
E3.power_w | Trenutna moč polnjenja E3 v vatih |
Če uporabljate formule za merilnik tipa "Izraz", lahko ID naprave tudi izpustite. Potem se imena polj nanašajo na ta števec, npr. "power_w" je potem moč tega števca v vatih. S pomočjo "dt" lahko uresničite nekaj razširjenih funkcij, npr. pri merilniku tipa "Expression":
import_wh + M1.power_w * dt / 3600
posodobi pridobljeno energijo na podlagi moči v preteklem času posodobitve(power_w * (20 - dt) + M1.power_w * dt) / 20
zgladi moč v zadnjih 20 sekundah.date
date.year | Tekoče leto |
date.month | Mesec od 0..11 |
date.day | Dan od 1..31 |
date.weekday | Delovni dan SO=0, pon=1, tor=2, ... So=6 |
date.yearday | Dan v letu od 0..366 |
date.hour | Ura od 0..23 |
date.minute | Minuta od 0..60 |
date.second | Drugi od 0..60 |
date.daysecond | Drugi dan tega dne od 0..86399 |
date.dayminute | Minuta tega dne od 0..1439 |
date.dst | 0 = zimski čas, 1 = poletni čas |
date.timestamp | Unix timespamp, secs since 1.1.1970 |
PB (nur cFos Power Brain)
PB.input1 | S0 Input 1, 1 = aktivno, 0 = neaktivno |
PB.input2 | S0 Input 2, 1 = aktivno, 0 = neaktivno |
CM Spremenljivke upravitelja polnjenja
Te spremenljivke lahko upravitelj nastavi v razdelku "Konfiguracija". Na primer, če upravitelj nastavi spremenljivko 'var_x' na 1,5, CM.var_x vrne vrednost 1,5.
Vnaprej določene spremenljivke:
_num_charging: Število stenskih omaric, ki se trenutno polnijo
_num_charging1: Število trenutno polnih wallboxov, 1, če se ne polni noben
_max_total_current: Največji tok hišnega priključka v mA na fazo
_max_total_evse_current: Največji tok za stenske omarice v mA na fazo
_price: trenutna cena električne energije
_price_level: Trenutna raven cen električne energije, -2 = zelo draga, -3 = draga, -4 = normalna, -5 = poceni, -6 = zelo poceni
_surplus: Trenutni presežek sončne energije v vatih
_org_surplus: Presežek sončne energije, ki bi ga upravitelj zaračunavanja izračunal neodvisno od svojih formul
_storage_home_max_capacity: Skupna zmogljivost shrambe, doma, če je določena v konfiguraciji števca, v Wh
_storage_home_capacity: Trenutna zmogljivost shrambe, Home, če je določena v konfiguraciji merilnika, v Wh
_storage_all_max_capacity: Skupna zmogljivost shrambe, All, če je določena v konfiguraciji števca, v Wh
_storage_all_capacity: Trenutna zmogljivost shrambe, All, če je določena v konfiguraciji števca, v Wh
_max_total_current_prc: Odstotek razpoložljivega največjega skupnega polnilnega toka. To spremenljivko je mogoče zapisati tudi (z definicijami števcev in spremenljivkami Charging Manager)
_dt: Čas, ki je pretekel od zadnje posodobitve (v sekundah).
Uporaba globalnih predmetov:
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
Opomba:
V razdelku Števci po meri boste našli tudi navodila za uporabo formul z globalnimi spremenljivkami in izhodi programa Charging Manager.
GM Globalni števci
GM.grid_demand | Omrežna referenca |
GM.consumed | Poraba |
GM.produced | Generacija |
GM.consumed_evse | Poraba e-avtomobilov |
GM.available_evse | Razpoložljiva moč |
GM.surplus | PV presežek |
GM.storage_home | Spominski dom |
GM.storage_all | Spomin Vse |
GM.error | Uspešnost zaradi napak |
Uporaba globalnih števcev
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.
Dodatno želite omejiti polnilni tok glede na števec porabe stanovanja. To lahko storite tako, da določite pravilo za polnjenje s formulo 16000 - M1.current
.
M1 je števec, ki meri porabo stanovanja. Upravljanje obremenitve upravitelja polnjenja cFos najprej poskuša EVSE zagotoviti največji tok glede na moč hišnega priključka, nato pa ga omeji na 16 A minus poraba stanovanja.
Z uporabo funkcij min_price(s), max_price(s) lahko določite najcenejšo ceno vašega ponudnika energije v evrih, pri čemer se cene iščejo od trenutnega časa do največ s sekund dneva ali naslednjega dne, npr. funkcija min_price(25200) vrne najcenejšo ceno do 7:00. Tako lahko na primer ustvarite pravilo za polnjenje s pogojem CM._price <= min_price(25200), da bi polnili ob najugodnejšem času, vendar s pogojem, da želite na primer začeti polniti od 8:00 zjutraj (ob predpostavki, da je čas polnjenja 1 ura). Podobno sta na voljo funkciji min_price_secs(s) in max_price_secs(s), ki vrneta čas začetka najcenejše cene v sekundah začetega dne. Nato ju lahko primerjate na primer z date.dayecond.