UNIVERSITÀ POLITECNICA DELLE MARCHE Scuola di Dottorato di Ricerca in Scienze dell’Ingegneria Curriculum in Ingegneria Elettronica, Informatica e delle Telecomunicazioni TECNOLOGIE ZIGBEE WIRELESS SENSOR NETWORK PER IL MONITORAGGIO DELL’ENERGIA PRODOTTA DA UN CAMPO FOTOVOLTAICO DI MEDIE DIMENSIONI Relatore: Prof. Claudio Turchetti IX Ciclo - 2007/2010 Dottorando: Ing. Guido Principi Abstract - In questo documento viene mostrata un’applicazione del protocollo ZigBee per reti di sensori wireless (WSN) con lo scopo di monitorare l’energia elettrica prodotta da un campo fotovoltaico di medie dimensioni e altri parametri necessari alla manutenzione e alla diagnosi dei guasti; il controllo viene effettuato a livello di singolo modulo fotovoltaico. L’applicazione prevede che il circuito di controllo venga inserito nella stessa scatola di derivazione del modulo fotovoltaico e che venga configurata la rete wireless in maniera automatica. 2 INDICE: I. INTRODUZIONE ............................................................................................................ 4 II. LA TECNOLOGIA UTILIZZATA ......................................................................................... 4 III. IL CAMPO FOTOVOLTAICO E IL TIPO DI MONITORAGGIO ........................................... 7 IV. CARATTERISTICHE ELETTRICHE DEI MODULI FV E DEL NODO DI RETE ZIGBEE WIRELESS 9 A. CARATTERISTICHE DEI MODULI FOTOVOLTAICI ..........................................................................9 B. SCHEMA FUNZIONALE DEL CIRCUITO ........................................................................................14 C. PARTI PRINCIPALI DELLO SCHEMA ELETTRICO .............................................................................16 D. MISURE DELLA TENSIONE E DELLA CORRENTE .........................................................................25 V. IL SOFTWARE SUI NODI DI RETE WIRELESS ............................................................... 28 A. B. C. D. E. F. G. H. MISURE DELLA TENSIONE E DELLA CORRENTE .........................................................................28 I COMANDI AT E I REGSTRI S ..................................................................................................30 COMANDI PER LA GESTIONE DELLA RETE ...................................................................................32 LE MODALITÀ DI TRASMISSIONE DEI DATI...............................................................................34 GESTIONE DEGLI EVENTI ........................................................................................................37 GESTIONE DELL’ALIMENTAZIONE DEL MODULO ..........................................................................39 L’ACQUISIZIONE DEI DATI ...................................................................................................40 IL SETUP INIZIALE DAL MICROCONTROLLORE PIC18F46K20 .....................................................41 VI. IL SOFTWARE SU PC PER IL MONITORAGGIO ............................................................ 42 VII. SVILUPPI FUTURI..................................................................................................... 46 A. IL SOFTWARE SUL MICROCOCONTROLLORE PER ACQUISIZIONE E CONTROLLO DELLE VARIABILI FISICHE (I, V, T, ACCELERAZIONE XYZ, INPUT DIGITALE DA REED-SENSOR).........................................................46 B. IL SOFTWARE SUL MICROCONTROLLORE PER LA CONFIGURAZIONE E PER LA GESTIONE DELLA RETE WL. 46 C. IL SOFTWARE APPLICATIVO (SU PC) PER LA CONFIGURAZIONE TOPOGRAFICA DELLA RETE ASSOCIANDO MACADDRESS ALLA POSIZIONE DEL MODULO ALL’INTERNO DEL CAMPO FV ............................................47 D. IL SOFTWARE APPLICATIVO PER LA VISUALIZZAZIONE DEI DATI SIA IN LOCALE CHE IN REMOTO E PER LA SEGNALAZIONE DI ANOMALIE. ........................................................................................................48 E. INTEGRAZIONE CON SISTEMI SCADA REMOTI (SUPERVISORY CONTROL AND DATA ACQUISITION). .....50 F. CONTROLLO ATTIVO SULLA TENSIONE DI STRINGA PER DIMINUIRE LE PERDITE DI RENDIMENTO IN CASO DI OMBREGGIAMENTO DEI MODULI ....................................................................................................51 VIII. CONCLUSIONI ......................................................................................................... 52 IX. RIFERIMENTI BIBLIOGRAFICI ................................................................................... 52 3 I. INTRODUZIONE Il monitoraggio e il controllo dell’energia prodotta da un impianto fotovoltaico è di fondamentale importanza in quanto l’energia prodotta influisce direttamente sul flusso di cassa da cui deriva la convenienza economica o meno dell’investimento effettuato sull’impianto. Ad oggi sono particolarmente diffusi i sistemi di controllo di energia effettuati a livello del convertitore cc/ca che quindi prendono in considerazione una o più stringhe e cioè un numero generalmente elevato di moduli FV; in questo modo è possibile vedere se l’impianto sta producendo energia in modo efficiente, ma non è possibile individuare le cause di una eventuale inefficienza dovuta ai singoli moduli. Le cause di malfunzionamento potrebbero essere svariate: sporcizia sulla superficie, ombreggiamento, guasto elettrico, danneggiamento o addirittura furto, e naturalmente l’inefficienza può riguardare uno o più moduli. Mentre oggi, i sistemi comunemente utilizzati negli impianti fotovoltaici acquisiscono i dati di produzione dell’energia elettrica a valle dell’inverter, e cioè considerano l’energia prodotta dall’intera stringa di moduli, il sistema di acquisizione dati proposto in questo documento, prende i dati dal singolo modulo attraverso i sensori posti all’interno di ogni scatola di derivazione. Il software per l’analisi dei dati acquisiti è l’intelligenza aggiunta al sistema di monitoraggio ed individua le cause di malfunzionamento distinguendo le situazioni anomale da quelle normali: ad esempio, una mancata produzione di energia può essere dovuta sia ad un guasto elettrico sia all’assenza di radiazione solare nella fase notturna: il confronto fra il singolo modulo e tutti gli altri individua se si tratta di una situazione normale o anomala. II. LA TECNOLOGIA UTILIZZATA La tecnologia utilizzata fa riferimento alle reti di sensori wireless con protocollo ZigBee [3]. Una WSN (Wireless Sensor Network ) ha due funzioni principali: misurazione e comunicazione; ogni sensore che effettua la misura funziona come un nodo all’interno della topologia di rete e comunica con altri nodi della stessa rete; poiché i dispositivi comunicano in modalità wireless, non è richiesto nessun cablaggio. Un sensore, per entrare a far parte della rete, si unisce ad un nodo che fa già parte della rete stessa se rientra nel suo raggio di comunicazione wireless. In un impianto fotovoltaico di medie dimensioni, ovvero con alcune migliaia di moduli, ad ogni modulo è associato un sensore per misurare principalmente l’energia prodotta, ed evitare il costo del cablaggio è molto importante. Come si vede dalla Tab.A, lo Standard ZigBee definisce il campo di applicazione di una W-PAN (Wireless-Personal Area Network) come una rete estesa in un’area abbastanza limitata e con una bassa velocità di trasmissione dei dati. IEEE 802.15.4 Standard Co-existence Features: Complementary Channel Mapping Direct Sequence Spread Spectrum (DSSS) Frequency Division Multiple Access (FDMA) Low Data Rate (250Kbs) Carrier Sense Multiple Access (CSMA) Ultra low-power digital radios based Long battery life with low latency available Ability to remain quiescent for long periods without communications License-free frequency band. 2.4 GHz 4 Additional ZigBee Co-existence Features: Network Formation Procedures – (Self-organizing and Self-healing dynamic mesh) Secure networking (Autentication and public key cryptography) Mesh Networking and Path Diversity Network-Layer Frequency Agility End-to-End Acknowledgement and Retransmission Tab.A – Caratteristiche dello standard IEEE 802.15.4 e caratteristiche aggiuntive ZigBee per WSN Una rete di piccole dimensioni può essere facilmente configurata e possono essere teoricamente gestiti fino a sessantacinquemila dispositivi. La rete è tipicamente configurata con una topologia a stella, a maglia o ad albero. I dispositivi sono classificati in due tipi principali a seconda delle funzioni supportate (vedi Fig.1): un tipo di dispositivo con funzionalità ridotte (RFD - Reduced Function Device o ZED – ZigBee End Device), semplicemente trasmette e riceve dati; un dispositivo con funzionalità completa (FFD – Full Function Device o ZR – ZigBee Router), oltre a trasmettere e a ricevere dati, interconnette la rete con funzionalità di router. Al momento della formazione della rete, uno dei router assume la funzione di coordinatore di rete (COO – Coordinator o ZC – ZigBee Coordinator). La principale differenza fra i due tipi è che un FFD assumendosi la responsabilità del routing deve stare continuamente attivo (awake) mentre un RFD può passare molto del suo tempo disattivato ( Asleep), attivandosi solo all’occorrenza di dover trasmettere dei dati, o da solo o facendosi attivare da un interrupt esterno. I dispositivi finali (RFD o ZED) possono essere ulteriormente classificati come Sleepy (SED) o Mobili (MED) per differenziare la situazione in cui sono non raggiungibili perché inattivi o perché, essendo mobili, sono momentaneamente fuori portata radio. La sensibilità radio può essere cambiata a seconda dell'ambiente circostante i dispositivi. Altre caratteristiche coesistenti fra i due protocolli di rete IEEE 802.15.4 e ZigBee sono elencate in Tab. A. Fig.1: Tipi di dispositivi in una rete ZigBee; ZED in sleep mode. I sensori, nodi della rete, sono alimentati da batterie al Ni-Ca ricaricabili dal modulo fotovoltaico stesso; per aumentarne la durata delle batterie si diminuisce la dissipazione di energia mettendo il dispositivo in stand-by (sleepy) e si riattivano (to wake-up) solo quando è il momento di 5 effettuare la misura e di trasmetterla. I router, che devono occuparsi della gestione della rete devono rimanere sempre attivi, e quindi non possono perdere l’alimentazione; per questo il loro consumo di energia è maggiore. Fig.2: esempio di disposizione dei router con portata di circa 30m in un campo FV di 100m x 50m In ogni caso, per la copertura di un campo fotovoltaico (FV) servono teoricamente pochi router: come evidenziato nella fig.2 una superficie di 5000mq con circa 1000 moduli con portata radio di circa 30m, viene coperta con 7 router. Un dispositivo trasmette i dati al PC attraverso una comunicazione WireLess; il nodo vicino al PC è connesso con una semplice porta seriale USB. Il PC funziona come stazione base che controlla e gestisce la rete. Se un dispositivo remoto è situato al di fuori della portata radio del nodo sul PC, il suo segnale è interconnesso con altri dispositivi e comunque raggiunge il PC. I dati provenienti dai nodi remoti vengono raccolti dal nodo locale dedicato a questa funzione chiamato Data Sink (Fig.3). Fig.3: come viene gestita la rete tramite USB da PC 6 III. IL CAMPO FOTOVOLTAICO E IL TIPO DI MONITORAGGIO Nei pannelli solari viene sfruttato l’effetto fotovoltaico per la produzione di energia elettrica: l’effetto fotovoltaico si realizza quando un elettrone presente nella banda di valenza di un materiale semiconduttore passa nella banda di conduzione a causa dell’assorbimento di un fotone incidente sul materiale (Fig.4); tale energia viene fornita dalla radiazione luminosa. Il campo o generatore fotovoltaico (Fig.5) è costituito da centinaia o migliaia di moduli fotovoltaici raggruppati in configurazioni serie/parallelo/serie a partire dalla singola cella fino a formare un considerevole numero di stringhe per ottenere la potenza voluta; a valle di queste stringhe la tensione e la corrente continua generata viene convertita in tensione e corrente alternata da uno o più convertitori statici c.c./c.a. (inverter) per essere immessa nella rete elettrica. Fig.4 Effetto fotovoltaico Fig.5 Il generatore fotovoltaico 7 Di norma, il controllo della quantità di energia prodotta, e in generale il monitoraggio, viene effettuato con i data-logger presenti sugli inverter. Questo sistema risulta insufficiente a determinare le cause di eventuali malfunzionamenti e anomalie che si verifichino sui singoli moduli, ma fornisce solo la quantità di energia prodotta dall’intera parte del campo fotovoltaico (Fig. 5bis) Fig.5bis Monitoraggio a livello di inverter Il sistema da noi realizzato permette il monitoraggio ad un livello di dettaglio maggiore, di tutti i parametri del singolo modulo (Fig.5ter): in tal modo il sistema è più efficace perché permette di verificare la produzione di energia, di diagnosticare eventuali guasti o malfunzionamenti e furti, di registrare interventi di manutenzione o eventi particolari relativi al singolo modulo; in particolare la diagnosi a distanza a questo livello di dettaglio semplifica notevolmente la manutenzione riducendone costi e tempi di intervento. Per ogni modulo è possibile rilevare: - le grandezze elettriche tensione e corrente e quindi da queste calcolare la potenza e l’energia prodotta - la temperatura e di conseguenza intraprendere azioni correttive per diminuirla - l’accelerazione nelle tre direzioni x-y-z e quindi capire se si tratta dell’azione del vento o di un furto e quindi agire di conseguenza, ad esempio per pannelli orientabili, allinearli secondo la direzione del vento, o in caso di furto inviare un messaggio al servizio di sicurezza - inoltre, ogni modulo risulta codificato sia dal MAC address del nodo di rete che da un nome mnemonico in codice che gli viene attribuito in fase di configurazione della rete stessa (ad es. “numero di stringa-numero di modulo”), permettendo così anche un controllo visivo sull’intera disposizione geometrica del campo FV. 8 Fig.5ter Monitoraggio a livello di modulo Le terminazioni elettriche del modulo sono contenute nella scatola di giunzione (fig.6) posta sul retro. L’uscita dei cavi di collegamento dalla cassetta di derivazione avviene tramite due pressacavi a tenuta stagna forniti di serie con i moduli. La connessione elettrica ai morsetti del modulo deve essere eseguita a perfetta regola d’arte impiegando terminazioni ad occhiello o a forcella con portata elettrica e caratteristiche dei materiali adeguate ai morsetti installati nelle scatole. Nel nostro caso, la normale scatola di giunzione del modulo che contiene semplicemente uno o più diodi di protezione e di bypass, viene integrata o sostituita con il nodo di rete wireless da noi realizzato. Fig.6 Sostituzione della scatola di giunzione del modulo fotovoltaico con il nodo wireless zigbee IV. CARATTERISTICHE ELETTRICHE DEI MODULI FV E DEL NODO DI RETE ZIGBEE WIRELESS A. Caratteristiche dei moduli fotovoltaici Una cella fotovoltaica [4] si può considerare come un generatore di corrente come nel circuito equivalente di Fig.7. La corrente ai terminali d’uscita I e pari alla corrente generata per effetto fotovoltaico Ig dal generatore ideale di corrente, diminuita della corrente di diodo Id e della corrente di dispersione Il. 9 La resistenza serie Rs rappresenta la resistenza interna al flusso di corrente generata e dipende dallo spessore della giunzione P-N, dalle impurità presenti e dalle resistenze di contatto. La conduttanza di dispersione Gl tiene conto della corrente verso terra nel normale funzionamento. In una cella ideale si avrebbe Rs=0 e Gl=0. In una cella al silicio di alta qualità si hanno invece una Rs=0.05÷0.10 • ed una Gl=3÷5mS. L’efficienza di conversione della cella fotovoltaica risente molto anche di una piccola variazione di Rs, mentre è molto meno influenzata da una variazione di Gl. La tensione a vuoto Voc si presenta quando il carico non assorbe corrente (I=0) ed e data dalla relazione: Voc = Il / Gl La corrente di diodo e fornita dalla classica espressione della corrente diretta dipendente da: ID = corrente di saturazione del diodo, Q = carica dell’elettrone, A = fattore di identità del diodo, k = costante di Boltzmann, T= temperatura assoluta in gradi °K. La corrente erogata al carico e quindi data dall’espressione: I = Ig - Id - Il = Ig - Id – GlVoc La corrente di saturazione del diodo può pertanto essere determinata sperimentalmente applicando la tensione a vuoto Voc in una cella non illuminata e misurando la corrente all’interno della cella. Fig.7 Circuito equivalente di una cella fotovoltaica Fig.8 Caratteristica Tensione-Corrente di una cella fotovoltaica Come si vede dalla caratteristica tensione-corrente di Fig.8, in condizioni di corto circuito la corrente generata e massima (Isc), mentre in condizioni di circuito aperto e massima la tensione (Voc). 10 Nelle due condizioni precedenti la potenza elettrica prodotta dalla cella e nulla, mentre in tutte le altre condizioni, all’aumentare della tensione aumenta la potenza prodotta, raggiungendo dapprima il punto di massima potenza (Pm) e poi diminuendo repentinamente in prossimità della tensione a vuoto. Pertanto i dati caratteristici di una cella solare si riassumono in: • • • • • • Isc corrente di corto circuito; Voc tensione a vuoto; Pm potenza massima prodotta in condizioni standard (STC); Im corrente prodotta nel punto di massima potenza; Vm tensione nel punto di massima potenza; FF fattore di forma: è un parametro che determina la forma della curva caratteristica V-I ed e il rapporto tra la potenza massima ed il prodotto (Voc x Isc ) della tensione a vuoto per la corrente di corto circuito. In generale un modulo viene formato da tante celle collegate fra di loro con opportune combinazioni in serie e parallelo formando una caratteristica totale tensione-corrente della stessa forma (somma delle correnti nel parallelo, somma delle tensioni nella serie). In generale la caratteristica è funzione di tre variabili fondamentali: intensità della radiazione solare, temperatura e area della cella. Nel grafico di Fig.9 si nota come all’aumentare della radiazione solare si ha l’effetto dell’innalzamento della corrente restando sostanzialmente inalterata la tensione Voc, con conseguente incremento della potenza erogata. Fig.9 All’aumentare della radiazione solare aumenta la corrente e quindi la potenza prodotta. 11 Fig.10 All’aumentare della temperatura diminuisce la tensione e quindi la potenza prodotta Contrariamente al caso precedente all’aumentare della temperatura dei moduli fotovoltaici, la corrente prodotta resta praticamente invariata, mentre decresce la tensione e con essa si ha una riduzione delle prestazioni dei moduli in termini di potenza elettrica prodotta (Fig.10) Come in ogni diodo in cui un aumento di temperatura provoca una diminuzione di tensione inversa, anche nei moduli FV, la variazione della tensione a vuoto Voc rispetto alle condizioni standard (T=25°C) è in genere -2.2 mV/°C/cella. Al fine di evitare quindi un’eccessiva riduzione delle prestazioni è opportuno tenere sotto controllo la temperatura in esercizio cercando di dare ai pannelli una buona ventilazione. La riduzione di rendimento con l’aumento della temperatura è stimabile in 0.4-0.6 per °C. L’architettura di un impianto fotovoltaico fa si che i singoli moduli siano collegati in serie per formare le stringhe e a sua volta più stringhe sono collegate in parallelo; naturalmente anche le caratteristiche elettriche si sommano secondo le tensioni (in serie) e secondo le correnti (in parallelo) come nella Fig.11: Fig.11 Serie (stringa) e parallelo di moduli in generale, alla fine di un parallelo di stringhe, progettato in modo da ottenere le opportune tensioni e correnti, viene collegato un inverter per convertire le grandezze continue in grandezze alternate con lo scopo di immettersi nella rete elettrica; un impianto FV multi-inverter si presenta come in Fig.12 dove L1, L2, L3, N stanno a significare un impianto trifase formato dalle tre linee più neutro. 12 Fig.12 Generico impianto multi-inverter Considerata l’area occupata dai moduli di un impianto fotovoltaico, può accadere che alcuni di essi vengano ombreggiati da alberi, foglie che si depositano, camini, nuvole o da altri pannelli fotovoltaici installati nelle vicinanze. In caso di ombreggiamento il modulo si comporta come un diodo che blocca la corrente prodotta dagli altri moduli collegati in serie con la conseguente compromissione di tutta la produzione della stringa. Inoltre il modulo è soggetto alla tensione degli altri moduli e può provocarsi un surriscaldamento localizzato (hot spot) con conseguenti danneggiamenti e perdite di rendimento. Per evitare che un modulo ombreggiato vanifichi la produzione di un’intera stringa, si inserisce in parallelo un diodo di “by-pass” che cortocircuita il modulo in ombra o danneggiato; così facendo se ne garantisce il funzionamento pur con un’efficienza ridotta. Fig.13 Diodi di “by-pass” e di “blocco” 13 Il diodo di protezione in serie alla stringa, detto di “blocco”, serve per impedire la circolazione di correnti in senso inverso che potrebbero verificarsi per dissimmetrie (mismatching) di potenziale fra le stringhe Fig.13. Un esempio tipico delle caratteristiche dei moduli fotovoltaici è riportato in Tab.B Tab. B Esempio di caratteristiche dei moduli fotovoltaici B. Schema funzionale del circuito Il circuito progettato nasce come proposta per i costruttori/assemblatori di moduli fotovoltaici e sostituisce praticamente la scatola di giunzione che contiene il diodo di by-pass; nella Fig.14 è rappresentata la modalità di connessione del nodo di rete WL al modulo FV incluso il diodo di bypass D10 e la resistenza in serie R33 di basso valore per la misura della corrente. In Fig.15 è mostrata la connessione di più moduli FV in serie per costituire le stringhe. Fig. 14 Connessione del nodo di rete WL al modulo FV con la resistenza di shunt per la misura di corrente Il circuito, oltre a fornire la misura della corrente e della tensione, e quindi l’energia prodotta in Kwh, rende disponibili anche altri parametri grazie all’inserimento dei seguenti componenti: un 14 sensore di temperatura per monitorare la temperatura di funzionamento del modulo, un accelerometro per monitorare il vento e gli eventuali furti dei moduli, due sensori reed switch attivabili da un campo magnetico da utilizzare come input per configurare geometricamente la rete, ossia per associare l’indirizzo fisico di rete (MAC-address) alla posizione geometrica del nodo nella rete con un codice mnemonico (es. num.stringa/num.modulo). Il circuito stampato, di cui è riportato lo schema a blocchi nella fig. 16, è stato previsto per essere utilizzato in varie modalità a seconda dei componenti montati: • L’opzione più importante riguarda l’uso alternativo dei moduli Rx/Tx ETRX2 di Telegesis [1] e CYRF7946 di Cypress Semiconductor: il primo oltre al normale protocollo 802.15.4 contiene anche lo stack ZigBee per la gestione della rete; il secondo ha un costo notevolmente inferiore. • La seconda opzione riguarda il tipo di alimentazione del circuito: 1. Per una prima funzione di base del monitoraggio delle sole grandezze tensione e corrente, è sufficiente prendere l’alimentazione dal modulo FV senza l’ausilio di batterie; in tal caso il nodo sarà alimentato e si potrà connettere alla rete solo durante le ore diurne in presenza di radiazione luminosa; una eventuale inefficienza di funzionamento viene rilevata dall’andamento delle 2 grandezze, ma un eventuale furto o anomalia totale del modulo sarà deducibile solo durante le ore diurne per l’assenza della comunicazione; 2. Per una funzione accessoria che rilevi il furto anche in assenza di funzionamento del modulo sarà necessario l’ausilio delle batterie (al litio per avere una durata di 6-10 anni) di adeguata capacità e adatte al contenitore previsto per il circuito. 3. I nodi tipo FFD (router), dovendo garantire la connessione della rete, sono i più critici, specie per quanto riguarda l’alimentazione, ma essendo in numero molto ridotto (vedi Fig.1), si potrebbe pensare di incrementarne l’autonomia con una linea cablata di alimentazione di circa 7V con 2A (in bassa tensione per il rispetto delle normative). • La terza opzione riguarda l’uso o meno del microcontrollore PiC18F46K20: infatti il modulo Rx/Tx ETRX2 di Telegesis consente solo due ingressi analogici (corrente e tensione); nel caso si vogliano misurare anche temperatura, accelerazioni secondo i tre assi x-y-z o altre grandezze fisiche sarà necessario l’uso di tale microcontrollore che dovrà comunicare con il modulo Rx/Tx attraverso la connessione seriale. In tal caso sarà possibile anche una gestione più complessa del software, come ad esempio la configurazione geometrica dei moduli FV e la loro gestione attiva in caso di moduli orientabili nella direzione della massima radiazione luminosa. Le opzioni scelte per la nostra sperimentazione sono state: presenza di batterie ricaricabili, uso del modulo Rx/Tx ETRX2 di Telegesis. 15 Fig.15 Connessione del nodo di rete WL al modulo FV e connessione di più moduli FV in serie Fig.16 Schema a blocchi del circuito C. Parti principali dello schema elettrico Si riporta in Fig.17 una parte del circuito dove si possono notare il diodo di by-pass D10 da 6A, la bassa resistenza di shunt R33 di 0.12 Ohm 4W per la misura di corrente e il modulo Rx/Tx ETRX2 di Telegesis con i due input analogici di tensione V e corrente I; in questo caso le due grandezze analogiche vanno direttamente nei due ingressi A/D1 e A/D2 dell’ETRX2 e sono scollegate le connessioni AN1 e AN2 che invece sono utilizzabili per il collegamento al 16 microcontrollore PIC18F46K20 che a sua volta invia e riceve dati al trasmettitore attraverso le connessioni seriali ETR-RX ed ETR-TX. La resistenza di Pull-Up Rp di 5,6KOhm è stata inserita per creare un offset di circa 600mV (a metà della lettura del convertitore AD2 - 1200mV/2) per poter misurare correnti negative, come si hanno nella situazione normale di modulo FV attivo; in tal modo sono state evitate le complicazioni di un circuito ad alimentazione bipolare. Basta aumentare l’offset (ad esempio con una Rp=1KOhm) per leggere correnti fino a 12A (1200mV) Quindi la corrente si ottiene per differenza fra il valore in assenza di carico della corrente (600mV) e il valore letto sull’ingresso A/D2 dell’ ETRX2. Nella parte alta del circuito si nota l’uso del convertitore di tensione step-down cc/cc LM5009 per prendere l’alimentazione direttamente dal modulo FV; praticamente viene convertita la tensione fornita dal modulo nel campo di lavoro variabile 9-90V fino a 7V, tensione scelta per poter caricare direttamente le batterie al litio a lunga durata; la necessità di avere una alimentazione sempre attiva, anche nelle ore notturne, o comunque nei casi di inattività dei moduli fotovoltaici, è richiesta qualora il sistema debba funzionare anche da antifurto. Fig.17 Parte di circuito comprendente convertitore di tensione step-down cv/cv LM5009, il diodo D10 di by-pass, la resistenza di shunt R33 per la misura di corrente e il modulo Rx/Tx ETRX2 di Telegesis con i due input analogici di tensione V e corrente I. Come si vede nello schema a blocchi di Fig.16, è stato previsto l’uso di un microcontrollore PIC18F46K20 per permettere una maggiore programmabilità e una maggiore flessibilità nell’uso del circuito, ad esempio per superare la lunghezza del buffer di input di 128 byte, o nel caso di un controllo attivo sul nodo. Nella nostra applicazione è stato usato il microcontrollore per risolvere un’anomalia di funzionamento dell’ETRX2 durante il collaudo del circuito: infatti nel caso di valore zero della corrente, cioè assenza di carico sul nodo, il setup per la connessione con gli altri nodi non si verificava e il 17 nodo non entrava a far parte della rete, questo perché veniva riattivato continuamente il bootloader come evidenziato in una nota nel manuale dell’ETRX2; per risolvere il problema abbiamo dovuto forzare un valore > 0 sull’ingresso A/D2 tramite il microcontrollore. Il modulo ETRX2 (Fig.18) di Telegesis è un ricetrasmettitore 2.4GHz a bassa potenza e a basso consumo, basato sul single chip Ember EM250 [2] con protocollo ZigBee/IEEE802.15.4. E’ stato progettato per essere integrato in ogni dispositivo senza la necessità di progettare la parte a RF. Utilizza la tecnologia di rete di EmberZNet; ha in particolare le seguenti caratteristiche: Fig.18 Modulo ETRX2: confronto per dimensioni reali. • • • • • • • • • • • • • Piccole dimensioni: 37.75 x 20.45mm Connessione board-to-board Antenna ceramica integrata 128k flash memory e 5kbytes di SRAM Interfaccia UART con DMA Range di tensione di alimentazione (da 2.1 a 3.6V) Funziona come End Device, Router o Coordinator 12 linee di I/O e 2 input analogici Supporta 4 differenti modi di funzionamento per aumentare la durata delle batterie Consumo di corrente inferiore a1uA in sleep mode con auto wakeup Upgrade del firmware via RS232 o over the air (con password) Hardware encryption (AES-128) Temperature di funzionamento: -40°C to +85°C . 18 Fig.19 Parte di circuito comprendente il microcontrollore PIC18F46K20. Come si vede nella Fig.17, qualora si utilizzi il microcontrollore per gestire gli input, i due valori analogici di corrente e tensione vanno collegati sugli ingressi AN1 e AN2 tramite le due resistenze R3 ed R6, naturalmente andranno scollegate le due resistenze R1 ed R2 che attualmente collegano l’ETRX2. Il colloquio tra microcontrollore e il ricetrasmettitore ETRX2 avviene tramite comunicazione seriale UART con le connessioni ETR-RX ed ETR-TX. Da notare inoltre: • N. 2 LED utilizzati per un primo controllo di funzionamento del circuito • N. 2 sensori reed utilizzati in input con interrupt per configurare la rete, cioè qualora si voglia associare un nome (es. A1, A2… posizione geometrica del modulo FV nel campo) al MAC address del nodo di rete. • Oscillatore al quarzo esterno al microcontrollore, da utilizzare nel caso in cui non sia sufficiente quello interno qualora venisse richiesta una variazione di frequenza < del 10% ; in particolare se fosse necessario attivare la comunicazione col Transceiver CYRF7936 in modalità SPI ad alta frequenza (si veda nel paragrafo successivo). 19 Fig.20 Parte di circuito comprendente il radio transceiver CYRF7936. Nel circuito stampato è stato previsto l’utilizzo del radio transceiver CYPRESS-CYRF7936 2.4 GHz Direct Sequence Spread Spectrum (DSSS) con protocollo 802.15.4 (Fig.20). Questo circuito è molto meno costoso del Telegesis-ETRX2 in quanto non dispone dello stack Zigbee ma ovviamente può cominciare a diventare conveniente per produzioni di grandi quantità per le quali si può pensare di realizzare in proprio il software di gestione e autoconfigurazione della rete. E’ pilotabile da microcontrollore in modalità SPI (Serial Peripheral Interface Bus) attraverso i 4 pin SS (Slave Select), SCK (Serial Clock), MOSI (Master Output), MISO (Master Input). In caso venga utilizzato questo modulo, si dovrà provvedere anche al calcolo dei parametri dell’antenna prevista nel pin P1. 20 Fig.21 Alimentazione del circuito da modulo FV e da batteria con circuito di ricarica. Il sistema prevede un’ alimentazione tramite il modulo fotovoltaico di cui si va ad effettuare l’acquisizione dati e nel caso in cui il modulo non fornisca alimentazione, come ad esempio nelle ore notturne, è previsto l’uso di batterie ricaricabili al litio; nel circuito di fig.21 il circuito composto dai due transistori Q2 e Q3comandato dal piedino RC0 del microcontrollore serve a ricaricare la batteria quando RE0 scende sotto la soglia minima di tensione che evidenzia batteria scarica. Alimentazione è stabilizzata al valore di 3,3V con lo stabilizzatore di tensione Low Drop Out (a bassa caduta tra ingresso e uscita) LP2951; a seconda dell’assorbimento di corrente reale dei circuiti a valle è stato previsto il montaggio nel circuito stampato alternativamente o dell’integrato S08 o del TO-252. Le batterie al litio possono avere una durata tra 5 e 10 anni. Nella Fig.22 vengono evidenziati due circuiti di supporto al microcontrollore già previsti nel circuito stampato, ma non utilizzati: il partitore di tensione è stato previsto nel caso in cui si scelga di inviare gli ingressi analogici al microcontrollore; serve per regolare la tensione di riferimento nel caso serva una maggiore risoluzione nella misura delle grandezze analogiche. 21 Il clock calendar è stato previsto per memorizzare e segnalare eventi nella rete (es. furto); in tal caso si inviano i dati comprensivi di data/ora; va inizializzato in fase di configurazione iniziale della rete. Fig.22 Parte di circuito comprendente il partitore di tensione e il Clock Calendar. Fig.23 Accelerometro xyz. 22 Fig.24 Sensore di temperatura. In Fig.23 è rappresentato l’accelerometro 3Assi xyz: l’uscita OG-DETECT che va in RB4 serve a svegliare il microcontrollore con interrupt nel caso di movimento; tale movimento andrà analizzato via software per decidere se la causa sarà il vento o una manomissione per un furto del modulo FV. Nel caso di impianti orientabili secondo la radiazione solare per diminuire l’effetto del vento si potrebbe decidere di orientare il pannello secondo la direzione di minima resistenza, nel caso di furto si potrebbero inviare informazioni al server per gestire la sicurezza dell’impianto. In Fig.24 è rappresentato il circuito del sensore di temperatura MCP9700 ottimizzato per ADC con 10.0 mV/°C, Accuracy ±2°C da 0°C a +70°C, 4°C/+6°C Accuracy da -40°C a +150°C. Monitorare la temperature di funzionamento del modulo FV è importante in quanto l’efficienza di conversione dei moduli diminuisca con l’aumentare della temperatura, quindi in certi casi può essere necessario prendere opportuni provvedimenti per diminuirla. Fig.25 Buzzer. In Fig.25 il circuito del buzzer (cicalino) per dare segnalazioni acustiche da microcontrollore in RC2; è stato previsto nel caso di input da reed-sensor per la configurazione geometrica della rete. (vedi nel capitolo degli sviluppi futuri) 4 23 Fig.26 Connettore per interfaccia con microcontrollore. In Fig.26 la piedinatura del circuito di interfaccia per programmare il microcontrollore da PC tramite interfaccia USB (COM) con connettore ICD-2 per il picstart kit 2. Nella Fig.27 in alto i Gerber del circuito, al centro i circuiti stampati, in basso foto del circuito montato e la serigrafia. In questa si notano le parti di circuito in cui sono state previste funzioni aggiuntive personalizzabili per esigenze future; 24 Fig.27 In alto i Gerber del circuito, al centro i circuiti stampati, in basso foto del circuito montato e serigrafia si elencano alcuni componenti: 1- Transceiver ETRX2 Telegesis 2- Antenna 3- Microcontroller PIC18F46K20 4- Bypass Diode 5- 0.12 Ohm 4W Resistor to measure current 6- Reed Sensor 7- LED to signal the network connection and other functions 8- I/O PIC uC interface 9- Buzzer 10- LP2951 Micropower Voltage Regulators 11- 150 mA, 100V Step-Down Switching Regulator 12- Quartz 8MHz for uC D. Misure della tensione e della corrente Come si può osservare dalla Tab. B sulle caratteristiche elettriche di un modulo FV, i valori nominali delle tensioni sono dell’ordine di alcune decine di Volt e le correnti sono dell’ordine 25 di alcuni Ampére , ad esempio: per un modulo con Pm=200W, Vpm = 55.8V e Ipm=3.59°; a vuoto la tensione sale a Voc=68.7V e in corto circuito la corrente sale a Isc=3.83A. Il WSN è stato progettato per i valori di tensione da 9 a 81V e per valori di corrente da 20mA (corrente assorbita a vuoto dal circuito) a 7A misurati con un carico di 42 Ohm. Nella Tab.C seguente è stata espressa la corrispondenza tra i valori analogici di tensione e corrente e i corrispondenti valori esadecimali presenti nei registri (S12 ed S13) dell’ETRX2 in seguito alla conversione A/D; è stata inserita anche la colonna dei corrispondenti valori decimali. Per il collaudo del circuito e per la composizione della Tab.C è stato utilizzato un alimentatore stabilizzato da 0 a 30 V; i valori superiori sono stati ottenuti per interpolazione lineare. Come si vede dallo schema la tensione viene condizionata dal partitore R14(220K)-R15(3.3K) ottenendo dei valori analogici di tensione da 0 a 1200mV sull’ingresso A/D1: al valore di 1200mV corrispondono 81V come limite superiore; il limite inferiore è determinato dai 9V necessari al funzionamento del convertitore Step-Down necessario ad ottenere la tensione di alimentazione del circuito. Il valore della corrente teoricamente misurabile attraverso la Resistenza di shunt R33 (0.12Ohm) arriva fino a 10 A (infatti VR33= 10x0.12= 1200mV). Nella R33 il valore di corrente in funzionamento normale del modulo FV (come generatore di corrente) è contrario al verso del diodo di bypass D10 ed ha un verso negativo rispetto al circuito di misura; per questo motivo è stata aggiunta la resistenza di Pull-Up Rp di 4,7KOhm per creare un offset che permettesse di leggere valori nel range 0-1200. I valori della corrente in funzionamento normale (come generatore) del modulo ricadono quindi nel range numerico tra 0 e 590 mentre i valori maggiori di 590 sono stati riservati al funzionamento anomalo quando il modulo costituisce un carico per gli altri moduli in parallelo. Nella tabella viene evidenziata la situazione a vuoto, cioè senza carico, a corrente di uscita nulla corrisponde il valore di offset 590. Con corrente misurata nulla praticamente c’è solo la corrente di 20 mA assorbita dal circuito Si notino che ai valori crescenti (in negativo) della corrente da 0 a 7126mA in realtà corrispondono valori numerici decrescenti da 590 a 0; Praticamente l’offset si trova a metà strada dei valori misurabili (0-1200) permettendo di misurare valori di corrente sia negativi (come generatore: 0-590) che positivi (come carico: 5901200) V [V] y 10 15 20 25 30 A/D1 [mV] x 136 208 292 357 431 V hex S12 0088 00D0 011A 0165 01AF TAB. C Corrispondenza fra la tensione generata dal modulo e il valore presente nel registro S12 dell’ETRX2 Dalle misure effettuate, vista la sostanziale linearità del sensore di tensione, si può calcolare la retta di regressione lineare che risulta: y = 0.067·x + 0.75 dove x è il valore decimale in mV e y è il valore della tensione in V; ad esempio ponendo x al valore massimo ammissibile nel registro S12 pari a 1200mV risulta che il massimo valore misurabile è 81,85 Volts 26 I [mA] 0 -290 -392 -503 -604 -700 -7126 Ro [Ohm] ∞ 42 42 42 42 42 42 A/D2 [mV] 590 570 562 552 544 536 0 I hex S13 024A 023A 0232 0228 0220 0218 0000 TAB. D Corrispondenza fra la corrente prodotta dal modulo e il valore esadecimale presente nel registro S13 dell’ETRX2 Analogamente per la corrente (Tab. D), dalle misure effettuate si deduce la retta di regressione lineare: y = -11.99 x + 7126.62 dove x è il valore decimale in mV letto sul registro S13 e y è il valore corrispondente della corrente in mA; ad esempio ponendo x al valore massimo ammissibile nel registro pari a 0mV risulta che il massimo valore misurabile è 7,1A. Per il collaudo della connessione dei nodi wireless ZigBee sono stati utilizzati alimentatori non stabilizzati variabili da 7 a 12 V con i quali è stata simulata la produzione di energia dei moduli FV. Nella Fig.28 vengono indicate le connessioni Harwin con il modulo ETRX2: Fig.28 Pin-out del circuito ETRX2 di Telegesis I piedini interessati nell’interfacciamento con la scheda sono in particolare: 3-GND, 10-Vcc, 4A/D1, 5-A/D2, 14-Reset, 17-RXD, 18-TXD; i due ingressi analogici sono utilizzati per la misurazione della corrente e della tensione con riferimento interno di 1200 mV; per comunicare con il microcontrollore vengono utilizzate le due connessioni seriali TX e RX attraverso le quali si possono trasmettere anche i comandi di tipo AT per l’interprete; il comando di reset, che può essere inviato anche dall’esterno con un impulso a livello basso, forza la ripartenza del nodo per effettuare le operazioni di connessione alla rete. 27 V. IL SOFTWARE SUI NODI DI RETE WIRELESS A. Misure della tensione e della corrente Il software di acquisizione dati è stato realizzato su una rete wireless formata da 5 nodi di cui uno connesso con l’ingresso seriale (USB) di un PC. Per la connessione seriale è stata utilizzata una scheda di sviluppo fornita da TELEGESIS utilizzante lo stesso modulo ETRX2: per la comunicazione via USB con la scheda di sviluppo è stato utilizzato sia l’applicativo HyperTerminal di Microsoft che l’applicativo Terminal di Telegesis che usa i comandi nel formato tipico AT del modem. Come si vede in Fig.29 solo il nodo locale (1) è connesso attraverso l’interfaccia seriale del PC; sia il nodo locale che i nodi remoti (2,3,4,5,6) sono alimentati da alimentatore per simulare l’alimentazione tramite modulo fotovoltaico di cui si vogliono misurare tensione e corrente. Nel nodo 3 è stata inserita sull’uscita una resistenza di carico di 42 Ohm 10Watt per simulare il carico degli altri moduli in serie connessi nella stessa stringa e delle altre stringhe in parallelo (vedi Fig.15 e Fig.13) Fig.29 Banco di misure e collaudo della rete Il firmware pre-caricato in ETRX2 per l’interfaccia a comandi in stile AT è basato sulle ultime caratteristiche del protocollo ZigBee di Ember che implementa lo stack sia per Router/Coordinator che End Devices. Il software EmberZNet è un pacchetto completo che contiene tutti gli elementi necessari per sviluppare applicazioni di networking robuste e affidabili Gli End Devices non hanno alcuna responsabilità di routing e quindi sono abilitati a rimanere in stato sleepy, pur restando in grado di inviare e ricevere messaggi tramite un router padre. Oltre alla classica modalità “sleepy” un End Device supporta anche la modalità “mobile”, cioè la possibilità di cambiare rapidamente padre ogni volta che cambia la sua posizione all'interno della rete; un router, tipicamente, è sempre alimentato, per assolvere i compiti di routing, mentre un end device può anche essere alimentato occasionalmente. Il modulo ETRX2 è inoltre in grado di fungere da coordinatore di PAN attraverso il controllo da PC esterno. I comandi in stile AT forniscono gli strumenti necessari per il set up e per la gestione di una rete wireless magliata, consentendo un facile accesso alle funzionalità di basso livello dello stack. 28 Inoltre il firmware permette anche l’accesso ai parametri fisici di basso livello come il canale di comunicazione e il livello di potenza del segnale trasmesso. I parametri che definiscono la funzionalità del modulo anche stand-alone vengono salvati nelle memorie non volatili cosiddetti S-Registers. Quindi, complessivamente il controllo del modulo ETRX2 viene effettuato utilizzando i comandi AT in combinazione con il contenuto di questi registri. In fig.30 viene evidenziate la modalità di comunicazione via seriale con il nodo locale: l’indirizzo identificativo del nodo di rete (EUI64 - IEEE802.15.4 address) è costituito da 16 cifre esadecimali (64bit). In fig.31 si notano i cinque nodi collegati alla rete in modalità wireless identificati dai relativi EUI64. L’indirizzo standard EUI-64 (Extended Unique Identifier – 64bit) è una concatenazione di 24 o 36 bit assegnati dalla IEEE Registration Authority che identificano il produttore e i rimanenti bit assegnati dal produttore per identificare univocamente il circuito. Fig.30 Modalità di interfacciamento software con Terminal di Telegesis. Fig.31 Nodi collegati in modalità wireless al nodo locale. 29 B. I comandi AT e i regstri S Di seguito in Tab.E vengono elencati i principali comandi AT utilizzati per la gestione della rete e per la trasmissione dei dati attraverso la rete stessa. AT ATI ATS ATSALL AT+TOKDUMP ATSREM AT+ESCAN AT+EN AT+JN AT+PANSCAN AT+JPAN AT+DASSL AT+DASSR AT+NTABLE AT+N AT+CTABLE AT+SN AT+REMSN AT+SCAST AT+SCASTB AT+SSINK AT+SINK AT+RDATAB Controllo della comunicazione con la porta seriale Visualizza le informazioni di identificazione del nodo connesso in locale al PC via USB Comando per l’accesso ai registri S Visualizza il contenuto di tutti i registri S dei nodi remoti Visualizza il contenuto di tutti i registri S del nodo locale Accede ai registri S remoti Visualizza il livello di energia di tutti i canali Stabilisce una PAN (Personal Area Network): numero di 4 cifre esadecimali Si connette alla rete più vicina Effettua una scnsione e visualizza le PANs attive Si connette ad una specifica PAN Disconnette il nodo locale dalla PAN Disconnette il nodo remoto dalla PAN Visualizza la tabella dei nodi vicini Visualizza i parametri di rete Visualizza la lista dei “nodi figli” locale Scansiona la rete per vedere i nodi collegati al nodo locale Scansiona la rete per vedere i nodi collegati al nodo remoto Trasmette I dati al Sink (nodo collettore) Trasmette I dati binari al Sink Cerca il Sink Conferma o no se il nodo locale è un Sink Trasmette dati binari grezzi Tab.E Principali comandi AT utilizzati per la gestione della rete Il controllo della rete e dei singoli nodi viene effettuato attraverso una serie di 52 registri, gran parte non volatili, adibiti a speciali funzioni (di stato, in/out, contatori, instradamento, ecc…) combinati con una serie di funzionalità di tipo built-in che possono essere attivate dai due interrupt esterni IRQ1 e IRQ2 o da ciascuno degli 8 timers/counters. Di seguito (in Tab.F) vengono elencati i principali registri utilizzati e la loro funzione: Registri per il setup della comunicazione radio S00 Mascheratura dei canali S01 ID di rete predefinita S02 Livello del segnale di trasmissione in dBm S03 Chiave crittografata Registri per il setup del modulo S04 S05 Nome del modulo definito dall’utente Chiave definita dal costruttore 30 S06 Funzioni principali S07 Funzioni estese 1 S08 Funzioni estese 2 S09 Password S0A Numero di release Registri di input/output S0B UART Setup S0C ETRX2: Pull-up S0D Direzione dei dati di I/O (volatile) S0E Valore iniziale di S0D S0F Buffer di Output (volatile) S10 Valore iniziale di S0F S11 Buffer di Input (volatile) S12 A/D1 S13 A/D2 S14 ETRX2 (riservato) Registri per la definizione delle funzionalità del modulo S15 Funzionalità immediata su IRQ0 S16 Funzionalità immediata su IRQ1 S17 Timer/Counter 0 S18 Funzionalità del Timer/Counter 0 S19 Timer/Counter 1 S1A Funzionalità del Timer/Counter 1 S1B Timer/Counter 2 S1C Funzionalità del Timer/Counter 2 S1D Timer/Counter 3 S1E Funzionalità del Timer/Counter 3 S1F Timer/Counter 4 S20 Funzionalità del Timer/Counter 4 S21 Timer/Counter 5 S22 Funzionalità del Timer/Counter 5 S23 Timer/Counter 6 S24 Funzionalità del Timer/Counter 6 (volatile) S25 Funzionalità iniziale del Timer/Counter 6 S26 Timer/Counter 7 S27 Funzionalità del Timer/Counter 7 (volatile) S28 Funzionalità iniziale del Timer/Counter 7 S29 Modalità di alimentazione (volatile) 0-1-2-3 S2A Modalità di alimentazione iniziale S2B Testo descrittivo A per le funzionalità S2C Testo descrittivo B per le funzionalità S2D Mac address del nodo padre Registri specifici del dispositivo S2E S2F S30 Definisce il comportamento del dispositivo: es. fronti attivi per l’interrupt, ecc… Registro volatile per funzioni speciali (pin. 1) Valore iniziale del registro S2F 31 S31 S32 S33 Registro volatile per funzioni speciali (pin. 2) Valore iniziale del registro S31 Tensione di alimentazione in mV: es.3340 Tab.F Principali registri utilizzati e la loro funzione Le funzionalità di tipo built-in attivabili da interrupt esterni o dai contatori sono codificate con 4 cifre esadecimali e sono disponibili nella User Guide del modulo ETRX2; ad esempio una funzionalità utilizzata è la 0101 che significa: “il nodo invia il contenuto dei registri di I/O e dei due ingressi analogici al nodo collettore di rete (SINK) e se il nodo collettore non è conosciuto si ricerca un collettore alternativo; dopo 3 tentativi senza successo si ritiene che il collettore non è disponibile - viene fatto ripartire il timer”. Una rete ZigBee si forma dall’interno verso l’esterno. Ciò significa che un dispositivo a cui viene dato il compito di avviare una rete diventa un cosiddetto coordinatore e scansioni tutti i canali radio disponibili, sceglie quello con meno traffico e genera un PAN ID casuale; gli altri nodi possono aderire connettendosi alla rete creata. Un altro scenario è che un nodo faccia una scansione alla ricerca di una rete disponibile a cui aderire, e se non ne trova nessuna, il nodo può scegliere di diventare un coordinatore e avviare una propria rete come descritto sopra; dei nodi remoti sono quindi in grado di connettersi ad una rete già esistente. Come nodi più remoti unire, la rete si sviluppa dall'interno verso l'esterno. Se la rete si sviluppa su una vasta area, un nuovo nodo può essere fuori della portata del coordinatore e si unirà alla PAN attraverso un altro nodo, che funzionerà come un router. Man mano che i nodi si connettono, la rete si sviluppa dall'interno verso l'esterno. Se la rete si sviluppa su un’area più vasta, un nuovo nodo può essere fuori della portata del coordinatore e si unirà alla PAN attraverso un altro nodo, che funzionerà da router. I messaggi possono quindi passare attraverso la rete in più salti (hop). I comandi AT del software Telegesis supportano trasmissioni punto-punto fino a sei “hop” mentre la trasmissione broadcast fino a dieci “hop”. C. Comandi per la gestione della rete Di seguito (Tab. G) vengono illustrati alcuni esempi di comunicazione con i nodi sia per la configurazione della rete che per la lettura dei dati dai vari sensori di ciascun nodo: Comando at Risposta OK ati Telegesis ETRX2 R207 000D6F00000B519A OK +N=NoPAN OK at+n at+en JPAN:18,0EEE OK Commento Il modulo accetta i comandi con il prefisso AT dopo aver fatto l’inizializzazione (boot); la fase di inizializzazione impiega 12 secondi e quindi risponde con il prompt OK Il modulo risponde con le informazioni del costruttore, tra cui la versione del firmware e il MAC address Per vedere se il modulo fa già parte di una PAN (Personal Area Network). NoPAN vuol dire che non è stata attivata nessuna rete. Inizializza una nuova rete (PAN); risponde JPAN per dire che è stata inizializzata una nuova rete, 18 è il canale attivato per la 32 at+n +N=COO:18,0EEE,4 OK at+dassl OK LeftPAN JPAN:15,18F0 OK at+jn comunicazione 0EEE è il numero di rete generato in modalità random. Dopo che la rete è stata attivata il nodo locale diventa coordinatore di rete (COO); 4 è il livello del segnale in dBm. Per comunicare con tutti gli altri nodi questi devono far parte della stessa rete. Il nodo locale si sconnette dalla PAN Se c’è una rete attiva, il nodo cerca di collegarsi cercando il numero del canale (15) e il numero di rete (18F0) Dopo che il nodo si è connesso con la nuova rete assume la funzione di FFD (Full Function Device) Scan Network: creca tutti i nodi facenti parte della stessa rete. In questo caso trova tutti i dispositivi connessi e visualizza i relativi MAC address. In questo caso tutti i nodi di rete sono abilitati come FFD at+n +N=FFD:15,18F0,4 at+sn OK FFD:000D6F0000354047 FFD:000D6F0000353ED 9 FFD:000D6F0000353EC 5 FFD:000D6F0000353F0B FFD:000D6F0000353F91 OK Disconnette un nodo remoto at+dassr:000D6F 0000353EC5 at+ping:000D6F0 000353EC5 OK Indica se un nodo è presente nella rete Tab.G Esempi per la configurazione della rete Una rete ZigBee può consistere di tre differenti tipi di dispositivi: ZigBee Coordinator (ZC), ZigBee Router (ZR), e ZigBee End Device (ZED); Gli ZR consumano più potenza rispetto gli ZEDs, quindi nella nostra applicazione, come è stato evidenziato in Fig.2, a meno di problemi di comunicazione e di interferenze in generale, ne saranno utilizzati il meno possibile. Un Coordinatore è a tutti gli effetti un Router che si incarica di far partire la rete, e ogni rete ha un solo coordinatore; nello stack di Ember che noi utilizziamo, una maglia di rete continua a funzionare anche quando il coordinatore abbandona la rete stessa. Un ZigBee End Device (nodo “figlio”) non ha responsabilità di routing e si connette alla rete attraverso uno ZigBee Router (nodo “padre”). Il “padre” mantiene nel buffer i messaggi in arrivo per il “figlio” quando questi è nella condizione “sleepy” e questi deve interrogare periodicamente il “padre” per accertarsi se ci sono nuovi messaggi in attesa al fine di prevenirne la perdita per buffer-overflow. Il “padre” funge anche da un punto di inoltro per i messaggi in uscita verso i suoi “figli”. Per esempio quando un “figlio” vuole inviare un messaggio in broadcast lo invia al “padre” poi sarà questi a sua volta ad inviarlo a tutti i suoi “figli”. Gli ED possono ulteriormente essere classificati come Sleepy End Devices (SED) e come Mobile End Device (MED) Un SED rimane nella lista del suo router in maniera permanente (o fino a quando il router non è resettato o lascia la rete per conto suo); ciò implica che un SED non può spostarsi fisicamente lontano dal suo router per aderire a un altro router. 33 Un MED (sleepy) interroga continuamente il suo router e andrà in time-out e verrà cancellato dalla tabella del suo router se non si sente per più di tre secondi. Quando un MED non riesce più a mantenere il contatto col suo router si assume che si sia spostato fuori dal suo campo di azione e dovrà quindi cercarsi un altro router. Un dispositivo non deve essere definito "mobile" solo se cambia la sua collocazione fisica, ma lo è se esce dello spazio radio coperto dal suo router. Un modulo diventa Coordinatore mediante il comando AT + EN. Un dispositivo si configura come Router o come End Device a seconda delle impostazioni del registro S06 all'istante in cui si unisce alla rete; per cambiargli impostazione si devono seguire i seguenti passi: 1. Lasciare la rete; 1. Cambiare il contenuto del registro S06: a. bit 9 = 0 => ZR b. bit 9 = 1 => ZED c. se il bit 9 = 1, bit A = 0 => SED, bit A = 1 => MED 2. Ri-connettersi alla rete Un End Device mantiene il suo sistema radio sempre spento tranne che nei momenti della comunicazione e quindi consuma meno energia di un router che è sempre “sveglio”. Ai livelli di potenza 0-2 (Tab.H: Power Mode), per impostazione predefinita, un End Device interroga il suo router per i nuovi dati una volta al secondo, ma questo tempo può essere modificato (User Defined) o disattivato completamente se necessario. L’interrogazione richiede meno di 10 ms, per cui la durata della batteria degli End Devices può essere massimizzata. Power Mode Reg. S2A 0 - 00 1 - 01 2 - 10 3 - 11 Router, COO MED,SED MCU Radio Timers I MCU Radio Timers I Awake Idle Awake Asleep Awake Awake Awake Asleep User def. User def. User def. off 36mA 32mA 0.7mA1 0.7µA Awake Idle Asleep Asleep Asleep Asleep Asleep Asleep User def. User def. User def. Off 9mA 4.5mA 0.7mA 0.7µA Tab.H Modalià di alimentazione (Power mode) e consumo di energia durante le operazioni D. Le modalità di trasmissione dei dati Lo scopo di una rete è - ovviamente - di inviare i dati tra i nodi. I dati (formattati come byte successivi) possono essere di lunghezza predefinita o indefinita, oppure possono essere singole parole da 16 bit per il controllo delle porte di I/O. Questi dati possono essere inviati attraverso la rete a un singolo nodo o in broadcast a tutti i nodi. Il protocollo ZigBee è stato progettato per il controllo e per applicazioni di automazione, di conseguenza il carico utile massimo per ogni messaggio è di 65 byte (l'eccezione è un pacchetto di dati grezzi inviati con il comando AT + RDATAB che può contenere 114 byte). Broadcasts: "AT+BCAST:nn,<data>" invia la stringa <data> a tutti i nodi all'interno nn salti (Hops). Le trasmissioni broadcast non vengono riconosciute per cui vengono inviati tre volte per aumentare la probabilità di ricezione. In ogni caso, la ricezione non può essere garantita. Ogni nodo ricevente invia il messaggio "BCAST:<EUI64>=<data>" sulla sua porta seriale (<EUI64> è l’indirizzo a 64 bit del nodo trasmittente). 34 Unicasts: "AT+UCAST:<EUI64>,<data>" e "AT+UCASTB:xx,<EUI64>" funziona in modo simile agli equivalenti comandi broadcast. In questo caso i dati vengono inviati solo al nodo specificato da <EUI64> e un "ACK" o "NACK" viene rimandato sulla porta seriale del mittente. S-Casts: Un “Data Sink” è un nodo che funziona da collettore di dati centralizzato. Qualsiasi nodo può essere eletto a Sink, settando a 1 il bit 8 del suo registro S06, ma deve essere unico nella rete. Per inviare i dati al Sink, ciascun nodo della rete deve conoscere l’indirizzo del Sink; il nodo remoto può ricercare il Sink con il comando "AT+SSINK (Scan Sink), o in alternativa, il Sink può rendere noto il suo servizio inviando il messaggio in broadcast ad intervalli di tempo regolari settando i registri S19 e S1A: (S19 è Timer/Counter che indica ogni quanto tempo viene inviato il messaggio, S1A contiene funzionalità predefinita per il contatore S19). Se il Sink è conosciuto, il comando "AT+SCAST:<data>" invia un messaggio al Sink che restituisce "ACK" o "NACK" come con una trasmissione unicast. Le trasmissioni S-casts hanno il vantaggio che l'identità del sink non ha bisogno di essere conosciuta dall'utente. "AT+BCASTB", "AT+SCASTB" permettono l'invio di un numero predefinito di caratteri inclusi <CR>, <BS> e altri. Siccome nella rete ci può essere solo un Sink, se un Sink esistente riceve un messaggio che un altro nodo si è autodichiarato Sink, il primo si annulla automaticamente resettando il bit 8 del registro S06. In Tab.I, vengono spiegati i contenuti dei principali registri e le relative modalità di funzionamento: l’accesso ai registri può essere fatto sia in locale (attraverso la porta seriale) che in remoto (attraverso la rete wireless), sia in lettura che in scrittura; i comandi ATS e ATSREM leggono e scrivono il contenuto dei registri rispettivamente locali e remoti: es: ats00? Visualizza il contenuto del registro S00 ats00=FFFF Assegna il valore FFFF al registro S00 si può accedere anche al singolo bit indicando il numero del bit dopo il numero del registro: es: ats00A=1 setta il valore 1 nel bit 10 (A esadecimale). Comando Risposta Commento ats00? atsrem00:000D6F0000353F0B? S00:FFF0 OK ats00=FFFF OK ats00? S00:FFFF OK Visualizza il contenuto del registro S00: i 16 bit del registro indicano se i 16 canali di comunicazione (dall’11° al 26°) sono abilitati. In questo caso i canali 11-12-13-14 sono disabilitati In questo caso i canali di comunicazione 11-12-13-14 sono stati abilitati; ats02? S02:4 OK S03:<hidden> OK ats03? Il nuovo contenuto viene visualizzato. Visualizza il livello di potenza del segnale trasmesso in dBm Contiene una chiave crittografata necessaria per creare una rete chiusa in cui nessun nodo si può connettere. E’ importante mettere lo stesso valore su tutti i dispositivi per auto configurare 35 ats04? S04:Board OK atsrem04:000D6F0000353ED9=n odo-10-18 OK atsrem04:000D6F0000353ED9? S04:nodo-1018 OK S06:010C OK ats06? la rete. Il registro S04 contiene il nome utile per identificare il nodo (max.20 caratteri) Al EUI64 address 000D6F0000353ED9 viene assegnato il nome mnemonico “nodo-10-18”. Il nome potrebbe indicare -> modulo fotovoltaico n.18 della stringa n.10 Registro in cui sono specificate le funzioni principali del dispositivo: il suo contenuto determina il comportamento del dispositivo stesso. Contiene il seguente valore: 0000 0001 0000 1100 ATS06=010C: TG-ETRX1 OK La scrittura di questo registro è possibile solo associando la password, es. “TG-ETRX1” atsrem06:000D6F0000353F0B? S06:000C OK atsrem07:000D6F0000353F0B? S07:0000 OK atsrem08:000D6F0000353F0B? S08:0000 OK atsrem0a:000D6F0000353F0B? S0A:212 OK Come si vede il nodo remoto contiene il seguente valore: 0000 0000 0000 1100 Questo registro aggiunge altre funzionalità al nodo, in particolare per disabilitare molti prompt al fine di interagire più facilmente col microcontrollore Anche questo registro aggiunge altre funzionalità al nodo come il registro s07 Visualizza la versione del firmware del nodo es. 2.12 Tab.I Principali registri e le relative modalità di funzionamento Il contenuto del registro s06 riveste particolare importanza in quanto determina il comportamento stesso del modulo all’interno della rete wireless: come si vede dalle due istruzioni di visualizzazione precedenti il comportamento del nodo locale differisce dal nodo remoto nel contenuto del Bit 8: se questi viene settato a 1 il nodo locale funziona da collettore di dati (Sink) quando gli altri nodi trasmettono in modalità S-Casts. Altri bit importanti del registro S06 sono: Bit 2 : abilita la connessione (join) alla rete in modalità sicura (tramite chiave crittografata) Bit 3 : abilita la connessione alla rete anche in modalità non sicura Bit 4 : se=1, per connettersi alla rete (join) è necessaria la password di rete (specificata nel registro S03) Bit 5 : nella trasmissione di dati al Sink viene allegato anche il valore della tensione di alimentazione Vcc 36 Bit 9 : se=1 il dispositivo viene considerato End Device Bit A : (se il bit 9=1) se=1, il nodo è considerato come Moving End Device, se=0 nodo è considerato come Sleepy End Device ats0b? S0B:0500 OK ats0d? S0D:00F8 atsrem0d:000D6F0000353F0B? OK ats0f? ats11? S0F:00F0 OK S11:0FF7 OK atsrem11:000D6F0000353F0B? S11:0FF7 OK atsrem12:000D6F0000353F0B? S12:00AB OK atsrem13:000D6F0000353F0B? S13:0238 OK Per la gestione della UART Il valore di default 0500 corrisponde a: 19200bps, no parity, 1 stop bit, 8 data bits. Valori che indicano la direzione dei dati nelle porte I/O; nell’esempio 0000 0000 1111 1000 le porte da 3 a 7 sono di output. Contenuto del buffer di output Contenuto del buffer di input Buffer di input remoto Valore esadecimale dell’ingresso analogico A/D1 -> TENSIONE Valore esadecimale dell’ingresso analogico A/D2 -> CORRENTE Tab.L Registri per la lettura dei dati Praticamente ogni modulo dispone di 5 registri volatili che rappresentano lo stato corrente dei suoi I/O: S0D S0F S11 S12 S13 Definisce la Data Direction di ogni pin: 1 = Output, 0 = Input Output Buffer Input Buffer – es. Reed Switch A/D1 - hexadecimal value of Voltage A/D2 - hexadecimal value of Current E’ importante notare che i dati rilevati nel buffer di input e i valori analogici della tensione e della corrente vengono letti nei registri S11, S12 e S13 di ciascun nodo e quindi possono essere inviati in modalità S-Casts al Sink. E. Gestione degli eventi I registri nell’intervallo S15 - S28 definiscono le azioni per dieci eventi, sulla base di interrupts o timers. Molti registri sono usati in coppia correlati ai contatori/timer: uno fissa una soglia del timer, l'altro definisce l'azione che si attiva dopo la scadenza del timer. La soglia del contatore è definita in quarti di secondo (250ms), ad esempio, 00F0|16=15x161=240|10; 240x0.250sec=60sec. Il numero contenuto nel registro azione corrisponde ad una voce nella tavola delle funzionalità built-in. Per quanto riguarda gli interrupts, S15 definisce le azioni da intraprendere sull’IRQ0 e S16 l'azione sull’IRQ1. S2E determina ciò che provoca IRQ0 e IRQ1: viene settato il bit 0 (o il bit 1) per attivare IRQ0 sul fronte di discesa (o sul fronte di salita) del pin 0 dell’ I/O, viene settato il bit 2 (o il bit 3) per attivare IRQ1 sul fronte di discesa (o sul fronte di salita) del pin 1 dell’ I/O. Le azioni built-in definite in S15 e S16 servono per riattivare il modulo in power-mode 0 su entrambi gli interrupt. 37 Per applicazioni semplici e in particolare per le scelte di primo obiettivo fatte nella nostra applicazione, con i 10 eventi che possono attivare direttamente un’azione selezionabile, si può evitare luso del microcontrollore; Due di questi 10 eventi sono i due interrupt esterni i cui fronti attivi sono definiti nel registro S2E con le azioni built-in da eseguire definite in S15 e S16. I restanti 8 eventi sono a tempo, cioè collegati in coppie di registri (timer-eventi) da S17 a S28. I primi 4 timer sono usati di default per la gestione della rete (se sei un End Devices interroga il router ogni sec., avvisa che sei un sink ogni min., lascia la rete se sei stand alone dopo 1min e 1sec dopo 1 min, se non fai parte della rete connettiti con il comando AT+JN): questi possono essere modificati cambiando i corrispondenti registri. Nella tavola delle funzionalità built-in sono illustrate tutte le azioni che possono essere innescate da uno qualsiasi dei dieci eventi. Se viene innescata un’azione mentre il modulo è in modalità “sleepy”, il modulo si sveglia automaticamente nella condizione di alimentazione (vedi Tab.H: Power Mode) appropriata, esegue l’azione richiesta e torna nella modalità di alimentazione originale. Di seguito in Tab.M, vengono elencate alcune delle più importanti funzionalità built-in utilizzate nel software; per un elenco completo si faccia riferimento al manuale dell’ETRX2 0000 Un interrupt corrispondente non esegue nessuna azione e il timer/counter corrispondente è disattivato. 0001 Cambia in power mode 0. Nel caso in cui questa è stata innescata da un timer, il timer si ferma. Questa è l'impostazione predefinita per entrambi gli interrupt S15 e S16. 0002 Cambia in power mode 1. Nel caso in cui questa è stata innescata da un timer, il timer si ferma. 0003 Cambia in power mode 2. Nel caso in cui questa è stata innescata da un timer, il timer si ferma. 0004 Cambia in power mode 3. Nel caso in cui questa è stata innescata da un timer, il timer si ferma. 0005 Cambia in power mode 0. Nel caso in cui questa è stata innescata da un timer, il timer riparte. 0006 Cambia in power mode 1. Nel caso in cui questa è stata innescata da un timer, il timer riparte. 0007 Cambia in power mode 2. Nel caso in cui questa è stata innescata da un timer, il timer riparte. 0008 Cambia in power mode 03. Nel caso in cui questa è stata innescata da un timer, il timer riparte. 0010 Se il dispositivo locale è End Device interroga il suo router per i dati e il timer si ferma. 0011 Se il dispositivo locale è End Device interroga il suo router per i dati e il timer riparte. Per default questa azione è eseguita ogni secondo utilizzando i timer/counter S17 e S18. 0012 Se il dispositivo locale è un Sink invia un messaggio in broadcasting e e il timer si ferma (se l’azione è causata dal timer). 0013 Se il dispositivo locale è un Sink invia un messaggio in broadcasting e e il timer riparte (se l’azione è causata dal timer). Per default questa azione è eseguita ogni minuto utilizzando i timer/counter S19 e S1A. …. …. 38 …. 0100 Invia la lettura degli I/O e le due porte analogiche al nodo SINK della rete e se il sink non è conosciuto l'unità fa un altro tentativo di ricerca. Dopo 3 insuccessi, si assume che il sink non è disponibile e viene cercato un nuovo sink. In questo caso il timer si ferma. Invia al sink il seguente prompt: SDATA:<EUI64>,<xxxx>,<yyyy>,<zzzz> dove <EUI64> è l’ID del nodo trasmittente, <xxxx> è la lettura dei 16 bit della porta I/O, <yyyy> è la lettura dell’ingresso analogico is the reading of A/D0 e <zzzz> è la lettura dell’ingresso analogico is the reading of A/D1. 0101 Come 0100, ma in questo caso il timer riparte. …. …. Tab.M, vengono elencate alcune delle più importanti funzionalità built-in F. Gestione dell’alimentazione del modulo Al fine di ottenere una lunga durata della batteria, è necessaria un’attenta gestione dell'alimentazione (vedi Tab.H): i moduli ETRX2 hanno quattro modi di funzionamento diversi per consentire la massima flessibilità e la durata della batteria più lunga possibile. La batteria deve essere in grado di fornire la corrente di picco necessaria in trasmissione. Il modulo viene avviato secondo la modalità di alimentazione definita nel registro S2A impostato di default a 0. Il registro S29 (volatile) contiene le modalità di alimentazione corrente. In modalità 3 il microcontrollore, il sistema radio e i timer sono disabilitati: in tal modo il modulo non risponde ai comandi sulla seriale, né ai comandi via radio, né agli eventi temporizzati. Solo un interrupt esterno o un reset può riattivarlo. Quindi è importante non entrare in power mode 3 a meno che non si è certi di riattivare il modulo. Interrupt esterni possono essere causati da una transizione sul bit 0 e sul bit 1 della porta di I/O secondo quanto stabilito nel registro S2E (bit 0-4); con il bit 5 di S2E settato, anche un carattere in ingresso alla porta seriale può causare un interrupt. La Tab. N seguente indica i consumi del dispositivo nei vari stati di trasmissione, ricezione e “asleep”: Parametro Corrente di alimentazione Valore tipico 36 32 29 28 37 1.5 0.7 u.m. stato mA mA mA mA mA µA µA TX 4dBm TX –1dBm TX –10dBm TX –20dBm RX Asleep, Timers on Asleep, Timers off Tab.N Consumi di energia In power mode 2 i timer continueranno a incrementarsi anche se entrambi i sistemi, radio e microcontrollore sono disattivati. Quando viene eseguita un’azione a tempo il modulo tornerà al suo stato originale (di power mode) dopo l'esecuzione dell'azione. In questa modalità, supponendo che l’interrogazione venga fatta ogni secondo, quando non c’è interrogazione del router, ma ci sono azioni temporizzate, il consumo energetico può anche essere di soli 20µA. 39 La modalità power mode 1, cioè quando solo il microcontrollore è disattivato, può essere consigliata solo in caso di traffico di rete basso. Inoltre, un router non dovrebbe mai funzionare a una modalità superiore a 1 in quanto potrebbe non effettuare il routing. G. L’acquisizione dei dati Le modalità di lettura degli ingressi analogici sono due: supponiamo di avere un nodo remoto (sensore) e un nodo locale che raccoglie i dati (Data Sink) provenienti dal sensore, possibilmente passando anche attraverso diversi router connessi fra loro. Si pensi a due grandezze analogiche collegate ai due ingressi A/D1 e A/D2 del nodo remoto. L'approccio più semplice sarebbe quello di eseguire periodicamente un’interrogazione (polling) del sensore dal Sink utilizzando i comandi "ATSREM12:<EUI64>?" e "ATSREM13:<EUI64>?". Il nodo remoto potrebbe essere un SED, MED oppure ZR. Il vantaggio di questa situazione sarebbe che ogni sensore funziona da ZR (router) e può quindi inoltrare i messaggi attraverso una rete magliata autoconfigurante e sicura. Inoltre un microcontrollore host dovrebbe avviare l'operazione di polling al data sink. In alternativa è possibile utilizzare sul sensore uno dei timer dell’ETRX2 e selezionare l’azione più appropriata dalla lista delle funzioni built-in, come ad esempio 0101 o 0111 (invio degli I/O digitali e dei due ADC al sink). Questo fa sì che il sensore invia le sue informazioni periodicamente. Rispetto alla precedente soluzione, il sensore potrebbe essere un SED o MED operante in power mode 2 (vedi Tab.H) e quindi alimentato da una batteria. Nel nostro caso, la modalità scelta è quella in cui un nodo remoto trasmette i dati provenienti dai suoi sensori (e cioè i 16 input digitali e i 2 ingressi analogici A/D1 e A/D2) al nodo locale (Data Sink), passando attraverso diversi router connessi fra loro (max 6 hops). Il nodo può essere un SED (Sleepy End Device) operante in power mode 2 con consumi molto bassi (I=0.7mA) e quindi può essere alimentato da una batteria. Ats15 Ats16 Ats1F=0004 (oppure con accesso al bit: Ats1F2=1) oppure Ats1F=00F0 Ats20=0101 4x250ms=1 sec. 240x250ms=60sec IRQ0 – non utilizzato su ETRX2 In alternativa viene utilizzato l’interrupt del microcontrollore IRQ1 – non utilizzato su ETRX2 In alternativa viene utilizzato l’interrupt del microcontrollore Con il timer/contatore s1F la cui funzionalità è definita nel registro s20 viene impostato il tempo È stato scelto nel nostro caso per l’invio dei dati da ciascun nodo verso il sink È’ la funzionalità corrispondente al timer s1F. In questo caso la funzionalità utilizzata è la 0101 che significa: “il nodo invia il contenuto del buffer di input (s11) e dei due ingressi analogici (s12, s13) al nodo collettore di rete (SINK) (se il nodo collettore non è conosciuto si ricerca un collettore alternativo; dopo 3 tentativi senza successo si ritiene che il collettore 40 non sia disponibile) e viene fatto ripartire il timer”. Ats2e? S2E:0005 OK Ats33? S33:3297 OK Definisce il comportamento del nodo, in particolare i bit 0-3 definiscono i fronti di salita o di discesa attivi per IRQ1 e IRQ2, il bit 5 abilita il makeup sulla UART. Contiene il valore della tensione di alimentazione in mV Tab.M Registri interessati all’acquisizione dei dati. Quindi operando sui registri, con riferimento alla tabella soprastante: - - Sul nodo remoto è stato utilizzato il timer S1F dell’ETRX2 impostato ad un minuto (AtS1F=00F0): 00F0x250ms=60sec È stata scelta la built-in function “0101” nel registro S20 corrispondente al timer S1F (AtS20=0101): “il nodo invia il contenuto del buffer di input (S11) e dei due ingressi analogici (S12, S13) al Data Sink e viene fatto ripartire il timer”; Il timer fa sì che il nodo invia le sue informazioni periodicamente; Come collettore di dati è stato assegnato il nodo locale (collegato al PC via USB) settando a 1 il relativo bit 8 del registro S06 (ATS068=1). Ciò che si ottiene sulla porta seriale del nodo locale è una sequenza di stringhe di tipo SDATA come segue: SDATA:000D6F0000353F91,0FE6,00A7,00E6 SDATA:000D6F0000353EC5,0FF7,00B2,00E7 SDATA:000D6F0000353F0B,0FF7,00A3,0237 … SDATA indica una stringa di dati di tipo SINK che contiene l’indirizzo del nodo che ha inviato i dati, i 16 bit (in esadecimale) corrispondenti agli ingressi digitali (S11), i due valori esadecimali di A/D2 (S13 – valori di corrente) e A/D1(S12 – valori di tensione). H. Il setup iniziale dal microcontrollore PIC18F46K20 Per la gestione degli input, la scelta di primo obiettivo è stata quella di non utilizzare il microcontrollore PIC18F46K20 previsto nello schema a blocchi di Fig.12, in quanto il modulo ETRX2 già permette molte opportunità; l’uso diventa però obbligatorio se vogliamo una maggiore programmabilità e una maggiore flessibilità nell’uso del circuito, ad esempio per superare la lunghezza del buffer di input di 128 bytes, o nel caso di un controllo attivo sul nodo. Nella nostra applicazione è stato usato il microcontrollore per risolvere un’anomalia di funzionamento dell’ETRX2 durante il collaudo del circuito: infatti nel caso di valore zero della corrente, cioè assenza di carico sul nodo, il setup per la connessione con gli altri nodi non si verificava e il nodo non entrava a far parte della rete, questo perché veniva riattivato continuamente il boot-loader; questa anomalia è evidenziata in una nota nel manuale dell’ETRX2. La programmabilità del PIC è stata utilizzata per risolvere il problema forzando un valore > 0 sull’ingresso A/D2. Naturalmente qualora si decidesse di utilizzare il microcontrollore host dovrebbe essere sviluppato tutto il software per la gestione del protocollo di comunicazione via UART con l’ETRX2. 41 VI. IL SOFTWARE SU PC PER IL MONITORAGGIO Come si è visto nei paragrafi precedenti, la configurazione della rete e la trasmissione dei dati attraverso i nodi è affidata al firmware del modulo ZigBee fornendo comandi in stile AT e settando i registri non volatili attraverso l’interfaccia seriale o direttamente dal microcontrollore. Invece a livello applicativo è stato sviluppato il software in linguaggio Visual C++ per testare l’acquisizione dei dati attraverso la porta seriale del PC (Fig. 17); nella finestra di sinistra si notano le stringhe SDATA di dati grezzi contenenti MAC address del nodo di rete, i 16 bit di input digitale, i due ingressi analogici della tensione e della corrente espressi in esadecimale. Tali stringhe sono inviate dai singoli nodi sul SINK con frequenza di un minuto. In seguito il sorgente per la lettura della seriale e per il parse dei dati visualizzati nella finestra di destra. Fig. 17 Interfaccia software per la gestione della porta seriale /*********************************************************************************************************/ Read data from COM port into recvstr and also append the Text Box /*********************************************************************************************************/ void readSerialPort() { recvstr = serialPort->ReadExisting(); textBox->AppendText(recvstr); } /*********************************************************************************************************/ Called by the framework when data is received on the COM port All AT Command responses end with OK<cr><nl> All other responses like broadcast end with <cr><nl> /*********************************************************************************************************/ private: System::Void serialPort_DataReceived(System::Object^ sender, System::IO::Ports::SerialDataReceivedEventArgs^ e) { 42 readSerialPort(); //textBox1->AppendText("-->" + recvstr + "<--"); while(!recvstr->EndsWith(cr)) { atcmdresponse = String::Concat(atcmdresponse, recvstr); readSerialPort(); } atcmdresponse = String::Concat(atcmdresponse, recvstr); //textBox1->AppendText(cr + nl + "===>" + atcmdresponse + "<===" + cr + nl); //Special processing for SDATA if(atcmdresponse->Contains("SDATA")) // <cr><nl>SDATA:000D6F0000353F0B,0FF7,01BA,0127<cr><nl> { String^ val = "NODO:" + atcmdresponse->Substring(atcmdresponse->IndexOf("SDATA")+6,16)+ " " + "In/out Dig.:" + atcmdresponse->Substring(atcmdresponse->IndexOf("SDATA")+23,4) + " " + "V=" + atcmdresponse->Substring(atcmdresponse->IndexOf("SDATA")+28,4) + " " + "I=" + atcmdresponse->Substring(atcmdresponse->IndexOf("SDATA")+33,4) + cr + nl ; textBox1->AppendText(val + cr + nl); } recvstr = ""; atcmdresponse = ""; } Un ulteriore passo avanti è stato fatto nello sviluppo del software applicativo per il monitoraggio dei singoli moduli fotovoltaici andando a memorizzare in un database tutte le misure provenienti dalla rete aggiungendo ai dati sopra descritti anche la data e l’ora. Il database è stato strutturato in modo da creare un unico file per ogni anno per ogni modulo FV, ad esempio il nome seguente: 2010.000D6F0000353F0B.data indica il file contenente tutte le rilevazioni dell’anno 2010 per il nodo con indirizzo 000D6F0000353F0B; i records al suo interno sono del tipo seguente: 08-01;06.27.00.985;453;594;0 08-01;06.27.10.629;454;594;0 08-01;06.27.20.535;454;594;0 08-01;06.27.30.402;454;594;0 Dove “08-01” indica la data (1 Agosto), “06.27.00.985” indica l’ora (in questo caso i dati sono campionati ogni 10 sec.), “453” indica la tensione in valore decimale, “594” indica la corrente in valore decimale, “0” 16 bit in valore esadecimale (0000) indicano gli I/O digitali. Nella fig. 18 è mostrata l’interfaccia sviluppata in Visual C# : nella finestra di sinistra è possibile scegliere il nodo di rete da visualizzare, nel grafico vengono rappresentati a sinistra i valori della tensione (10-90V), a destra i valori della corrente (0-8A ), sotto sono rappresentati gli eventuali I/O digitali; nella parte bassa si possono settare i parametri della porta seriale da ascoltare, quella a cui è collegato il “Data Sink”. In alto è possibile selezionare la modalità di lettura dei dati: - [ora attuale]: permette di plottare i valori in tempo reale, dopo aver avviato l’ascolto della porta seriale con il pulsante in basso di “start”; - [ora precedente], [oggi], [ieri], [ultimi sette giorni], [ultimi 30 giorni]: per estrarre i dati storici dal database e ottenere una diagnosi dettagliata della produzione di energia (fig.19). 43 Fig. 18 Interfaccia software per plottare graficamente la corrente e la tensione Fig. 19 Grafica dei dati storici: oggi, ieri, ultimi 7 giorni, ultimi 30 giorni 44 La corrispondenza fra i valori esadecimali letti sui registri dell’ETRX2 e i valori di tensione e corrente prodotti dal modulo fotovoltaico, viene fatta secondo le tabelle precedentemente descritte e secondo la retta di regressione calcolata: V [V]= 0.067xS12dec + 0.75 (S12dec = valore decimale in mV) I [mA] = -11.99 xS13 + 7126.62 (S13dec = valore decimale in mV) Segue il listato di programma in VC# per il calcolo della mappa dei valori di tensione e di corrente, e il programma per la ricerca dei valori nel database allo scopo di visualizzarli nell’interfaccia grafica: namespace ZigBeeNetworkMonitor.Data { class DataHelper { static DataHelper() { MinVoltageValue = 10; //V MaxVoltageValue = 90; //V MinCurrentValue = 0; //A MaxCurrentValue = 8; //A MinRfdVoltageValue = 0; MaxRfdVoltageValue = 1200; MinRfdCurrentValue = 0; MaxRfdCurrentValue = 1200; voltageValuesMap = new float[1 + MaxRfdVoltageValue – MinRfdVoltageValue]; currentValuesMap = new float[1 + MaxRfdCurrentValue – MinRfdCurrentValue]; // Mappa dei valori di tensione //V = 0,0675764 AD1 + 0,754 for (int i = MinRfdVoltageValue; i <= MaxRfdVoltageValue; i++) { voltageValuesMap[i] = (float)(0.0675764 * i + 0.754); } // Mappa dei valori di corrente //I = -11,991360 AD2 + 7126,62419 for (int I = MinRfdCurrentValue; I <= MaxRfdCurrentValue; i++) { currentValuesMap[i] = (float)(-11.991360 * I + 7126.62419) / 1000f; } } /// Query per selezionare dal db i valori relativi all’indirizzo specificato, /// per l’intervallo di tempo specificato. /// </summary> /// <param name=”address”>indirizzo del nodo</param> /// <param name=”from”>inizio dele periodo</param> /// <param name=”to”>fine del periodo</param> /// <returns>lista di campioni</returns> public static List<DataFrame> SelectDataFrom(string address, DateTime from, DateTime to) { List<DataFrame> result = new List<DataFrame>(); for (int year = from.Year; year <= to.Year; year++) { string fileName = Path.Combine(Application.StartupPath, string.Format(@”{0}\{1}.{2}.data”, Log.DataFolder, year, address)); if (File.Exists(fileName)) { using (StreamReader reader = new StreamReader(fileName)) { string record = reader.ReadLine(); 45 while (!string.IsNullOrEmpty(record)) { DataFrame data = DataFrame.FromString(address, year, record); if (from <= data.EventTime && data.EventTime <= to) { result.Add(data); } record = reader.ReadLine(); } } } } return result; } public static int MinVoltageValue { get; private set; } public static int MaxVoltageValue { get; private set; } public static int MinCurrentValue { get; private set; } public static int MaxCurrentValue { get; private set; } public static int MinRfdVoltageValue { get; private set; } public static int MaxRfdVoltageValue { get; private set; } public static int MinRfdCurrentValue { get; private set; } public static int MaxRfdCurrentValue { get; private set; } private static float[] voltageValuesMap; private static float[] currentValuesMap; internal static float VoltageValue(int p) { return voltageValuesMap[p]; } internal static float CurrentValue(int p) { return currentValuesMap[p]; } } } VII. SVILUPPI FUTURI A. Il software sul micrococontrollore per acquisizione e controllo delle variabili fisiche (I, V, T, Accelerazione xyz, Input Digitale da reed-sensor). Attualmente l’acquisizione dati è stata fatta direttamente dal modulo ETRX2 di Telegesis, che rende disponibili due ingressi analogici e 12 In/out digitali; prevedendo situazioni più complesse quali la gestione del risparmio di energia per aumentare la durata della batterie al litio ricaricabili, l’aumento del numero delle grandezze analogiche (ad es. la temperatura), una gestione attiva del controllo (ad es. controllo di orientamento di un pannello FV, gestione degli ombreggiamenti dei moduli con conseguenti disattivazioni o modifica della corrente del modulo senza disattivare l’intera stringa, configurazione geometrica del campo FV come descritto successivamente), si rende necessario l’suo del microcontrollore in maniera più completa: in tal caso l’input e l’output vengono gestiti completamente da microcontrollore e la comunicazione con il transceiver ETRX2 dovrà avvenire per intero tramite interfaccia di comunicazione UART. E’ evidente che in tal caso il software sviluppato in PIC Basic su microcontrollore si dovrà generare un intero protocollo di comunicazione fra microcontrollore da un lato e ETRX2 programmabile in comandi AT dall’altro. B. Il software sul microcontrollore per la configurazione e per la gestione della rete WL. 46 Un prossimo sviluppo del software potrebbe riguardare la configurazione della rete WireLess per ottimizzare la comunicazione fra i nodi nel caso che venga utilizzato il modulo CYRF7946 al posto dell’ETRX2 diTelegesis; naturalmente ciò significa implementare molte delle funzioni fornite dal protocollo ZigBee (vedi Tab. A). Il vantaggio sarebbe quello di evitare i costi molto alti dello stack ZigBee pagato come royalty nell’acquisto dell’ETRX2, ma il costo dello sviluppo del software dovrebbe ripartirsi su un numero elevato di nodi prodotti. C. Il software applicativo (su PC) per la configurazione topografica della rete associando MacAddress alla posizione del modulo all’interno del campo FV Da un punto di vista applicativo, si immagina uno scenario in cui il montaggio dei moduli FV venga fatto senza tenere conto degli indirizzi dei nodi di rete, ma si tenga conto prevalentemente delle caratteristiche elettriche dei moduli, ad esempio per ridurre il problema del mismatch (la variazioni in meno della corrente per moduli in serie e della tensione per stringhe in parallelo rispetto alle condizioni standard diminuiscono il rendimento del campo FV); quindi se si vorranno individuare nel campo fotovoltaico, dal punto di vista geometrico, quei moduli che hanno problemi di produzione di energia al fine di apportare le opportune correzioni, sarà necessario disegnare la geometria del campo FV associando ai moduli un nome o un codice parlante che individua la sua posizione, ad es. A1,A2,….An i moduli della stringa A, B1,B2,….Bn i moduli della stringa B, ecc. in modo da avere un riferimento alla posizione. Fig. 20 Operazione di configurazione geometrica del campo fotovoltaico Per fare questo si pensi ad una fase di configurazione della rete in cui un operatore sta sul campo FV a taggare in sequenza i moduli con un magnete e un altro operatore su un PC collegato tramite seriale ad un nodo di rete fig.20. Il sensor-reed della scheda è sensibile al magnete e quindi il microcontrollore può inviare al PC il suo MAC address, a sua volta l’operatore in visibilità o in collegamento audio assegna da programma un nome che a sua volta tramite la rete viene memorizzato nel registro S04 del modulo corrispondente al Mac address tarsmesso. (ad es. il comando inviato da PC in remoto “atsrem04:000D6F0000353ED9=nodo27-10” assegna il nome mnenonico “nodo-27-10” al modulo FV con indirizzo di rete 000D6F0000353ED9). All’interno della scheda sono stati previsti due sensor-reed disposti ortogonalmente in due posizioni diverse per dare la possibilità di inviare più informazioni. Il sofware potrebbe permettere di disegnare la topografia del campo fotovoltaico e selezionare graficamente il singolo modulo. 47 D. Il software applicativo per la visualizzazione dei dati sia in locale che in remoto e per la segnalazione di anomalie. Il software sviluppato ad oggi (vedi in fig.18) permette l’acquisizione dei dati e la visualizzazione delle grandezze misurate (corrente e tensione) sia nel momento dell’acquisizione (ora attuale) sia nei momenti precedenti fino agli ultimi 30 giorni (vedi in fig.19). Queste grandezze acquisite vengono memorizzate automaticamente in un database che riporta anche la data e l’ora della misura. La grafica è quella di uno strumento di misura con memoria. Come sviluppo futuro si potrebbe pensare di estendere il sistema acquisendo anche la temperatura e l’accelerazione nei tre assi x-y-z per misurare le vibrazioni e/o gli spostamenti. Una volta acquisiti i valori delle grandezze fisiche i report potrebbero essere sviluppati migliorando notevolmente la presentazione a livello grafico, ad esempio la totalizzazione dell’energia prodotta (Kwh) potrebbe essere selezionata a livello di modulo, a livello di stringa o di inverter, e a livello dell’intero campo fotovoltaico come evidenziato nella fig.21: Fig.21 Selezione del livello di totalizzazione dell’energia prodotta Ad esempio, nelle figure seguenti vengono riportati i grafici dell’energia prodotta durante il giorno a livello del singolo modulo selezionato (fig.22), a livello di una stringa di moduli (o su un inverter) (fig.23), e a livello dell’intero campo fotovoltaico (fig.24). Il monitoraggio dell’energia prodotta permette di verificare le prestazioni delle singole sezioni dell’impianto evidenziando anomalie e problematiche di manutenzione fino a risolverle. Fig.22 Energia prodotta (Kwh) durante il giorno dal modulo A2 48 Fig.23 Energia prodotta (Kwh) durante il giorno dalla stringa di moduli (sull’inverter) Fig.24 Energia prodotta (Kwh) nel giorno da tutto il campo FV 49 Fig.25 Energia prodotta (Kwh) nella settimana, nel mese e nell’anno su un modulo Nella fig.25 viene evidenziata, a seconda della selezione, l’energia prodotta su un modulo in una settimana, in un mese, in un anno; naturalmente l’aggregazione può essere fatta anche per gruppi di moduli, e cioè per stringa o per inverter. Nel database possono anche essere gestiti gli eventi verificatisi durante il funzionamento: ad esempio le anomalie e le interruzioni di servizio che vengono memorizzate in automatico o i resoconti di una manutenzione fatta e memorizzata da un operatore. Comprendendo i livelli prestazionali di ciascun componente la manutenzione potrà essere effettuata più velocemente e più efficacemente; non sarà più necessario fare una manutenzione indiscriminata, ma si potranno portare azioni mirate con risultati migliori. Gli operatori riusciranno ad individuare immediatamente le aree problematiche riducendo, di fatto, il tempo speso sul campo e i costi di gestione e manutenzione; potranno giungere sul campo già muniti degli attrezzi giusti e dei componenti sostitutivi, svolgendo il lavoro più velocemente. E. Integrazione con sistemi SCADA remoti (Supervisory Control And Data Acquisition). L’acronimo SCADA (“Supervisione, Controllo e Acquisizione DAti”) [9] indica un sistema informatico distribuito per il monitoraggio elettronico di sistemi fisici. Tipicamente, un sistema SCADA è composto da: Sensori che effettuano misurazioni di grandezze fisiche. Controllori o microcontrollori o PC che, continuativamente o a intervalli di tempo, effettuano misurazioni tramite i sensori a cui sono collegati, e memorizzano in una memoria locale i valori misurati. Un sistema di telecomunicazione tra i microcontrollori e il supervisore che può essere via cavo o via radio. Un computer supervisore, che periodicamente raccoglie i dati dai microcontrollori, li elabora per estrarne informazioni utili, memorizza su un database su disco i dati o le informazioni riassuntive, eventualmente fa scattare un allarme, permette di selezionare e di visualizzare su schermo i dati correnti e passati, eventualmente in formato grafico, ed eventualmente invia informazioni selezionate al sistema informativo aziendale. Un sistema SCADA remoto si distingue per il fatto di utilizzare una rete di telecomunicazioni geografica. 50 Fig.26 Rappresentazione di un generico sistema SCADA remoto Nel nostro caso (fig.26), i dati del campo FV acquisiti dal server locale via USB, attraverso ADSL o Wi-Fi potrebbero essere inviati ad un server remoto che centralizza i dati di più campi FV. La supervisione dei campi fotovoltaici potrebbe essere fatta da qualsiasi client sia locale che remoto operando praticamente in Real-Time per le seguenti operazioni: - Acquisizione dati e controllo dei sensori della rete wireless Gestione della rete wireless intervenendo sulle proprietà dei nodi Reporting e visualizzazione grafica dei dati praticamente in real-time Visualizzazione della mappa geometrica con la localizzazione dei nodi Reporting e gestione degli eventi Accesso ai dati storici della rete per data/ora F. Controllo attivo sulla tensione di stringa per diminuire le perdite di rendimento in caso di ombreggiamento dei moduli Il frequente problema del mismatching, cioè l’impatto dei moduli meno performanti sui rimanenti dovuti a ombreggiamento, sporcizia, nuvole, differenze termiche, mancanza di complanarità dei moduli FV, possono essere diminuiti o eliminati con una supervisione e un controllo attivo, cioè controllando il punto di massima potenza di ogni modulo FV. Tale obbiettivo si può raggiungere con una tecnologia per l’adattamento di impedenza piuttosto che con circuiti di conversione DC/DC di tipo step-down o step-up. 51 VIII. CONCLUSIONI La ricerca effettuata apre diverse porte a sviluppi futuri, specialmente nel caso ci fossero aziende produttrici di moduli FV disposte a investire o a partecipare a progetti europei finanziati. In particolare si pensi al software applicativo per la visualizzazione dei dati e per la segnalazione di anomalie, sia in locale che in remoto. IX. RIFERIMENTI BIBLIOGRAFICI [1] Telegesis: manufacturer of a full range of ZigBee modules complete with full AT command layer giving fast and simple ZigBee implementations. http://www.telegesis.com/support/document_centre.htm ETRX2: ZigBee Module Product Manual, Technical Manual, Firmware R2xx User Guide, AT-Command Dictionary. [2] Ember: promoter of the ZigBee Alliance that supplies physical layer and ZigBee solutions compliant to the IEEE 802.15.4 standard. http://www.ember.com/products_documentation.html [3] ZigBee Alliance: association of companies working together to enable reliable, costeffective, low-power, wirelessly networked, monitoring and control products based on ZigBee standard. http://www.zigbee.org/Products/DownloadZigBeeTechnicalDocuments.aspx [4] ABB – Quaderni di applicazione tecnica n. 10: Impianti fotovoltaici. [5] AEIT – Federazione Italiana di Elettrotecnica, Elettronica, Automazione, Informatica e Telecomunicazioni: Energia Fotovoltaica – Novembre 2009 [6] AEIT – Federazione Italiana di Elettrotecnica, Elettronica, Automazione, Informatica e Telecomunicazioni: Applicazioni Wireless – Luglio/Agosto 2008 [7] Mitsugu Terada- Application of ZigBee sensor network to data acquisition and monitoring, Measurement Science Review, Volume 9, No. 6, 2009. [8] Valter Bella - Fabio Bellifemine: Il progetto Wireless Sensor Network in Telecom Italia Notiziario Tecnico Telecom Italia - Anno 17 n. 2 - Agosto 2008 http://www.telecomitalia.it/tit/it/corporate/innovation/notiziario_tecnico.html [9] Stefano Bimbo – Enrico Colaiocovo: Sistemi SCADA – Supervisory Control And Data Acquisition – ebook: http://www.apogeonline.com/2006/libri/88-503-1042- 0/ebook/pdf/1042.pdf 52