• Non ci sono risultati.

Ora andiamo in dettaglio a vedere come viene implementato il task main, già menzionato più volte nella descrizione dei precedenti capitoli.

Il task main è il coordinatore di tutto il sistema della SMU. I suoi compiti sono molteplici:

 gestire l’attivazione dei task che necessitano di una opportuna temporizzazione;

 impacchettare ed inviare tutte le informazioni della stringa all’interfaccia di controllo, secondo il protocollo di comunicazione già visto nel paragrafo della comunicazione CAN-bus;

 utilizzare le informazioni acquisite dalle MMU e dal sensore di corrente per stabilire lo stato in cui si trova la String Management Unit;  eseguire determinate funzioni a seconda dello stato in cui si trova la

String Management Unit;

La gestione dell’attivazione degli altri task viene compiuta risvegliandoli sequenzialmente con la specifica funzione di sistema “vTaskResume”. Una funzione di timing specifica del sistema operativo consente di dare al ciclo esecutivo del task main una periodicità molto precisa: si chiama “vTaskDelayUntil”. Essa fa in modo che tra una iterazione e la successiva intercorra esattamente lo stesso periodo di tempo.

Il task main si occupa anche della preparazione dei messaggi da inviare sul CAN-bus verso l’interfaccia di controllo. Sono state scritte delle funzioni apposite per questo scopo, che prendono i dati e l’ID del messaggio e compongono il pacchetto. Successivamente tentano di inserirlo nella queue di trasmissione dedicata al CAN-bus dell’interfaccia di controllo. Queste funzioni implementano un meccanismo di invio basato su un contatore con

il quale misurano i tentativi di inserimento dei messaggi nella coda: dopo un certo numero di tentativi falliti il messaggio non viene trasmesso.

Per la String Management Unit sono stati definiti 5 stati operativi in cui essa può ritrovarsi, a seconda delle operazioni che sta eseguendo:

 Initialization (INIT) – è il primo stato in cui viene inizializzato il sistema; in questo stato la SMU attende l’avvenuta connessione con ogni MMU della daisy chain e con il sensore di corrente; è uno stato di passaggio iniziale che ha lo scopo di aspettare che tutto il sistema sia connesso ed operativo. In questo stato lo switch di stringa è aperto. Una volta che tutte le periferiche sono on-line e rispondono correttamente il sistema passa nello stato di WAIT.

 Waiting (WAIT) – è lo stato di riposo e di attesa in cui la SMU resta quando la stringa non eroga né assorbe corrente e quando non si verifica nessuna condizione di pericolo. In questo stato lo switch di stringa è ancora aperto. Da questo stato la SMU può andare in carica o scarica se riceve un comando opportuno dall’interfaccia di controllo. Una condizione di allerta (o warning) che si dovesse verificare, viene registrata e mostrata dall’interfaccia, ma il sistema resta comunque in questo stato. Se, invece, si ha un allarme (o alarm) di tensione, temperatura o corrente la SMU entra nello stato di errore ERROR.  Error (ERROR) – lo stato di errore della stringa è uno solo ma

racchiude tutte le situazioni di allarme che si possono verificare nella batteria. In questo stato lo switch di stringa viene aperto, per salvaguardare la batteria. In questo stato la SMU non fa altro che aspettare che la situazione di errore si risolva e in tal caso la SMU torna nello stato di WAIT. Ci sono situazioni in cui si verifica un’errore di undervoltage e viene ricevuto un comando di ricarica, oppure specularmente si ha un overvoltage e ricevo un comando di scarica: in entrambi i casi, e solo essi fanno eccezione, la SMU consente il transito

