50
UNIVERSITÀ DEGLI STUDI DI TRIESTE FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA DELL’INFORMAZIONE CURRICULUM INFORMATICA Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico. RELATORE: Prof. Maurizio FERMEGLIA LAUREANDO: Michele Furlanetto

Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

UNIVERSITÀ DEGLI STUDI DI TRIESTE

FACOLTÀ DI INGEGNERIA

CORSO DI LAUREA IN INGEGNERIA DELL’INFORMAZIONE

CURRICULUM INFORMATICA

Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un

impianto fotovoltaico.

RELATORE:

Prof. Maurizio FERMEGLIA

ANNO ACCADEMICO 2011-2012

LAUREANDO:

Michele Furlanetto

Page 2: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

1. INTRODUZIONE...........................................................................4

2. ANALISI.......................................................................................5

2.1. Sistema....................................................................................5Sensori............................................................................................5

Il sistema fotovoltaico monitorato e le misure elettriche...........5Sensori metereologici..................................................................6

2.2. Dataloggers.............................................................................6

2.3. Calcolatore...............................................................................63DOM..........................................................................................6CommNetEG................................................................................6GidasViewer................................................................................7

2.4. Obiettivi...................................................................................7

3. PROGETTAZIONE.........................................................................8

Lo schema Web.............................................................................10Analisi di stabilità..........................................................................10Prestazioni....................................................................................13

4. IMPLEMENTAZIONE..................................................................14

4.1. vData_GetAll..........................................................................14

4.2. vSortedMinData_GetAll.........................................................15

4.3. vSortedMaxData_GetAll........................................................17

4.4. vSortedInstantaneousData_GetAll........................................19

4.5. vSortedAverageData_GetAll..................................................20

4.6. vSortedWindData_GetAll.......................................................22

4.7. vSortedData_GetAll...............................................................23

4.8. fSortedData_WithinDate.......................................................24

4.9. fStabilityVoltage....................................................................25

4.10. fStabilityPower.......................................................................26

4.11. fStabilityIrradiance................................................................27

4.12. fStabilityCheck1.....................................................................28

4.13. fStabilityCheck2.....................................................................29

4.14. fStability_GetAll.....................................................................30

2

Page 3: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.15. fStabilityAlternative_GetAll...................................................32

4.16. fStability_WithinDate............................................................33

4.17. fStabilityAlternative_WithinDate...........................................34

4.18. fWind_WithinDate.................................................................35

4.19. fSortedData_ToXML...............................................................36

4.20. fStability_ToXML....................................................................37

4.21. fStabilityAlternative_ToXML..................................................38

4.22. fWind_ToXML........................................................................39

5. CONSIDERAZIONI FINALI...........................................................40

3

Page 4: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

1. INTRODUZIONE

All’interno dell’Università degli Studi di Trieste è stato installato, nel 2011, un laboratorio per lo studio delle prestazioni di dispositivi fotovoltaici.

Il laboratorio è provvisto di un sistema di monitoraggio di dati climatici ed elettrici installato della ditta LSI LASTEM1, e realizzato con sensori progettati e prodotti dalla stessa.

Questi strumenti dialogano mediante dei dispositivi denominati Data Logger con un calcolatore fornito dalla stessa LSI LASTEM e dotato di una suite software proprietaria necessaria per l’acquisizione dei dati.

Tra le possibili opzioni di stoccaggio dei dati offerte dalla suite, si fa notare la presenza di una base di dati, vincolata all’uso del motore MICROSOFT® SQL SERVER® EXPRESS Edition.

Con questa premessa, obiettivo di questa tesi sarà estendere le funzionalità della base di dati per la fruizione da remoto.

Inoltre, si vuole automatizzare alcune operazioni di analisi dei dati.

Il progetto sarà esposto in questo documento in ordine di analisi, una breve panoramica di com’è formato l’intero sistema in produzione, progettazione, le linee guida seguite durante lo sviluppo, implementazione del codice necessario e infine le conclusioni.

1 http://www.lsi-lastem.it/4

Page 5: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

2. ANALISI

E’ possibile suddividere il sistema di monitoraggio in più sezioni: i sensori, i data logger ed infine il calcolatore, di cui segue una breve descrizione.

2.1. SensoriI sensori misurano sia grandezze elettriche sia climatiche; sono installati all’esterno dell’edificio e sono adibiti alla rilevazione dei dati. Essi possono essere suddivisi in base al tipo di misura rilevata, se elettrica oppure climatica.

Il sistema fotovoltaico monitorato e le misure elettricheE’ composto di moduli fotovoltaici, convertitori e carichi.

Vi sono 5 moduli di 3 diverse tecnologie e di due produttori (Q.Cells e First Solar):

Q.Smart 95, con angolo di tilt 10°; Q.Smart 95, con angolo di tilt 34°; Q.Pro 230, con angolo di tilt 10°; Q.Pro 230, con angolo di tilt 34°; FS-272, con angolo di tilt 34°.

Per ogni coppia modulo-convertitore dei sensori provvedono 4 misure, riassunte nello schema seguente:

Figura 1 – Schema delle misure elettriche

Ulteriori analisi dei moduli esulano da questo trattato, ma può essere di interesse che in origine il progetto dell’impianto prevedesse un sesto modulo, del quale se ne può vedere traccia all’interno del database.

5

I_outI_in

V_in

V_ou

t==

Modulo Convertitore Resistenza

Page 6: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

Sensori metereologiciQuesto gruppo di sensori è composto da:

Piranometro, con angolo di tilt 10°; Piranometro, con angolo di tilt 34°; Piranometro, con angolo di tilt 0° e fascia ombreggiante; Cella campione in silicio monocristallino Cella campione in silicio policristallino Termoigrometro; Anemometro; 5 sensori di temperatura, ognuno associato ad un modulo fotovoltaico.

2.2. DataloggersQuesti dispositivi, di fattura LSI LASTEM, permettono l’interfacciamento dei sensori con il calcolatore.

Sono tre, di cui uno dedicato ai sensori metereologici e due al settore fotovoltaico.

Questi dispositivi, oltre a effettuare il prelievo dei dati dai sensori, ne fanno una prima elaborazione: per ogni minuto di registrazione e in base al sensore di origine, forniscono il valore istantaneo, massimo, minimo e minimo.

2.3. CalcolatoreIl calcolatore fornito da LSI LASTEM è un portatile di marca HP®, modello Compaq 6037s, con sistema operativo Microsoft® Windows Vista® e di cui riporto i punti salienti della configurazione hardware:

