Flessibilità e codici di rete

Controllo BESS: verificare comandi e risposta della risorsa

Come provare la risposta di una batteria: dalla richiesta alla misura, sincronizzazione degli orologi, esempio da 500 kW, scadenza e prove.

Una batteria può accettare un comando senza erogare la potenza richiesta. La richiesta può attendere in coda, essere rifiutata dal PCS, limitata dalle protezioni della batteria o prevalsa da un altro controllore. Registra ogni fase separatamente. Se un aggregatore contesta un'erogazione insufficiente, il registro mostra in quale fase è avvenuto il problema.

Questa guida fa parte della serie sulla flessibilità. La guida ai ruoli BESS spiega di che cosa sono responsabili BMS, PCS ed EMS.

Stabilire che cosa conta come erogazione

Concorda il contatore, la convenzione del segno, la finestra temporale e la tolleranza prima della prima prova.

Il contatore può trovarsi ai terminali della batteria, al punto di connessione del sito o presso il contatore di rete. Ognuno restituisce un valore diverso. Fra i terminali e il punto di connessione, inverter, trasformatore e cavi introducono perdite. Al contatore di rete variano anche tutti gli altri carichi del sito. Se il servizio valuta l'erogazione al contatore di rete, serve una baseline: ciò che il sito avrebbe fatto senza il comando. Nei servizi dinamici della Gran Bretagna la baseline operativa è una Physical Notification, in GMT tutto l'anno, con risoluzione di 1 minuto o migliore, fissata alla chiusura del gate 60 minuti prima di ciascun periodo di regolazione di 30 minuti. I programmi di demand response usano spesso una baseline storica; la guida alle baseline di demand response descrive quei metodi.

Scrivi la convenzione del segno nel registro. Le mappe dei registri PCS considerano spesso positiva la scarica, secondo la convenzione dei generatori. Un contatore di sito che considera positiva l'importazione vede la stessa scarica come potenza negativa o come riduzione dell'importazione. Se un passaggio inverte il segno, una scarica corretta di 500 kW appare come un errore di 1.000 kW rispetto alla richiesta.

Un servizio può fissare finestra e tolleranza. Le indicazioni NESO ai fornitori dei servizi dinamici della Gran Bretagna stabiliscono questi limiti:

ServizioTempo massimo per iniziareTempo massimo per l'erogazione completaLimite superiore della rampaDati prestazionali
Dynamic Containment (DC)0,5 s1 s0,5 s20 Hz
Dynamic Moderation (DM)0,5 s1 s0,5 s20 Hz
Dynamic Regulation (DR)2 s10 s8 s20 Hz o 2 Hz

NESO valuta ogni periodo di regolazione di 30 minuti, pari a 36.000 righe a 20 Hz. Per DC e DM, un errore conta solo se persiste per una finestra mobile di 0,2 s (quattro campioni), e il peggior errore di questo tipo nel periodo determina il fattore di prestazione. Un'unità che si dichiara disponibile in meno del 99,9 % delle righe non riceve il pagamento di disponibilità per quel periodo. Righe mancanti o con timestamp errati comportano quindi un costo, oltre alla risposta stessa. Questi servizi seguono localmente la frequenza, perciò la catena di comando è breve; lo stesso registro delle fasi si applica però al valore di riferimento calcolato dal controllore locale.

Per un servizio a dispacciamento senza regole pubblicate, inserisci numeri nel contratto. Per esempio: potenza completa entro 5 s dal comando, mantenuta per 30 minuti, valutata su medie di 1 minuto entro ±3 % della richiesta, al contatore del feeder della batteria.

Le fasi di un comando

