FCR
Questa guida ti aiuterà a configurare FCR sul tuo SmartgridOne Controller per controllare e monitorare da remoto le installazioni con batterie.
Prima di continuare, assicurati che la rete e i dispositivi siano pronti seguendo la guida Configurazione MQTT.
Panoramica
Attenzione
NOTA: FCR sostituisce la funzionalità originale del controller.
Dispositivi supportati
| Device Type | Variants | Supported |
|---|---|---|
| Solar Inverters | All | ❌ |
| Storage Devices | ✅ | |
| EV Chargers | ❌ |
Paesi supportati
| Country | Supported |
|---|---|
| Belgium | ❌ |
| Netherlands | |
| Switzerland | ✅ |
Prerequisiti
Nota
Solo installazioni specifiche possono essere configurate tramite FCR. Verifica che l'installazione sia certificata.
1. Aggiungere i dispositivi
Accedi all'interfaccia di messa in servizio e assicurati che i dispositivi siano aggiunti al SmartgridOne Controller.
2. Verifica i limiti di potenza della rete
Nelle impostazioni, i limiti di potenza della rete devono essere configurati correttamente. Fare clic su Impostazioni e verificare l'impostazione evidenziata nell'immagine. Se necessario, modificare le impostazioni.
3. Verificare l'indirizzo
Assicurati che l'indirizzo sia configurato correttamente.
Avviso
L'integrazione potrebbe non funzionare correttamente se l'indirizzo non è corretto!
Abilitazione di FCR
Dall'interfaccia di messa in servizio, vai alla scheda "External Signals".

Fai clic su "Energy Markets".