Processore: Intel® Core™2 Duo T5670 @1.80GHz; Memoria RAM: 2.00 GB; Capacità Hard Disk: 250 GB.

In tale portatile è stata installata, da parte del fornitore, la suite software proprietaria di LSI LASTEM necessaria all’acquisizione ed al salvataggio dei dati. Tale suite si compone dei programmi qui di seguito elencati.

3DOM3DOM (Free Datalogger Oriented Manager) è il software contenente i driver per i datalogger e per gli strumenti di rilevazione; consente la configurazione dei sensori e la visualizzazione dei dati istantanei. Inoltre, permette la configurazione dei servizi di stoccaggio dati, tra cui il database Gidas.

CommNetEGCommNetEG è un programma che permette la ricezione dei dati registrati dagli strumenti LSI LASTEM, sia in modalità manuale che automatica.

6

Page 7: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

GidasViewerGidasViewer è un programma per la visualizzazione e la rielaborazione dei dati presenti nel database Gidas.

2.4. Obiettivi

Quello che si vuole realizzare è una infrastruttura in grado di fornire i dati memorizzati secondo le seguenti strutture:

Tutti i dati metereologici ed elettrici memorizzati, organizzati in base alla data e all’ora di campionamento;

I dati metereologici ed elettrici memorizzati, organizzati in base alla data e all’ora di campionamento e di attuale utilizzo nelle linee di ricerca attive;

I dati metereologici ed elettrici memorizzati, organizzati in base alla data e all’ora di campionamento, di attuale utilizzo nelle linee di ricerca attive e relativa analisi di stabilità;

I dati provenienti dall’anemometro;

Partendo poi dai punti precedenti, si vuole fornire solamente i dati relativi a un determinato intervallo di tempo;

infine, si vuole fornire i dati in formato XML.

7

Page 8: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

3. PROGETTAZIONE

Per soddisfare le richieste di cui il punto 2.4, è stato adottato un approccio di tipo Bottom-Up, di cui lo schema seguente riassume quanto implementato:

Figura 2 – Schema delle dipendenze

8

CORE Schema

WEB Schema

Table

RawValue

Table

ValueConfiguration

Table

InstrumentMeasure

Table

ElabTypeList

View

vData_GetAll

View

SortedAverageData

View

SortedInstantaneousData

View

SortedMinData

View

SortedMaxData

View

SortedWindData

View

SortedData

-Voc-W-Vmp-VoltageThreshold

«Function»StabilityVoltage

«Function»StabilityCheck2

-Pn-PowerThreshold

«Function»StabilityPower

-RadDIFFusaThreshold

«Function»StabilityRadiance

«Function»StabilityCheck1

-DateStart-DateStop

«Table valued Function»Stability_WhitinDate

-DateStart-DateStop

«Table valued Function»StabilityAlternative_WhitinDate

«Table valued Function»StabilityAlternative_GetAll

«Table valued Function»Stability_GetAll

«Table valued Function»Stability_ToXML

«Table valued Function»StabilityAlternative_ToXML

-DateStart-DateStop

«Table valued Function»WindData_WhitinDate

«Table valued Function»WindData_ToXML

-DateStart-DateStop

«Table valued Function»SortedData_WhitinDate

«Table valued Function»SortedData_ToXML

Page 9: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

Le tabelle RawValue, ValueConfiguration, InstrumentMeasure ed ElabTypeList appartengono tutte allo schema Core, creato e gestito dal programma 3DOM durante l’installazione.

Viene riportato in Figura 3 lo schema logico delle suddette tabelle.

TABELLA CAMPIRawValue ConfigurationID*, ElaborationDate,

ElaborationValue, ValidPercentageValueConfiguration ValueConfigurationID,

InstrumentConfigurationID*, MeasureIndex*, ElaborationBaseIndex, ElaborationItemIndex*, ElaborationType*, Position

InstrumentMeasure InstrumentConfigurationId, MeasureIndex, MeasureName, MeasurePrecision, MeasureUnit, MeasureProperty, MeasureId

ElabTypeList IdElabType, ElabTypeString, ElabTypeToDo

Figura 3 - Schema logico dello schema Core

9

Page 10: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

Lo schema Web Raccoglie l’implementazione effettiva del codice e delle viste sviluppate per questo progetto.

Per quanto possibile, si è cercato di mantenere la nomenclatura usata dai progettisti della base di dati.

Le viste denominate con ‘Sorted’, la cui implementazione è riportata dal paragrafo 4.2 al 4.6, hanno un duplice scopo: il primo, fondamentale, è quello di ‘rimodellare’ la struttura della tabella Core.RawValue, in modo da ridurre la chiave primaria al solo campo ElaborationDate, portando una tabella della forma

ELAB.DATE MEASURENAME ELABO.TYPE ELAB.VALUE<data-ora1> <misura-1> <elaborazione-1> <valore1><data-ora1> <misura-1> <elaborazione-2> <valore2><data-ora1> <misura-2> <elaborazione-1> <valore3><data-ora1> <misura-2> <elaborazione-2> <valore4><data-ora2> <misura-1> <elaborazione-1> <valore5>

… … … …

Nella forma

ELAB.DATE MISURA-1 ELAB-1

MISURA-1 ELAB-2

MISURA-2 ELAB-1

<data-ora1> <valore1> <valore2> <valore3> …<data-ora2> <valore5> … … …

La seconda funzione di ogni vista è quella di operare un taglio verticale alla tabella appena formatasi, evidenziando solo il sottoinsieme dei dati di interesse.

Analisi di stabilitàSui dati provenienti dai pannelli fotovoltaici viene svolta una suddivisione in dati stabili e instabili.

In Figura 4 è possibile notare la differenza tra i due criteri utilizzati per tale suddivisione. Entrambi si basano sull’analisi dei dati relativi alla potenza (P) erogata dal modulo fotovoltaico e dall’irradianza diffusa (G), mentre il criterio1 richiede una ulteriore analisi, basata sulla tensione (V).

10

Page 11: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

Figura 4 – Criteri di stabilità

Al fine di semplificare l’esposizione, nel resto dell’analisi verrà esaminato il criterio 1, riportando tra parentesi quadre [] le differenze con il criterio 2.

Un dato si ritiene stabile se soddisfa contemporaneamente le tre condizioni seguenti [solo le prime due]:

G) la radiazione diffusa dev’essere maggiore di Sogli aGW

m2 ;

Viene implementato al punto (4.11).