FaseEvidenzaAncora sconosciuto
AutorizzatoIl richiedente aveva il permesso secondo la regola concordataNon è stato inviato nulla
AccettatoAPI, broker o gateway hanno accettato la richiestaSe sia arrivata alla batteria
Consegnato al controlloreEMS o PCS hanno confermato la scritturaSe i limiti locali la consentano
Stato confermatoRilettura del valore di riferimento attivo e della modalitàSe la potenza lo segua
Esito misuratoIl contatore concordato mostra la risposta entro tolleranzaComportamento dopo la finestra

Ogni acknowledgement di protocollo copre un solo passaggio. HTTP 202 Accepted significa che la richiesta è stata accettata per l'elaborazione, che non è ancora completa. MQTT PUBACK conferma la ricezione di un PUBLISH a QoS 1. In MQTT 5, controlla il Reason Code: i valori pari o superiori a 0x80 indicano un rifiuto. Un PUBACK positivo dal broker conferma l'accettazione da parte di quel broker, non la ricezione da parte di un subscriber né un'azione della batteria. QoS 0 non ha acknowledgement e QoS 2 usa PUBREC, PUBREL e PUBCOMP.

Una scrittura Modbus di un registro singolo (funzione 06) restituisce l'eco della richiesta. Una scrittura di più registri (funzione 16) restituisce l'indirizzo iniziale e il numero di registri scritti. L'eco prova che il dispositivo ha elaborato il frame. Molti PCS accettano la scrittura e poi limitano o ignorano il valore perché è fuori intervallo, l'unità è in modalità locale o un'altra origine ha priorità. Rileggi il registro del valore di riferimento attivo per confermare lo stato. Su molti PCS è un registro diverso da quello del valore richiesto. Nessuno di questi acknowledgement misura la potenza della batteria.

Conservare un registro correlato

Per ogni comando registra:

  • ID del comando, risorsa destinataria e sistema richiedente;
  • valore richiesto, unità e convenzione del segno;
  • ora di emissione e scadenza;
  • ogni acknowledgement con la sua ora e il collegamento all'ID del comando;
  • valore di riferimento attivo riletto e modalità PCS;
  • stato di carica e potenza di carica e scarica consentita in quel momento;
  • potenza misurata al contatore concordato, marcata al momento della misura, non a quello dell'arrivo.

Sincronizzare gli orologi

Il registro permette la correlazione solo se ogni dispositivo usa lo stesso orologio. L'ora del comando viene dalla piattaforma, quella della scrittura dal gateway e quella del campione dal contatore. Se gli orologi differiscono di 300 ms, una risposta DC iniziata in tempo appare tardiva rispetto al limite di avvio di 0,5 s.

Su una LAN Ethernet poco carica, NTP mantiene un orologio entro circa 100 µs. Su una connessione Internet intercontinentale l'errore può raggiungere diverse decine di millisecondi e percorsi asimmetrici possono produrre 100 ms o più. Per dati a 20 Hz usa una sorgente temporale sul sito: ricevitore GNSS oppure server NTP sulla LAN del sito sincronizzato a GNSS. Marca le letture in UTC nel punto di misura. I file prestazionali NESO rifiutano le righe i cui timestamp non sono multipli esatti dell'intervallo di campionamento, pari a 50 ms a 20 Hz.

Esempio svolto

Un aggregatore chiede una scarica di 500 kW, con avvio immediato, per 30 minuti. Il contatore concordato è quello del feeder della batteria. I criteri concordati sono potenza completa entro 5 s e medie di 1 minuto entro ±3 % (15 kW). Il PCS considera positiva la scarica. Le cifre sono illustrative.

Ora (UTC)FaseEvidenza
14:00:00.210AccettatoComando c-0412, +500 kW, da applicare entro 14:00:30. L'API restituisce 202.
14:00:01.040Consegnato al controlloreIl gateway scrive il valore di riferimento con la funzione 16. L'eco arriva 25 ms più tardi.
14:00:01.310Stato confermatoRilettura: valore di riferimento attivo +500 kW, modalità remota, scarica consentita 1.000 kW
14:00:02.900Esito misuratoIl contatore del feeder supera 475 kW, il 95 % della richiesta
14:00:03.600Esito misuratoIl contatore del feeder legge 498 kW
14:02:00Esito misuratoLa media di 1 minuto dalle 14:01 alle 14:02 è 497 kW. Superato.

