Il Charging Manager di cFos consente la valutazione dinamica delle formule. Questa funzionalità è disponibile per un contatore di tipo "Espressione" e per le regole di tariffazione di tipo "Formula".
È quindi possibile impostare contatori che calcolano i valori da altri contatori o EVSE e tenerli pronti e visualizzarli. Le regole di ricarica possono anche utilizzare formule per calcolare dinamicamente la corrente di ricarica e accedere a contatori e EVSE (compresi quelli di tipo "Expression").
Con le formule è possibile effettuare le seguenti operazioni:
+ - * / % | Addizione, sottrazione, moltiplicazione, divisione, modulo |
& | | aND e OR bitwise |
^ | Calcolo della potenza, ad esempio 10^2 = 100 |
min(x,y) | Minimo di x e y, più di 2 argomenti possibili |
max(x,y) | Massimo di x e y, più di 2 argomenti possibili |
abs(x) | Valore assoluto di x, ad esempio abs(-2) = 2 |
clamp(x,min,max) | Valore x = min (se x < min), x = max (se x > max), altrimenti mantenere x |
round(x) | Arrotonda x a un numero intero. Esempio: arrotondamento a una cifra decimale: round(10*x)/10. |
sqrt(x) | Radice quadrata di x |
exists(x) | vero se la variabile x esiste, altrimenti falso |
Inoltre, sono possibili le seguenti espressioni logiche:==
(uguale), !=
(disuguale), <
(minore), <=
(minore-uguale), >
(maggiore), >=
(maggiore-uguale), !
(non), ||
(Or logico), &&
(And logico), ?
(operatore condizionale, ad esempio x ? y : z
, restituisce y se x è vero, altrimenti z
)
Ciò consente, ad esempio, di disattivare la corrente a seconda delle condizioni: M1.current >= 6500 ? M1.current : 0
restituisce la corrente di M1 se è superiore a 6,5A e 0 altrimenti, mettendo in pausa la carica. Per tali condizioni, è anche possibile interrogare gli ingressi (vedere di seguito)
Sono possibili i seguenti nomi:
Mx | Contatore con ID unità x, ad es. M1 |
Ex | EVSE con ID dispositivo x, ad esempio E1 |
È inoltre possibile accedere a contatori virtuali, come l'eccedenza solare, l'assorbimento dalla rete o la "Power avail. for EVSEs" (potenza disponibile per le wallbox), impostando il contatore e utilizzando l'ID del dispositivo corrispondente nella formula.
È quindi possibile accedere ai singoli valori delle unità tramite il punto. Questi vengono chiamati come segue:
current_l1 | Corrente della fase 1 in mA |
current_l2 | Corrente della fase 2 in mA |
current_l3 | Corrente della fase 3 in mA |
current | Corrente della fase corrente in mA (per le regole di carica, il Gestore della carica interroga tutte le fasi una dopo l'altra; per i contatori di tipo "Espressione", si applica la rispettiva fase a cui si riferisce la formula. Se si è specificata una formula per la "Corrente L1", è possibile omettere i campi per la Corrente L2 e L3. In tal caso viene utilizzata la formula per la corrente L1) |
power_w | Potenza attiva attuale in watt |
offered | Wallbox: Corrente offerta in mA |
import_wh | Energia prelevata in Wh |
export_wh | Energia iniettata in Wh |
dt | Il tempo trascorso dall'ultimo aggiornamento (in secondi), solo per il contatore "Espressione", vedere anche CM._dt. |
inputN | Numero di ingresso N del dispositivo, 1 = attivo, 0 = inattivo; N è il numero dell'ingresso, a partire da 1. |
soc | SOC, livello di carica in percentuale (contatore/memoria) - se supportato dal dispositivo |
id | Id dispositivo, ID Modbus |
txn_duration | Durata della transazione corrente in secondi (EVSE) |
charging_dur | Tempo di ricarica effettivo della transazione corrente in secondi (Wallbox) |
txn_energy | Energia di carica della transazione corrente in Wh (EVSE) |
min_current | Corrente di carica minima in mA (EVSE) |
max_current | Corrente di carica massima in mA (EVSE) |
state | Stato: 1 in attesa, 2 collegato, 3 in carica, 4 in carica con ventilazione, 5 errore, 6 offline (EVSE) |
cphases | Numero di fasi di carica (0-3) |
pphases | Numero di fasi di carica previste (0-3) |
lb_cur_l1 | Corrente attualmente calcolata della fase 1 in mA (wallbox). Solo durante il calcolo delle regole di ricarica della wallbox, altrimenti 0 |
lb_cur_l2 | Corrente calcolata della fase 2 in mA (wallbox). Solo durante il calcolo delle regole di ricarica della wallbox, altrimenti 0 |
lb_cur_l3 | Corrente attualmente calcolata della fase 3 in mA (wallbox). Solo durante il calcolo delle regole di ricarica della wallbox, altrimenti 0 |
lb_cur | Corrente calcolata per la fase corrente in mA (wallbox). Solo durante il calcolo delle regole di carica della wallbox, altrimenti 0. Il gestore della carica interroga tutte le fasi una dopo l'altra. |
surplus_pcur | FV corrente in eccesso per fase (prevista) in mA |
surplus_wanted | 1, se è già stata applicata una regola di surplus PV, altrimenti 0 |
budget | KWh o minuti sul budget corrente |
budget_amount | KWh o minuti massimi sul budget corrente |
budget_used | KWh o minuti utilizzati per il budget corrente |
com_err | 1, se c'è un errore COM, altrimenti 0 |
com_err2 | 1, se un errore COM è presente per più di 12 secondi, altrimenti 0 |
reactive_power | Specifica della potenza reattiva in watt (se supportata dal dispositivo), valori positivi: Induttivo, valori negativi: Capacitivo |
switch_phases | Per wallbox con commutazione di fase: commutazione di fase manuale, 1 = monofase, 3 = trifase, -1 = commutazione di fase automatica |
departure | Orario di partenza ISO 15118 come timestamp unitario (per wallbox che lo supportano, altrimenti 0) |
req_energy | ISO 15118 Energia richiesta in Wh (per wallbox che la supportano, altrimenti 0) |
plugin_start | Unix timestamp, ora di inserimento del cavo |
plugin_energy | Energia caricata in precedenza in Wh dal momento in cui il cavo è stato collegato alla rete |
M1.current_l1 | Corrente del contatore M1, fase 1 |
E2.import_wh | Wh consumati dall'EVSE E2 |
E3.power_w | Potenza di carica attuale dell'E3 in watt |
Se si utilizzano le formule per un misuratore di tipo "Expression", si può anche omettere l'ID del dispositivo. I nomi dei campi si riferiscono a questo strumento, ad esempio 'power_w' è la potenza di questo strumento in watt. Con 'dt' si possono realizzare alcune funzioni estese, ad esempio in un misuratore di tipo "Expression":
import_wh + M1.power_w * dt / 3600
aggiorna l'energia di origine in base alla potenza durante l'ultimo tempo di aggiornamento(power_w * (20 - dt) + M1.power_w * dt) / 20
attenua la potenza negli ultimi 20 secondi.date
date.year | Anno in corso |
date.month | Mese da 0..11 |
date.day | Giorno da 1..31 |
date.weekday | Giorno feriale SO=0, lun=1, mar=2, ... Sab=6 |
date.yearday | Giorno dell'anno da 0..366 |
date.hour | Ora da 0..23 |
date.minute | Minuti da 0 a 60 |
date.second | Secondo da 0..60 |
date.daysecond | Secondo di questo giorno da 0..86399 |
date.dayminute | Minuti di questo giorno da 0..1439 |
date.dst | 0 = orario invernale, 1 = orario estivo |
date.timestamp | Unix timespamp, secs since 1.1.1970 |
PB (nur cFos Power Brain)
PB.input1 | S0 Input 1, 1 = attivo, 0 = inattivo |
PB.input2 | S0 Input 2, 1 = attivo, 0 = inattivo |
CM Variabili del gestore di carica
Queste variabili possono essere impostate dall'amministratore in "Configurazione". Ad esempio, se l'amministratore imposta la variabile 'var_x' a 1,5, CM.var_x restituirà il valore 1,5.
Variabili predefinite:
carica_num: Numero di wallbox attualmente in carica
_num_carica1: numero di wallbox attualmente in carica, 1 se nessuno è in carica
_max_total_current: Corrente massima del collegamento dell'abitazione in mA per fase
_max_total_evse_current: corrente massima per wallbox in mA per fase
prezzo: prezzo attuale dell'elettricità
_price_level: livello attuale del prezzo dell'elettricità, -2=molto caro, -3=costoso, -4=normale, -5=economico, -6=molto economico
_surplus: surplus solare attuale in watt
eccedenza solare: eccedenza solare che sarebbe stata calcolata dal Gestore degli addebiti indipendentemente dalle sue formule
capacità_massima_di_storage_home: Capacità totale dello storage, home, se specificata nella configurazione del contatore, in Wh
capacità_storage_home_capacity: capacità attuale dello storage, home, se specificata nella configurazione del contatore, in Wh
_storage_all_max_capacity: capacità totale dello storage, All, se specificato nella configurazione del contatore, in Wh
_storage_all_capacity: capacità attuale dello storage, All, se specificato nella configurazione del contatore, in Wh
_max_total_current_prc: Percentuale della corrente di carica totale massima disponibile. Questa variabile può anche essere scritta (dalle definizioni dei contatori e dalle variabili del Charging Manager)
_dt: il tempo trascorso dall'ultimo aggiornamento (in secondi).
Utilizzo degli oggetti globali:
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
Nota:
Nella sezione Contatori personalizzati si trovano anche le istruzioni su come utilizzare le formule con le variabili e le uscite globali di Charging Manager.
GM Contatori globali
GM.grid_demand | Riferimento di rete |
GM.consumed | Consumo |
GM.produced | Generazione |
GM.consumed_evse | Consumo di auto elettriche |
GM.available_evse | Potenza disponibile |
GM.surplus | Eccedenza di FV |
GM.storage_home | Casa della memoria |
GM.storage_all | Memoria Tutto |
GM.error | Prestazioni attraverso l'errore |
Uso dei contatori globali
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.
Si desidera limitare ulteriormente la corrente di carica rispetto al contatore di consumo di un appartamento. A tal fine, è possibile impostare una regola di ricarica con la formula 16000 - M1.current
.
M1 è il contatore che misura il consumo dell'appartamento. La gestione del carico del Charging Manager cFos cerca innanzitutto di fornire all'EVSE la corrente massima in relazione alla potenza di connessione dell'abitazione, ma poi la limita a 16A meno il consumo dell'appartamento.
Utilizzando min_price(s), max_price(s), è possibile determinare il prezzo più economico del proprio fornitore di energia in euro, ricercando i prezzi dall'ora corrente fino a max s secondi del giorno o del giorno successivo, ad esempio min_price(25200) restituisce il prezzo più economico fino alle 7:00 del mattino. Ad esempio, è possibile creare una regola di ricarica con la condizione CM._price <= min_price(25200) per ricaricare all'ora più favorevole, ma con la condizione di voler partire dalle 8:00, ad esempio (ipotizzando un tempo di ricarica di 1 ora). Allo stesso modo, esistono le due funzioni min_price_secs(s) e max_price_secs(s), che restituiscono l'ora di inizio del prezzo più conveniente in secondi del giorno iniziato. È possibile confrontare questi dati con date.daysecond, ad esempio.