nei rispettivi stati richiesti, chiudendo lo switch. Questo perché potrebbe essere l’unica soluzione per riportare tutte le celle in una condizione di sicurezza.

 Charging (CHARGE) – quando viene ricevuto dall’interfaccia un comando di charge, significa che il livello più alto del BMS (ovvero la PMU, che in questo contesto viene emulata dall’interfaccia) sta chiedendo alla stringa di connettersi per essere ricaricata; se la SMU si trova nello stato di attesa significa che è in condizioni di sicurezza e può entrare nello stato di ricarica. In questo stato lo switch di stringa viene chiuso ma la SMU non sa effettivamente se sta per ricevere una corrente entrante o uscente. Per questo motivo, quando la stringa entra in questo stato va a controllare il segno della corrente. Convenzionalmente è stata presa positiva la corrente erogata dalla batteria al carico, quindi in scarica, mentre è negativa la corrente assorbita dalla batteria in ricarica. Nello stato di CHARGE, se la corrente dopo la chiusura dello switch risulta essere positiva la SMU entra nello stato di ERROR, lo switch viene aperto e poi la SMU torna in WAIT. In questo stato l’unica condizione di allarme che viene ammessa è quella di undervoltage, perché una ricarica potrebbe essere l’unica soluzione per risolvere la situazione e riportare tutte le celle in una condizione di sicurezza.

 Discharging (DISCHARGE) – è analogo e speculare allo stato di CHARGE: se la stringa si trova in sicurezza e riceve un comando di discharge allora entra in questo stato. In DISCHARGE lo switch di stringa viene chiuso: se la corrente dopo la chiusura è negativa il sistema entra in errore. Specularmente allo stato di ricarica, l’unica condizione di allarme consentita è quella in cui si ha un overvoltage, perché una scarica potrebbe essere l’unica soluzione per risolvere la situazione e riportare tutte le celle in una condizione di sicurezza.

Per completezza si riporta in fig. 42 il grafo di transizione degli stati della SMU, con le varie condizioni di transito e le varie uscite di ogni stato.

Fig. 42 – Grafico di transizione degli stati della SMU

Lo switch di stringa viene controllato da un piccolo task indipendente ed autonomo. Esso acquisisce una variabile globale che indica se è stato richiesto un cambio di stato dello switch. In caso positivo il task fa commutare lo stato dello switch, aprendolo se era chiuso oppure viceversa. Il pilotaggio viene effettuato tramite segnale PWM, per questo lo switch è stato collegato ad una periferica che consentisse questa funzionalità. Essa è necessaria al fine di realizzare un economizer: un dispositivo che alla chiusura dello switch fornisce la tensione adeguata e costante al fine di creare una chiusura ottimale del contatto, dopodiché entra in funzione il PWM per ridurre la corrente media che scorre nella bobina.

INIT Switch aperto

READY

Switch aperto Switch aperto ERROR

CHARGE Switch chiuso DISCHARGE Switch chiuso Qualunque allarme a parte UV Nessun errore Charge

Avvio del sistema

Vai in attesa Tutto ok/UV charge Qualunque allarme a parte OV Tutto ok/OV discharge Discharge Vai in attesa Qualunque errore Tutto ok Vai in attesa

Capitolo 6

Set-up sperimentale di

verifica

La progettazione e l’implementazione in firmware di tutto il sistema di gestione della stringa richiede una validazione. Essa è stata compiuta eseguendo una serie di test mirati allo stimolo delle varie funzionalità del sistema, con il fine di raccogliere dei dati che possano confermare scientificamente l’efficacia del lavoro svolto.

Per eseguire i test è stato necessario assemblare un set-up sperimentale che consente di verificare le funzionalità sviluppate in un ambiente sicuro e capace di generare stimoli riproducibili che innescano gli algoritmi sviluppati nel software. Inoltre, esso consente di salvare tutte le quantità di interesse per la verifica delle funzionalità di ottimizzazione del sistema.

In particolare, l’emulazione dell’intero sistema batteria non è stata possibile in laboratorio, in quanto avendo tensioni molto elevate (circa 600 V) viola le norme di sicurezza a cui dobbiamo sottostare. Allo stesso tempo per consentire una corretta verifica del sistema sviluppato si è deciso di emulare una fetta in modo da verificare anche la comunicazione e gestione di due MMU. Quindi il sistema sotto test sarà costituito da una SMU che controlla due MMU.

Inoltre, prima delle prove dal sistema assemblato sulla fetta della batteria finale, si è scelto di sviluppare un set-up più sicuro per eseguire i primi test. Quindi, in questo capitolo andremo a descrivere i due set-up di test che sono stati sviluppati per la validazione della SMU del BMS per il progetto PROTONE.