P) la differenza di potenza tra il valore osservato e quello atteso deve risultare

inferiore a Sogli aP, ovvero se vale

|Pmisurata−Pattesa

Pattesa|<Sogli aP

Dove Pattesa viene calcolata secondo l’equazione

Pattesa=Pn∗G

100

Viene implementato al punto (4.10).

V) la differenza di tensione tra il valore osservato e quello atteso deve risultare

inferiore a Sogli aV , ovvero se vale

|V misurata−V attesa

V attesa|<Sogli aV

Dove V attesa viene calcolata secondo l’equazione

V attesa=V mp+β

100∗V OC∗(T−25)

11

Criterio 1

PV G

Criterio 2

P

G

AND

AND

Page 12: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

Viene implementato al punto (4.11).

Si ha quindi che l’analisi di stabilità dei dati provenienti da un singolo modulo richiede l’immissione di 7 [i primi 3] parametri da parte dell’utente:

Sogli aP limite entro il quale il rapporto viene considerato stabile

Sogli aP limite entro il quale il rapporto viene considerato stabile

Pn potenza nominale del modulo;

Sogli aP limite entro il quale il rapporto viene considerato stabile

V mp tensione del punto di massima potenza a condizioni STC2

V OC tensione di circuito aperto a condizioni STC

β Coefficiente di temperatura di V OC

Figura 5 - Parametri dell'analisi di stabilità

Le soglie sono a discrezione dell’utente, in base alla rigidità richiesta dall’analisi.

Gli altri valori sono invece reperibili nei datasheet dei moduli fotovoltaici.

Inoltre, per ogni coppia tensione-potenza sono richiesti anche

T temperatura istantanea del modulo in esameG irraggiamento registrato dal piranometro avente lo stesso

angolo di tilt del modulo

2 Temperatura di cella 25° C, irraggiamento 1000 W/m2, con distribuzione spettrale di riferimento (massa d’aria AM 1,5).

12

Page 13: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

PrestazioniL’introduzione di un indice nel campo ElaborationDate della tabella Core.RawValue ha permesso l’abbattimento del tempo di elaborazione dovuto alle operazioni delle viste vSortedMinData_GetAll, vSortedMaxData_GetAll, vSortedAverageData_GetAll, vSortedInstantaneousData_GetAll, vSortedWindData_GetAll, riducendo il costo dell’elaborazione a sole operazioni di Hash Matching.

Se da un lato questo indice conduce a un incremento di prestazioni, dall’altro aumenta considerevolmente lo spazio occupato su disco;

per dare un idea dei numeri in gioco, si segnala che la tabella Core.RawValue consta, alla data di stesura di questo documento, di più di 50 milioni di record. Si rimanda al capitolo sulle considerazioni finali per un ulteriore approfondimento.

13

Page 14: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4. IMPLEMENTAZIONE

4.1. vData_GetAllCostituisce le fondamenta dello schema sviluppato, ha il compito di estrarre i valori delle misure memorizzate.

CREATE VIEW [Web].[vData_GetAll]

AS

SELECT RV.ElaborationDate, IM.MeasureName, RV.ElaborationValue, ETL.ElabTypeString AS Elaboration

FROM Core.RawValue AS RV INNER JOIN Core.ValueConfiguration AS VC ON RV.ValueConfigurationID = VC.ValueConfigurationID INNER JOIN Core.InstrumentMeasure AS IM ON IM.InstrumentConfigurationId = VC.InstrumentConfigurationID AND IM.MeasureIndex = VC.MeasureIndex INNER JOIN Core.ElabTypeList AS ETL ON ETL.IdElabType = VC.ElaborationType

14

Page 15: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.2. vSortedMinData_GetAllPer ogni terna di valori massimi, medi e minimi campionati ogni minuto, estrae i valori minimi.

CREATE VIEW [Web].[vSortedMinData_GetAll]ASSELECT ElaborationDate,

