Documentazione

gestore della carica cFos - Formule

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:

MxContatore con ID unità x, ad es. M1
ExEVSE 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_l1Corrente della fase 1 in mA
current_l2Corrente della fase 2 in mA
current_l3Corrente della fase 3 in mA
currentCorrente 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_wPotenza attiva attuale in watt
offeredWallbox: Corrente offerta in mA
import_whEnergia prelevata in Wh
export_whEnergia iniettata in Wh
dtIl tempo trascorso dall'ultimo aggiornamento (in secondi), solo per il contatore "Espressione", vedere anche CM._dt.
inputNNumero di ingresso N del dispositivo, 1 = attivo, 0 = inattivo; N è il numero dell'ingresso, a partire da 1.
socSOC, livello di carica in percentuale (contatore/memoria) - se supportato dal dispositivo
idId dispositivo, ID Modbus
txn_durationDurata della transazione corrente in secondi (EVSE)
charging_durTempo di ricarica effettivo della transazione corrente in secondi (Wallbox)
txn_energyEnergia di carica della transazione corrente in Wh (EVSE)
min_currentCorrente di carica minima in mA (EVSE)
max_currentCorrente di carica massima in mA (EVSE)
stateStato: 1 in attesa, 2 collegato, 3 in carica, 4 in carica con ventilazione, 5 errore, 6 offline (EVSE)
cphasesNumero di fasi di carica (0-3)
pphasesNumero di fasi di carica previste (0-3)
lb_cur_l1Corrente attualmente calcolata della fase 1 in mA (wallbox). Solo durante il calcolo delle regole di ricarica della wallbox, altrimenti 0
lb_cur_l2Corrente calcolata della fase 2 in mA (wallbox). Solo durante il calcolo delle regole di ricarica della wallbox, altrimenti 0
lb_cur_l3Corrente attualmente calcolata della fase 3 in mA (wallbox). Solo durante il calcolo delle regole di ricarica della wallbox, altrimenti 0
lb_curCorrente 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_pcurFV corrente in eccesso per fase (prevista) in mA
surplus_wanted1, se è già stata applicata una regola di surplus PV, altrimenti 0
budgetKWh o minuti sul budget corrente
budget_amountKWh o minuti massimi sul budget corrente
budget_usedKWh o minuti utilizzati per il budget corrente
com_err1, se c'è un errore COM, altrimenti 0
com_err21, se un errore COM è presente per più di 12 secondi, altrimenti 0
reactive_powerSpecifica della potenza reattiva in watt (se supportata dal dispositivo), valori positivi: Induttivo, valori negativi: Capacitivo
switch_phasesPer wallbox con commutazione di fase: commutazione di fase manuale, 1 = monofase, 3 = trifase, -1 = commutazione di fase automatica
departureOrario di partenza ISO 15118 come timestamp unitario (per wallbox che lo supportano, altrimenti 0)
req_energyISO 15118 Energia richiesta in Wh (per wallbox che la supportano, altrimenti 0)
plugin_startUnix timestamp, ora di inserimento del cavo
plugin_energyEnergia caricata in precedenza in Wh dal momento in cui il cavo è stato collegato alla rete

Esempio
M1.current_l1Corrente del contatore M1, fase 1
E2.import_whWh consumati dall'EVSE E2
E3.power_wPotenza 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":

  • Come formula per 'import_wh': import_wh + M1.power_w * dt / 3600 aggiorna l'energia di origine in base alla potenza durante l'ultimo tempo di aggiornamento
  • Come formula per 'power_w': (power_w * (20 - dt) + M1.power_w * dt) / 20 attenua la potenza negli ultimi 20 secondi.

Variabili globali

date

date.yearAnno in corso
date.monthMese da 0..11
date.dayGiorno da 1..31
date.weekdayGiorno feriale SO=0, lun=1, mar=2, ... Sab=6
date.yeardayGiorno dell'anno da 0..366
date.hourOra da 0..23
date.minuteMinuti da 0 a 60
date.secondSecondo da 0..60
date.daysecondSecondo di questo giorno da 0..86399
date.dayminuteMinuti di questo giorno da 0..1439
date.dst0 = orario invernale, 1 = orario estivo
date.timestampUnix timespamp, secs since 1.1.1970

PB (nur cFos Power Brain)

PB.input1S0 Input 1, 1 = attivo, 0 = inattivo
PB.input2S0 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_demandRiferimento di rete
GM.consumedConsumo
GM.producedGenerazione
GM.consumed_evseConsumo di auto elettriche
GM.available_evsePotenza disponibile
GM.surplusEccedenza di FV
GM.storage_homeCasa della memoria
GM.storage_allMemoria Tutto
GM.errorPrestazioni 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.

Esempio di applicazione

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.

Funzioni

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.