6.1 Set-up con una batteria da 2,5 Ah

Per la valutazione delle varie funzionalità sono necessari due aspetti: poter cambiare velocemente i valori di tensione delle celle per verificare gli algoritmi di sicurezza e poter emulare il comportamento delle macro-celle

con delle celle con capacità minore. Quest’ultimo aspetto consente di verificare tutti gli algoritmi eseguendo test reali con potenze molto minori di quelle necessarie per caricare e scaricare la macro-cella.

Ad esempio, per verificare la funzionalità di bilanciamento e necessario utilizzare una batteria con capacità piuttosto bassa. Questo perché la resistenza di bilanciamento integrata nella MMU, è da 75 . Essa fissa una corrente di bilanciamento, che varia tra 35 e 56 mA, a seconda della tensione della cella. Dunque, a parità di SoC che vogliamo sottrarre alla cella, minore è la capacità della batteria, minore è il tempo impiegato per scaricare la cella. Per questo motivo è stato realizzato un primo set-up sperimentale con una batteria da 2,5 Ah, per testare facilmente ed in sicurezza tutte le funzionalità della SMU, in particolar modo l’algoritmo di bilanciamento automatico. La batteria è composta da 10 singole celle connesse in serie, ognuna con una capacità nominale di 2,5 Ah, visibile in fig. 43.

Fig. 43 – Immagine della batteria da 2,5 Ah

Essa costituisce una emulazione di un primo modulo della stringa ed è stata assemblata in laboratorio a partire da singole celle già utilizzate in passato. Il

secondo modulo viene replicato, invece, da un emulatore di batteria. Quest’ultimo consiste in un partitore resistivo composto da 10 resistenze in serie, tutte dello stesso valore, alimentate da una tensione Vtot generata da un

alimentatore da laboratorio. In fig. 44 è possibile vedere l’emulatore di batteria utilizzato in questo set-up.

Fig. 44 – Immagine dell’emulatore di batteria utilizzato nel primo set-up

Ai capi di ogni resistenza cadrà una tensione pari a e quindi se settiamo con un alimentatore una Vtot tale che la tensione ai capi di ogni resistenza sia

nel range di valori di tensione assunti da una cella al litio di tipo NMC otteniamo una serie di valori di tensione che la MMU può acquisire ed inviare alla SMU, emulando un modulo composto da 10 celle. L’emulatore è utile per simulare velocemente il comportamento di un BMS nei limiti operativi di una cella al litio, perché è sufficiente variare la Vtot dell’alimentatore per variare

la tensione monitorata. Il contro è che non è possibile emulare facilmente un modulo sbilanciato; inoltre le resistenze vanno dimensionate

opportunamente per far sì che un eventuale attivazione di una resistenza di bilanciamento non perturbi troppo il partitore resistivo. Nel nostro caso, il partitore è composto da resistenze da10 . In questo modo, una resistenza in parallelo da 75  perturba poco la resistenza totale equivalente. Un altro parametro essenziale da tenere in conto è la potenza dissipata: nel caso peggiore, per simulare una tensione di 4.2 V ai capi di ogni resistenza, quest’ultima dissiperà una potenza termica di 1.76 W circa. Per questo sono state scelte delle resistenze SMD da 10  con una potenza massima di 3 W: sono specificatamente progettate per resistere a temperature molto elevate, anche di qualche centinaio di gradi.

Nell’ immagine di fig. 45 è possibile vedere l’assieme della SMU connessa con le due MMU, collegati rispettivamente alla batteria e all’emulatore di modulo.

Fig. 45 – Immagine del primo set-up assemblato

Per le prove di carica e scarica che sono state eseguite, il percorso di potenza comprende soltanto il primo modulo, ovvero la batteria, mentre l’emulatore

di batteria viene utilizzato solo a scopo di acquisizione dati per la valutazione della massima frequenza di lavoro del sistema.