Nello stesso minuto l'importazione al contatore di rete è scesa di 440 kW, non 500 kW. Un refrigeratore da 55 kW si è avviato alle 14:00:40, come mostra il suo sotto-contatore, e circa 5 kW sono andati persi nel trasformatore e nei cavi. Valutata al contatore di rete senza baseline, la stessa risposta appare erogata all'88 %.

Esegui ora lo stesso comando all'11 % di stato di carica. L'eco della scrittura è identica. La rilettura mostra un valore di riferimento attivo di 300 kW e una scarica consentita di 300 kW. Il registro mostra la limitazione nella fase di conferma dello stato, con il motivo, circa 1 s dopo il comando. Senza rilettura, il deficit emerge solo al momento della regolazione.

Timeout e nuovi tentativi

Un timeout significa che l'esito è sconosciuto. La batteria potrebbe aver agito e la risposta essersi persa. Prima di ritentare, leggi il valore di riferimento attivo e la potenza misurata.

Concorda per iscritto la gestione dei comandi con il fornitore del PCS. Assegna un ID a ogni comando. Se il PCS ha un registro per ID o numero di sequenza, scrivilo insieme al valore di riferimento e rileggilo: così un comando ripetuto con lo stesso ID non ha un secondo effetto. Un nuovo comando sostituisce il precedente, prevale l'ultimo che scrive e la rilettura mostra quale comando è attivo. Annulla con un comando esplicito, di solito potenza zero o ritorno alla modalità locale, non con il silenzio. MQTT QoS 1 consegna almeno una volta. Un comando applicativo ripetuto può arrivare con DUP=0; DUP indica la ritrasmissione di un pacchetto MQTT e non identifica in modo affidabile un duplicato applicativo. Elimina i duplicati in base all'ID del comando applicativo, indipendentemente da DUP.

Non riprodurre mai un comando scaduto dopo il ripristino di una connessione. Una richiesta di scarica arrivata dieci minuti tardi è una scarica nuova, non richiesta. Applica la scadenza sul destinatario, rispetto a un orologio sincronizzato, perché solo il destinatario sa quando è arrivato il comando. Due funzioni MQTT possono consegnare un valore di riferimento obsoleto dopo la riconnessione: un messaggio retained, che il broker manda a ogni nuovo subscriber, e una sessione persistente, che trattiene messaggi QoS 1 e QoS 2 per un client disconnesso. Il Message Expiry Interval di MQTT 5 fa eliminare al broker una copia la cui consegna non è iniziata entro l'intervallo. Non ferma un messaggio che il broker ha iniziato a inviare prima della scadenza o che un gateway ha accodato da sé. Inserisci la scadenza nel payload e controllala sul gateway.

Il PCS necessita di un proprio limite per i valori di riferimento obsoleti. Molti PCS hanno un watchdog di comunicazione: se il controllore non aggiorna un registro heartbeat entro il tempo stabilito, il PCS torna a un valore di ripiego. Il modello SunSpec di controllo immediato (modello 123) assegna al limite di potenza un timeout di ripristino, WMaxLimPct_RvrtTms. Concorda il ripiego per iscritto: potenza zero, programma locale EMS oppure mantenimento dell'ultimo valore per un tempo determinato. Mantenere l'ultimo valore è l'opzione pericolosa, perché una connessione persa mantiene la scarica in corso.

Rendere visibili i vincoli

Registra con ogni comando la potenza di carica e scarica consentita dal PCS, non solo in caso di errore. Quando una batteria non può erogare, mostra il motivo che segnala: stato di carica, limite di potenza, riduzione per temperatura, allarme, modalità manutenzione o controllore di priorità superiore. Se la batteria non segnala alcun motivo, registralo come sconosciuto. Non dedurne uno.

