SlideShare a Scribd company logo
1 of 40
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 Furlanetto




ANNO ACCADEMICO 2011-2012
1.      INTRODUZIONE ......................................................................... 4

2.      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.....................................................................................7

3.      PROGETTAZIONE ....................................................................... 8
        Lo schema Web ..............................................................................10
        Analisi di stabilità ...........................................................................10
        Prestazioni ......................................................................................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
     4.15. fStabilityAlternative_GetAll ....................................................32

                                                                                                            2
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
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
elettriciinstallato della ditta LSI LASTEM1, e realizzato con sensori progettati
e prodotti dalla stessa.

Questi strumenti dialogano mediante dei dispositivi denominati Data
Loggercon 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
2. ANALISI

E’ 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.        Sensori
I 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 elettriche
E’ 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:




                                  =
                  I_in                                            I_out
                                                                           V_out
                         V_in




                                            =
   Modulo                        Convertitore                             Resistenza

                      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
Sensori metereologici
Questo 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.        Dataloggers
Questi 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.        Calcolatore
Il 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à HardDisk: 250 GB.

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

3DOM
3DOM (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.

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

                                                                               6
GidasViewer
GidasViewer è 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
3. PROGETTAZIONE

Per soddisfare le richieste di cui il punto2.4, è statoadottato un approccio di
tipo 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
Legenda


       «TipoFunzione»
      <NomeFunzione>                View                         Table
      -<parametri>
                               <NomeVista>               <NomeTabella>




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 3lo schema logico delle suddette tabelle.

 TABELLA                                      CAMPI
RawValue         ConfigurationID*,            ElaborationDate,
                 ElaborationValue, ValidPercentage
ValueConfigu     ValueConfigurationID,
ration           InstrumentConfigurationID*,MeasureIndex*,Elab
                 orationBaseIndex,
                 ElaborationItemIndex*,ElaborationType*,
                 Position
InstrumentMe     InstrumentConfigurationId,
asure            MeasureIndex,MeasureName,MeasurePrecision,Mea
                 sureUnit, MeasureProperty, MeasureId
ElabTypeList     IdElabType, ElabTypeString, ElabTypeToDo
                    Figura 3 - Schema logico dello schema Core




                                                                         9
Lo schema Web
Raccoglie l’implementazione effettiva del codice e delle viste sviluppateper
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                   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 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
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 il
criterio 1, riportando tra parentesi quadre [] le differenze con il criterio 2.

Undato si ritiene stabile se soddisfa               contemporaneamente    le   tre
condizioniseguenti[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
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:

           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 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

                    temperatura istantanea del modulo in esame
                    irraggiamento registrato dal piranometro avente lo stesso
                    angolo di tilt del modulo




2
 Temperaturadi cella 25° C, irraggiamento 1000 W/m2, con distribuzione spettrale di
riferimento(massa d’aria AM 1,5).
                                                                                 12
Prestazioni
L’introduzione di un indice nel campo ElaborationDate della tabella
Core.RawValueha 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 HashMatching.

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.RawValueconsta, 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
4. IMPLEMENTAZIONE
     4.1.      vData_GetAll
Costituisce 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
4.2.       vSortedMinData_GetAll
Per ogni terna di valori massimi, medi e minimi campionati ogni minuto,
estrae i valori minimi.



CREATE VIEW [Web].[vSortedMinData_GetAll]
AS
SELECT      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 'POLI'THEN
   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
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 TeSUPerfQSmart10
FROM Web.vData_GetAll
WHERE (Elaboration = 'Min')
GROUP BY ElaborationDate




                                                          16
4.3.      vSortedMaxData_GetAll
Per ogniterna di valorimassimi, medi e minimicampionatiogniminuto,
estraeivalorimassimi.



CREATE VIEW [Web].[vSortedMinData_GetAll]
AS
SELECT      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 'POLI'THEN
   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
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 TeSUPerfQSmart10
FROM Web.vData_GetAll
WHERE (Elaboration = 'Max')
GROUP BY ElaborationDate




                                                          18
4.4.        vSortedInstantaneousData_GetAll
Per ogni set di campionatiogniminuto, estraeivaloriprivi di elaborazione o
istantanei.



CREATE VIEW [Web].[vSortedMinData_GetAll]
AS
SELECT      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 LivelloBATT
FROM Web.vData_GetAll
WHERE (Elaboration = 'Inst')
GROUP BY ElaborationDate




                                                                       19
4.5.      vSortedAverageData_GetAll
Per ogniterna di valorimassimi, medi e minimicampionatiogniminuto,
estraeivalorimedi.



CREATE VIEW [Web].[vSortedAverageData_GetAll]
AS
SELECT      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 'POLI'THEN
   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
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 TeSUPerfQSmart10
FROM Web.vData_GetAll
WHERE (Elaboration = 'Ave')
GROUP BY ElaborationDate




                                                          21
4.6.        vSortedWindData_GetAll
Per ogni set di valoricampionatiogniminuto, estraeivaloriprovenienti dal solo
anemometro.



CREATE VIEW [Web].[vSortedWindData_GetAll]
AS
SELECT      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_GetAll
WHERE (MeasureName = 'DIRVento') OR
   (MeasureName = 'VELVento')
GROUP BY ElaborationDate
ORDER BY ElaborationDate




                                                                          22
4.7.        vSortedData_GetAll
Affianca orizzontalmente i valori medi e istantanei, provenienti dalle viste4.4
e 4.5.



CREATE VIEW [Web].[vSortedData_GetAll]
AS
SELECT      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
4.8.       fSortedData_WithinDate
Ottiene 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
      @DateStartdatetime,
      @DateStopdatetime
)
RETURNS TABLE
AS
RETURN
(
      -- Add the SELECT statement with parameter
references here
      SELECT *
      FROM Web.vSortedData_GetAll
      WHERE ElaborationDate BETWEEN @DateStart AND
@DateStop
)




                                                                     24
4.9.       fStabilityVoltage
Criterio 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 bit
AS
BEGIN
      -- Declare the return variable here
      DECLARE @Result bit
      DECLARE @PreResult real
      DECLARE @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 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 @Result

END




                                                            25
4.10.      fStabilityPower
Criterio 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 bit
AS
BEGIN

        -- 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 @Result

END




                                                          26
4.11.      fStabilityIrradiance
Criterio 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 bit
AS
BEGIN
      -- 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 function

END




                                                        27
4.12.      fStabilityCheck1
Implementa 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 bit
AS
BEGIN

      -- 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 @Result

END




                                                        28
4.13.      fStabilityCheck2
Implementa 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 bit
AS
BEGIN
      -- 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 @Result

END




                                                      29
4.14.       fStability_GetAll
Ottiene 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 TABLE
AS
RETURN
(
    -- 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, VinQSmart10, IinQSmart10, TeSUPerfQSmart10,
                                                                               30
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
4.15.       fStabilityAlternative_GetAll
Ottiene 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 TABLE
AS
RETURN
(
    -- Insert statements for procedure here
      SELECT ElaborationDate, VinQPro34, IinQPro34,
Web.fStabilityCheck2(@PnQPro34,VinQPro34*IinQPro34,@Radia
nceThreshold, @PowerThreshold, RadDIFFusa, RadGL45) AS
QPro34Stability, VoutQPro34, IoutQPro34, VinQPro10,
IinQPro10,Web.fStabilityCheck2(@PnQPro10,VinQPro10*IinQPr
o10, @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
4.16.       fStability_WithinDate
Ottiene 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 TABLE
AS
RETURN
(
    -- 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
4.17.      fStabilityAlternative_WithinDate
Ottiene 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 TABLE
AS
RETURN
(
    -- Insert statements for procedure here
      SELECT *
    FROM Web.fStabilityAlternative_GetAll(@PnQSmart34,
@PnQSmart10, @PnQPro34, @PnQPro34, @PnFS,
@RadianceThreshold, @PowerThreshold)
    WHERE ElaborationDate BETWEEN @DateStart AND
@DateStop

)




                                                                       34
4.18.      fWind_WithinDate
Ottiene 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
AS
RETURN
(
      -- Add the SELECT statement with parameter
references here
      SELECT *
      FROM Web.vSortedWindData_GetAll
      WHERE ElaborationDate BETWEEN @DateStart AND
@DateStop
)




                                                                   35
4.19.    fSortedData_ToXML
Espone in formato XML i dati provenienti dall’anemometro.



CREATE FUNCTION [Web].[fSortedData_ToXML]
(
      -- Add the parameters for the function here
      @DateStartdatetime,
      @DateStopdatetime
)
RETURNS XML
AS
BEGIN
      -- Declare the return variable here
      RETURN(
            SELECT *
            FROM
      Web.fSortedData_WithinDate(@DateStart,@DateStop)
            FOR XML PATH ('Data')
      )

END




                                                            36
4.20.      fStability_ToXML
Espone 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 XML
AS
BEGIN
    -- 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
4.21.      fStabilityAlternative_ToXML
Espone 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 XML
AS
BEGIN
    -- 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
4.22.    fWind_ToXML
Espone 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 XML
AS
BEGIN
      -- Declare the return variable here
      RETURN(
            SELECT *
            FROM
      Web.fWind_WithinDate(@DateStart,@DateStop)
            FOR XML PATH ('Data'), ROOT ('Wind')
      )

END




                                                            39
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 LASTEMe 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).aspx
4
  http://msdn.microsoft.com/en-us/library/cc645993(v=sql.105).aspx
5
   Si veda il capitolo sulle prestazioni per la spiegazione di un incremento così rapido.
                                                                                        40

More Related Content

Viewers also liked (20)

Apploi Whitepaper
Apploi WhitepaperApploi Whitepaper
Apploi Whitepaper
 
French Leave History
French Leave History French Leave History
French Leave History
 
Pemanfaatan barang bekas
Pemanfaatan barang bekasPemanfaatan barang bekas
Pemanfaatan barang bekas
 
French leave.9fi5th
French leave.9fi5th French leave.9fi5th
French leave.9fi5th
 
Pemanfaatan lingkungan sekitar
Pemanfaatan lingkungan sekitarPemanfaatan lingkungan sekitar
Pemanfaatan lingkungan sekitar
 
Praising failure, not perfection
Praising failure, not perfectionPraising failure, not perfection
Praising failure, not perfection
 
презентация1
презентация1презентация1
презентация1
 
Legal Practicing as a Freelance Designer
Legal Practicing as a Freelance DesignerLegal Practicing as a Freelance Designer
Legal Practicing as a Freelance Designer
 
Rosita Forbes Bio
Rosita Forbes BioRosita Forbes Bio
Rosita Forbes Bio
 
Presentation3
Presentation3Presentation3
Presentation3
 
T&d
T&dT&d
T&d
 
Azot
AzotAzot
Azot
 
ջրիմուռներ123
ջրիմուռներ123ջրիմուռներ123
ջրիմուռներ123
 
Stefania
StefaniaStefania
Stefania
 
սուրճ1
սուրճ1սուրճ1
սուրճ1
 
Round Corner Social Media
Round Corner Social MediaRound Corner Social Media
Round Corner Social Media
 
Permainan matematika
Permainan matematikaPermainan matematika
Permainan matematika
 
բակտերաններ
բակտերաններբակտերաններ
բակտերաններ
 
զատիկը տարբեր երկրներում
զատիկը տարբեր երկրներումզատիկը տարբեր երկրներում
զատիկը տարբեր երկրներում
 
Հողաթափիկ Ինփուզորիա
Հողաթափիկ ԻնփուզորիաՀողաթափիկ Ինփուզորիա
Հողաթափիկ Ինփուզորիա
 

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

Digitalizzazione di un processo industriale
Digitalizzazione di un processo industrialeDigitalizzazione di un processo industriale
Digitalizzazione di un processo industrialeGiulioDeBiasio2
 
Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...
Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...
Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...daniel_zotti
 
Assoautomazione guida encoder
Assoautomazione guida encoderAssoautomazione guida encoder
Assoautomazione guida encoderLika Electronic
 
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.anwarNazik
 
Openfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsOpenfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsLorenzo Stacchio
 
Sistemi domotici integrati per la gestione intelligente d’ambiente
Sistemi domotici integrati per la gestione intelligente d’ambienteSistemi domotici integrati per la gestione intelligente d’ambiente
Sistemi domotici integrati per la gestione intelligente d’ambientefreedomotic
 
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...Domenico Schillaci
 
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...Simone Fini
 
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...Gianluca Ritrovati
 
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...Luca Bressan
 
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...MarcoCautero1
 
Sistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionSistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionAmmLibera AL
 
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...michael_mozzon
 
a1dddf507ce838f51f5349d2b2c25241
a1dddf507ce838f51f5349d2b2c25241a1dddf507ce838f51f5349d2b2c25241
a1dddf507ce838f51f5349d2b2c25241Nunzio Meli
 
Progettazione, realizzazione e controllo di un sistema Cart and Beam
Progettazione, realizzazione e controllo di un sistema Cart and BeamProgettazione, realizzazione e controllo di un sistema Cart and Beam
Progettazione, realizzazione e controllo di un sistema Cart and BeamGian Mauro Musso
 
Profilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiProfilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiPietro Corona
 
Costruzione di un pendolo inverso e implementazione del sistema di controllo
Costruzione di un pendolo inverso e implementazione del sistema di controlloCostruzione di un pendolo inverso e implementazione del sistema di controllo
Costruzione di un pendolo inverso e implementazione del sistema di controlloIgor Valic
 

Similar to Realizzazione di una base di dati per la memorizzazione di dati provenienti da sensori di un impianto fotovoltaico. (20)

Digitalizzazione di un processo industriale
Digitalizzazione di un processo industrialeDigitalizzazione di un processo industriale
Digitalizzazione di un processo industriale
 
Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...
Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...
Progettazione e sviluppo di un'applicazione web per la gestione di dati di at...
 
Assoautomazione guida encoder
Assoautomazione guida encoderAssoautomazione guida encoder
Assoautomazione guida encoder
 
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
Realizzazione di un controllore basato su piattaforma robotica Thymio 2.
 
Openfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsOpenfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistems
 
Sistemi domotici integrati per la gestione intelligente d’ambiente
Sistemi domotici integrati per la gestione intelligente d’ambienteSistemi domotici integrati per la gestione intelligente d’ambiente
Sistemi domotici integrati per la gestione intelligente d’ambiente
 
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...
Sviluppo di un sistema per il monitoraggio ambientale basato su reti di senso...
 
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
Costruzione e Sviluppo in ambiente STNucleo di un Quadricottero con Stabilizz...
 
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
Public Light Manager - Una GUI per la gestione remota di un impianto di illum...
 
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
Estrazione automatica di informazioni da documenti cartacei: progetto e reali...
 
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...
Progetto, realizzazione e caratterizzazione dell'elettronica di acquisizione ...
 
Sistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisitionSistemi SCADA - Supervisory control and data acquisition
Sistemi SCADA - Supervisory control and data acquisition
 
2013_10_Felici.PDF
2013_10_Felici.PDF2013_10_Felici.PDF
2013_10_Felici.PDF
 
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
 
a1dddf507ce838f51f5349d2b2c25241
a1dddf507ce838f51f5349d2b2c25241a1dddf507ce838f51f5349d2b2c25241
a1dddf507ce838f51f5349d2b2c25241
 
Progettazione, realizzazione e controllo di un sistema Cart and Beam
Progettazione, realizzazione e controllo di un sistema Cart and BeamProgettazione, realizzazione e controllo di un sistema Cart and Beam
Progettazione, realizzazione e controllo di un sistema Cart and Beam
 
Profilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiProfilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzati
 
Manuale sicurnet
Manuale sicurnetManuale sicurnet
Manuale sicurnet
 
TesiEtta
TesiEttaTesiEtta
TesiEtta
 
Costruzione di un pendolo inverso e implementazione del sistema di controllo
Costruzione di un pendolo inverso e implementazione del sistema di controlloCostruzione di un pendolo inverso e implementazione del sistema di controllo
Costruzione di un pendolo inverso e implementazione del sistema di controllo
 

Recently uploaded

IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaRafael Figueredo
 
Terza cultura w la scienza Italo Calvino.pdf
Terza cultura w la scienza Italo Calvino.pdfTerza cultura w la scienza Italo Calvino.pdf
Terza cultura w la scienza Italo Calvino.pdfPierLuigi Albini
 
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024biblioverifica ijf24 Festival Internazionale del Giornalismo 2024
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024Damiano Orru
 
Esame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxEsame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxfedericodellacosta2
 
La produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataLa produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataGianluigi Cogo
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaPierLuigi Albini
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieVincenzoPantalena1
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxOrianaOcchino
 

Recently uploaded (8)

IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
 
Terza cultura w la scienza Italo Calvino.pdf
Terza cultura w la scienza Italo Calvino.pdfTerza cultura w la scienza Italo Calvino.pdf
Terza cultura w la scienza Italo Calvino.pdf
 
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024biblioverifica ijf24 Festival Internazionale del Giornalismo 2024
biblioverifica ijf24 Festival Internazionale del Giornalismo 2024
 
Esame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptxEsame finale - riunione genitori 2024.pptx
Esame finale - riunione genitori 2024.pptx
 
La produzione e la gestione degli Open Data
La produzione e la gestione degli Open DataLa produzione e la gestione degli Open Data
La produzione e la gestione degli Open Data
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza cultura
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medie
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptx
 

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

  • 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 Furlanetto ANNO ACCADEMICO 2011-2012
  • 2. 1. INTRODUZIONE ......................................................................... 4 2. 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.....................................................................................7 3. PROGETTAZIONE ....................................................................... 8 Lo schema Web ..............................................................................10 Analisi di stabilità ...........................................................................10 Prestazioni ......................................................................................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 4.15. fStabilityAlternative_GetAll ....................................................32 2
  • 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 .........................................................................39 5. CONSIDERAZIONI FINALI .......................................................... 40 3
  • 4. 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 elettriciinstallato della ditta LSI LASTEM1, e realizzato con sensori progettati e prodotti dalla stessa. Questi strumenti dialogano mediante dei dispositivi denominati Data Loggercon 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
  • 5. 2. ANALISI E’ 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. Sensori I 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 elettriche E’ 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: = I_in I_out V_out V_in = Modulo Convertitore Resistenza 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
  • 6. Sensori metereologici Questo 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. Dataloggers Questi 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. Calcolatore Il 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à HardDisk: 250 GB. In tale portatile è stata installata, da parte del fornitore,la suite software proprietariadi LSI LASTEM necessaria all’acquisizione ed al salvataggio dei dati. Tale suite si compone dei programmi qui di seguito elencati. 3DOM 3DOM (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. CommNetEG CommNetEG è un programma che permette la ricezione dei dati registratidagli strumenti LSI LASTEM, sia in modalità manuale che automatica. 6
  • 7. GidasViewer GidasViewer è 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
  • 8. 3. PROGETTAZIONE Per soddisfare le richieste di cui il punto2.4, è statoadottato un approccio di tipo 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. Legenda «TipoFunzione» <NomeFunzione> View Table -<parametri> <NomeVista> <NomeTabella> 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 3lo schema logico delle suddette tabelle. TABELLA CAMPI RawValue ConfigurationID*, ElaborationDate, ElaborationValue, ValidPercentage ValueConfigu ValueConfigurationID, ration InstrumentConfigurationID*,MeasureIndex*,Elab orationBaseIndex, ElaborationItemIndex*,ElaborationType*, Position InstrumentMe InstrumentConfigurationId, asure MeasureIndex,MeasureName,MeasurePrecision,Mea sureUnit, MeasureProperty, MeasureId ElabTypeList IdElabType, ElabTypeString, ElabTypeToDo Figura 3 - Schema logico dello schema Core 9
  • 10. Lo schema Web Raccoglie l’implementazione effettiva del codice e delle viste sviluppateper 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 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 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
  • 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 il criterio 1, riportando tra parentesi quadre [] le differenze con il criterio 2. Undato si ritiene stabile se soddisfa contemporaneamente le tre condizioniseguenti[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. 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: 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 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 temperatura istantanea del modulo in esame irraggiamento registrato dal piranometro avente lo stesso angolo di tilt del modulo 2 Temperaturadi cella 25° C, irraggiamento 1000 W/m2, con distribuzione spettrale di riferimento(massa d’aria AM 1,5). 12
  • 13. Prestazioni L’introduzione di un indice nel campo ElaborationDate della tabella Core.RawValueha 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 HashMatching. 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.RawValueconsta, 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
  • 14. 4. IMPLEMENTAZIONE 4.1. vData_GetAll Costituisce 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
  • 15. 4.2. vSortedMinData_GetAll Per ogni terna di valori massimi, medi e minimi campionati ogni minuto, estrae i valori minimi. CREATE VIEW [Web].[vSortedMinData_GetAll] AS SELECT 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 'POLI'THEN 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. 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 TeSUPerfQSmart10 FROM Web.vData_GetAll WHERE (Elaboration = 'Min') GROUP BY ElaborationDate 16
  • 17. 4.3. vSortedMaxData_GetAll Per ogniterna di valorimassimi, medi e minimicampionatiogniminuto, estraeivalorimassimi. CREATE VIEW [Web].[vSortedMinData_GetAll] AS SELECT 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 'POLI'THEN 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. 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 TeSUPerfQSmart10 FROM Web.vData_GetAll WHERE (Elaboration = 'Max') GROUP BY ElaborationDate 18
  • 19. 4.4. vSortedInstantaneousData_GetAll Per ogni set di campionatiogniminuto, estraeivaloriprivi di elaborazione o istantanei. CREATE VIEW [Web].[vSortedMinData_GetAll] AS SELECT 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 LivelloBATT FROM Web.vData_GetAll WHERE (Elaboration = 'Inst') GROUP BY ElaborationDate 19
  • 20. 4.5. vSortedAverageData_GetAll Per ogniterna di valorimassimi, medi e minimicampionatiogniminuto, estraeivalorimedi. CREATE VIEW [Web].[vSortedAverageData_GetAll] AS SELECT 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 'POLI'THEN 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. 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 TeSUPerfQSmart10 FROM Web.vData_GetAll WHERE (Elaboration = 'Ave') GROUP BY ElaborationDate 21
  • 22. 4.6. vSortedWindData_GetAll Per ogni set di valoricampionatiogniminuto, estraeivaloriprovenienti dal solo anemometro. CREATE VIEW [Web].[vSortedWindData_GetAll] AS SELECT 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_GetAll WHERE (MeasureName = 'DIRVento') OR (MeasureName = 'VELVento') GROUP BY ElaborationDate ORDER BY ElaborationDate 22
  • 23. 4.7. vSortedData_GetAll Affianca orizzontalmente i valori medi e istantanei, provenienti dalle viste4.4 e 4.5. CREATE VIEW [Web].[vSortedData_GetAll] AS SELECT 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
  • 24. 4.8. fSortedData_WithinDate Ottiene 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 @DateStartdatetime, @DateStopdatetime ) RETURNS TABLE AS RETURN ( -- Add the SELECT statement with parameter references here SELECT * FROM Web.vSortedData_GetAll WHERE ElaborationDate BETWEEN @DateStart AND @DateStop ) 24
  • 25. 4.9. fStabilityVoltage Criterio 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 bit AS BEGIN -- Declare the return variable here DECLARE @Result bit DECLARE @PreResult real DECLARE @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 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 @Result END 25
  • 26. 4.10. fStabilityPower Criterio 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 bit AS BEGIN -- 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 @Result END 26
  • 27. 4.11. fStabilityIrradiance Criterio 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 bit AS BEGIN -- 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 function END 27
  • 28. 4.12. fStabilityCheck1 Implementa 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 bit AS BEGIN -- 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 @Result END 28
  • 29. 4.13. fStabilityCheck2 Implementa 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 bit AS BEGIN -- 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 @Result END 29
  • 30. 4.14. fStability_GetAll Ottiene 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 TABLE AS RETURN ( -- 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, VinQSmart10, IinQSmart10, TeSUPerfQSmart10, 30
  • 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) AS FSStability, UmiditaRel, TempAria, RadDIFFusa, RadGLOBale, RadGL45, POLI, MONO FROM Web.vSortedData_GetAll ) 31
  • 32. 4.15. fStabilityAlternative_GetAll Ottiene 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 TABLE AS RETURN ( -- Insert statements for procedure here SELECT ElaborationDate, VinQPro34, IinQPro34, Web.fStabilityCheck2(@PnQPro34,VinQPro34*IinQPro34,@Radia nceThreshold, @PowerThreshold, RadDIFFusa, RadGL45) AS QPro34Stability, VoutQPro34, IoutQPro34, VinQPro10, IinQPro10,Web.fStabilityCheck2(@PnQPro10,VinQPro10*IinQPr o10, @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
  • 33. 4.16. fStability_WithinDate Ottiene 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 TABLE AS RETURN ( -- 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. 4.17. fStabilityAlternative_WithinDate Ottiene 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 TABLE AS RETURN ( -- 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. 4.18. fWind_WithinDate Ottiene 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 AS RETURN ( -- Add the SELECT statement with parameter references here SELECT * FROM Web.vSortedWindData_GetAll WHERE ElaborationDate BETWEEN @DateStart AND @DateStop ) 35
  • 36. 4.19. fSortedData_ToXML Espone in formato XML i dati provenienti dall’anemometro. CREATE FUNCTION [Web].[fSortedData_ToXML] ( -- Add the parameters for the function here @DateStartdatetime, @DateStopdatetime ) RETURNS XML AS BEGIN -- Declare the return variable here RETURN( SELECT * FROM Web.fSortedData_WithinDate(@DateStart,@DateStop) FOR XML PATH ('Data') ) END 36
  • 37. 4.20. fStability_ToXML Espone 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 XML AS BEGIN -- 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. 4.21. fStabilityAlternative_ToXML Espone 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 XML AS BEGIN -- 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. 4.22. fWind_ToXML Espone 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 XML AS BEGIN -- Declare the return variable here RETURN( SELECT * FROM Web.fWind_WithinDate(@DateStart,@DateStop) FOR XML PATH ('Data'), ROOT ('Wind') ) END 39
  • 40. 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 LASTEMe 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).aspx 4 http://msdn.microsoft.com/en-us/library/cc645993(v=sql.105).aspx 5 Si veda il capitolo sulle prestazioni per la spiegazione di un incremento così rapido. 40