Dunque, al polo positivo della batteria è stato collegato un contattore per il controllo della carica e della scarica. Sul polo negativo, invece, è stato inserito il sensore di corrente. I terminali della batteria a valle della SMU sono poi stati collegati agli strumenti, per eseguire le fasi di carica e la scarica della batteria. L’MMU che monitora la batteria acquisisce anche le temperature tramite 8 NTC: 4 di essi sono stati applicati sul fianco di alcune celle, per leggerne la temperatura esterna; gli altri 4 sono stati inseriti in una camera termica. Quest’ultima consente di controllare la temperatura in un ampio intervallo e quindi è stata utilizzata per stimolare la SMU ed andare ad osservare l’evento di errore negli estremi del range di temperatura consentito. Di seguito in fig. 46 possiamo osservare uno schema a blocchi con tutti i vari elementi del set-up e come sono stati interconnessi. Inoltre, è mostrato in

fig. 47 tutto il set-up posto sopra la camera termica utilizzata, mentre.

Fig. 46 – Schema a blocchi delle interconnessioni tra i vari elementi del set-up

MMU

MMU

DAISY CHAIN UART Emulatore di batteria Batteria da 2,5 Ah A

+ -

Charger elettronicoCarico

SMU

CAN-bus Interfaccia Labview CAN-bus CAN USB USB

Fig. 47 – Immagine d’insieme del set-up e dell’interfaccia di controllo posti sopra la camera termica

6.2 Set-up con fetta della batteria

dell’imbarcazione Aurora da 21

Ah

La validazione del progetto si conclude con dei test di carica e scarica effettuati sulla “fetta” della batteria di Aurora. Il test si pone il solo obiettivo di verificare l’usabilità del sistema sviluppato su una intera fetta composta da due moduli della reale batteria di Aurora. Il set-up sperimentale assemblato ed utilizzato a tal scopo è diverso da quello descritto in precedenza, in quanto è stato eliminato l’emulatore di batteria dato che adesso entrambe le MMU del set-up vengono collegate a due moduli di batteria da 21 Ah. Ogni MMU viene anche collegata agli 8 punti di misura della temperatura, adagiati nelle apposite cavità all’interno del frame di alluminio durante la fase di strumentazione della fetta, descritta nel capitolo 3. Uno schema a blocchi,

riportato di seguito in fig. 48, esplicita tutte le connessioni tra i vari elementi del set-up.

Fig. 48 – Schema a blocchi delle varie componenti del secondo set-up sperimentale

La fig. 49 riportata di seguito è un’immagine dell’intero set-up finale, compreso di SMU collegata alle due MMU, la fetta sotto misura, il contattore ed il sensore di corrente e l’interfaccia Labview.

Fig. 49 – Il secondo set-up sperimentale con la fetta della batteria di Aurora sensorizzata

MMU

MMU

DAISY CHAIN UART Batteria da 21 Ah Batteria da 21 Ah Charger Carico elettronico

SMU

CAN-bus

+

A

-

Interfaccia Labview CAN-bus CAN USB USB

Il set-up comprende anche un alimentatore con potenza massima erogabile di 1200 W per la ricarica della fetta ed un carico elettronico per la scarica a corrente costante. Carica e scarica sono state effettuate su un solo modulo, a causa delle tensioni in gioco che, con due moduli, superano le 60 V di limite normativo per la sicurezza nel laboratorio di ricerca in cui è stato sviluppato il progetto.

Capitolo 7

Test condotti e risultati

ottenuti

7.1 Test set-up con batteria da 2,5

Ah

Di seguito verranno mostrati i risultati ottenuti con il set-up sperimentale costituito dalla batteria di 2.5 Ah e l’emulatore resistivo.

7.1.1 Test di trasmissione dati con la daisy chain per

la valutazione della massima frequenza di

acquisizione