Concorda quale controllore prevale quando programma, richiesta dell'aggregatore e limite locale non coincidono. Mantieni attive le protezioni della batteria e gli interblocchi del sito. Un gateway non deve mai aggirare un interblocco per far apparire riuscito un comando remoto.

Sequenza di prove di messa in servizio

Esegui ogni prova con il proprietario dell'apparecchiatura presente e conserva il registro delle fasi per ciascuna.

  1. Comando normale. Scarica entro i limiti. Superata se ogni fase è registrata sotto un unico ID e il contatore concordato raggiunge la richiesta entro tempo e tolleranza concordati.
  2. Comando vincolato. Richiesta superiore alla potenza di scarica consentita. Superata se la rilettura mostra il valore limitato, il registro riporta il motivo e la potenza misurata corrisponde al limite.
  3. Duplicato. Invia due volte lo stesso ID di comando. Superata se la batteria agisce una sola volta.
  4. Scadenza. Consegna un comando dopo la scadenza. Superata se il gateway lo rifiuta e registra il rifiuto e la batteria resta al valore attuale o a quello di ripiego.
  5. Perdita del collegamento. Interrompi il collegamento durante una scarica. Superata se il PCS ritorna al ripiego concordato entro il tempo del watchdog. Al ritorno del collegamento, la batteria non riprende il vecchio valore.
  6. Riavvio. Riavvia gateway o EMS durante un comando. Superata se, dopo il riavvio, il valore attivo è il ripiego o un comando non scaduto e il registro indica quale.
  7. Controllore concorrente. Override locale durante un comando remoto. Superata se l'override locale prevale e il sistema remoto registra il comando come annullato dall'override, con il motivo.

La guida al controllo locale trasforma questi casi in una matrice dei guasti per l'intero sito.

Controllo della batteria con EpiSensor

ZDR-22 è la variante per il controllo delle batterie del controller di demand response ZDR. Segue la frequenza di rete, invia un valore di riferimento variabile a una batteria o UPS tramite Modbus RTU e misura l'alimentazione in Classe 0,5S. Registra eventi ogni 20 ms con timestamp GPS. Il valore di riferimento inviato e la risposta misurata sono così riferiti allo stesso orologio e coprono le fasi di comando ed esito della tabella sopra.

Un Gateway che esegue Edge può interrogare i registri PCS, inclusi valore di riferimento attivo e potenza consentita, e i contatori del sito su Modbus. Marca ogni lettura quando il Gateway la acquisisce e ne conserva lo storico sul Gateway, quindi la perdita del collegamento alla piattaforma non crea una lacuna nel registro locale. Edge Automation viene eseguita sul Gateway e applica la scadenza alle proprie azioni temporizzate. Dopo un riavvio invia un comando di fine salvato solo fino a cinque minuti dopo la sua scadenza. In seguito non lo riproduce. Segnala il comando scaduto e chiede di controllare l'apparecchiatura.

Domande frequenti

Come verifico che una batteria abbia seguito un comando di dispacciamento?

Registra ogni fase con un unico ID comando. Annota l’acknowledgement della richiesta, l’eco della scrittura Modbus, la rilettura del valore di riferimento attivo dal PCS e la potenza misurata al contatore concordato durante la finestra concordata. Marca tutto con un orologio sincronizzato. Una chiamata API o scrittura di registro riuscita prova solo le prime fasi.

Perché la batteria non ha erogato la potenza richiesta?

Leggi i registri PCS della potenza di carica e scarica consentita e del valore di riferimento attivo al momento del comando. Se il valore attivo è inferiore alla richiesta, il PCS lo ha limitato; allarmi, modalità e stato di carica indicano di solito perché. Se il valore attivo coincide con la richiesta ma la potenza misurata no, controlla contatore, convenzione del segno e altri carichi a valle del contatore.