Академический Документы
Профессиональный Документы
Культура Документы
FACOLTÀ DI INGEGNERIA
Laureando: Relatore:
Introduzione
Il problema considerato in questa tesi riguarda lo sviluppo di un’ interfaccia grafica (GUI)
per la piattaforma software PSP Framework (Process Sustainability Prediction Framework) per la
previsione di sostenibilità di processi industriali mediante l’utilizzo di indicatori di sostenibilità
monodimensionali (1D) e tridimensionali (3D).
L’obbiettivo è quello di progettare e sviluppare un’applicazione di front end per il sistema
PSP. L’applicazione dovrà gestire l’interazione con l’utente da interfaccia grafica.
La piattaforma PSP è stata precedentemente sviluppata dal dott. ing. chimico Letitia Toma.
Questo sistema è stato progettato ad hoc per la previsione di sostenibilità di processi industriali
mediante il calcolo di indicatori di sostenibilità. L’intero software è composto da più moduli con
compiti diversi. La componente di interesse in questa tesi è l’interfaccia utente. Precedentemente
sono stati sviluppati due prototipi di interfaccia utente: Final_interface.exe e 3DMetrics.exe,
rispettivamente per il calcolo di indicatori di sostenibilità 1D e 3D. Entrambi sono completi dal
punto di vista funzionale, ma hanno mancanze dal punto di vista grafico. Quindi si è voluto
sviluppare un'altra applicazione, la quale doveva comprendere tutte le funzionalità presenti nei
due prototipi, più alcune funzioni aggiuntive.
Gli obbiettivi principali di questo lavoro sono stati:
1
Riassunto dei capitoli seguenti
2 Analisi: in questo capitolo viene effettuata l’analisi del sistema esistente e l’analisi
dell’applicazione da sviluppare:
2.1 PSP Framework: viene descritta la struttura della piattaforma e viene esposto il
flusso logico dei dati e delle operazioni per l’analisi di sostenibilità di un processo;
2
Capitolo 2
Analisi
Il PSP framework rappresenta uno strumento di supporto per l’ing. chimico di processo che
permette di valutare l’impatto ambientale di un processo chimico già nella fase di progettazione e
di scegliere la soluzione migliore dal punto di vista ambientale. È composto da moduli Cape Open
interfacciati al simulatore di processo, da un database relazionale contenente dati tossicologici e
frasi di rischio e da una serie di moduli software.
3
Figura: sequenza operazioni nel PSP framework
2.2 Sostenibilità
La sostenibilità rappresenta un importante problema sociale, politico e scientifico di questo
secolo. Lo sviluppo sostenibile è stato definito come la creazione di beni e servizi usando processi
e sistemi non inquinanti, conservando energia e risorse naturali; economicamente sostenibile;
sano e sicuro per i lavoratori, le comunità ed i consumatori.
L ‘industria chimica produce materiali per diversi mercati di consumo, che devono essere prodotti,
utilizzati e riciclati in modo pulito, sicuro ed economico. Al fine di eliminare o ridurre i problemi
ambientali, devono essere identificate e quantificate le conseguenze ambientali dei processi
chimici in una fase iniziale del processo di progettazione.
4
2.2.1 Indicatori di sostenibilità
Proprietà fondamentali:
(i) un insieme di variabili quantificabili consistenti con i principi di sostenibilità;
(ii) devono essere chiari, semplici e non ambigui;
(iii) devono rappresentare il sistema fisico sotto studio
Viene fatto uso di una piccola serie di indicatori quantificabili, tra loro indipendenti. Con
l'obiettivo di fornire un metodo semplice per l’analisi della sostenibilità di sistemi industriali,
Sikdar propose una tipologia di indicatori considerando le tre dimensioni di sostenibilità in tre
gruppi gerarchici distinti:
(1) monodimensionale (1D), indicatori che offrono informazioni solamente su una dimensione di
sostenibilità: economica, ecologica, o sociale;
(2) bidimensionale (2D), indicatori che offrono simultaneamente informazioni su due dimensioni
di sostenibilità: socio-ecologica, socio-economica, o economico-ecologica;
(3) tridimensionale (3D), indicatori che offrono informazioni su tutte e tre le dimensioni di
sostenibilità.
System Definition
Ambiente
1D
3D Indicators
Calculation
2D 2D
3D
2D and 1D Indicators
Calculation
5
2.2.1.1 Indicatori tridimensionali (3D)
Per i processi chimici, nella maggior parte dei casi, vengono definiti quattro indicatori 3D:
Hazard Class
Frequency Class
6
4. Potenziale Impatto Ambientale (PEI - Potential Environmental Impact)
L’ indice PEI misura il potenziale impatto ambientale provocato dalle
emissioni e dagli scarichi di sostanze inquinanti nell’ambiente. Viene calcolato per massa di
prodotto seguendo il seguente schema:
Quantity Class
Transfer Coefficient
Receiving Medium
(air, water, soil)
Potential Environmental Impact
(air, water, soil)
Quantity Class
Total Potential
Environmental Impact
Hazard Class
L’algoritmo WAR viene utilizzato per valutare l’impatto ambientale di un processo chimico
tramite indicatori di sostenibilità monodimensionali.
Molecular weights
Process Simulation
Streams Composition
Environmental Impact
Toxicological DB Impact categories values WAR Indexes
La valutazione viene fatta tramite gli indici d’impatto ambientale. Si basa su equazioni di bilancio
d’ impatto ambientale. In Figura viene illustrato il bilancio complessivo di un processo chimico
generico.
Iout
(ep )
Iout
(cp )
Mass Mass
Energy
Energy
Iwe Chemical
Iwe
(ep ) (cp )
Generation
Process
Process
Waste Energy Waste Energy
Mass Mass
I in
(ep )
Iin(cp )
7
Categorie di impatto ambientale
Gli indici di impatto ambientale vengono utilizzati per caratterizzare l’ efficienza ambientale del
processo.
8
2.3 Cape Open(CO)
La metodologia Cape Open (Computer Aided Process Engineering) consente l’interfacciamento di
diversi componenti software. Il PSP Framework contiene moduli CO capaci di interagire con
qualsiasi simulatore di processo. In questo modo si ottengono in modo automatico dal simulatore
di processo i dati necessari al calcolo degli indici 3D o 1D.
Nell’ambito del PSP-3D vengono utilizzati due moduli Cape Open: ProMatrics.dll e
ProPointRisk.dll.
9
2.4 Implementazione
2.4.1 Implementazione PSP-3D
Simulazione di
Moduli CO Tossicologica DB
processo
Risultati
CAS_data.txt Quantity_class_data_risk.txt material_intensity_data.txt risk_phrases.txt Classe di frequenza Stato fisico Materiale ricevente
Calcolo indicatori 3D
MI EI PCR PEI
La simulazione di processo con l’utilizzo dei moduli Cape Open da come risultato una serie
di file: “CAS_data.txt”, “Quantity_class_data_risk.txt”, “material_intensity.txt”, “risk_phrases.txt”.
I dati di questi file ed i dati inseriti dall’utente da interfaccia fanno poi da input al calcolo degli
indici 3D.
Weighting Factors.txt
Tossicologico Simulazione
Modulo CO
DB di processo
Risultati
Calcolo
indicatori 1D
In questo caso, per prima cosa vengono impostati i valori delle categorie di impatto
ambientale (“Weighting factors”), che vengono poi utilizzati nella fase successiva di simulazione di
processo. I risultati di questa fase sono i file “results_new.txt” e
“stream_name_and_composition.txt”, i quali fanno poi da input al calcolo degli indicatori
ambientali 1D.
10
2.5 Requisiti del sistema
In questa sezione vengono definiti i requisiti del sistema.
Calcolo indicatori ambientali 1D: il sistema calcola gli indicatori 1D dai risultati della simulazione di
processo (file “results_new.xml” e “stream_name_and_composition.xml”) e mediante la lettura di
alcuni dati inseriti dall’utente da interfaccia, come i composti ed i flussi presenti nel processo.
Calcolo indicatori ambientali 3D: il sistema calcola gli indicatori 3D (MI, EI, PCR, PEI) dai risultati
della simulazione di processo (file “cas_data.xml”, “material_intensity_data.xml”,
“quantity_class_data_risk.xml” e “risk_phrases.xml”), e mediante la lettura di alcuni dati da
interfaccia come lo stato fisico dei prodotti e le loro classi di frequenza.
Salvataggio indicatori 1D: il sistema salva gli indicatori 1D calcolati su file con formato xml, per
consentire un successivo confronto con risultati di processi diversi.
Salvataggio indicatori 3D: il sistema salva gli indicatori 3D calcolati su file con formato xml, per
consentire un successivo confronto con risultati di processi diversi.
Confronto indicatori 1D: il sistema consente il confronto di più insiemi di indicatori 1D salvati su
file xml mediante la rappresentazione degli stessi in forma numerica in tabella e su grafici.
Confronto indicatori 3D: il sistema consente il confronto di più insiemi di indicatori 3D salvati su
file xml mediante la rappresentazione degli stessi in forma numerica in tabella e su grafici.
Impostazione dei valori delle categorie di impatto ambientale: durante la simulazione di processo
1D il modulo CO fa uso del file “factors.xml”, che deve contenere i valori di otto categorie di
impatto ambientale: GWP, ODP, PCOP, AP, HTPE, HTPI, TTP, ATP. Questa funzione consente all’
utente di creare o modificare questo file.
Aggiunta nomi sostanze ai risultati della simulazione 1D: durante la simulazione di processo 1D
viene creato il file “results_new.xml”, contenente dati su alcune sostanze chimiche. Tra queste
informazioni mancano i nomi delle sostanze, che vengono identificate con un identificatore.
Questa funzione consente di impostare ad ogni sostanza presente nel file il proprio nome, per
consentire una più semplice lettura dei dati da parte dell’utente durante la fase di calcolo degli
indici 1D.
11
2.6 Specifiche
In questa sezione i requisiti del sistema vengono approfonditi e tradotti in specifiche.
Calcolo indicatori ambientali 1D: con questa operazione vengono calcolati otto indici ambientali
1D: iout, iout_mp0, iout_mp1, iout_mp2, igen, igen_mp0, igen_mp1, igen_mp2. L’utente apre il
form di immissione dati, dove vengono elencati i contenuti dei file “results_new.xml” e
“stream_name_and_composition.xml”.
Il file “results_new.xml” contiene dati sui flussi presenti nel processo chimico. Questi flussi
vengono divisi nelle seguenti categorie, a seconda del loro indice e tipo: input del processo
chimico (ind.=0, tipo=0), output del processo chimico (ind.=0, tipo=1), materiale sprecato dal
processo chimico (ind.=0, tipo=2), input del processo di generazione di energia (ind.=0, tipo=0) e
spreco del processo di generazione di energia (ind.=0, tipo=1). L’utente può selezionare sul form
uno o più di questi flussi.
Il file “stream_name_and_composition.xml” contiene invece l’elenco di alcuni composti chimici.
L’utente deve selezionare almeno uno di questi composti come prodotto principale del processo.
Dopodiché il sistema calcola gli indici ambientali con l’algoritmo utilizzato nel prototipo sviluppato
precedentemente e in caso di esito positivo i risultati vengono esposti in forma numerica decimale
e grafica su istogrammi.
Calcolo indicatori ambientali 3D: in questo caso vengono calcolati gli indicatori 3D con la seguente
sequenza: MI, EI, PCR, PEI. Viene aperto per primo un form per l’immissione dati per il calcolo
dell’indice MI (Material Intensity). Vengono caricate le sostanze presenti nel processo chimico con
le relative caratteristiche dal file “material_intensity_data.xml” ed i numeri di CAS di ogni sostanza
dal file “cas_number.xml”. L’utente deve inserire le quantità di acqua, ossigeno e azoto formati
nella reazione chimica, il prodotto principale del processo ed eventualmente altri prodotti tra
quelli letti dal file “material_intensity_data.xml”. Dopodiché viene calcolato l’indice MI.
Se l’operazione è andata a buon fine si procede al calcolo dell’indice EI. Viene aperto un nuovo
form dove l’utente deve selezionare nuovamente il prodotto principale del processo chimico ed
eventuali altri prodotti (tra quelli presenti in “material_intensity_data.xml”) ed inserire la quantità
di energia generata durante il processo [Btu/hr]. Si procede al calcolo dell’indice.
Il passo successivo è il calcolo dell’indice PCR. Vengono caricate le frasi di rischio per i vari numeri
di CAS dal file “risk_phrases.xml” e vengono elencate sul form le sostanze presenti nel file
“quantity_class_data_risk.xml”. L’utente deve associare ad ogni sostanza chimica la frequenza di
utilizzo tra le seguenti, dopodiché viene calcolato l’indice:
12
Per ultimo viene aperto un form dove l’utente deve associare ad ogni sostanza chimica presente in
“quantity_class_data_risk.xml” lo stato fisico (gassoso, liquido, solido, polvere solida). Infine viene
calcolato l’indice PEI.
Per il calcolo degli indici vengono utilizzati gli algoritmi del prototipo esistente, adattati alle nuove
strutture dati.
È stata sviluppata una libreria compatibile con i moduli CO ed il frontend per la memorizzazione e
l’utilizzo dei risultati delle simulazioni di processo tramite file con formato xml.
Nel PSP-1D vengono utilizzati due file: “results_new.xml” e “stream_name_and_composition.xml”.
Il primo file contiene un elenco di flussi. Per ogni flusso vengono memorizzati tipo (type),
identificatore (name), indice (ind), valore (value), portata (massFlowRate) ed il nome della
sostanza (stream).
Salvataggio indicatori 1D: Questa operazione salva gli otto indicatori 1D su un file con struttura
xml. Es.:
<?xml version="1.0"?>
<Final_Results>
<Iout>0.785966558</Iout>
<Iout_mp0>0.002926624096003313</Iout_mp0>
<Iout_mp1>0.002547901807596053</Iout_mp1>
<Iout_mp2>0.002547901807596053</Iout_mp2>
<Igen>-13.5807851</Igen>
<Igen_mp0>-0.05056939447581784</Igen_mp0>
<Igen_mp1>-0.044025418833231758</Igen_mp1>
<Igen_mp2>-0.044025418833231758</Igen_mp2>
</Final_Results>
Salvataggio indicatori 3D: Questa operazione salva gli indici 3D calcolati su un file con struttura
xml. Es.:
<?xml version="1.0"?>
<FinalResults3D>
<MaterialIntensity>678.6841520946355</MaterialIntensity>
<EnergyIntensity>1.5</EnergyIntensity>
<ChemicalRisk>41</ChemicalRisk>
<PotentialEnvironmentalImpact>270.201</PotentialEnvironmentalImpact>
</FinalResults3D>
14
Confronto indicatori 1D: con questa operazione vengono confrontati indici 1D di diverse
simulazioni. Vengono rilevati tutti i file rappresentanti risultati 1D in una cartella selezionata
dall’utente, dopodiché l’utente può scegliere quali processi confrontare tra quelli presenti. Infine
vengono esposti i valori degli indici iout, iout_mp0, igen e igen_mp0 in una tabella e su quattro
istogrammi.
Confronto indicatori 3D: il confronto di indici 3D viene fatto allo stesso modo del confronto 1D.
Vengono esposti i valori dei quattro indici MI, EI, PCR e PEI sia in forma numerica che grafica.
Impostazione dei valori delle categorie di impatto ambientale: viene aperto un form per
l’inserimento o la modifica dei valori delle otto categorie ambientali. Vengono caricati i valori
presenti nel file “factors.xml”, se esistente. Altrimenti viene attribuito il valore di default 1 ad ogni
categoria. Dopodiché l’utente può modificare i valori e salvare le modifiche apportate su file.
Aggiunta nomi sostanze ai risultati della simulazione 1D: il sistema consente di inserire il nome per
ogni sostanza presente nel file “results_new.xml”. Vengono lette le varie sostanze e le relative
proprietà dal file ed elencate in una tabella, dove l’utente può inserire un nome per ogni sostanza.
Infine le modifiche vengono salvate sul stesso file.
Interfaccia
Calcolo indici 1D
Calcolo indici 3D
Confronto indici 1D
Ing. chimico
Confronto indici 3D
Impostazione valori
categorie di impatto
ambientale
Modifica risultati
simulazione 1D
«extends»
leggi
stream_name_and_composition.xml
«uses»
leggi risultati
simulazione
«extends»
leggi results.xml
Calcola Indici 1D
«extends»
inserisci prodotti
principali del processo
«uses»
«uses» «extends»
inserisci dati da
«uses» interfaccia
inserisci i flussi in
entrata al processo
inserisci i flussi in «extends» chimico
calcola indici
entrata al proc. di gen. di
energia
«extends» «extends»
inserisci i flussi in
uscita al processo chimico
salva risultati su
file inserisci i flussi
sprecati dal proc. di gen. di
energia
«extends» inserisci i flussi dello
spreco del processo
chimico
16
2.7.2 Calcolo indici 3D
Seleziona file
«uses» risultati da confrontare
Visualizza
confronto «extends»
Visualizza
confronto su grafici
Seleziona file
«uses» indici 3D da confrontare
Visualizza
confronto «extends»
Visualizza
confronto su grafici
18
2.7.5 Impostazione dei valori delle categorie di impatto ambientale
Modifica GWP
«uses» «extends»
Modifica Weighting Modifica valori Modifica HTPI
factors «extends»
«uses» «extends»
«extends» «extends» Modifica PCOP
Salva file
Modifica TTP
Modifica AP
Modifica ATP
Apri file
«uses»
«uses»
Modifica results 1D Inserisci nomi
sostanze
«uses»
Salva file
19
2.8 Diagrammi delle classi
Di seguito vengono esposti i diagrammi delle classi del sistema, elencando le loro proprietà
principali.
2.8.1 LibreriaPerXML
20
2.8.1.1 PSP-3D
La classe CasData gestisce il file “cas_data.xml”. Contiene uno o più insiemi di cas number.
21
La classe QuantityClassDataRisk consente la gestione del file
“quantity_class_data_risk.xml”, che ha una struttura molto simile al file
“material_intensity_data.xml”, con la differenza che per ogni sostanza vengono memorizzati
soltanto il nome, la portata complessiva e la portata per ogni componente.
2.8.1.2 PSP-1D
La classe Results (file “results.xml”) contiene i seguenti dati per alcune sostanze presenti
nel processo chimico: indice, portata, nome, flusso, tipo e valore.
La classe Factors (file “factors.xml”) contiene i valori delle otto classi di impatto ambientale
(AP, ATP, GWP,HTPE, HTPI, ODP, PCOP, TTP).
22
2.8.2 Front end
Per il calcolo degli indici 1D si fa uso della classe Indici1D, che consente di:
23
• Leggere i due file risultato della simulazione di processo (di default
“stream_name_and_composition.xml” e “results.xml”) tramite i metodi loadCompounds()
e loadResults();
• Calcolare gli indici monodimensionali: calcola Indicatori();
• Salvare gli indici su file: saveResults1D().
• Leggere i risultati da codice tramite delle variabili pubbliche contenenti i valori degli otto
indici calcolati: igen, igen_mp0, igen_mp1, igen_mp2, iout, iout_mp0, iout_mp1,
iout_mp2.
La classe Indici3D viene invece usata per il calcolo degli indici 3D. Consente di:
La classe Grafico rappresenta un istogramma e viene usata per il confronto di indici 1D e 3D. Su
ogni grafico vengono rappresentati i valori di più simulazioni per lo stesso indice.
La classe Confronto viene usata per la selezione dei progetti da confrontare sia nei confronti di
indici ambientali 3D che in quelli 1D. Consente la selezione di una cartella, nella quale individua
tutti i file rappresentanti risultati 3D o 1D e consente all’utente di scegliere tra questi quali
mettere a confronto.
La classe Preferences rappresenta un form per l’immissione dei nomi di default dei vari file
utilizzati dal programma. Per il salvataggio e la lettura delle impostazioni da file viene usata la
classe PreferencesStruct.
24
Capitolo 3
Realizzazione
Di seguito viene descritta la parte di codifica, esponendo anche parte del codice sorgente.
Il sistema è stato codificato in linguaggio C# utilizzando il sistema di sviluppo “Microsoft Visual
Studio 2008 (.Net 3.5)”.
Passi principali:
25
/* dichiarazione classe Composition visibile al COM implementando l’interfaccia CompositionInterface */
[ComVisible(true)]
[Guid("F603B2E9-2FC0-4e36-9849-9E708F5EA308"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(CompositionInterface))]
public class Composition:CompositionInterface
{
//variabili pubbliche visibili in ambiente .NET
public String name = "";
public double massFlowRate = 0;
//definizione metodi
public Composition() { }
Contenuti libreria
Interfaccie:
• CasDataInterface
• CasDataSegmentInterface
• ComponentRiskInterface
• ComponentsRiskInterface
• FactorsInterface
• MaterialIntensityDataInterface
• QuantityClassDataRiskInterface
• QuantityClassDataRiskStreamInterface
• ResultInterface
• ResultsInterface
• RiskPhrasesInterface
• StreamInterface
• StreamNameAndComposition_Interface
Classi:
• CasData
• CasDataSegment
• ComponentRisk
• ComponentsRisk
26
• Factors
• MaterialIntensityStream
• MaterialIntensityData
• QuantityClassDataRisk
• QuantityClassDataRiskStream
• Result
• Results
• RiskPhrases
• Stream
• StreamNameAndComposition
3. 1.1 PSP-3D
Metodi principali:
…..
//legge il file “file” e copia il contenuto nell’array
public void deserialize(String file)
{
streams = new ArrayList();
//oggetto rapprentante l’intero file
XmlNode n = null;
……..
//aggiungo ogni nodo (CasDataSegment)
foreach (XmlNode components in n.ChildNodes)
{
CasDataSegment seg = new CasDataSegment();
//aggiungo ogni cas number del segmento
foreach (XmlNode component in components)
{
seg.add(((XmlText)component.FirstChild).Value);
}
streams.Add(seg);
}
CasDataSegment: array dinamico di stringhe, dove ogni stringa rappresenta un numero di CAS (es.
1333-74-0).
Metodi principali:
28
RiskPhrases: array dinamico contenente oggetti di tipo ComponentsRisk, i quali a sua volta
contengono uno o più ComponentRisk. Un ComponentRisk contiene la frase di rischio per un
numero di CAS.
Metodi principali:
• appendToFile(String file, ComponentsRisk c): inserisce un elemnto alla fine del file
file;
• load(String file): carica il contenuto del file file nell’array;
• insert(int index, ComponentsRisk r): inserisce un elemento all’indice index;
• removeAt int index): rimuove l’elemento all’indice index;
• getAt(int i): ritorna l’elemento all’indice i;
• count(): ritorna la lunghezza dell’array;
• Add(ComponentsRisk c): aggiunge un elemento in coda;
• save(String file): salva l’array sul file file in formato xml.
ComponentRisk: contiene il nome di una sostanza (name) e la propria frase di rischio (risk, es. 11-
56-35). La frase di rischio è scomposta in parti (es. 11, 56, 35) memorizzate in un array.
Metodi principali:
MetodiPrincipali:
29
objXmlTextWriter.Close();
}
catch (Exception ex)
{
return false;
}
return true;
}
Proprietà principali:
3.1.2 PSP-1D
Results: array dinamico di oggetti di tipo Result per la gestione del file “results.xml”.
Result: oggetto contenente dati (indice, portata, nome, flusso, tipo, valore) su una sostanza.
Metodi principali:
Stream: memorizza i seguenti dati su un flusso: indice, nome, tipo e la portata di tutte le sostanze
(Components) che lo compongono.
30
Metodi principali:
• Stream(short type, String name, short index, Compositions c): inizializza l’oggetto
con valori passati da parametro;
• set”[type, name, ind, compositions]”(…): imposta il valore di una variabile con quello
passato da parametro;
• get”[type, name, ind, compositions]”(): ritorna il valore della variabile.
Factors: rappresenta le otto categorie di impatto ambientale (AP, ATP, GWP,HTPE, HTPI, ODP,
PCOP, TTP) e ne consente il salvataggio e la lettura da file xml.
'dichiarazione oggetti
Dim riskPhr As RiskPhrases
riskPhr = New RiskPhrases
Dim compTotRisk As ComponentsRisk
compTotRisk = New ComponentsRisk
Dim compRisk As ComponentRisk
For i = 1 To NumeroComponenti
ReDim components_array(i) As String
components_array(i) = propval(i - 1)
If components_array(i) <> "" Then
compRisk = New ComponentRisk
'aggiungo il nome e la frase di rischio
If (get_risk(components_array(i))) <> "" Then
compRisk.setName(components_array(i))
compRisk.addPhrasesArray(get_risk(components_array(i)))
Else
compRisk.setName(components_array(i))
compRisk.addPhrase("None")
End If
'aggiungo l’oggetto all’array comTotRisk
compTotRisk.Add(compRisk)
End If
If components_array(i) = "" Then
MsgBox("The substance " & Ids(i - 1) & " dosen't exist in the
database.")
End If
Next i
31
'aggiungo gli elementi contenuti in compTotRisk in coda al file
"risk_phrases.xml"
riskPhr.appendToFile("risk_phrases.xml", compTotRisk)
……
Dim factor As Factors
Dim f As Factors
f = New Factors
On Error GoTo FactorsReadError
factor = f.Read("factors.xml")
f = Nothing
GWP_factor = factor.getGwp
PCOP_factor = factor.getPcop
AP_factor = factor.getAp
HTPE_factor = factor.getHtpe
HTPI_factor = factor.getHtpi
TTP_factor = factor.getTtp
ATP_factor = factor.getAtp
……
Classi:
• Form1
• Preferences
• PreferencesStruct
• TabControlMod
• Indici1D
• Indici3D
• Grafico
• Confronto
• FinalResults3D
Form1: la classe Form1 rappresenta il form principale dell’applicazione ed è quella che gestisce
l’intera applicazione, appogiandosi ad istanze di altre classi per alcune funzioni specifiche, come ad
esempio il calcolo degli indicatori di sostenibilità (classi Indici1D, Indici3D). Consente l’utilizzo di
tutte le funzionalità in modalità grafica. Per lo sviluppo grafico vengono utilizzate le classi presenti
nel framework Microsoft .Net 2.0.
Preferences: form per l’immissione degli indirizzi di default per il caricamento automatico dei vari
file utilizzati dall’applicazione.
32
Metodi principali:
33
PreferencesStruct: contiene gli indirizzi predefeniti dei file utlizzati nell’applicazione.
Metodi principali:
TabControlMod: estende la classe TabControl del framework .Net con l’aggiunta di un bottone per
la chiusura dei tab come da figura:
Metodi principali:
34
}else{
b = new SolidBrush(Color.Blue);
e.Graphics.DrawString("X", new Font(new
FontFamily("Arial Black"), (float)7.5), b, new
PointF(r.X + r.Width - 15, r.Y));
}
}
Indici1D: classe che implementa l’algoritmo per il calcolo degli indicatori di sostenibilità 1D e ne
consente il salvataggio su file xml.
Metodi principali:
Indici3D: classe utilizzata per il calcolo degli indicatori di sostenibilità 3D e per il loro salvataggio su
file xml. L’algoritmo utilizzato per il calcolo dei quattro indici MI, EI, PCR e PEI è quello presente nel
prototipo sviluppato precedentemente.
Metodi principali:
…………
riskPhrasesLoaded = true;
}
37
memorizza il valore nella varibile globale peiResult. Il parametro substances
contiene l’elenco degli flussi presenti nell’oggetto materialIntensity, mentre il
parametro selSubstances contiene lo stesso elenco di flussi con il relativo stato
fisico (gassoso, liquido, solido, polvere solida).
• saveResults3D(): salva gli indicatori di sostenibilità 3D sul file all’indirizzo
fileNameResults3D in formato xml.
Grafico: estende la classe Panel del Framework .Net e consente il disegno di un istogramma sull’
interfaccia grafica. Viene utilizzato per rappresentare più valori dello stesso indice di simulazioni
diverse. In questo modo è possibile confrontare in modo grafico soluzioni diverse.
Esempio:
Variabili globali:
Questi attibuti devono venire impostati dall’oggetto che crea un istanza della classe
Grafico.
Metodi principali:
}
}
Confronto: interfaccia grafica usata per il confronto di risultati di processi diversi. Consente la
selezione di uno o più gruppi di indici 1D o 3D, salvati su file xml in una directory a scelta.
Proprietà principali:
Attributi principali:
Metodi principali:
39
Capitolo 4
Interfaccia grafica
Dal menu Tools è possibile avviare il confronto di indicatori di sostenbilità 1D (1D Comparison) e
3D (3D Comparison). Dal menu file è invece possibile accedere alle preferenze (Preferences)
dell’applicazione.
40
4.1 Preferenze
Nella finestra Preferences è possibile impostare i nomi e gli indirizzi di default di tutti i file
utilizzati nell’ applicazione. In questo modo i file possono venire caricati automaticamente quando
se ne ha bisogno, senza l’intervento dell’utente. In caso di errore (es. indirizzo errato) viene
richiesta la selezione di un altro file valido all’utente.
Per prima cosa vengono caricati i due file risultato della simulazione di processo (dafault
“results_new.xml” e “stream_name_and_composition.xml”). In caso di errore nella lettura di uno
dei file viene aperta in automatico una finestra, come da Figura, per la selezione di un altro file
valido. La procedura si ripete nel caso venga selezionato un altro file non valido. Se invece
l’operazione viene annullata (Cancel), sarà poi possibile tentare una nuova lettura del file dal
menu File.
41
Dopo aver caricato con successo i contenuti dei due file e possibile procedere
all’immissione vera e propria dei dati. È necessario scegliere almeno un prodotto principale dalla
lista Available Compunds. Dalla lista Available streams for the process under study è invece
possibile scegliere:
Nel menu a scomparsa Details sono visibili tutti i dati sulle sostanze presenti nei due file letti
precedentemente.
Cliccando sul pulsante Calculate results 1D dal menu Run si procede al calcolo degli indici
di sostenibilità monodimensionali. In caso di errori sui dati selezionati questi vengono segnalati
all’utente che ha poi la possibilità di modificare i dati immessi e ritentare il calcolo.
42
Se il calcolo ha successo viene aperta una nuova sottofinestra (tab) 1D Results, dove sono
visibili i risultati sia in forma numerica (arrotondati alla 6 cifra decimale) che grafica.
Dal menu File è possibile salvare i risultati su file tramite il bottone Save to file.
1) Selezionare il prodotto principale (uno solo), tra quelli presenti nella lista delle sostanze,
con il bottone Select Product;
2) Inserire gli eventuali sottoprodotti di valore, tra quelli presenti nella lista delle sostanze,
con il bottone Add salable co-product. Il prodotto principale non può essere anche un
coprodotto;
3) Inserire le quantità di acqua, ossigeno e azoto formate nella reazione del processo chimico.
43
Figura: Inserimento dati e calcolo indice MI
Dopo aver immesso tutti i dati si procede al calcolo con il bottone Calculate. Nel caso non ci
siano errori è poi possibile procedere all’inserimento dei dati per il calcolo dell’indice EI.
1) Selezionare il prodotto principale (uno solo), tra quelli presenti nella lista delle sostanze,
con il bottone Select Product;
2) Inserire gli eventuali coprodotti vendibili, tra quelli presenti nella lista delle sostanze, con il
bottone Add salable co-product. Il prodotto principale non può essere anche un
coprodotto;
3) Inserire la quantità di energia generata dal processo.
L’ultima fase prevede il calcolo dell’indice PEI. In questo caso è neccessario associare ad
ogni sostanza il proprio stato fisico, tra quelli presenti nella lista Physical states. Dopodichè si
procede al calcolo finale dell’indice.
In tutte le quattro fasi dopo aver premuto il bottone Calculate vengono per prima cosa
effettuati controlli sulla correttezza dei dati immessi. Nel caso sia tutto regolare viene calcolato
l’indice scelto ed il risultato viene esposto in forma numerica con precisione a sei cifre decimali.
Se sono invece presenti errori, il calcolo viene annullato e viene chiesto all’utente di correggere i
45
dati errati o di inserire i dati mancanti. Dopo aver calcolato con successo tutti e quattro gli indici è
possibile salvarli su file dal menu FileSave to file.
Con il bottone Show Comparison si procede al confronto dei risultati in forma numerica.
Tutti i valori dei quattro indici vengono rappresentati in una tabella. Nella colonna Graph è
possibile selezionare quali processi rappresentare sui grafici.
46
Figura: confronto numerico di indicatori 3D
Con il bottone Show Graphs si procede al confronto grafico dei risultati selezionati. Viene
aperta una nuova sottofinestra intitolata 3D Comparison: Graphs nella quale sono presenti quattro
grafici, uno per ogni indice.
47
Il confronto grafico è composto da quattro grafici, uno per ogni indice.
48
4.7 Inserimento dei nomi delle sostanze del processo (1D)
Con questa funzionalità è possibile immettere i nomi per le sostanze chimiche presenti in
uno dei due file risultato delle simulazioni di processo 1D (default “results_new.xml”). All’apertura
viene tentata una lettura automatica del file dall’indirizzo predefinito. In caso di errore si ha la
possibilità di scegliere un altro file. I valori presenti nel file vengono poi esposti in tabella,
ordinandoli per tipo. È poi possibile immettere i nomi nella colonna Stream. Tutti gli altri valori
non sono modificabili. Alla fine si può salvare le modifiche su file tramite il bottone Save o dal
menu FileSave to file.
49
Capitolo 5
Conclusioni
In questa tesi si è affrontato il problema dello sviluppo di un front end per la pittaforma
PSP. È stata sviluppata l’applicazione Interfaccia.exe per la previsione di sosteniblità di processi
industriali mediante il calcolo ed il confronto di indicatori di sostenibilità mondodimensionali (1D)
e tridimensionali (3D). L’interazione con l’utente, sia per l’immissione dati che per l’esposizione dei
risultati viene gestita da interfaccia grafica. L’interfacciamento dati con gli altri moduli della
pittaforma viene invece fatto con l’utilizzo di file XML, utilizzando la libreria LibreriaPerXML.dll.
Sono stati così raggiunti gli obbiettivi posti all’inizio di questo lavoro di tesi:
Per un ulteriore verifica di eventuali errori è necessaria ancora una fase di test in produzione.
50
Bibliografia
1. Letitia Toma, Progettazione assistita dal computer di processi industriali sostenibili, Tesi
di dottorato in ingegneria chimica, Università di Padova, 2008.
2. The Code Project , A TabControl with tab page closing capability.
http://www.codeproject.com/KB/tabs/closabletabcontrolpage.aspx
3. The Code Project, Using XML in C# in the simplest way.
http://www.codeproject.com/KB/cpp/XMLReadWrite.aspx
4. C# Help, Building COM Objects in C#.
http://www.csharphelp.com/archives/archive281.html
5. WindowsClient.net, DataGridView FAQ.
http://www.windowsclient.net/Samples/Go%20To%20Market/DataGridView/DataGrid
View%20FAQ.doc
6. Microsoft Support, Come serializzare un oggetto in XML utilizzando Visual C#.
http://support.microsoft.com/kb/815813/it
51