SUM(CASE MeasureName WHEN 'TENSAlim' THEN ElaborationValue ELSE NULL END) AS TENSAlim, SUM(CASE MeasureName WHEN 'TempINTerna' THEN ElaborationValue ELSE NULL END) AS TempINTerna, SUM(CASE MeasureName WHEN 'Tensione-1' THEN ElaborationValue ELSE NULL END) AS VinQPro34, SUM(CASE MeasureName WHEN 'Corrente-1' THEN ElaborationValue ELSE NULL END) AS IinQPro34, SUM(CASE MeasureName WHEN 'Tensione-2' THEN laborationValue ELSE NULL END) AS VoutQPro34, SUM(CASE MeasureName WHEN 'Corrente-2' THEN ElaborationValue ELSE NULL END) AS IoutQPro34, SUM(CASE MeasureName WHEN 'Tensione-3' THEN ElaborationValue ELSE NULL END) AS VinQPro10, SUM(CASE MeasureName WHEN 'Corrente-3' THEN ElaborationValue ELSE NULL END) AS IinQPro10, SUM(CASE MeasureName WHEN 'Tensione-4' THEN ElaborationValue ELSE NULL END) AS VinQSmart34, SUM(CASE MeasureName WHEN 'Corrente-4' THEN ElaborationValue ELSE NULL END) AS IinQSmart34, SUM(CASE MeasureName WHEN 'Tensione-5' THEN ElaborationValue ELSE NULL END) AS VoutQSmart34, SUM(CASE MeasureName WHEN 'Corrente-5' THEN ElaborationValue ELSE NULL END) AS IoutQSmart34, SUM(CASE MeasureName WHEN 'Tensione-6' THEN ElaborationValue ELSE NULL END) AS VinQSmart10, SUM(CASE MeasureName WHEN 'Corrente-6' THEN ElaborationValue ELSE NULL END) AS IinQSmart10, SUM(CASE MeasureName WHEN 'Tensione-7' THEN ElaborationValue ELSE NULL END) AS VinFS, SUM(CASE MeasureName WHEN 'Corrente-7' THEN ElaborationValue ELSE NULL END) AS IinFS, SUM(CASE MeasureName WHEN 'UmiditaRel' THEN ElaborationValue ELSE NULL END) AS UmiditaRel, SUM(CASE MeasureName WHEN 'TempAria' THEN ElaborationValue ELSE NULL END) AS TempAria, SUM(CASE MeasureName WHEN 'DIRvento' THEN ElaborationValue ELSE NULL END) AS DIRvento, SUM(CASE MeasureName WHEN 'VELvento' THEN ElaborationValue ELSE NULL END) AS VELvento, SUM(CASE MeasureName WHEN 'RadDIFFusa' THEN ElaborationValue ELSE NULL END) AS RadDIFFusa, SUM(CASE MeasureName WHEN 'RadGLOBale' THEN ElaborationValue ELSE NULL END) AS RadGLOBale, SUM(CASE MeasureName WHEN 'RadGL45' THEN ElaborationValue ELSE NULL END) AS RadGL45, SUM(CASE MeasureName WHEN 'POLI' THEN ElaborationValue ELSE NULL END) AS POLI, SUM(CASE MeasureName WHEN 'MONO' THEN ElaborationValue ELSE NULL END) AS MONO, SUM(CASE MeasureName WHEN 'LivelloBATT' THEN

15

Page 16: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

ElaborationValue ELSE NULL END) AS LivelloBATT, SUM(CASE MeasureName WHEN 'TeSUPerf1' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQPro34, SUM(CASE MeasureName WHEN 'TeSUPerf2' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQSmart34, SUM(CASE MeasureName WHEN 'TeSUPerf3' THEN ElaborationValue ELSE NULL END) AS TeSUPerfFS, SUM(CASE MeasureName WHEN 'TeSUPerf4' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQPro10, SUM(CASE MeasureName WHEN 'TeSUPerf5' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQSmart10

FROM Web.vData_GetAllWHERE (Elaboration = 'Min')GROUP BY ElaborationDate

16

Page 17: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.3. vSortedMaxData_GetAllPer ogni terna di valori massimi, medi e minimi campionati ogni minuto, estrae i valori massimi.

CREATE VIEW [Web].[vSortedMinData_GetAll]ASSELECT ElaborationDate,

SUM(CASE MeasureName WHEN 'TENSAlim' THEN ElaborationValue ELSE NULL END) AS TENSAlim, SUM(CASE MeasureName WHEN 'TempINTerna' THEN ElaborationValue ELSE NULL END) AS TempINTerna, SUM(CASE MeasureName WHEN 'Tensione-1' THEN ElaborationValue ELSE NULL END) AS VinQPro34, SUM(CASE MeasureName WHEN 'Corrente-1' THEN ElaborationValue ELSE NULL END) AS IinQPro34, SUM(CASE MeasureName WHEN 'Tensione-2' THEN laborationValue ELSE NULL END) AS VoutQPro34, SUM(CASE MeasureName WHEN 'Corrente-2' THEN ElaborationValue ELSE NULL END) AS IoutQPro34, SUM(CASE MeasureName WHEN 'Tensione-3' THEN ElaborationValue ELSE NULL END) AS VinQPro10, SUM(CASE MeasureName WHEN 'Corrente-3' THEN ElaborationValue ELSE NULL END) AS IinQPro10, SUM(CASE MeasureName WHEN 'Tensione-4' THEN ElaborationValue ELSE NULL END) AS VinQSmart34, SUM(CASE MeasureName WHEN 'Corrente-4' THEN ElaborationValue ELSE NULL END) AS IinQSmart34, SUM(CASE MeasureName WHEN 'Tensione-5' THEN ElaborationValue ELSE NULL END) AS VoutQSmart34, SUM(CASE MeasureName WHEN 'Corrente-5' THEN ElaborationValue ELSE NULL END) AS IoutQSmart34, SUM(CASE MeasureName WHEN 'Tensione-6' THEN ElaborationValue ELSE NULL END) AS VinQSmart10, SUM(CASE MeasureName WHEN 'Corrente-6' THEN ElaborationValue ELSE NULL END) AS IinQSmart10, SUM(CASE MeasureName WHEN 'Tensione-7' THEN ElaborationValue ELSE NULL END) AS VinFS, SUM(CASE MeasureName WHEN 'Corrente-7' THEN ElaborationValue ELSE NULL END) AS IinFS, SUM(CASE MeasureName WHEN 'UmiditaRel' THEN ElaborationValue ELSE NULL END) AS UmiditaRel, SUM(CASE MeasureName WHEN 'TempAria' THEN ElaborationValue ELSE NULL END) AS TempAria, SUM(CASE MeasureName WHEN 'DIRvento' THEN ElaborationValue ELSE NULL END) AS DIRvento, SUM(CASE MeasureName WHEN 'VELvento' THEN ElaborationValue ELSE NULL END) AS VELvento, SUM(CASE MeasureName WHEN 'RadDIFFusa' THEN ElaborationValue ELSE NULL END) AS RadDIFFusa, SUM(CASE MeasureName WHEN 'RadGLOBale' THEN ElaborationValue ELSE NULL END) AS RadGLOBale, SUM(CASE MeasureName WHEN 'RadGL45' THEN ElaborationValue ELSE NULL END) AS RadGL45, SUM(CASE MeasureName WHEN 'POLI' THEN ElaborationValue ELSE NULL END) AS POLI, SUM(CASE MeasureName WHEN 'MONO' THEN ElaborationValue ELSE NULL END) AS MONO, SUM(CASE MeasureName WHEN 'LivelloBATT' THEN

17

Page 18: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

ElaborationValue ELSE NULL END) AS LivelloBATT, SUM(CASE MeasureName WHEN 'TeSUPerf1' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQPro34, SUM(CASE MeasureName WHEN 'TeSUPerf2' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQSmart34, SUM(CASE MeasureName WHEN 'TeSUPerf3' THEN ElaborationValue ELSE NULL END) AS TeSUPerfFS, SUM(CASE MeasureName WHEN 'TeSUPerf4' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQPro10, SUM(CASE MeasureName WHEN 'TeSUPerf5' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQSmart10

FROM Web.vData_GetAllWHERE (Elaboration = 'Max')GROUP BY ElaborationDate

18

Page 19: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.4. vSortedInstantaneousData_GetAllPer ogni set di campionati ogni minuto, estrae i valori privi di elaborazione o istantanei.

CREATE VIEW [Web].[vSortedMinData_GetAll]ASSELECT ElaborationDate,

SUM(CASE MeasureName WHEN 'TENSAlim' THEN ElaborationValue ELSE NULL END) AS TENSAlim, SUM(CASE MeasureName WHEN 'TempINTerna' THEN ElaborationValue ELSE NULL END) AS TempINTerna, SUM(CASE MeasureName WHEN 'LivelloBATT' THEN ElaborationValue ELSE NULL END) AS LivelloBATT

FROM Web.vData_GetAllWHERE (Elaboration = 'Inst')GROUP BY ElaborationDate

19

Page 20: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.5. vSortedAverageData_GetAllPer ogni terna di valori massimi, medi e minimi campionati ogni minuto, estrae i valori medi.

CREATE VIEW [Web].[vSortedAverageData_GetAll]ASSELECT ElaborationDate,

SUM(CASE MeasureName WHEN 'TENSAlim' THEN ElaborationValue ELSE NULL END) AS TENSAlim, SUM(CASE MeasureName WHEN 'TempINTerna' THEN ElaborationValue ELSE NULL END) AS TempINTerna, SUM(CASE MeasureName WHEN 'Tensione-1' THEN ElaborationValue ELSE NULL END) AS VinQPro34, SUM(CASE MeasureName WHEN 'Corrente-1' THEN ElaborationValue ELSE NULL END) AS IinQPro34, SUM(CASE MeasureName WHEN 'Tensione-2' THEN laborationValue ELSE NULL END) AS VoutQPro34, SUM(CASE MeasureName WHEN 'Corrente-2' THEN ElaborationValue ELSE NULL END) AS IoutQPro34, SUM(CASE MeasureName WHEN 'Tensione-3' THEN ElaborationValue ELSE NULL END) AS VinQPro10, SUM(CASE MeasureName WHEN 'Corrente-3' THEN ElaborationValue ELSE NULL END) AS IinQPro10, SUM(CASE MeasureName WHEN 'Tensione-4' THEN ElaborationValue ELSE NULL END) AS VinQSmart34, SUM(CASE MeasureName WHEN 'Corrente-4' THEN ElaborationValue ELSE NULL END) AS IinQSmart34, SUM(CASE MeasureName WHEN 'Tensione-5' THEN ElaborationValue ELSE NULL END) AS VoutQSmart34, SUM(CASE MeasureName WHEN 'Corrente-5' THEN ElaborationValue ELSE NULL END) AS IoutQSmart34, SUM(CASE MeasureName WHEN 'Tensione-6' THEN ElaborationValue ELSE NULL END) AS VinQSmart10, SUM(CASE MeasureName WHEN 'Corrente-6' THEN ElaborationValue ELSE NULL END) AS IinQSmart10, SUM(CASE MeasureName WHEN 'Tensione-7' THEN ElaborationValue ELSE NULL END) AS VinFS, SUM(CASE MeasureName WHEN 'Corrente-7' THEN ElaborationValue ELSE NULL END) AS IinFS, SUM(CASE MeasureName WHEN 'UmiditaRel' THEN ElaborationValue ELSE NULL END) AS UmiditaRel, SUM(CASE MeasureName WHEN 'TempAria' THEN ElaborationValue ELSE NULL END) AS TempAria, SUM(CASE MeasureName WHEN 'DIRvento' THEN ElaborationValue ELSE NULL END) AS DIRvento, SUM(CASE MeasureName WHEN 'VELvento' THEN ElaborationValue ELSE NULL END) AS VELvento, SUM(CASE MeasureName WHEN 'RadDIFFusa' THEN ElaborationValue ELSE NULL END) AS RadDIFFusa, SUM(CASE MeasureName WHEN 'RadGLOBale' THEN ElaborationValue ELSE NULL END) AS RadGLOBale, SUM(CASE MeasureName WHEN 'RadGL45' THEN ElaborationValue ELSE NULL END) AS RadGL45, SUM(CASE MeasureName WHEN 'POLI' THEN ElaborationValue ELSE NULL END) AS POLI, SUM(CASE MeasureName WHEN 'MONO' THEN ElaborationValue ELSE NULL END) AS MONO, SUM(CASE MeasureName WHEN 'LivelloBATT' THEN

20

Page 21: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

ElaborationValue ELSE NULL END) AS LivelloBATT, SUM(CASE MeasureName WHEN 'TeSUPerf1' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQPro34, SUM(CASE MeasureName WHEN 'TeSUPerf2' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQSmart34, SUM(CASE MeasureName WHEN 'TeSUPerf3' THEN ElaborationValue ELSE NULL END) AS TeSUPerfFS, SUM(CASE MeasureName WHEN 'TeSUPerf4' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQPro10, SUM(CASE MeasureName WHEN 'TeSUPerf5' THEN ElaborationValue ELSE NULL END) AS TeSUPerfQSmart10

FROM Web.vData_GetAllWHERE (Elaboration = 'Ave')GROUP BY ElaborationDate

21

Page 22: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.6. vSortedWindData_GetAllPer ogni set di valori campionati ogni minuto, estrae i valori provenienti dal solo anemometro.

CREATE VIEW [Web].[vSortedWindData_GetAll]ASSELECT TOP (100) PERCENT ElaborationDate, SUM(CASE

Elaboration WHEN 'RisDir' THEN ElaborationValue ELSE NULL END) AS [DIRVento RisDir], SUM(CASE Elaboration WHEN 'PrevDir' THEN ElaborationValue ELSE NULL END) AS [DIRVento PrevDir], SUM(CASE Elaboration WHEN 'RisVel' THEN ElaborationValue ELSE NULL END) AS [DIRVento RisVel], SUM(CASE Elaboration WHEN 'StdDevDir' THEN ElaborationValue ELSE NULL END) AS [DIRVento StdDevDir], SUM(CASE Elaboration WHEN 'CalmPerc' THEN ElaborationValue ELSE NULL END) AS [DIRVento CalmPerc], SUM(CASE Elaboration WHEN 'Min' THEN ElaborationValue ELSE NULL END) AS [VELVento Min], SUM(CASE Elaboration WHEN 'Ave' THEN ElaborationValue ELSE NULL END) AS [VELVento Ave], SUM(CASE Elaboration WHEN 'Max' THEN ElaborationValue ELSE NULL END) AS [VELVento Max]

FROM Web.vData_GetAllWHERE (MeasureName = 'DIRVento') OR

(MeasureName = 'VELVento')GROUP BY ElaborationDateORDER BY ElaborationDate

22

Page 23: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.7. vSortedData_GetAllAffianca orizzontalmente i valori medi e istantanei, provenienti dalle viste 4.4 e 4.5.

CREATE VIEW [Web].[vSortedData_GetAll]ASSELECT AVE.ElaborationDate, AVE.VinQPro34,

AVE.IinQPro34, AVE.VoutQPro34, AVE.IoutQPro34, AVE.VinQPro10, AVE.IinQPro10, AVE.VinQSmart34, AVE.IinQSmart34, AVE.VoutQSmart34, AVE.IoutQSmart34, AVE.VinQSmart10, AVE.IinQSmart10, AVE.VinFS, AVE.IinFS, AVE.UmiditaRel, AVE.TempAria, AVE.RadDIFFusa, AVE.RadGLOBale, AVE.RadGL45, AVE.POLI, AVE.MONO, AVE.TeSUPerfQPro34, AVE.TeSUPerfQSmart34, AVE.TeSUPerfFS, AVE.TeSUPerfQPro10, AVE.TeSUPerfQSmart10, INST.TENSAlim, INST.TempINTerna, INST.LivelloBATT

FROM Web.vSortedAverageData_GetAll AS AVE INNER JOIN Web.vSortedInstantaneousData_GetAll AS INST ON INST.ElaborationDate = AVE.ElaborationDate

23

Page 24: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.8. fSortedData_WithinDateOttiene la tabella con i dati medi e istantanei appartenenti ad un certo intervallo di tempo.

CREATE FUNCTION [Web].[fSortedData_WithinDate] (

-- Add the parameters for the function here@DateStart datetime, @DateStop datetime

)RETURNS TABLE ASRETURN (

-- Add the SELECT statement with parameter references here

SELECT * FROM Web.vSortedData_GetAllWHERE ElaborationDate BETWEEN @DateStart AND

@DateStop)

24

Page 25: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.9. fStabilityVoltageCriterio di stabilità basato sulla tensione.Restituisce ‘0’ se instabile, ‘1’ se stabile.

CREATE FUNCTION [Web].[fStabilityVoltage] (

-- Add the parameters for the function here@Vmp real, --Voltage at maximum power@W real, --Temperature Coefficient of Voc@Voc real, --Open Circuit Voltage@Threshold real,@Vin real, --Voltage analyzed@Temperature real --Temperature of the module

)RETURNS bitASBEGIN

-- Declare the return variable hereDECLARE @Result bitDECLARE @PreResult realDECLARE @Vattesa real

-- Add the T-SQL statements to compute the return value here

SET @Vattesa=@Vmp+(@W*@Vin)/100*(@Temperature-25)

-- Avoid the division by zeroIF (@Vattesa=0)

Return 0

SET @PreResult=ABS((@Vin-@Vattesa)/@Vattesa)

-- Return the result of the functionIF (@PreResult<@Threshold)

set @result=1else

set @result=0RETURN @Result

END

25

Page 26: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.10. fStabilityPowerCriterio di stabilità basato sulla potenza.Restituisce ‘0’ se instabile, ‘1’ se stabile.

CREATE FUNCTION [Web].[fStabilityPower_QPro34] (

-- Add the parameters for the function here@Pn real, --Nominal Power of the module@Threshold real,@Irraggiamento real, --Irradiance of the module@Pmisurata real --Measured power

)RETURNS bitASBEGIN

-- Declare the return variable hereDECLARE @Result bitDECLARE @Pattesa real

SET @Pattesa=@Pn*@Irraggiamento/1000

--Avoid the division by zeroIF(@Pattesa=0)RETURN 0

-- Return the result of the functionIF (ABS((@Pmisurata-@Pattesa)/@Pattesa)<@Threshold)

set @result=1ELSE

SET @Result=0RETURN @Result

END

26

Page 27: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.11. fStabilityIrradianceCriterio di stabilità basato sull’irradianza diffusa.Restituisce ‘0’ se instabile, ‘1’ se stabile.

CREATE FUNCTION [Web].[fStabilityIrradiance](

-- Add the parameters for the function here@Threshold real,@Value real

)RETURNS bitASBEGIN

-- Declare the return variable hereDECLARE @Result bit

IF (@Value>@Threshold)set @result=1

else set @result=0

RETURN @Result-- Return the result of the function

END

27

Page 28: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.12. fStabilityCheck1Implementa il criterio1 per l’analisi di stabilità.

CREATE FUNCTION [Web].[fStabilityCheck1] (

--Add the parameters for the function here--Parameters that will feed the stability functions@Vmp real,@W real,@Voc real,@Pn real,@RadianceThreshold real,@PowerThreshold real,@VoltageThreshold real,@DiffIrradiance real,@AssocIrradiance real,@Vin real,@Iin real,@Temperature real

)RETURNS bitASBEGIN

-- Declare the return variable hereDECLARE @Result bit=Web.fStabilityPower_QPro34(@Pn,

@PowerThreshold, @AssocIrradiance ,@Iin*@Vin)

SET @Result = @result & Web.fStabilityDiffIrradiance(@RadianceThreshold, @DiffIrradiance)

SET @Result = @result &Web.fStabilityVoltage_QPro34(@Vmp, @W, @Voc, @VoltageThreshold, @Vin, @Temperature)

-- Return the result of the functionRETURN @Result

END

28

Page 29: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.13. fStabilityCheck2Implementa il criterio1 per l’analisi di stabilità.

CREATE FUNCTION [Web].[fStabilityCheck2] (

-- Add the parameters for the function here@RadianceThreshold decimal,@Pn decimal,@PowerThreshold decimal,@DiffIrradiance decimal,@AssocIrradiance decimal,@Pin decimal

)RETURNS bitASBEGIN

-- Declare the return variable hereDECLARE @Result bit

SET @Result = Web.fStabilityDiffIrradiance(@RadianceThreshold, @DiffIrradiance) & Web.fStabilityPower_QPro34(@Pn, @PowerThreshold, @AssocIrradiance ,@Pin)

-- Return the result of the functionRETURN @Result

END

29

Page 30: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.14. fStability_GetAllOttiene la tabella con i dati medi e istantanei e la relativa analisi di stabilità, effettuata con il criterio 1.

CREATE FUNCTION [Web].[fStability_GetAll](--QSmart34

@VmpQSmart34 real,@WQSmart34 real,@VocQSmart34 real,@PnQSmart34 real,--QSmart10@VmpQSmart10 real,@WQSmart10 real,@VocQSmart10 real,@PnQSmart10 real,--QPro34@VmpQPro34 real,@WQPro34 real,@VocQPro34 real,@PnQPro34 real,--QPro10@VmpQPro10 real,@WQPro10 real,@VocQPro10 real,@PnQPro10 real,--FS@VmpFS real,@WFS real,@VocFS real,@PnFS real,--common@RadianceThreshold real,@PowerThreshold real,@VoltageThreshold real)

RETURNS TABLEASRETURN( -- Insert statements for procedure here

SELECT ElaborationDate, VinQPro34, IinQPro34, TeSUPerfQPro34, Web.fStabilityCheck1(@VmpQPro34, @WQPro34, @VocQPro34, @PnQPro34, @RadianceThreshold, @PowerThreshold, @VoltageThreshold, RadDIFFusa, RadGL45 ,VinQPro34, IinQPro34, TeSUPerfQPro34) AS QPro34Stability, VoutQPro34, IoutQPro34, VinQPro10, IinQPro10, TeSUPerfQPro10, Web.fStabilityCheck1(@VmpQPro10, @WQPro10, @VocQPro10, @PnQPro10, @RadianceThreshold, @PowerThreshold, @VoltageThreshold, RadDIFFusa, RadGLOBale ,VinQPro10, IinQPro10, TeSUPerfQPro10) AS QPro10Stability, VinQSmart34, IinQSmart34, TeSUPerfQSmart34, Web.fStabilityCheck1(@VmpQSmart34, @WQSmart34, @VocQSmart34, @PnQSmart34, @RadianceThreshold, @PowerThreshold, @VoltageThreshold, RadDIFFusa, RadGL45 ,VinQSmart34, IinQSmart34, TeSUPerfQSmart34) AS QSmart34Stability, VoutQSmart34, IoutQSmart34,

30

Page 31: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

VinQSmart10, IinQSmart10, TeSUPerfQSmart10, Web.fStabilityCheck1(@VmpQSmart10, @WQSmart10, @VocQSmart10, @PnQSmart10, @RadianceThreshold, @PowerThreshold, @VoltageThreshold, RadDIFFusa, RadGLOBale ,VinQSmart10, IinQSmart10, TeSUPerfQSmart10) AS QSmart10Stability, VinFS, IinFS, TeSUPerfFS, Web.fStabilityCheck1(@VmpFS, @WFS, @VocFS, @PnFS, @RadianceThreshold, @PowerThreshold, @VoltageThreshold, RadDIFFusa, RadGL45 ,VinFS, IinFS, TeSUPerfFS) AS FSStability, UmiditaRel, TempAria, RadDIFFusa, RadGLOBale, RadGL45, POLI, MONO FROM Web.vSortedData_GetAll)

31

Page 32: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.15. fStabilityAlternative_GetAllOttiene la tabella con i dati medi e istantanei e la relativa analisi di stabilità, effettuata con il criterio 2.

CREATE FUNCTION [Web].[fStabilityAlternative_GetAll] (

--QSmart34@PnQSmart34 real,--QSmart10@PnQSmart10 real,--QPro34@PnQPro34 real,--QPro10@PnQPro10 real,--FS@PnFS real,--common@RadianceThreshold real,@PowerThreshold real)

RETURNS TABLEASRETURN( -- Insert statements for procedure here

SELECT ElaborationDate, VinQPro34, IinQPro34, Web.fStabilityCheck2(@PnQPro34,VinQPro34*IinQPro34,@RadianceThreshold, @PowerThreshold, RadDIFFusa, RadGL45) AS QPro34Stability, VoutQPro34, IoutQPro34, VinQPro10, IinQPro10,Web.fStabilityCheck2(@PnQPro10,VinQPro10*IinQPro10, @RadianceThreshold, @PowerThreshold, RadDIFFusa, RadGLOBale) AS QPro10Stability, VinQSmart34, IinQSmart34, Web.fStabilityCheck2(@PnQSmart34, VinQSmart34*IinQSmart34, @RadianceThreshold, @PowerThreshold, RadDIFFusa, RadGL45) AS QSmart34Stability, VoutQSmart34, IoutQSmart34, VinQSmart10, IinQSmart10, Web.fStabilityCheck2(@PnQSmart10, VinQSmart10*IinQSmart10, @RadianceThreshold, @PowerThreshold, RadDIFFusa, RadGLOBale) AS QSmart10Stability, VinFS, IinFS, Web.fStabilityCheck2(@PnFS, VinFS*IinFS, @RadianceThreshold, @PowerThreshold, RadDIFFusa, RadGL45) AS FSStability, UmiditaRel, TempAria, RadDIFFusa, RadGLOBale, RadGL45, POLI, MONO, TeSUPerfQPro34, TeSUPerfQSmart34, TeSUPerfFS, TeSUPerfQPro10, TeSUPerfQSmart10 FROM Web.vSortedAverageData_GetAll )

32

Page 33: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.16. fStability_WithinDateOttiene la tabella con i dati medi e istantanei appartenenti ad un certo intervallo temporaneo e la relativa analisi di stabilità, effettuata con il criterio 1.

CREATE FUNCTION [Web].[fStability_WithinDate](--QSmart34

@VmpQSmart34 real,@WQSmart34 real,@VocQSmart34 real,@PnQSmart34 real,--QSmart10@VmpQSmart10 real,@WQSmart10 real,@VocQSmart10 real,@PnQSmart10 real,--QPro34@VmpQPro34 real,@WQPro34 real,@VocQPro34 real,@PnQPro34 real,--QPro10@VmpQPro10 real,@WQPro10 real,@VocQPro10 real,@PnQPro10 real,--FS@VmpFS real,@WFS real,@VocFS real,@PnFS real,--common@RadianceThreshold real,@PowerThreshold real,@VoltageThreshold real,@DateStart datetime,@DateStop datetime)

RETURNS TABLEASRETURN( -- Insert statements for procedure here

SELECT * FROM Web.fStability_GetAll(@VmpQSmart34, @WQSmart34, @VocQSmart34, @PnQSmart34, @VmpQSmart10, @WQSmart10, @VocQSmart10, @PnQSmart10, @VmpQPro34, @WQPro34, @VocQPro34, @PnQPro34, @VmpQPro10, @WQPro10, @VocQPro10, @PnQPro10, @VmpFS, @WFS, @VocFS, @PnFS, @RadianceThreshold, @PowerThreshold, @VoltageThreshold) WHERE ElaborationDate BETWEEN @DateStart AND @DateStop)

33

Page 34: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.17. fStabilityAlternative_WithinDateOttiene la tabella con i dati medi e istantanei appartenenti ad un certo intervallo temporaneo e la relativa analisi di stabilità, effettuata con il criterio 2.

CREATE FUNCTION [Web].[fStabilityAlternative_WhitinDate](

--QSmart34@PnQSmart34 real,--QSmart10@PnQSmart10 real,--QPro34@PnQPro34 real,--QPro10@PnQPro10 real,--FS@PnFS real,--common@RadianceThreshold real,@PowerThreshold real,@DateStart datetime,@DateStop datetime)

RETURNS TABLEASRETURN( -- Insert statements for procedure here

SELECT * FROM Web.fStabilityAlternative_GetAll(@PnQSmart34, @PnQSmart10, @PnQPro34, @PnQPro34, @PnFS, @RadianceThreshold, @PowerThreshold) WHERE ElaborationDate BETWEEN @DateStart AND @DateStop )

34

Page 35: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.18. fWind_WithinDateOttiene la tabella con i dati provenienti dall’anemometro appertenenti all’intervallo temporale specificato.

CREATE FUNCTION [Web].[fWind_WithinDate] (

-- Add the parameters for the function here@DateStart datetime, @DateStop datetime

)RETURNS TABLE ASRETURN (

-- Add the SELECT statement with parameter references here

SELECT * FROM Web.vSortedWindData_GetAllWHERE ElaborationDate BETWEEN @DateStart AND

@DateStop)

35

Page 36: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.19. fSortedData_ToXMLEspone in formato XML i dati provenienti dall’anemometro.

CREATE FUNCTION [Web].[fSortedData_ToXML] (

-- Add the parameters for the function here@DateStart datetime, @DateStop datetime

)RETURNS XMLASBEGIN

-- Declare the return variable hereRETURN(

SELECT *FROM

Web.fSortedData_WithinDate(@DateStart,@DateStop)FOR XML PATH ('Data')

)

END

36

Page 37: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.20. fStability_ToXMLEspone in formato XML i dati provenienti dalla funzione fStability_WithinData.

CREATE FUNCTION [Web].[fStability_toXML] (

--QSmart34@VmpQSmart34 real,@WQSmart34 real,@VocQSmart34 real,@PnQSmart34 real,--QSmart10@VmpQSmart10 real,@WQSmart10 real,@VocQSmart10 real,@PnQSmart10 real,--QPro34@VmpQPro34 real,@WQPro34 real,@VocQPro34 real,@PnQPro34 real,--QPro10@VmpQPro10 real,@WQPro10 real,@VocQPro10 real,@PnQPro10 real,--FS@VmpFS real,@WFS real,@VocFS real,@PnFS real,--common@RadianceThreshold real,@PowerThreshold real,@VoltageThreshold real,@DateStart datetime,@DateStop datetime

)RETURNS XMLASBEGIN -- Insert statements for procedure here

RETURN (SELECT * FROM Web.fStability_WithinDate(@VmpQSmart34,

@WQSmart34, @VocQSmart34, @PnQSmart34, @VmpQSmart10, @WQSmart10, @VocQSmart10, @PnQSmart10, @VmpQPro34, @WQPro34, @VocQPro34, @PnQPro34, @VmpQPro10, @WQPro10, @VocQPro10, @PnQPro10, @VmpFS, @WFS, @VocFS, @PnFS, @RadianceThreshold, @PowerThreshold, @VoltageThreshold, @DateStart, @DateStop)

FOR XML PATH('Data'))END

37

Page 38: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.21. fStabilityAlternative_ToXMLEspone in formato XML i dati provenienti dalla funzione fStabilityAlternative_WithinData.

CREATE FUNCTION [Web].[fStabilityAlternative_toXML] (

--QSmart34@PnQSmart34 real,--QSmart10@PnQSmart10 real,--QPro34@PnQPro34 real,--QPro10@PnQPro10 real,--FS@PnFS real,--common@RadianceThreshold real,@PowerThreshold real,@DateStart datetime,@DateStop datetime

)RETURNS XMLASBEGIN -- Insert statements for procedure here

RETURN (SELECT * FROM

Web.fStabilityAlternative_WithinDate(@PnQSmart34, @PnQSmart10, @PnQPro34, @PnQPro10, @PnFS, @RadianceThreshold, @PowerThreshold, @DateStart, @DateStop)

FOR XML PATH('Data'))

END

38

Page 39: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

4.22. fWind_ToXMLEspone in formato XML i dati provenienti dall’anemometro.

CREATE FUNCTION [Web].[fWind_ToXML] (

-- Add the parameters for the function here@DateStart datetime, @DateStop datetime

)RETURNS XMLASBEGIN

-- Declare the return variable hereRETURN(

SELECT *FROM

Web.fWind_WithinDate(@DateStart,@DateStop)FOR XML PATH ('Data'), ROOT ('Wind')

)

END

39

Page 40: Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico

5. CONSIDERAZIONI FINALI

Con questo progetto si è voluto aumentare le potenzialità del sistema, prevedendo l’interrogazione da remoto. A tal fine è stato aggiunto uno schema esterno alla base di dati, in grado di fornire i dati nella struttura richiesta, corredati della relativa analisi di stabilità.

Purtroppo, come accennato nell’introduzione, lo stato attuale delle cose prevede che la base di dati risieda in un portatile di risorse assai limitate. Ricordiamo che tale calcolatore venne fornito dalla stessa LSI LASTEM e che la stessa, per non aumentare i costi, installò il motore SQL SERVER 2005, con licenza Express.

Questa scelta portò nel mese di Gennaio 2013 a un blocco del sistema di stoccaggio, in quanto fu raggiunto il limite di 4 GB della dimensione fisica del database, imposto da tale licenza3.

Sollecitato il problema al fornitore, la soluzione temporanea è stata quella di provvedere all’aggiornamento del motore alla versione 2008 R2, anch’essa con licenza Express, ma con un limite di 10 GB4, di cui quasi 7 occupati alla data della stesura di questo documento5.

Fortunatamente, la suite proprietaria prevede la possibilità di far risiedere la base di dati in un servizio remoto. Questa capacità, unita agli strumenti di migrazione dei dati di SQL SERVER Management Studio, rende possibile il trasferimento del database a un calcolatore adeguato, possibilmente provvisto di meccanismi di replicazione e backup, lasciando inalterato il sistema ‘fisico’ e aumentando la tolleranza ai guasti dello stesso.

Con questa soluzione, infatti, eventuali problemi del portatile si tradurranno nella perdita dei dati acquisiti nel periodo di inoperatività del portatile, ma lo storico dei dati accumulati negli anni risulterà indenne.

3 http://msdn.microsoft.com/en-us/library/ms345154(v=sql.90).aspx4 http://msdn.microsoft.com/en-us/library/cc645993(v=sql.105).aspx5 Si veda il capitolo sulle prestazioni per la spiegazione di un incremento così rapido.

40