UNIVERSITÀ DEGLI STUDI DI         TRIESTE         FACOLTÀ DI INGEGNERIA    CORSO DI LAUREA IN INGEGNERIA DELL’INFORMAZIONE...
1.      INTRODUZIONE ......................................................................... 42.      ANALISI .............
4.16. fStability_WithinDate .............................................................33     4.17. fStabilityAlternativ...
1. INTRODUZIONEAll’interno dell’Università degli Studi di Trieste è stato installato, nel 2011,un laboratorio per lo studi...
2. ANALISIE’ possibile suddividere il sistema di monitoraggio in più sezioni: i sensori,idata logger ed infine il calcolat...
Sensori metereologiciQuesto gruppo di sensori è composto da:        Piranometro, con angolo di tilt 10°;        Piranometr...
GidasViewerGidasViewer è un programma per la visualizzazione e la rielaborazione deidati presenti nel database Gidas.    2...
3. PROGETTAZIONEPer soddisfare le richieste di cui il punto2.4, è statoadottato un approccio ditipo Bottom-Up, di cui lo s...
Legenda       «TipoFunzione»      <NomeFunzione>                View                         Table      -<parametri>      ...
Lo schema WebRaccoglie l’implementazione effettiva del codice e delle viste sviluppateperquesto progetto.Per quanto possib...
P                   V                   G                                       AND                                       ...
Si ha quindi che l’analisi di stabilità dei dati provenienti da un singolo modulorichiede l’immissione di 7 [i primi 3] pa...
PrestazioniL’introduzione di un indice nel campo ElaborationDate della tabellaCore.RawValueha permesso l’abbattimento del ...
4. IMPLEMENTAZIONE     4.1.      vData_GetAllCostituisce le fondamenta dello schema sviluppato, ha il compito di estrarre ...
4.2.       vSortedMinData_GetAllPer ogni terna di valori massimi, medi e minimi campionati ogni minuto,estrae i valori min...
SUM(CASE MeasureName WHEN   TeSUPerf1 THEN  ElaborationValueELSE NULL   END) AS TeSUPerfQPro34,  SUM(CASE MeasureName WHEN...
4.3.      vSortedMaxData_GetAllPer ogniterna di valorimassimi, medi e minimicampionatiogniminuto,estraeivalorimassimi.CREA...
SUM(CASE MeasureName WHEN   TeSUPerf1 THEN  ElaborationValueELSE NULL   END) AS TeSUPerfQPro34,  SUM(CASE MeasureName WHEN...
4.4.        vSortedInstantaneousData_GetAllPer ogni set di campionatiogniminuto, estraeivaloriprivi di elaborazione oistan...
4.5.      vSortedAverageData_GetAllPer ogniterna di valorimassimi, medi e minimicampionatiogniminuto,estraeivalorimedi.CRE...
SUM(CASE MeasureName WHEN   TeSUPerf1 THEN  ElaborationValueELSE NULL   END) AS TeSUPerfQPro34,  SUM(CASE MeasureName WHEN...
4.6.        vSortedWindData_GetAllPer ogni set di valoricampionatiogniminuto, estraeivaloriprovenienti dal soloanemometro....
4.7.        vSortedData_GetAllAffianca orizzontalmente i valori medi e istantanei, provenienti dalle viste4.4e 4.5.CREATE ...
4.8.       fSortedData_WithinDateOttiene la tabella con i dati medi e istantanei appartenenti ad un certointervallo di tem...
4.9.       fStabilityVoltageCriterio di stabilità basato sulla tensione.Restituisce ‘0’ se instabile, ‘1’ se stabile.CREAT...
4.10.      fStabilityPowerCriterio di stabilità basato sulla potenza.Restituisce ‘0’ se instabile, ‘1’ se stabile.CREATE F...
4.11.      fStabilityIrradianceCriterio di stabilità basato sull’irradianza diffusa.Restituisce ‘0’ se instabile, ‘1’ se s...
4.12.      fStabilityCheck1Implementa il criterio1 per l’analisi di stabilità.CREATE FUNCTION [Web].[fStabilityCheck1](   ...
4.13.      fStabilityCheck2Implementa il criterio1 per l’analisi di stabilità.CREATE FUNCTION [Web].[fStabilityCheck2](   ...
4.14.       fStability_GetAllOttiene la tabella con i datimedi e istantanei e la relativa analisi di stabilità,effettuata ...
Web.fStabilityCheck1(@VmpQSmart10, @WQSmart10,@VocQSmart10, @PnQSmart10, @RadianceThreshold,@PowerThreshold, @VoltageThres...
4.15.       fStabilityAlternative_GetAllOttiene la tabella con i dati medi e istantanei e la relativa analisi di stabilità...
4.16.       fStability_WithinDateOttiene la tabella con i dati medi e istantanei appartenenti ad un certointervallo    tem...
4.17.      fStabilityAlternative_WithinDateOttiene la tabella con i dati medi e istantanei appartenenti ad un certointerva...
4.18.      fWind_WithinDateOttiene la tabella con i dati provenienti dall’anemometro appertenentiall’intervallo temporale ...
4.19.    fSortedData_ToXMLEspone in formato XML i dati provenienti dall’anemometro.CREATE FUNCTION [Web].[fSortedData_ToXM...
4.20.      fStability_ToXMLEspone in formato        XML   i   dati   provenienti   dalla   funzionefStability_WithinData.C...
4.21.      fStabilityAlternative_ToXMLEspone in formato XML i             dati   provenienti   dalla   funzionefStabilityA...
4.22.    fWind_ToXMLEspone in formato XML i dati provenienti dall’anemometro.CREATE FUNCTION [Web].[fWind_ToXML](      -- ...
5. CONSIDERAZIONI FINALICon questo progetto si è voluto aumentare le potenzialità del sistema,prevedendo l’interrogazione ...
Upcoming SlideShare
Loading in …5
×

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

387 views
330 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
387
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. 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: LAUREANDO:Prof. Maurizio FERMEGLIA Michele FurlanettoANNO ACCADEMICO 2011-2012
  2. 2. 1. INTRODUZIONE ......................................................................... 42. ANALISI ..................................................................................... 5 2.1. Sistema....................................... Error! Bookmark not defined. Sensori ..............................................................................................5 Il sistema fotovoltaico monitorato e le misure elettriche ...........5 Sensori metereologici ...................................................................6 2.2. Dataloggers ..............................................................................6 2.3. Calcolatore ................................................................................6 3DOM ...........................................................................................6 CommNetEG .................................................................................6 GidasViewer..................................................................................7 2.4. Obiettivi.....................................................................................73. PROGETTAZIONE ....................................................................... 8 Lo schema Web ..............................................................................10 Analisi di stabilità ...........................................................................10 Prestazioni ......................................................................................134. 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 4.15. fStabilityAlternative_GetAll ....................................................32 2
  3. 3. 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 .........................................................................395. CONSIDERAZIONI FINALI .......................................................... 40 3
  4. 4. 1. INTRODUZIONEAll’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 edelettriciinstallato della ditta LSI LASTEM1, e realizzato con sensori progettatie prodotti dalla stessa.Questi strumenti dialogano mediante dei dispositivi denominati DataLoggercon un calcolatore fornito dalla stessa LSI LASTEM e dotato di unasuite software proprietaria necessaria per l’acquisizione dei dati.Tra le possibili opzioni di stoccaggio dei dati offerte dalla suite, si fa notare lapresenza 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 brevepanoramica di com’è formato l’intero sistema in produzione, progettazione, lelinee guida seguite durante lo sviluppo, implementazione del codice necessarioe infine le conclusioni.1 http://www.lsi-lastem.it/ 4
  5. 5. 2. ANALISIE’ possibile suddividere il sistema di monitoraggio in più sezioni: i sensori,idata logger ed infine il calcolatore, di cui segue una breve descrizione. 2.1. SensoriI sensori misurano sia grandezze elettriche sia climatiche;sono installatiall’esterno dell’edificio e sono adibiti alla rilevazione dei dati. Essi possonoessere 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 FirstSolar): 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: = I_in I_out V_out V_in = Modulo Convertitore Resistenza Figura 1 – Schema delle misure elettricheUlteriori analisi dei moduli esulano da questo trattato, ma può essere diinteresse che in origine il progetto dell’impianto prevedesse un sesto modulo,del quale se ne può vedere traccia all’interno del database. 5
  6. 6. 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 deisensori con il calcolatore.Sono tre, di cui uno dedicato ai sensori metereologici e due al settorefotovoltaico.Questi dispositivi, oltre a effettuare il prelievo dei dati dai sensori, ne fannouna prima elaborazione: per ogni minuto di registrazione e in base al sensoredi origine, forniscono il valore istantaneo, massimo, minimo e minimo. 2.3. CalcolatoreIl calcolatore fornito da LSI LASTEM è un portatile di marca HP®, modelloCompaq 6037s, con sistema operativo Microsoft® Windows Vista® e di cuiriporto i punti salienti della configurazione hardware: Processore: Intel® Core™2 Duo T5670 @1.80GHz; Memoria RAM: 2.00 GB; Capacità HardDisk: 250 GB.In tale portatile è stata installata, da parte del fornitore,la suite softwareproprietariadi LSI LASTEM necessaria all’acquisizione ed al salvataggio deidati. Tale suite si compone dei programmi qui di seguito elencati.3DOM3DOM (Free Datalogger Oriented Manager) è il software contenente i driverper i datalogger e per gli strumenti di rilevazione; consente la configurazionedei sensori e la visualizzazione dei dati istantanei. Inoltre, permette laconfigurazione dei servizi di stoccaggio dati, tra cui il database Gidas.CommNetEGCommNetEG è un programma che permette la ricezione dei datiregistratidagli strumenti LSI LASTEM, sia in modalità manuale cheautomatica. 6
  7. 7. GidasViewerGidasViewer è un programma per la visualizzazione e la rielaborazione deidati presenti nel database Gidas. 2.4. ObiettiviQuello che si vuole realizzare è una infrastruttura in grado di fornire i datimemorizzati 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 undeterminato intervallo di tempo;infine, si vuole fornire i dati in formato XML. 7
  8. 8. 3. PROGETTAZIONEPer soddisfare le richieste di cui il punto2.4, è statoadottato un approccio ditipo Bottom-Up, di cui lo schema seguenteriassume quanto implementato: WEB Schema «Table valued Function» «Table valued Function» Stability_ToXML StabilityAlternative_ToXML «Table valued Function» «Table valued Function» Stability_WhitinDate StabilityAlternative_WhitinDate -DateStart -DateStart -DateStop -DateStop «Table valued Function» «Table valued Function» «Table valued Function» SortedData_ToXML Stability_GetAll StabilityAlternative_GetAll «Function» StabilityVoltage -Voc -W -Vmp «Table valued Function» -VoltageThreshold WindData_ToXML «Table valued Function» «Function» «Function» «Function» SortedData_WhitinDate StabilityPower StabilityCheck1 StabilityCheck2 -DateStart -Pn -DateStop -PowerThreshold «Table valued Function» WindData_WhitinDate «Function» -DateStart StabilityRadiance -DateStop -RadDIFFusaThreshold View SortedData View View View View View SortedAverageData SortedInstantaneousData SortedMinData SortedMaxData SortedWindData View vData_GetAll CORE Schema Table Table Table Table RawValue ValueConfiguration InstrumentMeasure ElabTypeList Figura 2 – Schema delle dipendenze 8
  9. 9. Legenda «TipoFunzione» <NomeFunzione> View Table -<parametri> <NomeVista> <NomeTabella>Le tabelle RawValue, ValueConfiguration, InstrumentMeasure edElabTypeList appartengono tutte allo schema Core, creato e gestito dalprogramma 3DOM durante l’installazione.Viene riportato in Figura 3lo schema logico delle suddette tabelle. TABELLA CAMPIRawValue ConfigurationID*, ElaborationDate, ElaborationValue, ValidPercentageValueConfigu ValueConfigurationID,ration InstrumentConfigurationID*,MeasureIndex*,Elab orationBaseIndex, ElaborationItemIndex*,ElaborationType*, PositionInstrumentMe InstrumentConfigurationId,asure MeasureIndex,MeasureName,MeasurePrecision,Mea sureUnit, MeasureProperty, MeasureIdElabTypeList IdElabType, ElabTypeString, ElabTypeToDo Figura 3 - Schema logico dello schema Core 9
  10. 10. Lo schema WebRaccoglie l’implementazione effettiva del codice e delle viste sviluppateperquesto progetto.Per quanto possibile, si è cercato di mantenere la nomenclatura usata daiprogettisti della base di dati.Le viste denominate con ‘Sorted’, la cui implementazione è riportata dalparagrafo 4.2 al 4.6, hanno un duplice scopo: il primo, fondamentale, è quellodi ‘rimodellare’ la struttura della tabella Core.RawValue, in modo da ridurre lachiave primaria al solo campo ElaborationDate, portando una tabella dellaformaELAB.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 formaELAB.DATE MISURA-1 MISURA-1 MISURA-2 … ELAB-1 ELAB-2 ELAB-1 <data-ora1> <valore1> <valore2> <valore3> … <data-ora2> <valore5> … … …La seconda funzione di ogni vista è quella di operare un taglio verticale allatabella appena formatasi, evidenziando solo il sottoinsieme dei dati diinteresse.Analisi di stabilitàSui dati provenienti dai pannelli fotovoltaici viene svolta una suddivisione indati stabili e instabili.In Figura 4 è possibile notare la differenza tra i due criteri utilizzati per talesuddivisione. Entrambi si basano sull’analisi dei dati relativi alla potenza (P)erogata dal modulo fotovoltaico e dall’irradianza diffusa (G), mentre ilcriterio1 richiede una ulteriore analisi, basata sulla tensione (V). 10
  11. 11. P V G AND Criterio 1 P G AND Criterio 2 Figura 4 – Criteri di stabilitàAl fine di semplificare l’esposizione, nel resto dell’analisi verrà esaminato ilcriterio 1, riportando tra parentesi quadre [] le differenze con il criterio 2.Undato si ritiene stabile se soddisfa contemporaneamente le trecondizioniseguenti[solo le primedue]:G) la radiazione diffusa dev’essere maggiore di ; Viene implementato al punto (4.11).P) la differenza di potenza tra il valore osservato e quello atteso deverisultare inferiore a , ovvero se vale Dove viene calcolata secondo l’equazione Viene implementato al punto (4.10).V) la differenza di tensione tra il valore osservato e quello atteso deverisultare inferiore a , ovvero se vale Dove viene calcolata secondo l’equazione Viene implementato al punto (4.11). 11
  12. 12. Si ha quindi che l’analisi di stabilità dei dati provenienti da un singolo modulorichiede l’immissione di 7 [i primi 3] parametri da parte dell’utente: limite entro il quale il rapporto viene considerato stabile limite entro il quale il rapporto viene considerato stabile potenza nominale del modulo; limite entro il quale il rapporto viene considerato stabile tensione del punto di massima potenza a condizioni STC2 tensione dicircuito aperto a condizioni STC Coefficiente di temperatura di Figura 5 - Parametri dellanalisi di stabilitàLe soglie sono a discrezione dell’utente, in base alla rigidità richiestadall’analisi.Gli altri valori sono invece reperibili nei datasheet dei moduli fotovoltaici.Inoltre, per ogni coppia tensione-potenza sono richiesti anche temperatura istantanea del modulo in esame irraggiamento registrato dal piranometro avente lo stesso angolo di tilt del modulo2 Temperaturadi cella 25° C, irraggiamento 1000 W/m2, con distribuzione spettrale diriferimento(massa d’aria AM 1,5). 12
  13. 13. PrestazioniL’introduzione di un indice nel campo ElaborationDate della tabellaCore.RawValueha permesso l’abbattimento del tempo di elaborazione dovutoalle operazioni delle viste vSortedMinData_GetAll, vSortedMaxData_GetAll,vSortedAverageData_GetAll, vSortedInstantaneousData_GetAll,vSortedWindData_GetAll, riducendo il costo dell’elaborazione a soleoperazioni di HashMatching.Se da un lato questo indice conduce a un incremento di prestazioni, dall’altroaumenta considerevolmente lo spazio occupato su disco;per dare un idea dei numeri in gioco, si segnala che la tabellaCore.RawValueconsta, alla data di stesura di questo documento, di più di 50milioni di record. Si rimanda al capitolo sulle considerazioni finali per unulteriore approfondimento. 13
  14. 14. 4. IMPLEMENTAZIONE 4.1. vData_GetAllCostituisce le fondamenta dello schema sviluppato, ha il compito di estrarre ivalori delle misure memorizzate.CREATE VIEW [Web].[vData_GetAll]ASSELECT RV.ElaborationDate, IM.MeasureName, RV.ElaborationValue, ETL.ElabTypeString AS ElaborationFROM 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
  15. 15. 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 ElaborationValueELSE NULL END) AS TENSAlim, SUM(CASE MeasureName WHEN TempINTerna THEN ElaborationValueELSE NULL END) AS TempINTerna, SUM(CASE MeasureName WHEN Tensione-1 THEN ElaborationValueELSE NULL END) AS VinQPro34, SUM(CASE MeasureName WHEN Corrente-1 THEN ElaborationValueELSE NULL END) AS IinQPro34, SUM(CASE MeasureName WHEN Tensione-2 THEN laborationValueELSE NULL END) AS VoutQPro34, SUM(CASE MeasureName WHEN Corrente-2 THEN ElaborationValueELSE NULL END) AS IoutQPro34, SUM(CASE MeasureName WHEN Tensione-3 THEN ElaborationValueELSE NULL END) AS VinQPro10, SUM(CASE MeasureName WHEN Corrente-3 THEN ElaborationValueELSE NULL END) AS IinQPro10, SUM(CASE MeasureName WHEN Tensione-4 THEN ElaborationValueELSE NULL END) AS VinQSmart34, SUM(CASE MeasureName WHEN Corrente-4 THEN ElaborationValueELSE NULL END) AS IinQSmart34, SUM(CASE MeasureName WHEN Tensione-5 THEN ElaborationValueELSE NULL END) AS VoutQSmart34, SUM(CASE MeasureName WHEN Corrente-5 THEN ElaborationValueELSE NULL END) AS IoutQSmart34, SUM(CASE MeasureName WHEN Tensione-6 THEN ElaborationValueELSE NULL END) AS VinQSmart10, SUM(CASE MeasureName WHEN Corrente-6 THEN ElaborationValueELSE NULL END) AS IinQSmart10, SUM(CASE MeasureName WHEN Tensione-7 THEN ElaborationValueELSE NULL END) AS VinFS, SUM(CASE MeasureName WHEN Corrente-7 THEN ElaborationValueELSE NULL END) AS IinFS, SUM(CASE MeasureName WHEN UmiditaRel THEN ElaborationValueELSE NULL END) AS UmiditaRel, SUM(CASE MeasureName WHEN TempAria THEN ElaborationValueELSE NULL END) AS TempAria, SUM(CASE MeasureName WHEN DIRvento THEN ElaborationValueELSE NULL END) AS DIRvento, SUM(CASE MeasureName WHEN VELvento THEN ElaborationValueELSE NULL END) AS VELvento, SUM(CASE MeasureName WHEN RadDIFFusa THEN ElaborationValueELSE NULL END) AS RadDIFFusa, SUM(CASE MeasureName WHEN RadGLOBale THEN ElaborationValueELSE NULL END) AS RadGLOBale, SUM(CASE MeasureName WHEN RadGL45 THEN ElaborationValueELSE NULL END) AS RadGL45, SUM(CASE MeasureName WHEN POLITHEN ElaborationValueELSE NULL END) AS POLI, SUM(CASE MeasureName WHEN MONO THEN ElaborationValueELSE NULL END) AS MONO, SUM(CASE MeasureName WHEN LivelloBATT THEN ElaborationValueELSE NULL END) AS LivelloBATT, 15
  16. 16. SUM(CASE MeasureName WHEN TeSUPerf1 THEN ElaborationValueELSE NULL END) AS TeSUPerfQPro34, SUM(CASE MeasureName WHEN TeSUPerf2 THEN ElaborationValueELSE NULL END) AS TeSUPerfQSmart34, SUM(CASE MeasureName WHEN TeSUPerf3 THEN ElaborationValueELSE NULL END) AS TeSUPerfFS, SUM(CASE MeasureName WHEN TeSUPerf4 THEN ElaborationValueELSE NULL END) AS TeSUPerfQPro10, SUM(CASE MeasureName WHEN TeSUPerf5 THEN ElaborationValueELSE NULL END) AS TeSUPerfQSmart10FROM Web.vData_GetAllWHERE (Elaboration = Min)GROUP BY ElaborationDate 16
  17. 17. 4.3. vSortedMaxData_GetAllPer ogniterna di valorimassimi, medi e minimicampionatiogniminuto,estraeivalorimassimi.CREATE VIEW [Web].[vSortedMinData_GetAll]ASSELECT ElaborationDate, SUM(CASE MeasureName WHEN TENSAlim THEN ElaborationValueELSE NULL END) AS TENSAlim, SUM(CASE MeasureName WHEN TempINTerna THEN ElaborationValueELSE NULL END) AS TempINTerna, SUM(CASE MeasureName WHEN Tensione-1 THEN ElaborationValueELSE NULL END) AS VinQPro34, SUM(CASE MeasureName WHEN Corrente-1 THEN ElaborationValueELSE NULL END) AS IinQPro34, SUM(CASE MeasureName WHEN Tensione-2 THEN laborationValueELSE NULL END) AS VoutQPro34, SUM(CASE MeasureName WHEN Corrente-2 THEN ElaborationValueELSE NULL END) AS IoutQPro34, SUM(CASE MeasureName WHEN Tensione-3 THEN ElaborationValueELSE NULL END) AS VinQPro10, SUM(CASE MeasureName WHEN Corrente-3 THEN ElaborationValueELSE NULL END) AS IinQPro10, SUM(CASE MeasureName WHEN Tensione-4 THEN ElaborationValueELSE NULL END) AS VinQSmart34, SUM(CASE MeasureName WHEN Corrente-4 THEN ElaborationValueELSE NULL END) AS IinQSmart34, SUM(CASE MeasureName WHEN Tensione-5 THEN ElaborationValueELSE NULL END) AS VoutQSmart34, SUM(CASE MeasureName WHEN Corrente-5 THEN ElaborationValueELSE NULL END) AS IoutQSmart34, SUM(CASE MeasureName WHEN Tensione-6 THEN ElaborationValueELSE NULL END) AS VinQSmart10, SUM(CASE MeasureName WHEN Corrente-6 THEN ElaborationValueELSE NULL END) AS IinQSmart10, SUM(CASE MeasureName WHEN Tensione-7 THEN ElaborationValueELSE NULL END) AS VinFS, SUM(CASE MeasureName WHEN Corrente-7 THEN ElaborationValueELSE NULL END) AS IinFS, SUM(CASE MeasureName WHEN UmiditaRel THEN ElaborationValueELSE NULL END) AS UmiditaRel, SUM(CASE MeasureName WHEN TempAria THEN ElaborationValueELSE NULL END) AS TempAria, SUM(CASE MeasureName WHEN DIRvento THEN ElaborationValueELSE NULL END) AS DIRvento, SUM(CASE MeasureName WHEN VELvento THEN ElaborationValueELSE NULL END) AS VELvento, SUM(CASE MeasureName WHEN RadDIFFusa THEN ElaborationValueELSE NULL END) AS RadDIFFusa, SUM(CASE MeasureName WHEN RadGLOBale THEN ElaborationValueELSE NULL END) AS RadGLOBale, SUM(CASE MeasureName WHEN RadGL45 THEN ElaborationValueELSE NULL END) AS RadGL45, SUM(CASE MeasureName WHEN POLITHEN ElaborationValueELSE NULL END) AS POLI, SUM(CASE MeasureName WHEN MONO THEN ElaborationValueELSE NULL END) AS MONO, SUM(CASE MeasureName WHEN LivelloBATT THEN ElaborationValueELSE NULL END) AS LivelloBATT, 17
  18. 18. SUM(CASE MeasureName WHEN TeSUPerf1 THEN ElaborationValueELSE NULL END) AS TeSUPerfQPro34, SUM(CASE MeasureName WHEN TeSUPerf2 THEN ElaborationValueELSE NULL END) AS TeSUPerfQSmart34, SUM(CASE MeasureName WHEN TeSUPerf3 THEN ElaborationValueELSE NULL END) AS TeSUPerfFS, SUM(CASE MeasureName WHEN TeSUPerf4 THEN ElaborationValueELSE NULL END) AS TeSUPerfQPro10, SUM(CASE MeasureName WHEN TeSUPerf5 THEN ElaborationValueELSE NULL END) AS TeSUPerfQSmart10FROM Web.vData_GetAllWHERE (Elaboration = Max)GROUP BY ElaborationDate 18
  19. 19. 4.4. vSortedInstantaneousData_GetAllPer ogni set di campionatiogniminuto, estraeivaloriprivi di elaborazione oistantanei.CREATE VIEW [Web].[vSortedMinData_GetAll]ASSELECT ElaborationDate, SUM(CASE MeasureName WHEN TENSAlim THEN ElaborationValueELSE NULL END) AS TENSAlim, SUM(CASE MeasureName WHEN TempINTerna THEN ElaborationValueELSE NULL END) AS TempINTerna, SUM(CASE MeasureName WHEN LivelloBATT THEN ElaborationValueELSE NULL END) AS LivelloBATTFROM Web.vData_GetAllWHERE (Elaboration = Inst)GROUP BY ElaborationDate 19
  20. 20. 4.5. vSortedAverageData_GetAllPer ogniterna di valorimassimi, medi e minimicampionatiogniminuto,estraeivalorimedi.CREATE VIEW [Web].[vSortedAverageData_GetAll]ASSELECT ElaborationDate, SUM(CASE MeasureName WHEN TENSAlim THEN ElaborationValueELSE NULL END) AS TENSAlim, SUM(CASE MeasureName WHEN TempINTerna THEN ElaborationValueELSE NULL END) AS TempINTerna, SUM(CASE MeasureName WHEN Tensione-1 THEN ElaborationValueELSE NULL END) AS VinQPro34, SUM(CASE MeasureName WHEN Corrente-1 THEN ElaborationValueELSE NULL END) AS IinQPro34, SUM(CASE MeasureName WHEN Tensione-2 THEN laborationValueELSE NULL END) AS VoutQPro34, SUM(CASE MeasureName WHEN Corrente-2 THEN ElaborationValueELSE NULL END) AS IoutQPro34, SUM(CASE MeasureName WHEN Tensione-3 THEN ElaborationValueELSE NULL END) AS VinQPro10, SUM(CASE MeasureName WHEN Corrente-3 THEN ElaborationValueELSE NULL END) AS IinQPro10, SUM(CASE MeasureName WHEN Tensione-4 THEN ElaborationValueELSE NULL END) AS VinQSmart34, SUM(CASE MeasureName WHEN Corrente-4 THEN ElaborationValueELSE NULL END) AS IinQSmart34, SUM(CASE MeasureName WHEN Tensione-5 THEN ElaborationValueELSE NULL END) AS VoutQSmart34, SUM(CASE MeasureName WHEN Corrente-5 THEN ElaborationValueELSE NULL END) AS IoutQSmart34, SUM(CASE MeasureName WHEN Tensione-6 THEN ElaborationValueELSE NULL END) AS VinQSmart10, SUM(CASE MeasureName WHEN Corrente-6 THEN ElaborationValueELSE NULL END) AS IinQSmart10, SUM(CASE MeasureName WHEN Tensione-7 THEN ElaborationValueELSE NULL END) AS VinFS, SUM(CASE MeasureName WHEN Corrente-7 THEN ElaborationValueELSE NULL END) AS IinFS, SUM(CASE MeasureName WHEN UmiditaRel THEN ElaborationValueELSE NULL END) AS UmiditaRel, SUM(CASE MeasureName WHEN TempAria THEN ElaborationValueELSE NULL END) AS TempAria, SUM(CASE MeasureName WHEN DIRvento THEN ElaborationValueELSE NULL END) AS DIRvento, SUM(CASE MeasureName WHEN VELvento THEN ElaborationValueELSE NULL END) AS VELvento, SUM(CASE MeasureName WHEN RadDIFFusa THEN ElaborationValueELSE NULL END) AS RadDIFFusa, SUM(CASE MeasureName WHEN RadGLOBale THEN ElaborationValueELSE NULL END) AS RadGLOBale, SUM(CASE MeasureName WHEN RadGL45 THEN ElaborationValueELSE NULL END) AS RadGL45, SUM(CASE MeasureName WHEN POLITHEN ElaborationValueELSE NULL END) AS POLI, SUM(CASE MeasureName WHEN MONO THEN ElaborationValueELSE NULL END) AS MONO, SUM(CASE MeasureName WHEN LivelloBATT THEN ElaborationValueELSE NULL END) AS LivelloBATT, 20
  21. 21. SUM(CASE MeasureName WHEN TeSUPerf1 THEN ElaborationValueELSE NULL END) AS TeSUPerfQPro34, SUM(CASE MeasureName WHEN TeSUPerf2 THEN ElaborationValueELSE NULL END) AS TeSUPerfQSmart34, SUM(CASE MeasureName WHEN TeSUPerf3 THEN ElaborationValueELSE NULL END) AS TeSUPerfFS, SUM(CASE MeasureName WHEN TeSUPerf4 THEN ElaborationValueELSE NULL END) AS TeSUPerfQPro10, SUM(CASE MeasureName WHEN TeSUPerf5 THEN ElaborationValueELSE NULL END) AS TeSUPerfQSmart10FROM Web.vData_GetAllWHERE (Elaboration = Ave)GROUP BY ElaborationDate 21
  22. 22. 4.6. vSortedWindData_GetAllPer ogni set di valoricampionatiogniminuto, estraeivaloriprovenienti dal soloanemometro.CREATE VIEW [Web].[vSortedWindData_GetAll]ASSELECT TOP (100) PERCENT ElaborationDate, SUM(CASE Elaboration WHEN RisDir THEN ElaborationValueELSE NULL END) AS [DIRVentoRisDir], SUM(CASE Elaboration WHEN PrevDir THEN ElaborationValueELSE NULL END) AS [DIRVentoPrevDir], SUM(CASE Elaboration WHEN RisVel THEN ElaborationValueELSE NULL END) AS [DIRVentoRisVel], SUM(CASE Elaboration WHEN StdDevDir THEN ElaborationValueELSE NULL END) AS [DIRVentoStdDevDir], SUM(CASE Elaboration WHEN CalmPerc THEN ElaborationValueELSE NULL END) AS [DIRVentoCalmPerc], SUM(CASE Elaboration WHEN Min THEN ElaborationValueELSE NULL END) AS [VELVento Min], SUM(CASE Elaboration WHEN Ave THEN ElaborationValueELSE NULL END) AS [VELVento Ave], SUM(CASE Elaboration WHEN Max THEN ElaborationValueELSE NULL END) AS [VELVento Max]FROMWeb.vData_GetAllWHERE (MeasureName = DIRVento) OR (MeasureName = VELVento)GROUP BY ElaborationDateORDER BY ElaborationDate 22
  23. 23. 4.7. vSortedData_GetAllAffianca orizzontalmente i valori medi e istantanei, provenienti dalle viste4.4e 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.LivelloBATTFROM Web.vSortedAverageData_GetAll AS AVE INNER JOIN Web.vSortedInstantaneousData_GetAll AS INST ON INST.ElaborationDate = AVE.ElaborationDate 23
  24. 24. 4.8. fSortedData_WithinDateOttiene la tabella con i dati medi e istantanei appartenenti ad un certointervallo di tempo.CREATE FUNCTION [Web].[fSortedData_WithinDate]( -- Add the parameters for the function here @DateStartdatetime, @DateStopdatetime)RETURNS TABLEASRETURN( -- Add the SELECT statement with parameterreferences here SELECT * FROM Web.vSortedData_GetAll WHERE ElaborationDate BETWEEN @DateStart AND@DateStop) 24
  25. 25. 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 here DECLARE @Result bit DECLARE @PreResult real DECLARE @Vattesa real -- Add the T-SQL statements to compute the returnvalue here SET @Vattesa=@Vmp+(@W*@Vin)/100*(@Temperature-25) -- Avoid the division by zero IF (@Vattesa=0) Return 0 SET @PreResult=ABS((@Vin-@Vattesa)/@Vattesa) -- Return the result of the function IF (@PreResult<@Threshold) set @result=1 else set @result=0 RETURN @ResultEND 25
  26. 26. 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 here DECLARE @Result bit DECLARE @Pattesa real SET @Pattesa=@Pn*@Irraggiamento/1000 --Avoid the division by zero IF(@Pattesa=0) RETURN 0 -- Return the result of the function IF (ABS((@Pmisurata-@Pattesa)/@Pattesa)<@Threshold) set @result=1 ELSE SET @Result=0 RETURN @ResultEND 26
  27. 27. 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 here DECLARE @Result bit IF (@Value>@Threshold) set @result=1 else set @result=0 RETURN @Result -- Return the result of the functionEND 27
  28. 28. 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 here DECLARE @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 function RETURN @ResultEND 28
  29. 29. 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 here DECLARE @Result bit SET @Result =Web.fStabilityDiffIrradiance(@RadianceThreshold,@DiffIrradiance) & Web.fStabilityPower_QPro34(@Pn,@PowerThreshold, @AssocIrradiance ,@Pin) -- Return the result of the function RETURN @ResultEND 29
  30. 30. 4.14. fStability_GetAllOttiene la tabella con i datimedi 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) ASQPro34Stability, VoutQPro34, IoutQPro34, VinQPro10,IinQPro10, TeSUPerfQPro10,Web.fStabilityCheck1(@VmpQPro10, @WQPro10, @VocQPro10,@PnQPro10, @RadianceThreshold, @PowerThreshold,@VoltageThreshold, RadDIFFusa, RadGLOBale ,VinQPro10,IinQPro10, TeSUPerfQPro10) ASQPro10Stability,VinQSmart34, IinQSmart34,TeSUPerfQSmart34, Web.fStabilityCheck1(@VmpQSmart34,@WQSmart34, @VocQSmart34, @PnQSmart34,@RadianceThreshold, @PowerThreshold, @VoltageThreshold,RadDIFFusa, RadGL45 ,VinQSmart34, IinQSmart34,TeSUPerfQSmart34) AS QSmart34Stability, VoutQSmart34,IoutQSmart34, VinQSmart10, IinQSmart10, TeSUPerfQSmart10, 30
  31. 31. 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) ASFSStability, UmiditaRel, TempAria, RadDIFFusa,RadGLOBale, RadGL45, POLI, MONOFROM Web.vSortedData_GetAll) 31
  32. 32. 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) ASQPro34Stability, 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) ASQSmart34Stability, VoutQSmart34, IoutQSmart34,VinQSmart10, IinQSmart10,Web.fStabilityCheck2(@PnQSmart10,VinQSmart10*IinQSmart10, @RadianceThreshold,@PowerThreshold, RadDIFFusa, RadGLOBale) ASQSmart10Stability, 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
  33. 33. 4.16. fStability_WithinDateOttiene la tabella con i dati medi e istantanei appartenenti ad un certointervallo 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
  34. 34. 4.17. fStabilityAlternative_WithinDateOttiene la tabella con i dati medi e istantanei appartenenti ad un certointervallo 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
  35. 35. 4.18. fWind_WithinDateOttiene la tabella con i dati provenienti dall’anemometro appertenentiall’intervallo temporale specificato.CREATE FUNCTION [Web].[fWind_WithinDate]( -- Add the parameters for the function here @DateStart datetime, @DateStop datetime)RETURNS TABLEASRETURN( -- Add the SELECT statement with parameterreferences here SELECT * FROM Web.vSortedWindData_GetAll WHERE ElaborationDate BETWEEN @DateStart AND@DateStop) 35
  36. 36. 4.19. fSortedData_ToXMLEspone in formato XML i dati provenienti dall’anemometro.CREATE FUNCTION [Web].[fSortedData_ToXML]( -- Add the parameters for the function here @DateStartdatetime, @DateStopdatetime)RETURNS XMLASBEGIN -- Declare the return variable here RETURN( SELECT * FROM Web.fSortedData_WithinDate(@DateStart,@DateStop) FOR XML PATH (Data) )END 36
  37. 37. 4.20. fStability_ToXMLEspone in formato XML i dati provenienti dalla funzionefStability_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
  38. 38. 4.21. fStabilityAlternative_ToXMLEspone in formato XML i dati provenienti dalla funzionefStabilityAlternative_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
  39. 39. 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 here RETURN( SELECT * FROM Web.fWind_WithinDate(@DateStart,@DateStop) FOR XML PATH (Data), ROOT (Wind) )END 39
  40. 40. 5. CONSIDERAZIONI FINALICon questo progetto si è voluto aumentare le potenzialità del sistema,prevedendo l’interrogazione da remoto. A tal fine è stato aggiunto uno schemaesterno 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 coseprevede che la base di dati risieda in un portatile di risorse assai limitate.Ricordiamo che tale calcolatore venne fornito dalla stessa LSI LASTEMe chela 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 distoccaggio, in quanto fu raggiunto il limite di 4 GB della dimensione fisica deldatabase, imposto da tale licenza3.Sollecitato il problema al fornitore, la soluzione temporanea è stata quella diprovvedere all’aggiornamento del motore alla versione 2008 R2, anch’essacon licenza Express, ma con un limite di 10 GB4,di cui quasi 7 occupati alladata della stesura di questo documento5.Fortunatamente, la suite proprietaria prevede la possibilità di far risiedere labase di dati in un servizio remoto. Questa capacità, unita agli strumenti dimigrazione dei dati di SQL SERVER Management Studio, rende possibile iltrasferimento del database a un calcolatore adeguato, possibilmente provvistodi 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 tradurrannonella perdita dei dati acquisiti nel periodo di inoperatività del portatile, ma lostorico 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

×