Nel capitolo 5, in particolare nel paragrafo riguardante l’organizzazione globale della SMU, è stato esplicitato l’obiettivo di raggiungere una certa frequenza di acquisizione dati di tutta la stringa. Non essendo, però, in possesso di 16 Module Management Unit e delle relative fette da acquisire non è stato possibile testare e validare questa funzionalità in maniera diretta. Essendo in possesso di un set-up composto da due moduli possiamo, via firmware, misurare il tempo impiegato dal task di gestione dei moduli per acquisire i dati di 2 MMU. La misura viene effettuata nella maniera più veloce e semplice possibile: si usa un’uscita disponibile sulla scheda della SMU che viene attivata per il tempo in cui il task di gestione dei moduli acqusisce le informazioni dalle MMU. Con un oscilloscopio si misura la durata temporale in cui l’uscita rimane ad un liverllo logico alto e quindi si misura il tempo impiegato dal task ad acquisire i dati da due MMU. Ipotizzando una progressione lineare del tempo di acquisizione, si ottiene una buona approssimazione del tempo impiegato ad acquisire un’intera stringa di 16 moduli moltiplicando il tempo misurato per 8. In fig. 50 si può vedere il risultato di questa misura.

Fig. 50 – Immagine all’oscilloscopio del segnale in uscita dalla GPIO utilizzata

Come si può notare dall’immagine, il periodo misurato è di 12 ms che, moltiplicato per 8, restituisce una stima del tempo totale di acquisizione di 96 ms. Il sistema della SMU è già stato programmato per acquisire i dati alla frequenza di 10 Hz, ovvero ogni 100 ms. Questo test consente quindi, con una buona approssimazione, di validare l’acquisizione di una stringa da 16 MMU entro un tempo limite di 100 ms.

7.1.2 Carica e scarica per la prima verifica della SOA

e dell’algoritmo di stima del SoC

Il primo test condotto ha riguardato la verifica delle funzionalità di sicurezza essenziali per un BMS, in particolare il distacco per fuoriuscita dai range di

tensione consentito per le celle. La SMU è stata programmata con le seguenti soglie di distacco:

Warning di sovratensione: 4,1 V Warning di sottotensione: 2,7 V Allarme di sovratensione: 4,2 V Allarme di sottotensione: 2,6 V Il test effettuato comprende una prima scarica a 1 C (2,5 A), partendo da batteria pienamente carica, fino al distacco automatico della SMU per il raggiungimento della soglia di sottoscarica da parte di almeno una delle celle. Successivamente viene lasciata rilassare la batteria per 30 minuti, per consentire di ottenere una buona OCV con cui si esegue una correzione del SoC: Questa procedura serve per verificare e quantificare gli errori dell’algoritmo di Coulomb Counting implementato per il calcolo del SoC. Una volta eseguita la correzione OCV si effettua una ricarica a 0,7 C (1,75 A), fino al distacco automatico della SMU per il raggiungimento della soglia di sovratensione da parte di almeno una delle celle. Di seguito in fig. 51 si riportano due grafici che mostrano l’andamento delle tensioni delle 10 celle durante l’intero test e l’andamento della corrente di batteria.

Fig. 51 – Andamento delle tensioni delle celle della batteria insieme all’andamento della corrente

Il risultato del test evidenzia una cella, la cella 4, con un comportamento decisamente anomalo e diverso dalle altre. Sicuramente essa è più degradata delle altre celle e presenta una variazione della tensione molto più elevata delle altre a causa della resistenza serie degradata, sia in carica che in scarica. Infatti, è proprio la cella 4 che ha provocato il distacco dello switch della stringa, sia in carica che in scarica come si può notare dai grafici appena mostrati. Dunque, questo test va a validare il sistema della SMU per quanto riguarda il distacco della corrente in situazioni di over-charge e under-charge delle celle della batteria. Proseguiamo analizzando i risultati ottenuti dall’algoritmo di Coulomb Counting. Si mostrano in fig. 52 l’andamento del SoC delle celle della batteria, per evidenziare come l’algoritmo stima il SoC durante le varie fasi del test. Inoltre, la correzione OCV eseguita in mezzo al

test ci consente di osservare se l’algoritmo CC introduce un errore nella stima del SoC.

Fig. 52 – SoC delle celle della batteria in alto ed in basso il segnale logico che indica quando il sistema esegue la correzione OCV

In seguito alla correzione OCV si può notare dal grafico precedente che il SoC

Documenti correlati