Seleziona Eniris, seleziona FCR e fai clic su "Next".
Funzionamento di FCR
La Frequency Containment Reserve (FCR) è la riserva automatica più rapida utilizzata per mantenere la frequenza della rete vicina al suo valore nominale (50 Hz in Europa). La frequenza della rete è una misura diretta dell'equilibrio tra produzione e consumo: quando il consumo supera la produzione, la frequenza scende sotto i 50 Hz, mentre quando la produzione supera il consumo, sale sopra i 50 Hz. FCR reagisce a queste deviazioni entro pochi secondi per ripristinare l'equilibrio.
In qualità di EMS, il SmartgridOne Controller misura continuamente la frequenza della rete localmente e carica o scarica la batteria in base alla frequenza, seguendo una curva di droop predefinita:
- Frequenza inferiore a 50 Hz (carenza di potenza sulla rete): la batteria si scarica, immettendo potenza per contribuire a riportare la frequenza al valore nominale.
- Frequenza superiore a 50 Hz (eccesso di potenza sulla rete): la batteria si carica, assorbendo potenza per contribuire a riportare la frequenza verso il basso.
- Frequenza pari a 50 Hz (rete in equilibrio): la batteria rimane inattiva all'interno della banda morta.
La curva di droop definisce la quantità di potenza che la batteria fornisce per una determinata deviazione di frequenza. Una piccola banda morta, solitamente di 10 mHz, intorno ai 50 Hz evita di reagire a piccole fluttuazioni, mentre la risposta varia linearmente con la deviazione fino alla potenza di riserva massima al limite della banda operativa. Nel mercato FCR europeo, l'attivazione completa viene raggiunta con una deviazione di ±200 mHz (ovvero a 49,8 Hz e 50,2 Hz).
Poiché il controller misura autonomamente la frequenza e applica la curva di droop, la batteria risponde automaticamente e in tempo reale alle variazioni della frequenza della rete: non è necessario alcun setpoint esterno per attivare la riserva.
Il gestore della rete controlla la partecipazione tramite messaggi MQTT (specificati di seguito). Questi messaggi determinano:
- Se FCR è attiva o meno — il gestore della rete abilita o disabilita la riserva. Quando FCR è inattiva, il controller non risponde alle deviazioni di frequenza.
- La capacità allocata — la quantità di potenza di riserva che la batteria deve fornire. Questa capacità allocata può differire dalla potenza nominale della batteria (nompower); la curva di droop viene dimensionata in base alla capacità allocata e non alla potenza nominale completa della batteria.
Messaggi MQTT FCR
FCR è gestita tramite messaggi MQTT inviati al SmartgridOne Controller. Per tutto ciò che riguarda la connessione al broker MQTT — requisiti di rete e credenziali — consulta prima la guida Controllo MQTT in tempo reale. FCR utilizza lo stesso broker e la stessa connessione, ma i propri topic dedicati descritti di seguito.
Argomenti MQTT
FCR utilizza un set di topic separato dal controllo remoto standard. Sostituisci <Controller SN> con il numero di serie del SmartgridOne Controller che intendi controllare.
| Topic | Direzione | Scopo |
|---|---|---|
standard1/rp_one_s/remoteFCRMetrics/<Controller SN> | Al controller | Topic in ingresso — utilizzato per inviare il comando FCR (il messaggio JSON riportato di seguito). |
standard1/outbound/remoteFCRMetrics/ack/<Controller SN> | Dal controller | Topic di conferma — il controller conferma qui che il comando è stato ricevuto e salvato. |
standard1/outbound/remoteFCRMetrics/feedback/<Controller SN> | Dal controller | Topic di feedback — il controller pubblica qui il feedback ogni secondo. |
Formato del messaggio
Il messaggio FCR ha la seguente struttura:
{
"time": 1714652046,
"extraTags": {
"nodeId": "<Controller SN>_site_0"
},
"fields": {
"fcr": {
"active": true,
"capacity_kW": 100.0,
"start_time": 1714652046,
"end_time": 1714655646
},
"management": {
"setpoint_W": -5000.0,
"start_time": 1714652046,
"end_time": 1714655646
},
"test": {
"mode": "frequency_injection",
"ramp": {
"f_start_Hz": 50.0,
"f_target_Hz": 49.8,
"duration_s": 30.0,
"t_start": 1714652046
}
}
}
}Descrizione dei campi
- time (Integer): timestamp Unix in secondi che indica quando è stato inviato il messaggio.
- extraTags (Object):
- nodeId (String): identificatore univoco del nodo del sito. È il tuo numero di serie seguito da
_site_0per la maggior parte dei dispositivi SmartgridOne Controller.
- nodeId (String): identificatore univoco del nodo del sito. È il tuo numero di serie seguito da
- fields (Object): contiene l'istruzione FCR, suddivisa nei blocchi
fcr,managementetestriportati di seguito. Ogni blocco è facoltativo; includi solo quelli applicabili.
fcr
Definisce la partecipazione effettiva a FCR. È il blocco principale che determina se la riserva è attiva e come viene dimensionata la curva di droop.
- active (Boolean): indica se FCR è attiva. Quando
true, il controller risponde alle deviazioni di frequenza seguendo la curva di droop. Quandofalse, FCR è disabilitata e il controller non reagisce alla frequenza della rete. - capacity_kW (Float): capacità di riserva allocata, in kilowatt, che la batteria deve fornire. La curva di droop viene dimensionata in base a questo valore. Come indicato sopra, può differire dalla potenza nominale della batteria (nompower).
- start_time (Integer): timestamp Unix in secondi in corrispondenza del quale questa istruzione FCR diventa attiva.
- end_time (Integer): timestamp Unix in secondi in corrispondenza del quale questa istruzione FCR scade.
management
Applica un setpoint di potenza esplicito in aggiunta o in sostituzione della risposta FCR, ad esempio per riportare lo stato di carica della batteria entro un intervallo operativo durante la partecipazione a FCR.
- setpoint_W (Float): setpoint di potenza desiderato in watt. Un valore positivo carica la batteria, mentre un valore negativo la scarica.
- start_time (Integer): timestamp Unix in secondi in corrispondenza del quale il setpoint di gestione diventa attivo.
- end_time (Integer): timestamp Unix in secondi in corrispondenza del quale il setpoint di gestione scade.
test
Utilizzato per eseguire un test di qualificazione o verifica sull'installazione. Includi questo blocco solo durante l'esecuzione di un test.
- mode (String): il test da eseguire. Uno tra:
"frequency_injection": simula una deviazione di frequenza aumentando gradualmente il segnale di frequenza, per verificare la risposta di droop. Richiede l'oggettorampriportato di seguito."usable_energy": verifica l'energia utilizzabile della batteria.
- ramp (Object): utilizzato solo quando
modeè"frequency_injection". Descrive la rampa di frequenza simulata:- f_start_Hz (Float): frequenza all'inizio della rampa, in hertz.
- f_target_Hz (Float): frequenza verso cui tende la rampa, in hertz.
- duration_s (Float): durata della rampa, in secondi.
- t_start (Integer): timestamp Unix in secondi in corrispondenza del quale inizia la rampa.
- target_soc (Float): utilizzato solo quando
modeè"usable_energy". Lo stato di carica obiettivo, come valore da 20 a 100, che la batteria deve raggiungere durante il test dell'energia utilizzabile. Il controller carica o scarica la batteria verso questo stato di carica, misurando l'energia trasferita per verificare l'energia utilizzabile della batteria.
Messaggio di conferma
Dopo aver ricevuto un comando sul topic in ingresso, il SmartgridOne Controller pubblica una conferma sul topic di conferma. La conferma indica se il comando è stato accettato e salvato oppure rifiutato. Viene fornita in uno dei due formati seguenti.
Quando il comando ricevuto:
{
"requestTime": "<Unix Timestamp>",
"time": "<Unix Timestamp>",
"siteNodeId": "<Controller SN>_site_0",
"data": {
"status": "accepted" or "rejected",
"error": "<error message>"
},
"fields": {}
}Descrizione dei campi
- requestTime (Integer): timestamp Unix in secondi del comando originale oggetto della conferma. Corrisponde al campo
timedel comando inviato e consente di associare la conferma alla richiesta. - time (Integer): timestamp Unix in secondi in corrispondenza del quale è stata inviata la conferma.
- siteNodeId (String): il
nodeIddel sito che invia la conferma. - data (Object):
- status (String):
"accepted"quando il comando è stato ricevuto e salvato, oppure"rejected"quando non è stato possibile applicarlo. - error (String): presente solo quando
statusè"rejected". Descrive il motivo per cui il comando è stato rifiutato.
- status (String):
- fields (Object): oggetto vuoto.
Messaggio di feedback
Durante il funzionamento di FCR, il SmartgridOne Controller pubblica un messaggio di feedback sul topic di feedback ogni secondo. Questo consente di monitorare lo stato live dell'installazione e la risposta FCR in tempo reale.
{
"time": "<Unix Timestamp>",
"siteNodeId": "<Controller SN>_site_0",
"data": {
"fcr_active": <bool>,
"frequency_Hz": <float>,
"actualPowerTot_W": <float>,
"setpoint_W": <float>,
"fcrSetpoint_W": <float>,
"managementSetpoint_W": <float>,
"min_soc_perc": <float>,
"max_soc_perc": <float>,
"soc_perc": <float>,
"droop_perc": <float>
}
}Descrizione dei campi
- time (Integer): timestamp Unix in secondi in corrispondenza del quale è stato inviato il messaggio di feedback.
- siteNodeId (String): il
nodeIddel sito che invia il feedback. - data (Object):
- fcr_active (Boolean): indica se FCR è attualmente attiva.
- frequency_Hz (Float): frequenza locale della rete misurata dal controller, in hertz.
- actualPowerTot_W (Float): potenza attiva effettiva della batteria, in watt. Un valore positivo indica la carica, uno negativo la scarica.
- setpoint_W (Float): setpoint di potenza totale corrente, in watt. È la somma di
fcrSetpoint_WemanagementSetpoint_Wriportati di seguito. Un valore positivo carica la batteria, uno negativo la scarica. - fcrSetpoint_W (Float): contributo FCR al setpoint di potenza, in watt. È la parte del setpoint risultante dalla deviazione di frequenza e dalla curva di droop.
- managementSetpoint_W (Float): contributo della gestione al setpoint di potenza, in watt. È la parte del setpoint derivante dal segnale di carica/scarica
management, applicato in aggiunta alla risposta FCR. - min_soc_perc (Float): stato di carica minimo consentito, espresso in percentuale. Al di sotto di questo livello la batteria interrompe la scarica per conservare energia sufficiente come riserva per FCR.
- max_soc_perc (Float): stato di carica massimo consentito, espresso in percentuale. Al di sopra di questo livello la batteria interrompe la carica per mantenere sufficiente margine come riserva per FCR.
- soc_perc (Float): stato di carica medio della batteria, espresso in percentuale.
- droop_perc (Float): droop attivo, espresso in percentuale — la quota della capacità FCR allocata attualmente erogata in risposta alla deviazione di frequenza.
