Università Politecnica delle Marche Scuola di Dottorato di Ricerca in Scienze dell’Ingegneria Curriculum in Ingegneria Informatica, Gestionale e dell’Automazione (IIGA) ---------------------------------------------------------------------------------------- Modellazione e simulazione di sistemi domotici per la gestione dell'energia Ph.D. Dissertation of: Riccardo Donnini Advisor: Prof. Giuseppe Conte Curriculum supervisor: Prof. Sauro Longhi V 1.0 edition Università Politecnica delle Marche Dipartimento di Ingegneria dell’Informazione Via Brecce Bianche — 60131 - Ancona, Italy A Sara, Paola e Franco Ringraziamenti Ringrazio tutti coloro che mi hanno supportato nell’esaltante esperienza che ho vissuto in questo dottorato. Desidero ringraziare il Prof. Conte e il Prof. Scaradozzi per il significativo contributo che mi hanno dato nell’accrescere la mia curiosità nella ricerca e per avermi spronato sempre a vedere oltre gli obiettivi più immediati. Un ringraziamento va inoltre ai miei colleghi che mi hanno accompagnato in questo percorso e con i quali ho imparato a costruirmi un futuro. i ii Indice 1. Introduzione ......................................................................................... 1 2. Il problema energetico in ambito residenziale .................................. 3 2.1 Le risorse ......................................................................................... 3 2.2 Utilizzatori energetici ...................................................................... 3 2.3 Produttori e Accumulatori energetici .............................................. 4 2.4 Simulazione come strumento di analisi .......................................... 4 2.4.1 Descrizione dello scenario ....................................................... 5 3. Metodologie di modellazione .............................................................. 7 3.1 I sistemi multi agente ...................................................................... 8 3.2 Modellazione UML ....................................................................... 10 3.2.1 Diagramma delle classi .......................................................... 12 3.2.2 Diagramma di stato ................................................................ 15 3.3 Elementi a stati finiti e Statechart ................................................. 17 3.4 BEHAVIOR: utilizzatori e produttori energetici .......................... 19 3.4.1 Elettrodomestico .................................................................... 19 3.4.2 Provider energetici ................................................................. 20 4. Costruzione struttura del sistema .................................................... 23 4.1 Reti di Petri ................................................................................... 23 4.2 Componenti elementari ................................................................. 26 4.3 Fusione tra Petri Net ..................................................................... 30 4.3.1 Inserimento di vincoli locali .................................................. 31 4.3.2 Algoritmo di Fusione ............................................................. 33 4.4 Agenti generici .............................................................................. 39 5. Ambiente di simulazione proposto ................................................... 41 5.1 Progettazione dell‟ambiente di simulazione. ................................ 41 5.2 Accoppiamento tra elettrodomestici virtuali e smart plug ............ 43 5.3 Strategie di controllo ..................................................................... 48 5.3.1 Gestione potenza istantanea ................................................... 48 i 5.3.2 5.3.3 Stima e gestione delle taglie energetiche ................................56 Massimizzazione autoconsumo ..............................................65 6. Software di Simulazione/Emulazione ...............................................69 6.1 Gestione potenza istantanea e taglia energetica .............................70 6.1.1 Costruzione dell‟ambiente di simulazione in LabVIEW ........71 6.1.2 Gestione potenza istantanea ...................................................79 6.1.3 Stima e gestione delle taglie energetiche ................................81 6.1.4 Scheduling comportamento abitanti .......................................83 6.1.5 Interfaccia utente ....................................................................87 6.1.6 Avvio di una simulazione/emulazione ...................................90 6.2 Massimizzazione autoconsumo .....................................................93 6.2.1 Strumento di dimensionamento ..............................................95 6.3 Integrazione/Comunicazione tra elettrodomestici reali e simulati.97 7. Validazione ..........................................................................................99 7.1 Elettrodomestico simulato .............................................................99 7.2 Gestione potenza istantanea .........................................................102 7.2.1 DW e WM senza sistema di controllo ..................................102 7.2.2 DW e WM con sistema di controllo .....................................103 7.3 Gestione stima/taglia energetica ..................................................105 7.4 Massimizzazione autoconsumo ...................................................113 8. Collaborazioni ...................................................................................115 9. Conclusioni ........................................................................................117 Riferimenti ................................................................................................119 A. Appendice ..........................................................................................121 A.1 Strumenti Software ..........................................................................121 Il software Umbrello UML Modeller .................................................121 LabVIEW............................................................................................122 Endevo UML Modeller ......................................................................125 A.2. Petri Net del sistema LeafHouse.....................................................128 ii Lista delle Figure Figura 2.1 - Assemblaggio modelli elementari ............................................. 5 Figura 3.1 - Classe UML ............................................................................. 13 Figura 3.2 - Classi: generalizzazione.......................................................... 14 Figura 3.3 - Classi: associazione ................................................................ 14 Figura 3.4 - Area di lavoro di Endevo UML Modeller ............................... 15 Figura 3.5 - Stati UML ................................................................................ 15 Figura 3.6 - State diagram UML ................................................................. 16 Figura 3.7 - Statechart in LabVIEW............................................................ 17 Figura 3.8 - BEHAVIOR di un Elettrodomestico ........................................ 20 Figura 3.9 - BEHAVIOR di un provider energetico .................................... 21 Figura 4.1 - Rete di Petri della componente PLUG .................................... 27 Figura 4.2 - Componenti BEHAVIOR e PLUG della washing machine ..... 29 Figura 4.3 - PN del Generic appliance ....................................................... 29 Figura 4.4 - PN totale dell‟impianto domotico ........................................... 30 Figura 4.5 - PM Editor tool......................................................................... 32 Figura 4.6 - Sequenza delle fasi nel modello PN di un elettrodomestico.... 33 Figura 4.7 - Vincolo imposto ....................................................................... 33 Figura 4.8 - PN 1 ......................................................................................... 34 Figura 4.9 - PN 2 ......................................................................................... 34 Figura 4.10 - PN 3 ....................................................................................... 35 Figura 4.11 - PN1, PN2 e PN3 unite ........................................................... 38 Figura 4.12 - PN di un Provider energetico................................................ 39 Figura 4.13 - Agente generico ..................................................................... 40 Figura 5.1 - Implementazione del simulatore/emulatore HAS-Sim............. 43 Figura 5.2 - Livelli della struttura dell'HAS-Sim ........................................ 45 Figura 5.3 - Struttura hardware HAS.......................................................... 47 Figura 5.4 - PN componente PLUG controllata ......................................... 49 Figura 5.5 - Statechart del controllore in LabVIEW................................... 51 Figura 5.6 - Algoritmo di intervento del contatore ENEL .......................... 52 Figura 5.7 - Interfaccia grafica relativa al controllore .............................. 53 Figura 5.8 - Creazione modello PN di un appartamento ............................ 66 Figura 5.9 - PN della LeafHouse ................................................................ 67 iii Figura 5.10 - Inserimento vincoli Autoconsumo ..........................................68 Figura 5.11 - Sistema di controllo basato su PN .........................................68 Figura 6.1 - LabVIEW project HAS-Sim 2.8 ................................................71 Figura 6.2 - Dettaglio LabVIEW project HAS-Sim 2.8 ................................72 Figura 6.3 - Front Panel WM .......................................................................75 Figura 6.4 - Struttura BEHAVIOR/PLUG HAS-Sim 2.8 ..............................76 Figura 6.5 - Generic Appliance ....................................................................76 Figura 6.6 - PN dell'intero sistema domotico ..............................................77 Figura 6.7 - POPUP errore marcatura negativa PN...................................78 Figura 6.8 - Apertura PN con PIPE .............................................................79 Figura 6.9 - Front Panel controllore.vi riportata dalla user_interface.vi ...80 Figura 6.10 - Percentuale di taglia consumata nel mese .............................82 Figura 6.11 - Livelli dei serbatoi in percentuale .........................................82 Figura 6.12 - Semaforo di allerta superamento taglia.................................83 Figura 6.13 - AAMM_HOMEx_FAMy_WK1.xls .........................................86 Figura 6.14 - AAMM_HOMEx_FAMy_WK1.txt ..........................................86 Figura 6.15 - Interfaccia utente (user_interface.vi) .....................................88 Figura 6.16 - Interfaccia utente HAS-Sim LeafHouse .................................95 Figura 6.17 - Simulazione con parte di generazione parametrica ..............96 Figura 6.18 - Riprogettazione ricorsiva del sistema domotico ....................96 Figura 7.1 - Interfaccia WM ........................................................................99 Figura 7.2 - Statechart WM ........................................................................100 Figura 7.3 - Firma elettronica WM ............................................................101 Figura 7.4 - WM e DW senza gestione potenza istantanea ........................102 Figura 7.5 - WM e DW con gestione potenza istantanea ...........................104 Figura 7.6 - Energia consumata [Wh] .......................................................107 Figura 7.7 - Serbatoio nbase [Wh] ...............................................................108 Figura 7.8 - Serbatoio n1 [Wh] ..................................................................108 Figura 7.9 - Serbatoio n2 [Wh] ..................................................................109 Figura 7.10 - Semaforo avvertimento esaurimento taglia .........................110 Figura 7.11 - Consumo di potenza istantanea [W] ....................................110 Figura 7.12 - Firma elettronica WM e OVEN............................................111 Figura 7.13 - Produzione solare - Energia venduta - Carica batteria ......114 Figura A.1 - Schermata del software Umbrello UML Modeller ................121 iv Figura A.2 - Esempio di Icon and Connector Pane .................................. 124 Figura A.3 - Area di lavoro di Endevo UML Modeller ............................. 126 Figura A.4 - Inserimento classi UML in un progetto LabVIEW ............... 127 Figura A.5 - Petri Net sistema LeafHouse ................................................ 128 v Lista delle Tabelle Tabella 7-1 ..................................................................................................101 Tabella 7-2 ..................................................................................................101 Tabella 7-3 ..................................................................................................103 Tabella 7-4 ..................................................................................................105 vi 1. Introduzione La ricerca è rivolta allo sviluppo di sistemi per la gestione delle risorse in ambito residenziale, tenendo presente la natura delle fonti di energia, gli obiettivi, i requisiti dell‟utente e il livello tecnologico. Il seguente lavoro si occupa della modellazione di sistemi domotici basata sulla teoria dei Multi Agent Systems (MAS) inserendosi nella lavoro sviluppato dal gruppo di ricerca del LabMACS in [1–5]. Il prodotto del lavoro è la messa a punto di un ambiente di simulazione/emulazione complesso in grado di contenere al suo interno numerosi componenti di un sistema domotico (consumatori/produttori di risorse). Il lavoro svolto ha portato alla collaborazione con diversi Enti di Ricerca ed Aziende del settore (Enel, Bticino, Indesit Company, Gruppo Loccioni). Per un corretto processo di modellazione di un sistema domotico è necessario approfondire gli aspetti che ne caratterizzano la struttura e gli elementi (Agenti) che la popolano. Per quanto riguarda la struttura del modello, ci si è rifatti all‟approccio MAS che verrà usato come impostazione preliminare. Questo approccio si presta molto bene alla descrizione di ambienti domotici perché possiamo pensare agli elementi che li costituiscono come agenti, ognuno dei quali ha i suoi obbiettivi e le sue necessità. Per quello che riguarda gli agenti che popolano il modello, essi devono in primo luogo rappresentare i singoli elettrodomestici. Per raggiungere questo obbiettivo ci si è basati su di un approccio UML, che ha consentito di andare a concentrare all‟interno delle descrizioni informazioni eterogenee, quali quelle di Agenti che possono essere anche molto differenti gli uni dagli altri. Poiché durante il processo di sviluppo dell‟ambiente è necessario confrontarsi con un‟ampia varietà di strumenti, tecnologie e livelli tecnici dei collaboratori, l‟UML ci consente di formalizzare rappresentazioni che rimangono valide e significative in contesti diversi. Gli agenti che in questo lavoro vengono modellati sono oggetti ibridi, caratterizzati da una dinamica a stati finiti, che rappresenta il loro comportamento, e una componente descritta da una Petri Net (PN) che descrive la loro interazione con la fonte energetica. Successivamente, con un processo di costruzione che coinvolge la componente PN, è possibile definire una struttura più complessa in grado di definire il modello di utilizzo della risorsa da parte degli agenti che porterà alla definizione dell‟infrastruttura del sistema domotico. Nel dettaglio il lavoro si articola partendo da un approfondimento della teoria dei MAS applicata agli Home Automation Sytems per poi spostarsi alla teoria dell‟UML, necessaria per formalizzare il modello comportamentale degli agenti. Si passerà poi alla descrizione della parte che caratterizza l‟interazione che ogni agente ha con la risorsa utilizzando le PN (prelevando energia dalla rete nel caso degli elettrodomestici). Per rendere le simulazioni più aderenti all‟ambiente reale simulato è stato inserito un completo scheduling di avviamento di elettrodomestici con lo scopo di modellare il 1 comportamento degli abitanti, utilizzatori dei sistemi domotici simulati. Successivamente verrà descritto il processo di implementazione dell‟ambiente di simulazione attraverso l‟integrazione di diversi strumenti software (Matlab/LabVIEW). Il monitoraggio degli andamenti energetici e l‟implementazione di strategie di controllo atte a rispettare i vincoli del sistema sono il passaggio successivo. I vincoli a cui si fa riferimento sono la quantità limitata di risorse, quali la massima potenza istantanea (W) e l‟energia (Wh della taglia mensile) disponibili o ulteriori specifiche che si vuole che il sistema rispetti. Per verificare la validità dell‟ambiente verranno portati come esempio di sistemi di controllo il mantenimento del consumo istantaneo sotto un certa soglia e la stima/mantenimento della taglia energetica minima necessaria agli abitanti sulla base dei loro comportamenti. Il processo di modellazione si conclude con l‟inserimento di provider energetici di diversa natura: rete elettrica, fotovoltaico e accumulo su batteria. Anche questi Agenti sono caratterizzata da una componente a stati che descrive il loro comportamento (e.g. storico dell‟irraggiamento solare nel caso di pannelli) e una parte PN che modella la loro interazione con la risorsa energetica (immettendo energia nella rete). Viene poi mostrato come il ruolo della componente PN possa passare da semplice sistema di monitoraggio a sistema di controllo attivo, attraverso l‟implementazione di una politica di autoconsumo delle risorse generate (attento design della PN stessa con inibizioni e posti monitor che vincolino l‟evoluzione della rete da uno stato all‟altro). L‟ambiente costruito è stato in seguito arricchito permettendo l‟integrazione al suo interno anche di agenti domotici reali oltre che simulati, per la necessità di trasformarlo in un ambiente di emulazione. Il software di simulazione/emulazione verrà descritto all‟interno del contesto delle collaborazioni e consulenze in cui è stato realizzato. Il lavoro si conclude con la descrizione della sua ultima configurazione, nella quale è stato possibile utilizzare il sistema di simulazione/emulazione sviluppato anche come strumento di dimensionamento delle risorse permettendo di scegliere diverse dimensioni del sistema di accumulo elettrico e del sistema fotovoltaico per rispondere alla richiesta energetica del sistema. 2 2. Il problema energetico in ambito residenziale 2.1 Le risorse In ambito domestico residenziale il problema più diffuso di carattere energetico è quello relativo alla limitatezza delle fonti energetiche messe a disposizione dei vari provider locali e nazionali. Le risorse energetiche si possono dividere in due categorie principali: Risorse degradabili Risorse non degradabili Le risorse degradabili sono quelle che non vengono mai a mancare, ma che in caso di eccesso di richiesta da parte degli utenti della casa, possono variare le loro caratteristiche degradando e allontanandosi dalla loro condizione ideale. Risorse di questo tipo possono essere la pressione dell‟acqua, la temperatura dell‟acqua, la pressione del gas. Infatti tutte le risorse elencate, se soggette ad una richiesta eccessiva da parte dell‟utente, degradano (e.g. se l‟acqua calda idealmente viene fornita dalla caldaia a 60 °C, sottoposta ed un‟eccessiva richiesta dell‟utente scende di temperatura, causa l‟incapacità della caldaia di riscaldare alla temperatura richiesta un flusso d‟acqua troppo elevato). Le risorse non degradabili sono quelle invece che mantengono intatte le loro qualità anche all‟aumentare della loro richiesta. Queste risorse però sono soggette ad una diversa limitazione, cioè se la richiesta da parte dell‟utente è troppo elevata il provider può interromperne l‟erogazione (e.g. fornitura elettrica). E‟ proprio questo secondo tipo di risorsa che verrà presa in esame in questa tesi ed in particolare proprio la risorsa elettrica. 2.2 Utilizzatori energetici L‟ambiente domotico preso in esame sarà quello domestico residenziale. In questo contesto i principali utilizzatori della risorsa energetica sono gli elettrodomestici (lavatrice, forno, lavastoviglie, frigorifero), l‟illuminazione e la diretta utenza degli abitanti (TV, phon, ecc...). 3 Non verrà incluso tra gli utilizzatori un sistema di riscaldamento/condizionamento elettrico, ma come verrà mostrato in questo e nei successivi capitoli, l‟estensione dell‟ambiente di simulazione con l‟inserimento di altri utilizzatori sarà un procedura del tutto identica a quella che verrà mostrata per modellare ed inserire uno degli elettrodomestici che verranno tratti. Ogni utilizzatore energetico è inevitabilmente connesso all‟utente che lo gestisce e lo utilizza. Per questo motivo verrà data una particolare importanza all‟utente, abitante dell‟ambiente domestico che verrà analizzato volta per volta. E‟ per questo motivo infatti che verrà descritto nei successivi capitoli anche uno strumento in grado di emulare il comportamento di un utente o una famiglia (gruppo di utenti) che abiti il contesto domotico. 2.3 Produttori e Accumulatori energetici Dall‟introduzione dei primi sistemi fotovoltaici fino ai più recenti contratti con i provider energetici per la vendita di energia elettrica prodotta anche in abito residenziale sono diventati sempre meno rari contesi in cui all‟interno delle abitazioni convivono tra loro non solo elettrodomestici o apparati che consumano energia, ma anche veri e proprio generatori energetici in grado anche di soddisfare completamente le necessità energetiche della casa. Per poter gestire anche produzioni energetiche fotovoltaiche che eccedono le necessità delle abitazioni, vengono commercializzati dei sistemi di accumulo che permettono di immagazzinare l‟energia prodotta in eccesso per poterla utilizzare in un secondo momento, quando la produzione fotovoltaica non è più sufficiente (e.g. la notte). Entrambi questi sistemi energetici verranno trattati assieme ai più diffusi utilizzatori di energia e verranno integrati con la stessa filosofia all‟interno del sistema di simulazione che verrà proposto. Verrà adesso approfondito il concetto di simulazione e introdotto il suo utilizzo come strumento di analisi. 2.4 Simulazione come strumento di analisi Per poter riunire in un unico contesto tutti gli elementi fino ad adesso descritti e poter osservare le loro interazioni (anche su archi temporali lunghi – mesi) in brevi periodi si è scelto di creare un ambiente di simulazione che potesse essere modellato allo scopo prefisso. 4 E‟ stato scelta la simulazione come strumento di analisi poiché permette di prevedere e mettere in evidenza i comportamenti, anche molto complessi, di un gruppo di sotto sistemi (singolarmente facilmente modellabili). Essendo il panorama commerciale degli utilizzatori/generatori/accumulatori di energia molto vasto e in continua evoluzione, si è voluto creare un ambiente di simulazione in grado di accogliere (dopo un processo regolamentato di trasposizione da reale a virtuale) un vasto insieme di componenti elementari (o agenti come vedremo nel capitolo 3), riuscendo a farli interagire tra loro, simulando gli scenari in cui si possano venire a trovare e potendo così descrivere l‟evoluzione delle loro interazioni e prevedendo lo stato a cui il sistema potrebbe giungere a seconda delle condizioni iniziali e ai vincoli imposti. Sarà infatti possibile, come vedremo nel capitolo 6, simulare intere mensilità di consumi e generazioni energetiche, in pochi minuti, trasformando la simulazione in uno strumento di analisi, in grado di fornire risposte su ciò che accadrebbe nello scenario domestico simulato nel caso in cui le condizioni iniziali, l‟insieme di agenti e i vincoli imposti al sistema, rimangano gli stessi rispetto a quelli della simulazione. 2.4.1 Descrizione dello scenario Disponendo di una banca dati di modelli di elettrodomestici o sistemi domotici formalmente descritti allo stesso modo è possibile descrivere in pochi passi e in modo generico ambienti domotici anche complessi, il cui comportamento sarà aderente a quelli reali. Figura 2.1 - Assemblaggio modelli elementari 5 Lo strumento software, che nei prossimi capitoli verrà descritto, permetterà l‟integrazione in un unico ambiente di elettrodomestici reali e simulati, facilitando le fasi di progettazione di una rete domestica. Sarà mostrato come uno strumento così configurato possa essere d‟ausilio sia all‟integrazione di nuovi elementi all‟interno di una rete domestica già esistente , sia al monitoraggio, valutazione ed estensione della rete stessa. 6 3. Metodologie di modellazione Le varie componenti di un sistema complesso come quello dell‟ambiente domestico come l'elettrodomestico, l'audio / video sottosistemi per l'intrattenimento domestico e per la sicurezza, il sottosistema di illuminazione - richiedono una specifica quantità variabile di energia durante il loro normale ciclo di lavoro e, in presenza di vincoli che limitano la disposizione energia, ciascun apparecchio ha bisogno di cooperare con gli altri al fine di massimizzare l'efficienza. Questa è una struttura che può essere approssimata con un sistema di controllo parzialmente distribuito, i cui componenti sono autonomi, in possesso di un certo grado di intelligenza, ma che condividono obiettivi comuni. Ci riferiamo a tutto il sistema con la sigla HAS (Home Automation System). La casa viene dotata di intelligenza non perché vi sono installati sistemi intelligenti, ma perché il sistema intelligente di cui è dotata è capace di controllare e gestire in modo efficace il funzionamento degli impianti presenti. Di pari passo con le tecnologie si sono sviluppati sistemi domestici sempre più evoluti, al cui interno i dispositivi sono in grado di cooperare tra loro, scambiarsi informazioni grazie anche alle nuove tecnologie di comunicazione. In questo modo si sono creati degli ambienti domotici sempre più evoluti e complessi. Per riuscire a seguire questa evoluzione ed applicare delle strategie di controllo e gestione della casa in vari scenari e ambienti, è nata la necessità di definire dei modelli degli elettrodomestici che li popolano in modo tale da poter essere inseriti in dei simulatori di ambienti domotici in grado di affrontare tale complessità. Quando la teoria dei sistemi risulta difficilmente applicabile, o per la crescente complessità delle strutture o perché servono dei dati di valutazione, tipo i benefici introdotti e i sacrifici economici da affrontare: una soluzione può essere fornita dalla simulazione al computer. L‟approccio seguito per la realizzazione del simulatore HAS-Sim è stata quella di descrivere i fenomeni complessi, presenti in natura, piuttosto che con modelli classici ad equazioni differenziali, attraverso la trasposizione in moduli software delle regole applicate ai costituenti del sistema stesso. Si sviluppa secondo queste regole il simulatore HAS-Sim, il quale si basa su una filosofia di programmazione multitasking. Il simulatore è costituito da più nuclei software indipendenti che lavorano in maniera concorrente seguendo una logica di tipo produttore/consumatore. Si può affermare che nel caso particolare del simulatore HAS-Sim sia composto da nuclei indipendenti, come elettrodomestici o generatori energetici, che condividono/producono risorse comuni. In questo capitolo verranno descritte le teorie di modellazione che permetteranno la creazione dei modelli degli elementi da inserire nell‟ambiente di simulazione. 7 3.1 I sistemi multi agente Verrà adesso proposto come sia possibile utilizzare la teoria dei sistemi multi agente (MAS - Multi Agent System) nell‟analisi e studio di un HAS (Home Automation System), con riferimento al primo approccio svolto [1]. Nelle case moderne, gli apparecchi e dispositivi che possono essere inclusi in un sistema di automazione domestica sono dotati di sistemi di controllo individuale che, in un modo più o meno sofisticati, gestiscono il proprio comportamento, possibilmente utilizzando informazioni e dati che essi acquisiscono esternamente in qualche modo o che scambiano tra di loro. Oggi, i sistemi di automazione sono concepiti per regolamentare l'uso contemporaneo di risorse limitate, come l'energia elettrica o acqua calda, e per agevolare la gestione ottimale delle risorse o in confort dell‟utente, a secondo delle configurazioni. Da questo punto di vista, un sistema domotico può approssimativamente essere considerato come un sistema di controllo parzialmente distribuito, le cui componenti sostanzialmente autonome, in possesso di un certo grado di intelligenza, in grado di condividere risorse e alcuni obiettivi comuni e comunicare tra di loro. Risulta però ancora difficile determinare le caratteristiche chiave di un sistema di automazione e definire i criteri generali per la valutazione delle sue prestazioni, con l‟obbiettivo di migliorarlo. L'idea di base è un formalismo che deriva dalla teoria Multi Agent System che può, in linea di principio, rispondere a queste esigenze, fornendo un quadro concettuale potente e una serie di strumenti metodologici appropriati per far fronte alla complessità. In un MAS, alcuni agenti autonomi interagiscono per svolgere compiti specifici ed eventualmente si trovano a competere per le risorse in un ambiente che possono essere modificate dalla loro azione. In generale, una strategia di coordinamento e collaborazione è necessaria per risolvere i conflitti e per assicurare delle performance complessive soddisfacenti. Queste caratteristiche rendono il paradigma MAS particolarmente adatto per la gestione dei sistemi la cui complessità è dovuta principalmente dall'interazione tra i vari componenti. Da questo punto di vista, la descrizione generale di un sistema domotico si sposa bene con il paradigma MAS. Gli elettrodomestici possono essere visti come agenti autonomi, le cui singole mansioni consistono nel portare a termine i loro cicli di funzionamento, la condivisione delle risorse, come l'elettricità, acqua e gas, che sono (tutti o in parte) limitati e forse non sufficienti a soddisfare tutti gli operatori al momento della richiesta. Le risorse devono essere ripartite in base alle priorità stabilite, tenendo conto che i ritardi nello svolgimento di compiti specifici possano incidere sul grado di soddisfazione degli utenti e sul risparmio delle risorse. In un HAS, come specificato nel capitolo 2, si considera la presenza di diversi componenti (gli elettrodomestici) che agiscono come agenti autonomi, di diverse risorse disponibili (energia elettrica, acqua fredda e gas) e di un numero di obiettivi comuni (risparmio energetico, la soddisfazione dell'utente, la sicurezza, e così via), ottenendo un quadro globale che si adatta bene con la trattazione dei Multi Agent Systems (MAS). La teoria dei 8 MAS è ampiamente usata in vari settori dell'informatica, dell'automazione e della robotica e, sulla base della nostra precedente osservazione, sarà utilizzato qui per formalizzare la nozione di HAS. Prima di entrare nei dettagli di una definizione formale, tuttavia, è utile sottolineare alcuni punti. La struttura di un HAS, merita di essere studiata, almeno, su due livelli: A livello globale, che riguarda il comportamento generale e le prestazioni del sistema; A livello locale, che riguarda il modo in cui i singoli componenti e dispositivi sono integrati nel sistema. In altre parole, si mira ad ottenere una collezione di componenti, che possono essere genericamente chiamato agenti, e un'architettura globale, che definisce l'ambiente in cui interagiscono gli agenti e le modalità di interazione. Da questo punto di vista, uno HAS si qualifica come un Multi Agent System. La teoria dei sistemi multi agente è stata sviluppata per modellare e studiare diverse situazioni caratterizzate dalla presenza di agenti autonomi che interagiscono e possono competere in diverso modo e in molte aree dell‟informatica, robotica e automazione. In questo approccio, gli agenti rappresentato entità virtuali o fisiche che popolano un ambiente reale domotico. Secondo la teoria multi agente, gli agenti sono caratterizzati in base alle loro capacità [4], [6]: Definizione 1: un agente è un‟entità virtuale o fisica che è in grado di: 1. 2. 3. 4. 5. 6. 7. 8. Svolgere specifiche azioni in un dato ambiente; Percepire gli elementi dell‟ambiente; Costruire un modello parziale dell‟ambiente; Usare risorse personali e ambientali; Dirigere le proprie azioni verso specifici obiettivi; Comunicare direttamente con altri agenti all‟interno dell‟ambiente; Offrire servizi agli altri agenti; Governare le proprie azioni in accordo con le proprie possibilità, limiti, obiettivi, conoscenza dell‟ambiente e risorse disponibili. Definizione 2 : un oggetto domotico è un agente generico, secondo la definizione 1, che possiede almeno le capacità generali 1, 4, 5 e 8, mentre per quanto riguarda 9 la capacità 6, è in grado di comunicare con altri agenti circa le risorse del sistema a cui appartengono. Definizione 3: un agente domotico è un oggetto domotico che in aggiunta possiede la capacità 3 . Un agente domotico cognitivo possiede anche la capacità 3. Definizione 4: un HAS (Home Automation system) consiste di: 1. 2. 3. 4. 5. Un set GR di risorse globali; Un set DO di oggetti domotici; Un set DA di agenti domotici, sotto gruppo di DO; Una rete di informazioni che connette gli oggetti e agenti domotici; Un set R di ruoli, che governano il singolo comportamento, le operazioni concorrenti degli oggetti domotici e riguarda: a. L‟uso e trasformazione delle risorse esterne; b. Comunicazione; c. Percezione e conoscenza; 6. Un set L di operazioni, chiamate leggi, che descrive l‟evoluzione temporale dell‟intero sistema in accordo con il comportamento individuale degli oggetti e degli agenti. Dalle definizioni precedenti è possibile descrivere i modelli dei dispositivi come un set di DO e DA e come integrarli all‟interno di una struttura HAS. La simulazione in un tale ambiente permette inoltre di investigare sugli effetti delle politiche di allocazione delle risorse sull‟intero sistema e il comportamento dell‟HAS. L‟evoluzione temporale e il comportamento dell‟ HAS, formalmente descritto dalla Definizione 1, è completamente determinato dalle leggi L e dipende in particolare dalle regole che costituiscono l‟ insieme R. È possibile quindi studiare l‟evoluzione globale e il comportamento del sistema, valutando gli indici di performance e il grado di soddisfazione dell‟utente. 3.2 Modellazione UML Quello che si vuole fare con la progettazione ad alto livello è di svincolarsi completamente (o quasi) dalle caratteristiche del linguaggio di programmazione, cercando un maggiore distaccamento tra la fase di progettazione e la fase di realizzazione a basso livello di 10 programmazione. Utilizzando invece un linguaggio ad un più alto livello di progettazione si vuole ottenere un maggiore livello di astrazione ed efficienza, versatile ed aperto verso altri utenti, ottenendo in questo modo i seguenti benefici: il linguaggio ad alto livello fornisce dei tempi di sviluppo molto contenuti; la distanza concettuale fra l‟analisi e l‟implementazione si riduce, con conseguente riduzione del rischio di un‟ errata traduzione delle specifiche in codice; gli errori logici si individuano più facilmente, essendo espressi nella logica del dominio del problema. Si è così deciso di portare la fase di progettazione, il design del simulatore ad un livello ancora più alto, in grado di usufruire in questo modo dei benefici che ne conseguono. È stato così scelto come strumento di analisi e progettazione del software il linguaggio UML. Nel mondo delle applicazioni Object Oriented in continua evoluzione, diviene sempre più difficile costruire e gestire applicazioni di alta qualità in tempi brevi. Come risultato di tale difficoltà e dall‟esigenza di avere un linguaggio universale per modellare dei sistemi sempre più complessi e poter essere utilizzato da ogni industria produttrice di software, fu inventato il linguaggio UML, la cui sigla sta per Unified Modeling Language ([7], [8]). L'UML è, dunque, un metodo per descrivere l'architettura di un sistema in dettaglio. La forza dell‟UML consiste nel fatto che il processo di disegno del sistema può essere eseguito in modo tale che i clienti, gli analisti, i programmatori e qualunque altro utente sia coinvolto nel sistema di sviluppo possa capire ed esaminare in modo efficiente il sistema e prendere parte alla sua costruzione in modo attivo. Elenchiamo, qui di seguito, alcuni dei benefici derivanti dall'utilizzo del linguaggio UML: 1. Il linguaggio UML ci permette di disegnare professionalmente e documentare il sistema ancor prima che ne sia scritto il relativo codice, da parte degli sviluppatori. Si sarà così in grado di conoscere in anticipo il risultato finale del progetto su cui si sta lavorando. 2. Poiché, come detto, la fase di disegno del sistema precede la fase di scrittura del codice, ne consegue che la scrittura del codice stessa è resa più agevole ed efficiente oltre al fatto che in tal modo è più facile scrivere del codice riutilizzabile in futuro. I costi di sviluppo, dunque, si abbassano notevolmente con l'utilizzo del linguaggio UML. 3. È più facile prevedere e anticipare eventuali bachi nel sistema. Il software che si scrive, si comporterà esattamente come ci si aspetta. 4. L'utilizzo dei diagrammi UML permette di avere una chiara idea, a chiunque sia coinvolto nello sviluppo, di tutto l'insieme che costituisce il sistema. In questo 11 modo si potranno sfruttare al meglio anche le risorse hardware in termini di memoria ed efficienza, senza sprechi inutili o, al contrario, rischi di sottostima dei requisiti di sistema. 5. Grazie alla documentazione del linguaggio UML diviene ancora più facile eseguire eventuali modifiche future al codice. Questo, ancora, a tutto beneficio dei costi di mantenimento del sistema. La comunicazione e l'interazione tra tutte le risorse umane che prendono parte allo sviluppo del sistema è molto più efficiente e diretta. Parlare la stessa "lingua" aiuta ad evitare rischi di incomprensioni e quindi sprechi di tempo. Il linguaggio UML contiene svariati elementi grafici che sono messi insieme durante la creazione dei diagrammi. Poiché l'UML è un linguaggio, esso utilizza delle regole per combinare gli elementi del linguaggio nella creazione dei diagrammi. L'obiettivo dei diagrammi è così quello di costruire molteplici viste di un sistema, tutte correlate tra di loro. Il software che è stato utilizzato per le rappresentazioni di diagrammi UML in fase di progettazione del modello comportamentale degli agenti è Umbrello UML Modeller [9], tale software è il suo funzionamento verranno brevemente approfonditi in Appendice A.1 Strumenti Software - unendosi ad altri software e tool utilizzati di cui verrà fatta una panoramica. Si passano ora in rassegna i diagrammi UML che saranno utilizzati nel seguito per la modellazione degli oggetti relativi all‟ambiente di simulazione in esame. Nel nostro caso d‟esame l‟attenzione sarà focalizzata esclusivamente sui diagrammi dei casi d‟uso, delle classi e di stato, sufficienti per descrivere l‟ambiente e modellare l‟interazione tra gli oggetti che ne fanno parte. Riportiamo di seguito una breve descrizione dei diagrammi in esame: 3.2.1 Diagramma delle classi Come prima cosa si fornisce la definizione di oggetto: indica un dato che può essere descritto da un insieme di attributi, che può essere manipolato da appropriate operazioni (metodi) e che è in relazione con altri oggetti. Ogni istanza di un oggetto deve essere identificato in modo univoco, inoltre istanze dello stesso tipo possono essere raggruppate in classi. Una classe definisce gli attributi e i metodi di un insieme di oggetti. Tutti gli oggetti di questa classe (istanze di questa classe) condividono lo stesso comportamento, e hanno lo stesso insieme di attributi (ogni oggetto ha il suo insieme). 12 In UML le classi sono rappresentate da rettangoli con il nome della classe, e possono anche mostrare gli attributi e le operazioni della classe in due altri «scompartimenti» all'interno del rettangolo. Figura 3.1 - Classe UML In UML gli attributi sono mostrati con almeno il loro nome, e possono mostrare anche il loro tipo, il valore iniziale e altre proprietà. Gli attributi possono anche essere mostrati con la loro visibilità: + sta per attributi pubblici # sta per attributi protetti - sta per attributi privati Anche le operazioni (metodi) sono mostrate con almeno il loro nome, e possono mostrare anche i loro parametri e i tipi restituiti. Le operazioni possono, come gli attributi, mostrare la loro visibilità: + sta per operazioni pubbliche # sta per operazioni protette - sta per operazioni private I diagrammi delle classi mostrano le diverse classi che costituiscono un sistema e come si relazionano una all'altra. I diagrammi di classe sono detti essere diagrammi «statici» perché mostrano le classi, insieme ai loro metodi e attributi oltre alle relazioni statiche tra loro. Le relazioni tra le classi, si possono suddividere in: Generalizzazione L'ereditarietà è uno dei concetti fondamentali della programmazione a oggetti, in cui una classe «acquisisce» tutti gli attributi e le operazioni della classe da cui eredita, e può sostituire o modificare alcuni di loro, oltre ad aggiungere altri attributi e operazioni proprie. In UML, un'associazione di Generalizzazione tra due classi le mette in una gerarchia rappresentante il concetto di ereditarietà di una classe derivata da una classe di base. In UML le generalizzazioni sono rappresentate da una linea che connette le due classi, con una freccia sul lato della classe di base. 13 Figura 3.2 - Classi: generalizzazione Associazioni Un'associazione rappresenta una relazione tra classi, e dà la semantica e la struttura comuni a molti tipi di «connessioni» tra oggetti. Le associazioni sono i meccanismi che permettono agli oggetti di comunicare tra loro. Descrivono la connessione tra diverse classi (la connessione tra gli oggetti reali è chiamata una connessione tra oggetti, o collegamento). Le associazioni possono avere un ruolo che specifica lo scopo dell'associazione e possono essere uni - o bidirezionale (indica se i due oggetti che partecipano alla relazione possono mandare messaggi all'altro, o se solo uno di loro sa dell'altro). Ogni parte dell'associazione ha un valore di molteplicità, che detta quanti oggetti su questo lato dell'associazione possono relazionarsi a un oggetto sull'altro lato. In UML le associazioni sono rappresentate come linee che connettono le classi che partecipano alla relazione, e possono anche mostrare il ruolo e la molteplicità di ciascuno dei partecipanti. La molteplicità è mostrata come un intervallo [minimo..massimo] di valori non negativi, con un asterisco (*) sul lato massimo per rappresentare l'infinito. Figura 3.3 - Classi: associazione Una rappresentazione direttamente ricollegabile alle classe e ai loro diagrammi è resa disponibile all‟interno dell‟ambiente di programmazione utilizzato per l‟implementazione dell‟ambiente di simulazione dal tool Endevo UML Modeller è uno strumento di 14 modellazione di sistemi, risulta facile da usare e strettamente integrato con il software LabVIEW. Il tool supporta i seguenti diagrammi UML: casi d‟uso, delle sequenza, delle classi, dei package e di stato. Nel nostro caso specifico è di interesse il solo diagramma delle classi, che supporta la generazione di codice partendo da una descrizione visiva. Un esempio di rappresentazione software mostrato in Figura 3.4 Figura 3.4 - Area di lavoro di Endevo UML Modeller 3.2.2 Diagramma di stato Uno stato UML descrive lo stato interno di un oggetto di una particolare classe. Non tutti i cambiamenti negli attributi di un oggetto sono rappresentati da uno stato, ma solo quei cambiamenti che influenzano significativamente il funzionamento dell'oggetto. Ci sono due tipi speciali di stati: Inizio e Fine. Sono speciali perché non ci sono eventi che possono far tornare un oggetto al suo stato di Inizio, allo stesso modo in cui non è possibile riportare un oggetto dal suo stato di Fine una volta che lo raggiunge. Questi stati sono rappresentati nel linguaggio UML come in Figura 3.5. Figura 3.5 - Stati UML 15 Ad un determinato istante, durante il funzionamento del sistema, un oggetto si trova in un particolare stato. I diagrammi di stato rappresentano tali stati e i loro cambiamenti nel tempo. Ogni diagramma di stato inizia con un simbolo che identifica lo stato iniziale e termina con un altro simbolo che rappresenta lo stato finale. Vedremo nei successivi capitoli come questi strumenti di modellazione della teoria UML sono stati utilizzati per la realizzazione dell‟ambiente di simulazione. Esiste infatti nell‟ambiente LabVIEW (che è stato utilizzato per realizzare il simulatore) una rappresentazione software sia per il diagramma delle classi (e delle classi stesse) sia per il diagramma a stati. Degli esempi sono riportati in Figura 3.6 e Figura 3.7. Figura 3.6 - State diagram UML 16 Figura 3.7 - Statechart in LabVIEW 3.3 Elementi a stati finiti e Statechart Gli automi a stati finiti, o macchine a stati finiti(FSM o Finite State Machines) e le reti di petri (Petri Nets) sono delle tecniche di modellazione di sistemi dinamici a stati discreti (DEDS o Discrete Event Dynamic Systems), a cui sono assimilabili la maggior parte dei processi che abbiamo l‟obbiettivo di modellare come agenti. Gli Statechart sono una notazione grafica e formale, sviluppata da D.Harel [10] nel 1987 per descrivere il comportamento di sistemi complessi e reattivi a stimoli interni ed esterni. Lo Statechart Diagram è un diagramma adoperato per descrivere il comportamento dinamico di entità o di classi in termini di stato (macchina a stati). Esso mostra gli stati che sono assunti dall'entità o dalla classe in risposta ad eventi esterni. Negli anni ‟90 l‟UML (Unified Modeling Language, "linguaggio di modellazione unificato") nasce con l'intento di integrare i principali formalismi in una notazione universalmente accettabile, realizzando uno standard industriale unificato. Essa definì lo Statechart diagram come: “A statechart diagram can be used to describe the behaviour of a model element such as an object or an interaction. Specifically, it describes possible sequences of states and action 17 through which the element can proceed during its lifetime as a result of reacting to discrete events (e.g., signals, operation invocations)”. Gli Statechart sono quindi un formalismo grafico utilizzato per modellare sistemi complessi guidati dagli eventi. Il problema con i classici diagrammi di stato, come ad esempio gli automi a stati finiti, era quello di descrivere la complessità del sistema in modo chiaro e realistico, nonché adatto per una simulazione computerizzata. Ciò che la mente umana è portata a pensare è di poter decomporre la complessità di un sistema da una visione globale ad alto livello ad una fatta da piccole parti, meno complesse, in modo da rendere il tutto più coerente [10]. Questo approccio non è possibile con i diagrammi a stato, che sono grafi direzionali, formati da stati e transizioni. Un sistema complesso modellato con questo tipo di diagrammi risulterà poco economico a causa del numero degli oggetti utilizzati, ad esempio si potrebbe avere un numero molto grande di stati, i quali dovranno essere inseriti in un diagramma che risulterà caotico e non ben strutturato. Un buon approccio stato-eventi dovrà quindi essere modulare, gerarchico, ben strutturato e dovrà eliminare il problema dell‟incremento esponenziale degli stati durante la composizione di più macchine. La composizione di più moduli è possibile introducendo quindi la gerarchia, cioè la possibilità di introdurre degli stati all‟interno di altri stati, l‟ortogonalità, cioè l‟indipendenza tra due parti del sistema concorrenti, e di conseguenza la comunicazione tra le varie componenti concorrenti. Una possibile soluzione è l‟utilizzo del formalismo grafico degli statechart, per : “la descrizione degli stati e delle transizioni in una grafica modulare, che abiliti il raggruppamento, l‟ortogonalità, il raffinamento e incoraggi le capacità di „zoom‟ per muoversi facilmente attraverso diversi livelli si astrazione” [10]. Essendo un‟ estensione dei diagrammi a stato, riprendono da essi i concetti fondamentali di stato, come un possibile “modo” in cui il sistema si trova e di transizione che permette il passaggio da uno stato all‟altro. Se per gli automi a stati finiti si rappresentano gli stati del sistema con dei cerchi e le transizioni con degli archi orientati, la rappresentazione degli Statechart è formata da rettangoli arrotondati per rappresentare gli stati, e da archi orientati, che rappresentano le transizioni, che congiungono uno stato all‟altro. Per esprimere la gerarchia tra gli stati si usa l‟incapsulamento, ovvero gli stati vengono inseriti all‟interno di altri stati indicando che essi sono ad un livello gerarchico inferiore rispetto allo stato che li contiene; introducendo in questa maniera i concetti di sottostati e superstati. Il raggruppamento (clustering) serve in modo principale per semplificare la grafica del diagramma, renderla più leggibile e allo stesso tempo adeguata al suo funzionamento; si nota una netta diminuzione di stati e archi di transizione. 18 3.4 BEHAVIOR: utilizzatori e produttori energetici Il problema principale legato ai sistemi domotici è quello di gestire i conflitti che sorgono a causa di un‟eccessiva richiesta di potenza elettrica che comporta il superamento della soglia fornita. In pratica la potenza verrà distribuita in accordo con le richieste dell‟utente in termine di economia (il superamento della soglia comporta un costo maggiore) e comfort (in accordo con la strategia scelta). La strategia è implementata da uno specifico agente, il controllore, sulla base delle informazioni fornite dai sensori. L‟azione di controllo consiste nel togliere potenza agli agenti, agendo sulle singole prese connesse. Si descrive di seguito la struttura degli elettrodomestici come agenti, usando un modello costituito da due comportamenti: il BEHAVIOR e la presa PLUG. La componente PLUG è una possibile rappresentazione in ambiente di simulazione di una smart plug collegata ad un elettrodomestico reale. La sua descrizione verrà affrontata nel dettaglio nel capitolo 5 dove la costruzione e l‟assemblaggio del sistema saranno il principale argomento. Il BEHAVIOR invece può essere direttamente collegato alla rappresentazioni a stati del sistema e in particolare del comportamento di un singolo agente. 3.4.1 Elettrodomestico L‟elettrodomestico caratterizzato da due dinamiche time driven, connesse da uno switching. La prima rappresenta l‟evoluzione temporale (in un intervallo ) dei consumi di energia relativi a ciascuna fase di lavoro dell‟elettrodomestico, quando la risorsa energia è disponibile; mentre la seconda descrive la situazione di inibizione del dispositivo da parte del controllore, con conseguente cut-off dell‟energia e un consumo pari a zero . Quando la potenza è ristabilita in un tempo , il dispositivo ristabilisce la fase di lavoro che era stata interrotta dal cut-off e il modello passa ad un consumo pari a . In questo caso il dispositivo finirà il suo lavoro in un tempo , se non accade un ulteriore cut-off. Le due dinamiche sono esclusive tra di loro e lo switching avviene quando il controllore inibisce la presa, dopo una situazione di overload causata dagli elettrodomestici in funzione. La prima dinamica viene nuovamente riattivata quando il controllore decide di ripristinare la presa relativa (seguendo le sue strategie di controllo). Si riporta in Figura 3.8 una rappresentazione esplicativa del componente BEHAVIOR di un Elettrodomestico. 19 Figura 3.8 - BEHAVIOR di un Elettrodomestico 3.4.2 Provider energetici Il BEHAVIOR di un agente che non è un consumatore elettrico, ma è un produttore/accumulatore può avere un comportamento, che guida i sui livelli di produzione energetica , modellato in diversi modi. Ad esempio, nel caso di un Agente che rappresenta un appartato fotovoltaico, il suo andamento di produzione energetica più essere prelevato da file di dati storicizzati (precedenti mensilità di irraggiamento solare) e espresso come un comportamento andando a rendere disponibile più o meno energia prodotta dall‟agente e immessa nella rete elettrica dal sistema domotico (Figura 3.9) 20 Figura 3.9 - BEHAVIOR di un provider energetico Sarà proprio un agente come quello rappresentato in Figura 3.9 assieme al modello di carica e scarica di una batteria (accumulatore energetico) ad andare a popolare la struttura del sistema, estendendo la capacità di modellazione dell‟ambiente simulazione proposto e permettendo di analizzare ulteriori politiche di controllo. Sarà infatti portata all‟attenzione la necessità di massimizzare la quantità di energia auto-consumata dal sistema e una politica di controllo adeguata verrà proposta nel capitolo 5. 21 22 4. Costruzione struttura del sistema Con tutti gli strumenti che sono stati descritto fino ad esso è stato possibile descrivere in modo formale e accurato il modello comportamentale degli agenti del sistema, potendo darne una rappresentazione anche virtuale, integrabile all‟interno di un ambiente di simulazione. Nei precedenti capito spesso si è fatto riferimento a sistemi ai stati finiti e la rappresentazione dei vari agenti che caratterizzano il sistema è stata prevalentemente fatta con sistemi costituiti da un insieme finito di stati in cui il passaggio da uno stato a quello successivo è guidato da eventi che coinvolgono il sistema. E‟ stato analizzato il panorama delle formalizzazione dei sistemi a stati finiti, e da questa analisi è stata identificata un formalizzazione in grado di venire in contro alle necessità di rappresentazione, implementazione e formalità richieste dall‟obbiettivo di realizzare un ambiente di simulazione adeguato a contenere tutti gli agenti ed elementi fino ad adesso descritti. La rappresentazione che è stata ritenuta in grado di soddisfare tutte le specifiche richieste sono state le Reti di Petri (Petri Net – PN) [11–13], note per essere una rappresentazione sintetica di sistemi a stati ed essere fortemente orientate agli eventi che ne guidano l‟evoluzione dello stato nel tempo. Nel capitolo 3 è stato introdotto il concetto di BEHAVIOR che però è la rappresentazione solamente di una parte dell‟Agente descritto nella sezione 3.1 poiché è privo della capicità di interazione con gli altri agenti. Collegando il BEHAVIOR ad una rappresentazione di smart plug, otteniamo un agente che può interagire con le risorse del sistema. La modellazione della smart plug che verrà proposta utilizzerà la teoria delle PN per dare una rappresentazione dell‟interazione tra gli elettrodomestici e modellare la condivisione di una risorsa comune. Andando in seguito a unire tra loro gli agenti così descritti, riusciremo a costruire la struttura del sistema globale. 4.1 Reti di Petri Per la costruzione di un agente avente accesso alle risorse del sistema è stato adoperato anche un altro strumento, le reti di Petri. Esso ci ha permesso di monitorare l‟andamento dell‟intero sistema, controllando le operazioni imposte dalla strategia di gestione energetica. Le Reti di Petri , sono state adoperate come strumento di controllo supplementare per le decisioni intraprese dalla logica implementata. Nel simulatore si utilizzano due tipi di controllo: Controllo sulla marcatura Controllo sulla matrice d‟inibizione 23 Il primo controllo permette di verificare che la marcatura non sia negativa, perché in tal caso vorrebbe dire che il controllore ha richiesto di effettuare un‟operazione non consentita dalla rete utilizzata. Un esempio potrebbe essere la restituzione di potenza, da parte di un elettrodomestico, maggiore di quella consumata. Il secondo controllo, invece, verifica, ad esempio, che non sia concessa potenza ad un elettrodomestico inibito dalla strategia di controllo attuata. Una rete di Petri (conosciuta anche come rete posto/transizione o rete P/T) è una delle varie rappresentazioni matematiche di un sistema distribuito discreto. Come un linguaggio di modellazione, esso descrive la struttura di un sistema distribuito come un grafo bipartito con delle annotazioni. Ovvero, una rete di Petri ha dei nodi posti, dei nodi transizioni e degli archi diretti che connettono posti e transizioni. Le reti di Petri furono inventate nel 1962 da Carl Adam Petri durante la sua tesi di dottorato. Una rete di Petri PT (Place/Transition) consiste di posti, transizioni e archi diretti. Possono esserci archi tra posti e transizioni - ma non tra posti e posti o transizioni e transizioni. Un posto da cui un arco parte per finire in una transizione è detto posto di input della transizione; un posto in cui un arco arriva partendo da una transizione è detto posto di output della transizione. I posti possono contenere un certo numero di token o marche. Una distribuzione di token sull'insieme dei posti della rete è detta marcatura. Le transizioni agiscono sui token in ingresso secondo una regola, detta regola di scatto (in inglese firing). Una transizione è abilitata se può scattare, cioè se ci sono token in ogni posto di input. Quando una transizione scatta, essa consuma token dai suoi posti di input, esegue dei task e posiziona un numero specificato di token in ognuno dei suoi posti di uscita. L'esecuzione delle reti di Petri è non deterministica. Ciò significa due cose: 1. se più transizioni sono abilitate nello stesso momento, una qualsiasi di esse può scattare; 2. non è garantito che una transizione abilitata scatti; una transizione abilitata può scattare immediatamente, dopo un tempo di attesa qualsiasi (a patto che resti abilitata), o non scattare affatto. In modo più preciso possiamo dire che una Rete di Petri è un grafo orientato bipartito Grafo bipartito dove è una partizione dell‟insieme dei vertici del grafo ed E è l‟insieme degli spigoli di G, composto da coppie di vertici rispettivamente di S (i posti) e di T (le transizioni): . Una Rete di Petri può anche essere rappresentata mediante una notazione matriciale, con due matrici, di ingresso I e di uscita O, definite rispettivamente ponendo con spigolo , ; dove con e si indica la capacità dello 24 In altri termini la colonna i-esima della matrice I rappresenta i pesi degli archi entranti nella transizione , mentre la riga j-esima di O rappresenta i pesi degli archi uscenti dalla transizione . La matrice di incidenza C di una rete è definita ponendo . Il vettore di marcatura m di una rete è il vettore le cui componenti sono il numero di token presenti nel posto i-esimo. Un‟estensione del formalismo base delle Reti di Petri è l‟utilizzo dell‟ arco inibitore che a differenza dei tradizionali archi condiziona l'abilitazione della transizione all'assenza di token nel posto che la precede. Questa modifica può essere utile in fase di programmazione qualora una possibile situazione della rete debba inibire l‟esecuzione di certe transizioni e garantire cosi in una prestabilita evoluzione del sistema modellato. Le Reti di Petri sono state adoperate per poter modellare l‟intera politica di gestione energetica in quanto tramite l‟utilizzo di tre matrici (matrice d‟incidenza, Matrice d‟inibizione, vettore delle marcature) permette di monitorare semplicemente l‟evoluzione dell‟intero HAS tramite semplici prodotti tra matrici. Questo vantaggio consente un‟agevole implementazione su un qualsiasi micro-controllore e quindi conferisce leggerezza e portabilità all‟ HAS-Sim realizzato. Per l‟apertura delle Reti di Petri che modellano l‟intero sistema, si sono adoperati due software, Pipe e PM Editeur. Il primo è un progetto open source sviluppato in linguaggio Java, con un‟ ottima documentazione in formato JavaDoc. L'interfaccia è molto intuitiva e permette di disegnare diagrammi leggibili in modo semplice e rapido. E' possibile creare archi spezzati e/o curvi per evitare intersezioni poco chiare, ruotare le transizioni e inserire annotazioni testuali in ogni punto del diagramma. Tramite un apposito menù si può facilmente esportare il diagramma in formato grafico (PNG oppure PostScript), che possiamo stampare oppure includere in altri tipi di documento. La simulazione di base prevede una modalità "animata" attivabile tramite apposito pulsante, che ci permette di osservare l'evolversi della rete. Possiamo eseguire un'animazione "step-by-step", andando a effettuare lo scatto di una transizione tra quelle abilitate, che vengono colorate in rosso. Alternativamente possiamo lasciare al programma la scelta (casuale) delle transizioni da attivare, anche in modalità continua (con un periodo di tempo selezionabile). E' sempre possibile arrestare la simulazione e tornare ai passi precedenti, per ispezionare la rete. Il programma ha una struttura modulare, grazie alla quale è possibile aggiungere e rimuovere in modo semplice i componenti che effettuano analisi sulla rete. Sono presenti diversi moduli che permettono di classificare le proprietà della rete o di effettuare un‟analisi sulle matrici d‟ incidenza o sulla marcatura. Il software PM Editeur invece, è un editor grafico per le Reti di Petri, che presenta un‟interfaccia più semplice ma al tempo stesso più leggera. Esso si interfaccia perfettamente con il programma Matlab che è in grado di importare correttamente tutte le caratteristiche della Rete di Petri disegnata e di metterle a disposizione del controllore in LabVIEW per mezzo di particolari strutture. 25 4.2 Componenti elementari Utilizzando adesso il concetto di Rete di Petri descritto verrà descritta una soluzione di modellazione adottata per dare una rappresentazione grafica e matriciale della componente PLUG relativa ad un elettrodomestico, facendo riferimento a quanto anticipato nella sezione 3.4. E‟ infatti presente in ogni elettrodomestico (in questo caso faremo riferimento ai soli consumatori di energia dal contesto domotico) una collegamento tra la rete elettrica e l‟elettrodomestico stesso. L‟elettrodomestico e il suo modello comportamentale è già stato descritto attraverso il concetto di BEHAVIOR e di macchina a stati. Quello che ancora non è stato affrontato è il come il comportamento modellato possa interagire con la linea elettrica e come questo comportamento possa influenzare gli altri elettrodomestici e come possa essere influenzato a sua volta. Verrà adesso ipotizzato che ogni elettrodomestico modellato sia collegato alla rete elettrica attraverso una smart plug, in grado di misurare il consumo energetico istantanea e capace di rispondere a dei comandi di attivazione/disattivazione (switching) provenienti da un eventuale sistema di controllo, connettendo/disconnettendo l‟elettrodomestico stesso dalla rete elettrica. L‟attivazione dello switching dipende da una dinamica event driven definita dalla componente PLUG. L‟agente quindi, che rappresenta un dispositivo domotico, consiste in un componente BEHAVIOR collegato con un componente PLUG. Lo switching tra w(t ) e nel BEHAVIOR dipende dallo stato delle transizioni nella PLUG, mentre la variazione dei consumi di elettricità nel BEHAVIOR si ripercuote sulla PLUG. L‟ interazione tra il dispositivo e la risorsa potenza, descritto dalla PLUG per mezzo di una PN, è così strutturato: A. il consumo di energia; Un numero fisso di token nel posto “P1” rappresentano l‟ammontare della potenza disponibile all‟agente. Variazioni sul valore attiva sia la transizione T1 (che aumenta il consumo) che la transizione T2 (che decrementa il consumo). La marcatura del posto “” rappresenta l‟ attuale consumo della presa. B. l‟abilitazione o non della presa a cui è collegato l‟elettrodomestico. L‟assenza di un token nel posto “P2” denota che l‟elettrodomestico è connesso alla presa e consuma potenza elettrica e in tal caso il comportamento temporale del BEHAVIOR evolve come . La presenza di un token invece in “P2” indica che il dispositivo è disconnesso dalla sorgente elettrica per tale motivo il comportamento temporale BEHAVIOR evolve come . In questa situazione 26 la transizione “T1” che di solito è abilitata, risulta inibita dalla rete di Petri in quanto l‟elettrodomestico è stato bloccato dal controllore. La variazione della marcatura del posto “P2” è imposta da un eventuale sistema di controllo (un suo modello in forma di PN) La struttura della parte di controllo verrà per adesso mantenuta, in modo da rendere più generale in discorso di interazione con la risorsa. Nel capitolo 5 verrà presentata una possibile implementazione di strategia di controllo. Sarà quella l‟occasione per verificare che la tecnica di modellazione attraverso PN e la sua funzione di strumento di interazione tra agenti e risorsa risulta essere valido. La rete di Petri del singolo elettrodomestico si presenta così: A B Figura 4.1 - Rete di Petri della componente PLUG In riferimento alla Definizione 1 , il modello BEHAVIOR-PLUG incorpora le capacità 1,4,5 e 8 nel primo componente (BEHAVIOR). Le capacità 6 e 2 nel componente PLUG, in corrispondenza del posto “posto_power” e mostra lo stesso numero di token in tutte le sotto reti A. Dal punto di vista della definizione 4, il controllore è in grado di monitorare la marcatura del “posto_power” e di gestire lo scatto delle transizioni di ciascuna PLUG. I ruoli sono espressi dai componenti BEHAVIOR mentre le leggi sono rappresentate dalla struttura e dalla dinamica dei componenti PLUG. Ciascun agente presenta quindi un componente PLUG a cui sono associate la matrice di incidenza, di Inibizione e la Marcatura iniziale. Indicando con ci l‟ultima riga della matrice d‟incidenza C e con Ci- la 27 matrice costituita dalle prime n-1 righe di C, con i=1,…,n , la matrice d‟incidenza risulta la seguente: (4-1) C1 ... 0 c1 ... 0 ... ... ... Cn ... cn La costruzione della matrice d‟inibizione H è analoga. Per la descrizione della marcatura M0 invece, si denota con mi l‟ultimo elemento della M0i , e con M0i- il vettore costituito dagli n-1 elementi di M0i con i=1…n. Il valore di mi con i=N indica l‟ammontare della potenza elettrica che è disponibile per tutti gli agenti del sistema domotico HAS, pertanto la matrice della marcatura iniziale si presenta nel seguente modo: (4-2) M 01 ... M 0n N La costruzione del BEHAVIOR di ciascun terminale è descritta invece, da una sequenza di fasi di lavoro, con relativi consumi di energia e tempistiche, per mezzo degli strumenti Statechart e UML. In Statechart è descritta la sequenza fissa di fasi di lavoro di ciascun agente domotico, corrispondente ai comportamenti elementari dell‟elettrodomestico reale. In UML (Unified Modeling Language) sono invece descritte le possibili azioni che il dispositivo può implementare e il modo in cui esse si inseriscono tra le varie fasi di lavoro. In pratica si costruisce un diagramma delle classi con i propri attributi e metodi e il diagramma a stati relativo. Essi lavoreranno in background al vi (sua implementazione in ambiente LV) del dispositivo, che ne visualizza i risultati sulla propria interfaccia grafica (Front Panel). Si riporta di seguito un‟immagine riguardante lo Statechart della washing machine, al cui interno sono richiamati i metodi, della classe relativa, per la scrittura e lettura degli attributi associati alla potenza consumata e alla fase di lavoro in cui l‟elettrodomestico opera in relazione con la componente PLUG. 28 Figura 4.2 - Componenti BEHAVIOR e PLUG della washing machine Si ha un‟ analoga schematizzazione per gli altri elettrodomestici presenti nel sistema domotico in questione, tranne che per il Generic appliance che presenta un struttura molto più semplice, in quanto non viene controllato. La sua rete di Petri si riduce alla sola parte riguardante il consumo di energia. Figura 4.3 - PN del Generic appliance 29 Ciascun elettrodomestico possiede pertanto una sua struttura BEHAVIOR e una PLUG. La prima appartiene al comportamento del singolo dispositivo mentre la seconda, viene utilizzata dal controllore per attuare le strategie di consumo energia. A tal fine, è richiesta una PN totale con cui è possibile monitorare tutti gli elettrodomestici di cui è costituito il sistema domotico simulato. Le singole reti possono essere fuse tra loro utilizzando tecniche di push-out che verranno descritte nei seguenti paragrafi. Il risultato, al termine delle procedure di fusione dei singoli elementi elementari (le PLUG) è riportato nella Figura 4.4: Posto Power Figura 4.4 - PN totale dell‟impianto domotico È possibile notare come le singole PN siano state fuse insieme in modo tale da condividere un posto chiamato Posto Power. I token presenti nel posto Power della PN totale fusa sono 14000 e rappresentano la soglia massima di energia a disposizione, ossia la potenza limite Plim di 14 KW, che una volta superata porterebbe ad un distacco immediato del contatore ENEL (perdita del controllo del sistema). E‟ infatti un caso non contemplato dal modello, poiché un consumo oltre i 14 KW porterebbe ad una marcatura negativa della PN. 4.3 Fusione tra Petri Net Partendo da un insieme di PN elementari che rappresentano i singoli elementi, si è pensato che avere la possibilità di unire tra loro i modelli elementari sarebbe potuto tornare molto 30 utile. Infatti partendo da elementi semplici, la costruzione dinamica di un ecosistema di elettrodomestici, ognuno modellato dalla sua PN, si trasforma in processo ripetitivo e di complessità crescente, che non aggiunge alcun valore a livello di controllo o modellazione. Avendo invece a disposizione un sistema automatico in grado di unire tra loro un numero indefinito di PN (anche l‟una diversa dall‟altra) si apre la possibilità di una costruzione dinamica della PN dell‟intero sistema volta per volta, a seconda del numero di agenti che in quella particolare situazione devono andare a fare parte del sistema. Verrà adesso descritta un‟efficiente tecnica di push-out che permetterà di creare PN complesse a partire dai modelli elementari di PN all‟interno delle quali i vincoli di funzionamento dei modelli sono già stati inseriti. Verranno portate come esempio per descrivere il processo di fusione delle PN all‟interno delle quali sono state inserite tutte le fasi di funzionamento dell‟elettrodomestico (consumo elettrico in ogni fase). A queste PN verrà inoltre aggiunto un vincolo di funzionamento, prima di venire unite tra loro, in modo da mostrare come ogni vincolo inserito nelle PN elementari venga mantenuto in un PN globale dopo la fusione. Per l‟inserimento di vincoli nel funzionamento verranno utilizzate delle Generalized Mutual Exclusion Constraints (GMEC) [14]. Il software che permette il processo di unione tra PN è stato realizzato con uno script Matlab [] in grado di interpretare la rappresentazione grafica come che è stata data agli elettrodomestici. Le PN vengono caricata in Matlab andando a caricare i file salvati da un software grafico utilizzato per disegnare le PN (PM Editor [15]). 4.3.1 Inserimento di vincoli locali Utilizzando PM Editor è possibile costruire graficamente un PN. Questo tool mette a disposizione una serie di funzioni Matlab in grado di importare le descrizione matriciale delle PN. Tali funzioni sono state modificate per permettere non solo l‟importazione delle matrici di incidenza, inibizione e marcatura di un PN, ma anche la sua struttura grafica e la posizione nello spazio di posti e transizioni. Sono state creata inoltre anche delle funzioni Matlab in grado di ricreare un file di un PN apribile con PM Editor a partire dalle matrici che la caratterizzano in ambiente Matlab (ambiente nel quale possono essere elaborate). 31 Figura 4.5 - PM Editor tool L‟inserimento di vincoli all‟interno di un PN, rappresentati le regole del sistema che si sta cercando di modellare, è reso possibile dalla teoria delle PN in due modi: Archi inibitori All‟interno del tool grafico PM Editor è possibile trasformare un qualsiasi arco della PN in un arco inibitore. L‟imposizione dei vincoli attraverso archi è rappresentato in forma matriciale da una matrice di inibizione. Tale matrice verrà anche essa caricata in ambiente Matlab e potrà contribuire al controllo sull‟evoluzione dello stato della PN. GMEC E‟ stata sviluppata in Matlab una funzione in grado di inserire dei nuovi vincoli come GMEC traducendo ogni disequazione inserita in un posto monitor (in forma grafica e matriciale). Possiamo vedere in Figura 4.6 il la modellazione come PN della sequenza delle fasi di funzionamento di un elettrodomestico. 32 Figura 4.6 - Sequenza delle fasi nel modello PN di un elettrodomestico Se volessimo imporre il vincolo che l‟elettrodomestico non può stare allo stesso tempo in più di una fase dovremmo rendere sempre vera la seguente disequazione: P1 + P2 + P3 + P4 + P5 + P6 + P7 + P9 < 2 Eseguendo lo script di inserimento automatico di vincoli e passandogli come parametro la diseguaglianza da dover rispettare otteniamo in uscita la PN in Figura 4.7: Figura 4.7 - Vincolo imposto 4.3.2 Algoritmo di Fusione Una della motivazioni che ha portato all‟utilizzo delle PN per la modellazione degli componenti elementari dei sistemi domotici da simulare è la possibilità di utilizzare l‟algebra alla base della teoria delle PN per semplificare l‟integrazione tra più sottosistemi semplici e il mantenimento dei vincoli locali inseriti a livello di singolo elettrodomestico. 33 Come abbiamo visto è possibile descrivere ogni elettrodomestico o device domotica con una semplice PN vincolata. Vediamo adesso come utilizzando un algoritmo implementato in ambiente Matlab sarà possibile fondere tra loro tutte le sottoreti unendole in una PN in grado di rappresentare l‟intero ambiente domotico. Una volta creata la PN dell‟intero sistema sarà anche possibile inserire nuovi vincoli, richiamando in modo ricorsivo la funzione per l‟inserimento di GMEC o semplicemente inserendo da ambiente grafico (PM Editor) archi inibitori. Vengo qui riportati degli i precedenti esempi di modelli in forma di PN della Lavatrice (WM – Washing Machine) Figura 4.8, della Lavastoviglie (DW – Dishwasher) Figura 4.9 e di una generica presa elettrica Figura 4.10.:tre Figura 4.8 - PN 1 Figura 4.9 - PN 2 34 Figura 4.10 - PN 3 Prendendo in considerazione un esempio in cui si hanno 3 PN (m=3) per andare a spiegare come le matrici di incidenza, inibizione e i vettori di marcatura possono essere uniti tra loro per andare a creare la PN dell‟intero sistema. La trattazione con m=3 potrà poi essere generalizzata con un m qualsiasi. Per ogni PN abbiamo una matrice di incidenza diversa Ci ( lavorare con le matrici di inibizione vedremo sarà del tutto equivalente): (4-3) e 3 vettori di marcatura (uno per ogni PN): (4-4) Per poter portare a termine il processo di fusione, è necessario da lato utente andare a definire quali posti delle diverse reti sono dei posti condivisi e con quali posti delle altre reti devono andare a coincidere. Questa informazione deve può essere formalizzata inserendola in degli array Cij gli elemente dei quali indicano i posti della PN “i” condividi con PN “j”. Analizzando il contenuto di questi vettori è possibile andare ad individuare tutti i posti delle reti che hanno una qualche condivisione con altra rete. In numero dei vettori Cij è pari al numero “n” di combinazioni di coppie di PN senza ripetizioni: 35 (4-5) n m! 2!(m 2)! (4-6) Utilizzando nuovamente l‟informazione contenuta nella matrici Cij verrà costruita la matrice S nxm dove le righe identificano le PN da fondere e le colonne i posti che sono condivisi. Ogni elementi sij rappresenta l‟indice del posto della PN “i” (i:[1,m]) che corrisponde al posto condiviso “j” ( j: [1, n] ). La matrice S viene utilizzata per rimuovere dalle matrici di incidenza e dai vettori di marcatura i posti che sono stati identificati come coinvolti in una qualche condivisione. Le matrici di incidenza Ci e i vettori di marcatura Mi dopo la rimozione dei posti condivisi prenderanno saranno indicati dalla notazione Ci- e Mi- . Parallelamente al processo di rimozione dei posti condivisi vengono costruite della sub matrici di incidenza Ci, r di dimensione nxki (dove ki è il numero di transizioni, relative ad ogni PN originale “i” da fondere). Tale matrice sintetizza al suo interno il come le transizioni fossero collegate ai posti condivisi, prima che venissero rimossi dalle matrici di incidenza originali: (4-7) Dopo aver estratto dalle relative PN i posti con qualche condivisione, si pone immediatamente il problema di quale marcatura assegnare a tali posti una volta che saranno reinseriti nella rete finale come posti condivisi. La marcatura dei posti condivisi viene prelevata dalle reti che li condividono e salvata in dei vettori Mij i quali indicano la marcatura del posto condiviso relativamente alle PN “i” condiviso con la PN “j”: 36 (4-8) Utilizzando i vettori Mij viene costruito il vettore Mr 1xn dove gli elementi mr,j (j:[1,n]) indica la marcature del posto condiviso “j”. Con le matrici e i vettori descritti fino ad adesso è possibile unire tra loro le “m” PN originali in un'unica rete, rispettando i vincoli di condivisione descritti dall‟utente con le matrici Cij. La matrice di incidenza della rete fusa, nominata Cfusion , potrà essere costruita combinando tra loro le matrici descritte in precedenza come mostrato nella formula (4-9): (4-9) La costruzione del vettore di marcatura della rete fusa verrà nominato M fusion e viene costruito combinando i vettori di marcatura descritti in questo paragrafo come indicato nella formula (4-10): (4-10) Ricostruire la matrice di inibizione della rete fusa è del tutto simile a quanto già fatto per la matrice di Incidenza ed è descritto dalla formula (4-11): 37 (4-11) The result of the matrix and graphic elaboration is the follow: Figura 4.11 - PN1, PN2 e PN3 unite 38 4.4 Agenti generici La componenti PN portate ad esempio fino ad adesso si sono sempre riferite ad agenti nella forma di consumatori di risorse energetiche, cioè dove la parte di PN che li caratterizza descrive il come tale agenti possono prelevare energia dal sistema domotico. Utilizzando gli stessi strumenti di modellazione proposti è possibile generalizzare la descrizione della componente PN anche nel caso volessimo modellare agenti più generici, in grado di accedere bidirezionalmente alla risorsa energetica, e perciò anche in grado di fornire energia, oltre che prelevarla. E‟ infatti sufficiente che l‟agente abbia una componente PN per poter interegire con la risorsa energetica insieme agli altri. Nel caso che esso sia in grado di erogare energia è sufficiente predisporre la sua marcatura iniziale in modo da rappresentare che una quantità di energia (comunque limitata) può essere potenzialmente rilasciata dall‟agente, immettendola nel sistema. In Figura 4.12 è mostrato un esempio di Provider in grado di erogare al massimo “N” watt e che può interagire con la risorsa e con gli altri agenti attraverso il posto “P1”, che in modo analogo a quanto mostrato nella sezione precedente, potrà essere unito agli altri agenti in un‟unica PN rappresentate l‟intero sistema. Figura 4.12 - PN di un Provider energetico Ne consegue che in una struttura come quella proposta in questo lavoro, per permettere l‟interazione di un qualsiasi agente con al risorsa energetica, sarà sufficiente che all‟interno del suo modello sia presente almeno una componente PN. Come poi la parte BEHAVIOR sia stata modellata e come l‟evoluzione del suo stato/comportamento sia dipendente dal tempo o dagli eventi risulterà del tutto indifferente, permettendo il mantenimento di una completa trasparenza con il livello di interazione con la risorsa. Sarà a questo punto possibile avere una grande liberta nella definizione del BEHAVIOR degli agenti, che se composto da almeno una parte PN, potranno essere inseriti nella struttura del sistema complessivo. Come già anticipato nel capitolo 3 la componente BEHAVIOR può essere sostituita ad esempio da un dato storicizzato o da un modello costruito i modo differente 39 rispetto alla soluzione proposta in questa tesi (cioè utilizzando sistemi a stati finiti). Ne consegue che una possibile rappresentazione di un generico agente, a differenza di quella data in Figura 4.2, potrebbe essere la seguente: Figura 4.13 - Agente generico 40 5. Ambiente di simulazione proposto Nei due capitoli precedenti sono state portate all‟attenzione del lettore diverse tecniche di modellazione di sistemi domotici ed è stato proposto un processo di costruzione del sistema domotico nel suo complesso che permetta di far integrare tra loro tutti i sottosistemi in un unico ambiente. Dopo aver potuto descrivere in modo formale gli oggetti che popolano un contesto domotico residenziale (elettrodomestici, produttori/accumulatori energetici) passeremo adesso alla descrizione dell‟ambiente di simulazione che li potrà contenere e all‟interno del quale potranno coesistere. La teoria aiuta a rappresentare i sistemi domotici per comprenderne l‟evoluzione e condizionarne il comportamento [16]. In molti casi ci si riferisce a strutture semplici in cui sono noti i criteri per prevederne il comportamento, cercare di condizionarne l‟evoluzione verso i nostri fini oppure adottare le scelte migliori, riuscendo a ridurre eventuali danni. Se il modello è descritto da una mappa più complessa, la rappresentazione classica mantiene comunque la sua utilità poiché fornisce un quadro completo delle variabile e delle forze in gioco, ma non sempre consente di effettuare delle previsioni attendibili sul comportamento del sistema. Inoltre, non è sempre sufficiente descrivere l‟evoluzione generale della situazione, ma talvolta sono richieste delle previsioni quantitative che restituiscano delle cifre ben definite. Ad esempio nel caso in esame, è riduttivo parlare di sistemi domotici e di elettrodomestici che collaborano, se non si riesce a quantificare i benefici introdotti da tali soluzioni e confrontarli con i sacrifici economici che si devono affrontare per ottenerli. Quando la teoria dei sistemi non è sufficiente, o le strutture sono complesse o servono dei dati di valutazione, la soluzione migliore risulta quindi costituita dalla simulazione al computer. La simulazione è sempre più usata nella risoluzione di problemi reali in quanto consente di sperimentare il comportamento del sistema sfruttando i legami fra le variabili, che sono espressi da relazioni matematiche e i cambiamenti che sono immediati e permettono di vedere subito cosa accade. 5.1 Progettazione dell‟ambiente di simulazione. Verrà adesso mostrato da cosa compone la catena di passaggi che partono dalla fase preliminare di progettazione di alto livello di un sistema domotico, fino alla fase finale d‟implementazione dello stesso in simulatore a livello di programmazione, con lo sviluppo del simulatore uomo/macchina. Saranno così richiamati gli strumenti software analizzati nei precedenti paragrafi, evidenziando l‟interazione tra i vari strumenti e la sequenza temporale del loro utilizzo. È così stata sviluppata una struttura generale per il passaggio dalla fase di design fino alla fase finale d‟implementazione del simulatore, sviluppando un formalismo per la 41 metodologia utilizzata. Il simulatore che verrà descritto verrà denominato HAS-Sim (Home Automation Systems Simulator) e vi si farà riferimento nel resto del lavoro con questo nome. I punti principali della realizzazione metodologica della catena, si possono suddividere nelle seguenti quattro macro-fasi: 1. In questa prima fase, che prende il nome di Modellazione UML, si va a studiare il problema ad alto livello, seguendo le linee guida del linguaggio UML definito inizialmente. Terminata questa fase si avranno così a disposizione le basi per il passaggio all‟interno del software LabVIEW, ossia i diagrammi delle classi e di stato, ricavati appunto dall‟applicazione del formalismo del linguaggio UML mediante l‟utilizzo del software di modellazione Umbrello UML Modeller. 2. La successiva fase riguarda il passaggio all‟interno del software LabVIEW delle classi e dei diagrammi di stato ricavati mediante lo studio UML della fase precedente. Entrambi i passaggi sono raggruppati all‟interno di una macro-fase chiamata Importazione in LabVIEW, che prende appunto il nome dal fatto che si vogliono passare all‟interno di LabVIEW i risultati ottenuti in precedenza. Questa macro-fase può essere suddivisa in due punti: a. L‟importazione delle classi e dei metodi all‟interno del software LabVIEW, mediante l‟ausilio del tool Endevo UML Modeller. b. La definizione all‟interno dell‟ambiente LabVIEW del diagramma di stato ottenuto durante la prima fase mediante l‟ausilio del modulo StateChart. Questa seconda fase della procedura riguarda la catena di passaggio per generare del codice riutilizzabile all‟interno dell‟ambiente di programmazione LabVIEW, fase necessaria in quanto non si avrebbe la possibilità di utilizzare i diagrammi ottenuti mediante il software Umbrello UML Modeller in alcun modo nel nuovo ambiente di programmazione. Questo passaggio risulta essere semi-automatico, in quanto sia la trascrizione delle classi (attributi e metodi) che del diagramma di stato (stati, eventi, guardie) avviene manualmente, prendendo i diagrammi ottenuti nella fase precedente e riportarli manualmente all‟interno dei vari software. 3. Un‟ulteriore fase riguarda l‟implementazione della strategia energetica. Questa strategia vedremo che potrà essere sviluppata con l‟ausilio delle PN (script in Matlab) o semplicemente attraverso un generico linguaggio di programmazione. 42 Al suo interno sono modellati gli agenti dell‟intero sistema, la risorsa condivisa disponibile e la gestione energetica realizzata. 4. Infine l‟ultima fase riguarda la realizzazione del programma principale (main program) su cui dovrà girare il nostro simulatore/emulatore. Saranno in questa fase definiti l‟interfaccia utente e il codice sorgente (grafico nel nostro caso LabVIEW) che integra al suo interno il codice ottenuto mediante l‟utilizzo del software Endevo (classi e metodi), il software Statechart (il Diagram.vi contenente il diagramma di stato), il software Matlab (i Matlab script che richiamano e salvano le reti di Petri). Il processo di creazione dell‟ambiente di simulazione/emulazione può essere sintetizzato nello schema in Figura 5.1: Figura 5.1 - Implementazione del simulatore/emulatore HAS-Sim 5.2 Accoppiamento tra elettrodomestici virtuali e smart plug Gli agenti che fino ad adesso sono stati descritti e modellati si trovano ad un livello logico molto vicino a quello fisico (livello Hardware), costituito dagli agenti/oggetti cognitivi e 43 reattivi. In questo livello si vanno a collocare i primi mattoni dell‟ambiente di simulazione che stiamo andando a costruire composto dagli elettrodomestici e i dispositivi reali. A livello medio presiede l‟Embedded server con cui comunicano il livello più basso e il livello alto. In esso sono presenti la lavagna condivisa (Shared dashboard) e il Web-service (per connessioni a livello web/internet) che cono connessi tra loro per scambiarsi informazioni. A livello più alto c‟è l‟ Intelligenza che si compone di: Controller devices, il controllore che gestisce i carichi della casa che consumano energia (implementa una politica di controllo scelta); Monitoring devices, contatore che monitora i consumi energetici della casa; Supervision devices, dispositivo che in base ai consumi e alle preferenze dell‟utente, setta e ottimizza i parametri gestiti dal controller device; Human machine interface, o interfaccia uomo-macchina La comunicazione tra i diversi livelli avverrà tramite TCP, tra il livello medio e quello alto, mentre le tecnologie utilizzabili per la connessione con il livello più basso possono essere di molte tipologie differenti (e.g. Lon, OpenWebNet, SCS bticino, PowerLine, Wifi, Bluetooth, Zigbee). Nella creazione dell‟ambiente di simulazione si è deciso di utilizzare i moduli realizzati finora, mettendo a disposizione dell‟utente i seguenti elettrodomestici: Lavatrice - Washing Machine (WM) ; Lavastoviglie – Dish Washer (DW) ; Forno – Oven ; Frigo – Fridge ; Dispositivo generico non controllato - Generic Appliance; Nella fase finale del lavoro che è descritto in questa tesi sono stati sviluppati anche modelli di generatori/accumulatori energetici, che vedremo in questo capitolo come verranno integrati all‟interno del sistema: Pennello fotovoltaico (accesso a dato storicizzato) Sistema di accumulo su batteria Gli agenti elencati costituiranno i Simulated Devices dell‟HAS-Sim come riportato nella Figura 5.2. 44 Figura 5.2 - Livelli della struttura dell'HAS-Sim In questa fase di simulazione in LabVIEW del comportamento reale di un utente in una casa, la comunicazione tra il medio e alto livello avverrà tramite la lavagna condivisa. Quest‟ultima sarà assoggettata alla scrittura e lettura delle sue variabili per poter monitorare e controllare i carichi in base al comportamento dell‟utente. In essa sono presenti le variabili globali dei consumi di ciascun dispositivo e le variabili utilizzate dal controllore per monitorare i dispositivi che consumano e che concorrono quindi alla risorsa comune, l‟energia elettrica. Seguendo le linee illustrate nelle sezioni precedenti, è possibile costruire ambiente di simulazione in forma di HAS, permettendo l'integrazione di agenti simulati e elettrodomestici reali. Ciò è reso possibile dal collegamento dei dispositivi reali con le cosiddette prese intelligenti , che sono dotati di un misuratore e di un interruttore di comando a distanza, come per esempio la presa bticino ® F522 [17]. Implementando e mandando in esecuzione la logica del controllore su un PC, è quindi possibile rendere disponibile la lettura delle prese al controllore e dare la possibilità di attuarle. In pratica, l‟elettrodomestico reale costituisce il componente BEHAVIOR, mentre il componente intelligente costituisce il componente PLUG. Allo scopo di attuare la strategia descritta in precedenza, il controllore deve sottrarre l‟energia fornita dalle letture 45 del contatore dalla quantità totale di potenza a disposizione, e agire di conseguenza. L‟implementazione di strategie per la gestione energetica di impianti domotici reali risulta essere così molto facile da implementare e a basso costo. E 'anche da notare inoltre che, in questo modo, gli elettrodomestici di diverse marche possono essere facilmente integrati nel sistema domotico, evitando problemi di compatibilità e di comunicazione, in una visione plug-and-play. Un ambiente di emulazione del tipo descritto sopra è illustrato nello schema in Figura 5.3 che rappresenta la struttura hardware del DOMOLab presente all‟interno del Dipartimento di Ingegneria dell‟Informazione dell‟UNIVPM. In tale schema sono presenti degli elettrodomestici simulati come la lavatrice e la lavastoviglie (per evitare l'impianto idraulico), insieme ad un frigo e forno reali con l‟obiettivo di ricostruire un realistico impianto domotico. Interfaccia tra l‟ambiente delle PLUG reale e l'ambiente di simulazione (PC) è realizzato da un gateway che tramite un bus locale connette le prese ad una rete Ethernet / Wi-Fi . 46 Figura 5.3 - Struttura hardware HAS 47 5.3 Strategie di controllo Nei capitoli e paragrafi precedenti si è fatto riferimento spesso alla possibilità di inserire sistemi di controllo all‟interno del simulatore/emulatore, in modo da poterne testare il funzionamento, affinarne l‟algoritmo e validare l‟efficacia. In questa sezione verranno portati tre esempi di sistemi di controllo che sono stati testati utilizzando l‟HAS-Sim come piattaforma di test. Il primo sistema di controllo sarà orientato alla gestione della potenza istantanea (W) consumata dal sistema per poterla tenere all‟interno delle soglie energetiche e temporali imposte dal provider energetico (contatore dell‟ENEL nel particolare). Il secondo riguarderà la gestione dell‟energia consumata (Wh) relativa alla taglia energetica scelta e di conseguenza imposta dal provider energetico (quantità limitati di Wh mensili). Il terzo ed ultimo sistema di controllo sarà invece inserito in un contesto più ampio, nel quale sono presenti nel sistema più di un provider energetico. Si vorrà in quest‟ultimo caso massimizzare il consumo di energia auto-prodotta (e.g. proveniente da pannelli solari o accumulata su batteria). L‟implementazione e le interfacce utente relative alle strategie di controllo che verranno qui di seguito riportate saranno presentate nel capitolo 6 per poi essere validate con alcuni esperimenti e simulazioni nel capitolo 7. 5.3.1 Gestione potenza istantanea Partendo dal modello di PLUG anticipato in 4.2 verrà qui portata una particola soluzione che è stata adottata per il mantenimento della potenza istantaneamente consumata dal sistema al di sotto di un soglia prestabilita. Il controllore è stato programmato in modo tale da eseguire una strategia di controllo sulla gestione sovraccarichi all‟interno del sistema domotico. La politica di controllo si basa su monitoraggio delle priorità assegnate a ciascun elettrodomestico. La PN della PLUG è stata costruita appositamente per questo scopo e la parte di Control action, fino ad adesso lasciata generica, è stata invece definita in modo tale da meglio adattarsi ad una specifica politica di controllo che si è voluto implementare. Rimane sempre valido quanto già detto a proposito del modo con cui la PN interagisce con la risorsa, ipotizzato che ogni elettrodomestico modellato sia collegato alla rete elettrica attraverso una smart plug, in grado di misurare il consumo energetico istantanea e capace di rispondere a dei comandi di attivazione/disattivazione (switching) connettendo/disconnettendo l‟elettrodomestico stesso dalla rete elettrica. Verrà pero adesso inserita anche la politica di gestione della potenza istantanea all‟interno della PN di ogni PLUG, permettendone un‟implementazione direttamente al livello di modello matriciale. L‟ interazione tra il dispositivo e la risorsa, assieme alla politica di controllo che si vuole implementare, è descritto dalla PLUG per mezzo della PN così strutturata: 48 A. il consumo di energia; Un numero fisso di token nel posto “P8” rappresentano l‟ammontare della potenza disponibile all‟agente. Variazioni sul valore attiva sia la transizione T1 (che aumenta il consumo) che la transizione T2 (che decrementa il consumo). La marcatura del posto “P1” rappresenta l‟attuale consumo della presa. B. l‟abilitazione e non della presa a cui è collegato l‟elettrodomestico. La presenza di un token nel posto “P2” denota che l‟elettrodomestico è connesso alla presa e consuma potenza elettrica e in tal caso il comportamento temporale del BEHAVIOR evolve come . La presenza di un token invece in “P3” indica che il dispositivo è disconnesso dalla sorgente elettrica per tale motivo il comportamento temporale BEHAVIOR evolve come . In questa situazione la transizione “T1” che di solito è abilitata, risulta inibita dalla rete di Petri in quanto l‟elettrodomestico è stato bloccato dal controllore. C. un contatore per connettere la presa (switch on); D. un contatore per disconnettere la presa (switch off). La rete di Petri del singolo elettrodomestico si presenta così: Figura 5.4 - PN componente PLUG controllata Il compito del controllore, è perciò quello di monitorare e controllare gli agenti, interagendo con la componente PLUG di ciascun elettrodomestico. Nella sezione A monitora la potenza consumata e quella disponibile dalla rete agendo sulle transizioni “T1” e ”T2”, mentre per disconnettere o connettere l‟agente incide sullo scatto delle transizioni “T3” e “T4”. Per 49 queste ultime transizioni, lo scatto può avvenire solo dopo il reset del countdown del dispositivo, rappresentato dalle sotto reti D e C. Quando le risorse consumate all‟interno del sistema eccedono la soglia consentita (situazione di overload), la disconnessione non è immediata ma dipende dal numero di token ND . Se nel sistema domotico sono diversi gli agenti che consumano potenza elettrica, allora concorreranno nello switch off, in situazione di overload, secondo le priorità stabilite. La disconnessione degli elettrodomestici con più bassa priorità permette al sistema di uscire dalla situazione di overload e il countdown per i rimanenti agenti viene terminato e resettato al valore di default. Per gli agenti disconnessi viene attivato invece il secondo countdown e viene concessa potenza elettrica all‟elettrodomestico associato quando la priorità di switch on risulta essere azzerata. Questa strategia implementata dal controllore centralizzato, permette di evitare grossi picchi e larghe oscillazioni nei consumi dell‟intero sistema. Per ciascun elettrodomestico i valori delle priorità, sono impostati in termini di token (1 token = 1 minuto). In situazione di overload, ossia al superamento della soglia contrattuale di potenza (3300 W nel caso ENEL Italia), il controllore abilita lo scatto della transizione T5 (nella parte D relativa alla rete di Petri del singolo elettrodomestico) per tutti i dispositivi attivi e controlla il numero di token nello stato P4 (indicante la priorità di switch off). L‟azzeramento di tale valore, comporterà l‟inibizione del relativo elettrodomestico da parte del controllore. Se la situazione di overload risulta non superare un tempo di tolleranza T, le priorità verranno resettate al valore iniziale. Una volta inibito uno o più elettrodomestici, al fine di riportare i consumi al di sotto della soglia di overload, il controllore inizia a monitorare le priorità di switch on (delle sole prese inibite) e a scalarne il valore fino all‟annullamento che comporta la riattivazione della presa corrispondente e quindi la concessione di potenza all‟elettrodomestico associato. Il controllore descritto è stato costruito seguendo le stesse regole di modellazione che sono state utilizzate per costruire gli altri Agenti, è infatti costituito da un diagramma a stato successivamente implementato all‟interno dell‟ambiente di programmazione. Statechart del controllore Lo statechart del controllore è costituito da due macrostati in composizione ortogonale, i cui stati e transizioni al loro interno, sono sensibili all‟evento Timeout PN. Si riporta in Figura 5.5 il Block Diagram degli Statechart in implementato in ambiente LabVIEW. Viene qui riportata la rappresentazione del controllore realizzata utilizzando solo il linguaggio di programmazione. Essa è però del tutto identica a quella che potrebbe essere data con uno State diagram dell‟UML. 50 Figura 5.5 - Statechart del controllore in LabVIEW Nel macrostato Counter, gli stati sono i seguenti: Tick Tock Il macrostato Control presenta invece i seguenti stati: Lettura prese Scala priorità switch off Switch off Scala priorità switch on Switch on La transizione in ingresso allo statechart del controllore richiama il metodo PN_Init in cui vengono inizializzati gli attributi della classe PN tra cui Path PN, Power place, Numero Prese, Prese bticino e Token Time. Inoltre viene resettato il workspace di Matlab tramite la funzione clear all e viene resettato il contatore Tick-Tock. Il macrostato Counter è stato realizzato per sincronizzare lo statechart con la rete di Petri. Il passaggio dallo stato Tick allo stato Tock, e viceversa, causa l‟incremento di un contatore che viene confrontato con il TokenTime della Petri net. Il macrostato Control invece, raccoglie l‟intera anima del controllore in cui vengono lette le prese attive e monitorato lo stato di potenza totale, consumata dall‟ intero impianto. Presenta una struttura speculare in cui si oppongono la parte legata allo switch off con quella di switch on. 51 Il cuore di questo macrostato è lo stato Lettura prese, che come entry action richiama il metodo omonimo della PN class mentre in uscita esegue la chiamata ai metodi Switch off e Switch on. Lettura prese consiste in un MATLABScript in cui sono raccolte le seguenti operazioni: Caricare le matrici che descrivono lo stato della rete di Petri, ossia le matrici di Incidenza, d‟ Inibizione e il vettore della Marcatura totale. Aggiornare la rete di Petri con lo stato delle prese presenti nel sistema. Analizzare la matrice di Inibizione e il vettore della marcatura totale per controllare se le operazioni che si vogliono effettuare sulla rete di Petri siano effettivamente permesse. In caso negativo verrà generato un messaggio popup di errore, che blocca l‟intera simulazione e visualizza a schermo la rete di Petri, per analizzare l‟operazione proibita. Verificare la presenza di overload, o sovraccarico dell‟impianto, e l‟entità dell‟ esubero della potenza consumata rispetto a quella contrattuale ( P max_ disp Pcontr 1.1 3.3KW P max_ disp Pcontr 1.1 3.3KW ). Se tale valore dovesse superare la soglia di Px ( Px P max_ disp) Pcontr K max 3.3 1.27 4.2KW ) si anticipa l‟intervento del controllore, riducendo il TokenTime da 60s a 3s in modo tale da velocizzare lo Switch off delle prese attive e rientrare al di sotto del 4,2 kW in massimo 4 minuti. In questo modo sarà possibile evitare lo scatto del contatore. Figura 5.6 - Algoritmo di intervento del contatore ENEL 52 Leggere i consumi degli elettrodomestici collegati a ciascuna presa e in tal caso attuarla e aggiornarne lo stato. Lo stato delle prese è infatti discriminabile tra tre valori come mostrato in Figura 5.7: o ON, se l‟elettrodomestico ad esso connesso sta consumando potenza; o STOP, se la presa è stata inibita dall‟intervento del controllore; o OFF, se l‟elettrodomestico associato alla presa non consuma potenza ma risulta spento. Figura 5.7 - Interfaccia grafica relativa al controllore Verifica il consumo presente nel Power place nella reti di Petri con quello misurato e in caso di divario, quest‟ultimo viene interpretato come il consumo di un Generic appliance non controllato ma semplicemente misurato all‟interno del sistema (ad esempio un phon sotto il controllo dell‟utente). In uscita dal MATLABScript vengono forniti: Un vettore contenente lo stato delle prese attive, chiamato preseON; Un led indicante lo stato di overload dell‟impianto; Un led errore che visualizza l‟eventuale errore commesso, nel richiedere alla rete di Petri di effettuare un‟operazione proibita ; Il metodo Switch off, richiamato invece in uscita dallo stato Lettura prese, si occupa di analizzare tutto il vettore delle preseON e verificare se si è scalata la priorità di Switch off ad esse associata. Se tale evento dovesse essere accaduto, verrebbe posta a true la variabile di switchOFF. 53 Il metodo Switch on, richiamato a seguire Switch off , effettua un‟ operazione analoga al metodo precedente, con la differenza che analizza la priorità di Switch on. Se tale evento dovesse accadere, verrebbe posta a true la variabile di switchON. Lo stato Lettura prese presenta anche una serie di auto anelli le cui transizioni permettono di richiamare dei metodi specifici della classe PN. Partendo dal basso ci sono: la prima transizione che richiama il metodo View PN che permette la visualizzazione della rete di Petri del sistema aggiornata. La seconda transizione richiama il metodo Reset_SwitchON_2 dopo aver verificato che ci sia overload e che si sia verificato uno switchON. In uscita da tale transizione si resetta il contatore del Tick-Tock. La terza transizione richiama il metodo Reset_priorità_switch_off dopo aver verificato che non ci sia overload e che si sia verificato uno switchOFF. In uscita da tale transizione si resetta il contatore del Tick-Tock. La quarta transizione invece non richiama alcun metodo ma verifica semplicemente che durante un decremento della priorità di switch on, si sia verificato un overload. In uscita da tale transizione si resetta il contatore del TickTock. Il metodo Reset_SwitchON_2, all‟interno di un altro MATLABScript, esegue le seguenti operazioni: il ripristino della priorità di switch on per tutte le prese inibite l‟annullamento della variabile di switchON. Il metodo Reset_priorità_switch_off, all‟interno di un MathScript, esegue le seguenti operazioni: il reset della priorità di switch off sia per le prese attive che per quelle inibite. l‟annullamento della variabile di switchOFF. Dallo stato Lettura prese è possibile, per mezzo di due transizioni, giungere negli stati Scala_prorità_switch_off e Scala_prorità_switch_on. La transizione che da Lettura prese giunge in Scala_prorità_switch_off verifica che lo stato del contatore Tick-Tock sia non 54 inferiore al Token Time, il cui valore viene letto tramite il metodo omonimo Read TokenTime. Se tale disuguaglianza fosse verificata in concomitanza con la presenza di overload, la transizione risulterebbe abilitata. La transizione invece, che da Lettura prese giunge in Scala_prorità_switch_on verifica che lo stato del contatore Tick-Tock sia non inferiore al Token Time. Se tale disuguaglianza fosse verificata in concomitanza con l‟assenza di overload, la transizione risulterebbe abilitata. Nello stato Scala_priorità_switch_off si richiama il metodo omonimo in cui si analizza tutto il vettore delle preseON e si scala di un token la priorità di switch off per ciascuna presa attiva, settata nella rete di Petri. All‟ annullamento della priorità di swicth off, si prosegue nel considerare la presa in questione, da inibire. Il suo indice verrà posto all‟interno di una variabile di appoggio definita preseOFF e la presa viene disattivata forzatamente ponendola pari a -1 nel vettore preseON, in modo che l‟elettrodomestico associato non è più in grado di assorbire potenza. Dallo stato Scala_priorità_switch_off è possibile raggiungere lo stato Switch_off oppure tornare nello stato Lettura_prese, resettando il contatore Tick-Tock. La transizione di passaggio allo stato Switch_off viene abilitata solo se il vettore preseOFF presenta un valore maggiore di -1 (valore di default), che indicherebbe in tal caso il numero della presa da inibire. Lo stato Switch_off richiama al suo interno il metodo Inibizione che inibisce le prese indicate nel vettore preseOFF e pone a zero il corrispondente valore nel vettore delle preseON. Ciò indica che la presa in questione è arrestata e sull‟interfaccia utente del controllore si accenderà il relativo led di stop. Dallo stato Switch_off si raggiunge Lettura prese per mezzo di un transizione che esegue al suo interno le seguenti azioni: Reset del contatore Tick-Tock. La variabile arrestato è posta a true, ad indicare che è stata arrestata una presa. Viene richiamato il metodo Reset_priorità_switch_off (spiegato in precedenza). Nello stato Scala_priorità_switch_on si richiama il metodo omonimo in cui si analizza tutto il vettore delle preseON e si scala di un token la priorità di Switch on per le sole prese inibite. All‟ annullamento della priorità di swicth on, si prosegue nel considerare la presa in questione, da riattivare. Il suo indice viene registrato all‟interno della variabile presaTimeOUT e inoltre, tutti gli indici delle prese inibite o da riattivare, all‟interno del vettore preseOFF, vengono ripristinate a -1. Dallo stato Scala_priorità_switch_off è possibile raggiungere lo stato Switch_off oppure tornare nello stato Lettura_prese, resettando il contatore Tick-Tock. La transizione di passaggio allo stato Switch_on viene abilitata solo se la variabile presaTimeOUT presenta un valore diverso da -1 (valore di default), che indicherebbe in tal caso il numero della presa da riattivare. Nello stato Switch_on si richiama il metodo Riabilitazione che al suo interno: 55 Riabilita la presa ponendo a -1 il valore corrispondente nel vettore preseON e in prese OFF. La presa viene disinibita nella rete di Petri. Se ci sono ancora delle prese inibite allora la variabile arrestato rimane a true altrimenti viene resettata a false. Il passaggio dallo stato Switch_on a Lettura_prese è garantito da una transizione che all‟abilitazione esegue la chiamata di Reset_priorità_switch_on e resetta il contatore TickTock. Il metodo Reset_priorità_switch_on si occupa di annullare la variabile switchON e resettare sia la priorità di switch on della sola presa arrestata che la variabile presaTimeOUT. La transizione in uscita dallo statechart è sensibile sia all‟ ingresso Stop che alla variabile errore, terminando così la simulazione. 5.3.2 Stima e gestione delle taglie energetiche Questa seconda politica di controllo testata è connessa alla collaborazione instauratasi con il centro di ricerche dell‟ENEL IIR di Pisa, il quale ha richiesto all‟interno della collaborazione la possibilità di andare a monitorare non il solo consumo istantaneo di tutti gli elettrodomestici della casa, ma anche di valutare la quantità di energia (Wh) consumata nelle mensilità delle simulazioni per poter valutare al variare del comportamento degli abitanti della casa potesse variare il profilo energetico dell‟appartamento. Per soddisfare le richieste avanzate nel contesto di questa collaborazione è stato necessario mettere appunto 3 strumenti fondamentali: Un sistema di stima della taglia minima necessaria in base alla conformazione della casa e alla abitudini degli abitanti Un sistema di stima online della quantità di energia che verrà consumata durante il mese a seconda del comportamento adottato dagli abitanti durante il corso della mensilità. Sulla base di questa stima verrà implementato anche un sistema di allarme in grado di avvisare l‟utente se sta tenendo un comportamento scorretto che lo porterà ad esaurire la sua taglia Un sistema di scheduling in grado di modellare il comportamento degli abitanti di un appartamento durante un mese di simulazione, permettendo l‟avvio temporizzato di elettrodomestici (evitando la presenza di un utente che li faccia avviare manualmente durante le simulazioni) La strategia per la gestione energetica ha un orizzonte mensile sulla base dei contratti a taglie. 56 La strategia energetica ha come ipotesi: HP1: La taglia durante un mese di 28 giorni mette a disposizione N Wh dove N varia con la taglia HP2: Nel sistema sono presenti: Prese attuate e misurate Prese non controllare Misura del consumo complessivo della casa HP3: Per ogni prese attuata/misurata è noto il consumo nominale di un ciclo di funzionamento dell‟elettrodomestico ad essa collegato HP4: I consumi degli elettrodomestici controllati e non verranno organizzati in serbatoi contenenti gettoni di energia. La somma di tutti i gettoni contenuti nei serbatoi sarà pari al valore N di Wh relativo alla taglia dell‟utente. Sulla base di stime di consumi mensili ottenute della descrizione delle abitudini dell‟utente, verrà stimato il contenuto dei serbatoi di energia con i quali è possibile andare a gestire i consumi durante i singoli giorni e settimane del mese con l‟obiettivo di informare l‟utente se il suo andamento dei consumi lo porterà o meno in via previsionale ad uno sforamento della sua taglia. Le informazioni che l‟utente deve fornire al supervisore sono: il numero di volte che un dato elettrodomestico viene utilizzato durante la settimana il numero di inquilini della casa Riserve di energia (serbatoi) I serbatoi in cui verrà suddivisa la quantità N di Wh messi a disposizione dalla taglia sono 3: 1. Rbase : contiene la riserva di energia giornaliera che verrà utilizzata per assicurare l‟alimentazione di carichi non modulabili con prese note (ad es. impianto di illuminazione …). 57 2. R1 : contiene la riserva di energia settimanale da cui attingere per l‟alimentazione di carichi modulabili con prese attuabili (ad es. lavatrice, lavastoviglie, forno, frigorifero …). 3. R2 : riserva mensile utilizzabile per fronteggiare una richiesta energetica settimanale non copribile con Rbase e R1 Il contenuto dei 3 serbatoi viene aggiornato ogni 15 minuti dal sistema e a fine giornata eventuali gettoni residui presenti in Rbase e a fine di ogni settimana eventuali gettoni residui R1 confluiranno nel serbatoio R 2 . Questo algoritmo suppone che le linee di alimentazione dei carichi Rbase siano misurabili almeno come complemento tra l‟energia presenti in consumata dai carichi di R1 e la totalità di energia consumata. Verranno indicati con nbase, n1 , n2 rispettivamente i gettoni energia presenti nei serbatoi Rbase , R1 , R2 . Come detto nell‟HP4 la somma dei gettoni contenuta in tutti i serbatoi deve essere pari al numero N di Wh forniti dalla taglia, perciò tali gettoni sono tra loro legati dalla seguente relazione: (5-1) 28 4 j 1 i 1 nbase( j) n1 (i) n2 (i) N dove nbase e considerato giornaliero, mentre n1 , n2 sono settimanali. Partendo dalla definizione dei serbatoi verrà adesso illustrato l‟algoritmo con il quale il loro contenuto viene aggiornato, presupponendo che il loro valore di inizializzazione rispetti le ipotesi date. Prendendo in considerazione il significato degli indici nbase , n1 , n2 è possibile risalire al loro valore in modo parametrico. nbase(j) 58 Rappresenta il consumo energetico giornaliero della casa (giorno “j”) ipotizzato nella condizione di utilizzo di soli carichi fondamentali e non distaccabili che per questo motivo sono monitorati e non direttamente coinvolti nell‟azione di controllo. Il valore stimato per ogni giorno j-esimo verrà indicato come nˆbase e sarà costante per ogni giorno j. Mentre il valore per ogni giorno “j” che verrà aggiornato ogni 15 minuti sulla base delle misure di potenza verrà indicato come nbase,15 ( j ) . Infine il contenuto del serbatoio di Rbase a fine di ogni giornata j verrà indicato come nbase( j ) n1(i) Rappresenta il consumo di energia della settimana “i” ipotizzato sulla base delle abitudini degli utenti della casa (elettrodomestici con task rimandabili che solitamente vengono fatti partire con ciclo settimanale). Tale stima rimane costante per ognuna delle 4 settimane dei 28 giorni del mese e viene resettato al valore stimato all‟inizio di ogni nuova settimana. Il valore stimato per ogni settimana i verrà indicato come nˆ1 ,tale valore sarà costante per ogni settimana i. Invece il valore per ogni settimana “i” che verrà aggiornato ogni 15 minuti sulle misure di potenza degli elettrodomestici sotto controllo verrà indicato come n1,15 (i ) Il contenuto del serbatoio di R1 a fine di ogni settimana i verrà indicato come n1 (i) Taglia La taglia “T” iniziale viene scelta sulla base dei valori stimati di nˆbase e nˆ1 in modo tale da rendere disponibile almeno un numero di token energia, pari ad un giorno in più di richiesta energetica stimata, espressa da nˆ1 . Si fornirà quindi almeno un nˆ1 di energia in più ogni 7 settimana, per creare un margine di sicurezza che possa tenere conto del comportamenti degli abitanti della casa che si discostano dalle abitudini da loro espresse. Il margine di sicurezza in questione è il magazzino R2 che conterrà un numero di token energia n2 tale da rispettare il vincolo di fornire un nˆ1 in più ogni settimana. 7 59 n2(i) Rappresenta il numero di gettoni di energia che sono resi disponibili ogni settimana “i” del mese oltre agli nbase e n1. E‟ il contenuto del serbatoio R2 che funge da margine di sicurezza per tenere conto di eventuali consumi non programmati dall‟utente. Al valore di n2 verrà poi: aggiunta a inizio di ogni giorno “j” la porzione di nbase(j-1) non consumata durante il giorno “j-1” o sottratta ogni 15 minuti la quantità di energia consumata che ha superato il valore di nˆbase stimato; aggiunta a inizio di ogni settimana “i” la porzione di n 1(i-1) non consumata durante la settimana “i-1” o sottratta ogni 15 minuti la quantità di energia consumata che ha superato il valore di nˆ1 stimato. Il valore per ogni settimana “i” e giorno “j” che verrà aggiornato ogni 15 minuti sulle misure di potenza reali verrà indicato come n2,15 (i, j ) . Il contenuto del serbatoio di R2 a fine di ogni settimana “i” verrà indicato come n2 (i ) . Mantenendo parametrica la dimensione della taglia dell‟utente, tenendo presente il significato e la notazione di nbase e n1 precedentemente descritti e tenendo conto di eventuali residui o sovra consumi dei giorni (nbase(i-1)) o delle settimane (n1(j-1)) precedenti dello stesso mese, è possibile calcolarne il valore di n2 parametricamente a partire da ogni inizio mese (mese di 28 giorni) e aggiornare il suo valore ogni 15 minuti in caso di consumi che vadano ad esaurire i serbatoi Rbase o R1. Andremo adesso ad indicare con n2,init(i) il contenuto del serbatoio R2 ad inizio di ogni settimana i. (5-2) nbase(0 ) n1 (0) 0 n2,init (i ) nˆ 2 n2 i 1 n2,15 (i, j ) n2,init (i ) nbase, 2 n1, 2 dove nbase, 2 nˆbase nbase,15 ( j ) se altrimenti e dove nˆbase nbase,15 ( j ) 0 nbase, 2 0 n1, 2 nˆ1 n1,15 (i) se nˆ1 n1,15 (i) 0 altrimenti n1, 2 0 60 Algoritmo Taglie Strategia Sulla base di quanto detto, la strategia di gestione energetica si pone l‟obiettivo di : Indicare e garantire la disponibilità energetica minima giornaliera e settimanale ( Rbase + R1 ); Indicare e forzare (distacco prese) il rispetto della taglia. Questa strategia pone le basi per lo sviluppo di un meccanismo di apprendimento delle abitudini dell‟utente con lo scopo di aggiornare i gettoni n1 presenti nella riserva R1 (i). Monitoraggio Ogni 15 minuti, sulla base dell‟andamento di nbase , n1 e n2 , verrà fornita all‟utente un‟informazione sull‟andamento del consumo di energia (% di tagli consumata) e sullo stato di dei 3 serbatoi Rbase , R1 , R2 . A fine simulazione (dopo 28 giorni simulati) il simulatore comunicherà la taglia più vicina ai consumi che sono stati misurati durante il mese. La quantità di gettoni in eccesso (o che non è stata sufficiente) a fine di ogni mese, n 2(4), potrà essere usata per comprendere meglio se l‟utente si trova o meno in una taglia che rispetta le sue abitudini e permetterà di eseguire un tuning del valore di inizializzazione n1 che sintetizza le abitudini espresse dall‟utente. Infatti il valore di n1 stimato potrebbe non essere corretto se il comportamento reale tenuto dell‟utente durante il mese non rispecchia le abitudini descritte dallo stesso. Una correzione di n1 sulla base delle misure di Potenza ed Energia eseguite nel mese potrà portare ad un miglioramento della sua stima e al suggerimento di una taglia più adeguata alle abitudini dell‟utente. Il valore di n2(4) può essere interpretato nel seguente modo: 1. Se n2 (4) 0 e n2 (4) n2,init (i) 4 significa che durante il mese sono stati effettivamente consumati solo i serbatoi Rbase e R1 e il serbatoio R2 (surplus di energia messo a disposizione per eventuali eccessi di consumo) non è stato utilizzato; 61 2. Se n2 (4) 0 e n2 (4) n2,init (i) 4 significa che durante il mese è stata consumata effettivamente solo una parte dei serbatoi Rbase e R1 e il serbatoio R2 , oltre a non essere stato utilizzato, è stato incrementato; 3. Se n2 (4) 0 e n2 (4) n2,init (i) 4 significa che durante il mese è stato consumato effettivamente tutto il contenuto dei serbatoi Rbase e R1 e il serbatoio R2 è stato in parte intaccato; 4. Se n2 (4) 0 e n2 (4) n2,init (i) 4 significa che durante il mese oltre a tutto il contenuto dei serbatoi Rbase, R1 e R2 è stato consumato effettivamente un ulteriore quantitativo di energia che ha fatto sforare la taglia scelta. L‟informazione che il Supervisore dell‟energia darà all‟utente sarà: nel caso (1), se n2(4) non si discosta molto da n2,init (i ) 4 , che la taglia scelta a inizio simulazione è la più appropriata e che è stata rispettata; nel caso (2), se la differenza n2 (4) n2,init (i) 4 sottratta al valore di n1 stimato è tale da permettere una riduzione di taglia senza uno sforamento, di ridurre la taglia alla più piccola che non sarebbe stata sforata; nel caso (3), se il n2 (4) n2,init (i) (cioè ho consumato 3/4 del bonus assegnato con R2), di aumentare la taglia alla successiva più grande che mi allontana dal rischio di sforamento; nel caso (4), se la differenza n2 (4) n2,init (i) 4 sottratta con segno al valore di n1 stimato è tale da necessitare un aumento di taglia per evitare uno sforamento, di aumentare la taglia alla prima più grande che non avrebbe fatto sforare la taglia. Stima di nbase , n1 , n2 e della Taglia Utilizzando le abitudini fornite dall‟utente è possibile andare a stimare un valore iniziale per il contenuto dei serbatoi Rbase , R1 e R2 . 62 nˆbase, Annuo Questo valore può essere stimato inizialmente prendendo in considerazione il numero di abitanti della casa riprendendo la stima di consumo di 1, 2, 3, 4 o più persone in una casa dal sito ENEL (http://www.enel.it/enelenergia/itIT/casa/offerte/energia_tuttocompreso/simulatore/). Sul sito viene fornito il consumo stimato annuale che indicheremo come nˆbase, Annuo . Per risalire al valore giornaliero è viene effettuato il calcolo: (5-3) nˆbase nˆbase, Annuo 365 nˆ1 Questo valore può essere stimato mantenendo parametrico: il numero di volte che ognuno degli “n” elettrodomestici controllati presenti nella casa viene fatto partire settimanalmente “mp” (valore diverso per ogni tipologia di elettrodomestico “p”); il valore del consumo nominale di energia durante l‟esecuzione di un loro ciclo “XWh,p” (valore diverso per ogni tipologia di elettrodomestico “p”). è possibile andare a calcolare il valore stimato settimanale di n1: (5-4) n mp nˆ1 X Wh, p p 1 b 1 Tale valore sarà costante per ogni settimana i. Taglia Come abbiamo detto in precedenza la dimensione della taglia T (numero di N Wh disponibili) ad inizio simulazione viene scelta sulla base dei valori stimati di nˆbase e nˆ1 in modo tale da rendere disponibile almeno un numero di token energia, pari ad un giorno in più di richiesta energetica stimata, espressa da nˆ1 . Si fornirà quindi almeno un nˆ1 di 7 energia in più ogni settimana. Per rispettare questo vincolo viene in modo automatico scelta la taglia con cui inizializzare la simulazione, scegliendo la taglia più piccola tale che: 63 (5-5) nˆ N nˆbase 28 nˆ1 1 4 7 nˆ 2 Il valore di n2 è inizializzato ad un valore costante ad ogni inizio della settimana i-esima del mese e tale stima iniziale verrà indicata con nˆ 2 . è possibile andare a calcolare tale valore stimato settimanale come: (5-6) nˆ N nˆbase 28 nˆ1 1 4 7 nˆ 2 4 Algoritmo ricorsivo Seguendo i passi dell‟algoritmo che abbiamo ottenuto avremo un‟inizializzazione del contenuto di R2 pari al solo valore stimato nˆ 2 la prima settimana. Successivamente durante tutta la prima settimana, ogni 15 minuti viene aggiornato il contenuto di R2 a seconda che i serbatoi Rbase e R1 siano stati esauriti o meno. A fine di ogni giornata “j” viene riversato in R2 il residuo del giorno precedente presente in Rbase, cioè nbase(j-1). A fine della prima settimana viene reinizializzato il serbatoio R2 al valore stimato di nˆ 2 e in più viene riversando al suo interno il residuo della prima settimana in R2 , cioè n 2(1). Questo processo si ripete ricorsivamente per tutte e 4 le settimane dei 28 giorni del mese come descritto dall‟Algoritmo Taglie. Intervento del Supervisore Energia Il sistema di Supervisione dell‟Energia, sulla base dei valori di nbase , n1 e n2 che vengono aggiornati ogni 15 minuti, potrà decidere di sospendere gli elettrodomestici sotto controllo (n1) distaccandoli se il loro consumo previsionale per completare il loro ciclo standard di funzionamento rende negativo il valore di n2(i) . La previsione sul consumo energetico di un elettrodomestico per terminare un suo ciclo standard di funzionamento come abbiamo detto può essere ottenuto in diversi modi: potrebbe essere inserito il valore in Wh di un ciclo di funzionamento direttamente dall‟utente/installatore 64 potrebbe essere appresa dal simulatore/emulatore andando a misurare i consumi della presa a cui e collegato un dato elettrodomestico si potrebbe utilizzare una tabella dei consumi standard degli elettrodomestici in base alla loro classe di appartenenze (A, A+ …) Nel caso particolare di questo simulatore la previsione di consumo per ogni elettrodomestico è stata ottenuta ipotizzato che gli elettrodomestici siano tutti di classe A: http://it.wikipedia.org/wiki/Classe_di_consumo_energetico 5.3.3 Massimizzazione autoconsumo Utilizzando l‟estensione del concetto di agente presentato in 4.4 gli elementi del sistema domotico possono essere in grado anche di generare loro stessi una parte della risorsa condivisa con il resto del sistema. Questa maggiore libertà di modellazione permette da un lato di ampliare gli scenari che l‟ambiente di simulazione è in grado di gestire e apre le porte verso l‟esplorazione di nuove politiche di controllo che possano raggiungere obiettivi che prima non potevano essere proposti. L‟evoluzione del ambiente di simulazione in questa direzione si inserisce in un contesto di collaborazione che si è instaurato con il Gruppo Loccioni (AEA Srl), il quale all‟interno della sua settore Green Energy dispone di un complesso sistema domotico (LeafHouse [18]) dove oltre ad essere monitorati i carichi degli elettrodomestici e degli appartamenti, sono presenti un sistema fotovoltaico e un sistema di accumulo basato su batterie al Litio. L‟obiettivo che ci si proposto di raggiungere è stato quello di utilizzare le tecniche di modellazione affinate con il lavoro pregresso del gruppo di ricerca del LabMACS per riuscire a modellare un sistema complesso come quello della LeafHouse e testare sul modello in simulazione un algoritmo di controllo in grado di massimizzare la quantità di energia autoprodotta dal complesso domotico residenziale in presso LeafHouse. Costruzione modello della LeafHouse Il primo passo nel processo di modellazione è stato quello di mettere assieme una struttura, utilizzando gli strumenti presentati in 4.3, nella quale coesistessero generatori e consumatori di energia. La struttura della LeafHouse Loccioni è nel dettaglio composta da: 2 appartamenti, ognuno con un contatore ENEL e un contratto da 3 KW 1 sistema a pannelli fotovoltaici della potenza di 5 KW 1 sistema di accumulo con batterie al Litio di capacità 120 Ah 65 Gli elementi appena elencanti hanno differenti componenti BEHAVIOR. Nel caso degli appartamento (consumo elettrico) e dei pannelli (generazione elettrica) sono stati modellati con l‟accesso a dati storicizzati di precedenti mensilità (acquisiti e memorizzati nel 2012). Nel caso invece della batteria, è stato realizzato in LabVIEW un suo modello approssimato, in grado di simulare l‟andamento della quantità assorbita/rilasciata dalla batteria stessa durante i suoi cicli di carica/scarica. Tale modello non verrà direttamente descritto in questa tesi, poiché parte di un lavoro di ricerca portato avanti parallelamente a quello presentato in questo lavoro. La modellazione della componente PLUG degli elementi che compongono la LeafHouse è stato invece frutto di un accurato processo di design della PN in grado di modellare ogni Agente, per poi successivamente unire tutti gli agenti tra loro in un'unica rete che permettesse di modellare l‟interazione con la risorsa da parte di tutti gli elementi coinvolti. Un primo passo è stato quello di collassare in unico posto i consumi di tutti gli elettrodomestici, in modo da poter rappresentare il concetto di appartamento all‟interno della PN dell‟intero sistema Figura 5.8. Figura 5.8 - Creazione modello PN di un appartamento 66 Il risultato è stato un‟unica PN, capace di fare interagire con la risorsa tutti gli agenti e contenente al suo interno i vincoli di funzionamento di ogni Agente, permettendo a livello di evoluzione della marcatura solo scatti che portassero verso azioni fisicamente realizzabili nel sistema. La struttura della PN complessiva è riportata in Figura 5.9, dove con App1 e App2 si fa riferimento ai due carichi modellati nel sistema relativi ai 2 appartamenti della LeafHouse. Figura 5.9 - PN della LeafHouse Nella Appendice A.3 viene riportata un immagine dove è possibile identificare nel dettaglio la funzione di tutte le componenti della PN del sistema complessivo. Azione di controllo A livello di singole PN degli agenti sono stati inseriti tutti quei vincoli fisici che erano propri del funzionamento degli agenti modellati (e.g. massima potenza erogabile dai pannelli, massima energia accumulabile/erogabile dalla batteria). Sulla PN ottenuta dopo il processo di fusione tra le PLUG sono successivamente stati inseriti ulteriori vincoli logici, in grado di condurre l‟evoluzione dello stato della marcatura della PN complessiva verso una precisa direzione, quella dell‟autoconsumo. Sono state per questo inserite delle priorità imposte con archi inibitori e posti monitor per privilegiare il consumo di energia autoprodotta nei confronti di quella acquistata dal provider nazionale (e.g. ENEL). Il processo di inserimento dei vincoli ha reso la PN complessiva più ricca di connessioni tra i posti e le transizioni (Figura 5.10), riducendo le dimensioni dell‟albero di raggiungibilità della sua marcatura. La riduzione del albero si è spinta al punto tale da permettere in tutte le 67 possibili situazioni una sola azione, lasciando una sola transizione abilita e imponendo in questo modo un evoluzione forzata della marcatura, in questo particolare caso verso il massimo autoconsumo. Figura 5.10 - Inserimento vincoli Autoconsumo Le caratteristiche della PN nella sua ultima configurazione e la sua capacità di permettere un evoluzione solo verso soluzioni che massimizzino l‟autoconsumo la rendo un sistema di controllo vero e proprio. Infatti sulla base di informazioni datele in ingresso, come la marcatura iniziale e la richiesta di scatto di transizioni collegate ai BEHAVIOR degli Agenti, la PN è in grado di rispondere con un‟azione di controllo ben precisa lasciando abilitata la sola transizione che rappresenti un comportamento orientato all‟autoconsumo. La procedura che permette di utilizzare la PN come sistema di controllo è sintetizzata in Figura 5.11. Figura 5.11 - Sistema di controllo basato su PN Una breve descrizione del software che implementa questa terza sistema di controllo è data nel capitolo 6. 68 6. Software di Simulazione/Emulazione In questo capitolo verranno presentate le soluzioni software adottate per implementare quanto anticipato nei precedenti capitoli e verrà descritto l‟ambiente di simulazione/emulazione HAS-Sim, punto di arrivo di sviluppi successivi di strumenti per lo studio, l‟analisi e la sintesi di algoritmi di gestione per ambienti domotici. Assieme all‟ambiente di simulazione verrà anche mostrato come le strategie di controllo, descritte in 5.3, siano state inserite all‟interno del software per essere validate. Il simulatore HAS-Sim realizzato, è basato sull‟ idea dell‟interazione continua, seppur semplice, di molti elementi che genera comportamenti globali molto vari e complessi caratteristici di quei sistemi difficilmente descrivibili attraverso l‟approccio classico. Si sviluppa secondo queste regole il simulatore HAS-Sim, che è stato realizzato in LabVIEW perché efficace nella costruzione di soluzioni personalizzate per sistemi scientifici ed ingegneristici garantendo buone performance e flessibilità, attraverso un linguaggio di programmazione che non si presenta né difficile né complesso. Questo approccio mette a disposizione un ambiente modulare in grado di fornire uno strumento per la realizzazione di svariati ambiento domotici, all‟intero del quale è possibile aggiungere e rimuovere vari dispositivi, con l‟aggiunta o la rimozione dei rispettivi moduli. Si può affermare che nel caso particolare del simulatore HAS-Sim sia composto da moduli indipendenti che condividono risorse comuni, energia elettrica, attraverso la definizione di opportune variabili globali che ne stabiliscono le disponibilità. La gestione delle variabili globali per un elettrodomestico, riesce a fornire servizi come: comunicare agli altri il proprio assorbimento istantaneo di energia elettrica, il consumo totale del sistema di potenza elettrica, interrompere o sospendere il proprio funzionamento, ecc. Ai modelli simulati di elettrodomestici verranno affiancati anche elettrodomestici reali, il cui BEHAVIOR non è presente all‟interno del software, ma proviene da acquisizioni fatte da smart plug connesse al software si simulazione/emulazione. Le operazioni di scambio d‟informazioni attraverso il bus di comunicazione con plug reali si traducono quindi nell‟ambiente simulato nella scrittura e nella lettura di semplici variabili globali. La descrizione del software sarà divisa in due parti: 1. la prima sarà relativa al HAS-Sim nella sua versione 2.8, punto di arrivo della collaborazione con il centro di ricerche ENEL IIR e che integra nel suo software quanto descritto nelle sezioni 4.2, 5.1, 5.2, 5.3.1 e 5.3.2 relative alla gestione dei picchi di potenza istantanea e al mantenimento della taglia energetica 2. la seconda sarà relativa ad un‟estensione della versione 2.8 dell‟HAS-Sim, integrando nel suo software quanto descritto nelle sezioni 4.4 e 5.3.3 relative alla 69 gestione di sistemi con più provider energetici e alla massimizzazione dell‟autoconsumo dell‟energia prodotta in modo autonomo dal sistema domotico Per rendere più chiara la descrizione del software e l‟implementazione degli strumenti presentati nel capitolo 3, verrà portato un esempio di ambiente costruito per ottimizzare le gestioni di potenza istantanea (W) e dell‟energia (Wh) elettriche all‟interno di una moderna abitazione nel capitolo 7. 6.1 Gestione potenza istantanea e taglia energetica Il simulatore HAS-Sim nella sua versione 2.8 è possibile installarlo in un qualsiasi PC dotato di una versione di LabVIEW 2011, una di Matlab 6.5 e una Java Virtual Machine 6 o superiori. Tutti i file a cui si fa riferimento in questa sezione possono essere installati da un setup file “HAS-Sim-v2.8-Installer.exe” sviluppato per un‟agevole distribuzione del software su molteplici piattaforme hardware. Il simulatore HAS-Sim 2.8 mette a disposizione le seguenti funzionalità: Gestione della Potenza istantanea [W]: o per evitare il distacco forzato da parte del contatore ENEL GEM GET1 nella seconda, terza e quarta condizione di carico descritte in Figura 5.6 assegnando le priorità di distacco degli elettrodomestici o Gestione dei watt come token di una PN, la cui struttura rappresenta le prese elettriche e le loro dinamiche di distacco in base alle priorità indicate dell‟utente o Disconnessione/Riconnessione elettrodomestici in base alla priorità assegnate dall‟utente Gestione dell’Energia [Wh]: o Stima della taglia di appartenenza dell‟utente, tenendo conto del numero di abitanti dell‟appartamento, del tipo di elettrodomestici presenti nella casa e del numero delle volte che mediamente vengono fatti partire settimanalmente (informazioni fornite dall‟utente) 70 o Calcolo del consumo di energia dell‟intera abitazione e degli elettrodomestici principali (Lavatrice, Lavastoviglie, Forno, Frigorifero) o Suggerimenti su come mantenere la taglia stimata utilizzando l‟Algoritmo Taglie nella sezione 5.3.2 o Comunicazione all‟utente tramite interfaccia grafica del livello di consumo della propria taglia e dell‟eventuale previsione di sforamento della stessa ne caso fossero mantenute le abitudini fino a quel momento 6.1.1 Costruzione dell‟ambiente di simulazione in LabVIEW Al fine di costruire in LabVIEW un ambiente domotico da prendere come campione per testare e validare strategie di controllo e gestione è necessario partire dalla costruzione di un LabVIEW project con i diversi componenti messi a disposizione dal tool HAS-Sim v2.8. Il progetto LabVIEW contenente il simulatore è contenuto nel file z_HAS_SIM.lvproj, presente nella cartella dove è stato installato il simulatore, (e.g. “C:\Programmi\HASSim\HAS_SIM_2.8”). E‟ possibile aprire il progetto anche dal menù Start: “Start Programmi HAS-Sim HAS-Sim v2.8” Il progetto una volta aperto si presenta a video con la seguente schermata in cui sono elencati tutti i vi realizzati: Figura 6.1 - LabVIEW project HAS-Sim 2.8 71 All‟interno del progetto si trovano diverse directory virtuali che organizzano i diversi componenti software del simulatore in categorie. I moduli software (file .VI di LabVIEW) sono così organizzati nelle directory (Figura 6.2): Appliances: elettrodomestici modellati dal simulatore che possono essere utilizzati all‟interno dell‟ambiente domotico simulato Classes: classi UML che descrivono gli attributi e i metodi che caratterizzano gli elettrodomestici e i sistemi di controllo presenti nel simulatore Real PLUGs: vi per la gestione delle PLUG reali che possono essere gestite dal simulatore Statecharts: sono i diagrammi a stati nel formato fornito da LabVIEW che implementano operativamente l‟evoluzione a stati del comportamento di elettrodomestici e sistemi di controlli, rispecchiando la loro formalizzazione UML Utiltiy e Utility2: insieme di VI che sono stati realizzati per implementare operazioni fondamentali che vengono richiamate dagli altri VI del progetto Figura 6.2 - Dettaglio LabVIEW project HAS-Sim 2.8 72 Nel dettaglio abbiamo: come Appliances la lavastoviglie (DW: DW_PN.vi), il frigorifero (FRIDGE: FRDIGE_PN.vi), il forno (OVEN: OVEN_PN.vi) e la lavatrice (WM: WM_PN.vi). L‟acronimo PN sta per Petri Net ed identifica che gli elettrodomestici hanno alla loro base una modellazione con rete di Petri del loro comportamento elettrico e che nella loro implementazione sono stati resi reattivi ad eventi collegati all‟evoluzione della rete di Petri del sistema come Classes le classi relative agli elettrodomestici (DW_PN.lvclass, FRDIGE_PN.lvclass, OVEN_PN.lvclass e WM_PN.lvclass) e la classe di gestione delle reti di Petri (PN.lvclass). La classe PN.lvclass mette a disposizione metodi per l‟accesso alla rete (lettura marcatura, scatto transizioni) e attributi che la definiscono (path del file .RDP dove è salvata) come Real PLUGs dei VI realizzati per inserire nel simulatore un‟interfaccia con fino a 3 elettrodomestici reali. Per fare ciò per ognuno degli elettrodomestici è stato fornito: o un VI dove inserire il codice che vada a spegnere l‟elettrodomestico (e.g. “APPLIANCE_x_Off.vi”) o un VI dove inserire il codice che vada ad accendere l‟elettrodomestico (e.g. “APPLIANCE_x_On.vi”) o un VI dove inserire il codice che vada a leggere l‟attuale consumo di potenza dell‟elettrodomestico (e.g. “APPLIANCE_x_Read_Power.vi”) come Statecharts i diagrammi a stati di tutti gli elettrodomestici (DW_PN.lvsc, FRDIGE_PN.lvsc, OVEN_PN.lvsc e WM_PN.lvsc) più il diagramma a stati del controllore della potenza istantanea (controllore.lvsc) dove è implementata la politica di controllo con cui viene deciso se disconnettere o meno gli elettrodomestici che stanno consumando energia in caso si verifichi una situazione di overload. Come utility principali sono presenti i .VI di controllo: o controllore.vi: monitorizza e gestisce la potenza istantanea, l‟evoluzione della rete di Petri del sistema e si occupa dell‟attuazione della connessione/disconnessione delle prese (PLUG) a cui sono connessi gli elettrodomestici misurati o PL_PN.vi: è la componente del simulare che rappresenta il contatore/limitatore (Power Limiter). Fondamentalmente si occupa di misurare il consumo energetico dell‟intero sistema e condividere le 73 o informazioni raccolte su di una lavagna condivisa (Global VI.vi all‟interno di della directory virtuale Utility). Dalla sua interfaccia grafica è possibile osservare il consumo di energia istantaneo supervisor.vi: in questo VI è implementato l‟Algoritmo taglie descritto in 5.3.2. I valori dei serbatoi, che vengono aggiornati ogni 15 minuti, vengono mandati sulla dashboard rappresentata dal Globa VI.vi nella directory virtuale Utility nella directory principale My computer è presente il VI di interfaccia utente che fornisce l‟accesso alle funzionalità del simulatore: o user_interface.vi: è il VI con il quale è possibile gestire l‟intero simulatore. In modo automatico accede alle funzionalità offerte degli altri componenti software presenti nel progetto e inizializza e porta a termine la simulazione. Salvando, quando richiesto e a al termine della simulazione, su file i dati relativi alle grandezze in gioco (consumo di potenza [W], stato delle prese, energia [Wh], stato dei serbatoi relativi all‟Algoritmo taglie). Questo VI mette a disposizione anche un‟interfaccia grafica che permette di monitorare l‟andamento della simulazione durante la sua esecuzione. La descrizione del suo utilizzo e interpretazione dei risultati verrà descritta nei seguenti capitoli. Nell‟attuale versione dell‟HAS-Sim, gli elettrodomestici resi disponibili nella casa virtuale non possono essere avviati dall‟utente singolarmente attraverso il loro VI, presente nella directory “Appliances”, ma solo attraverso la schedulazione dell‟attività nel pannello del “user_interface.vi”, nella implementazione di esempio si è scelto di gestire gli scheduling mensili attraverso quattro settimane su quattro file separati modellati sugli scenari proposti. All‟interno di questi file sono riportati gli istanti di avvio di tutti gli elettrodomestici con un campionamento degli eventi ogni 30 minuti. Inoltre nei file che vengono caricati (yymm_HOME1_FAM1_Wkx.txt) sono presenti anche le abitudini di comportamento settimanali espresse dall‟utente, oltre che il numero degli abitanti della casa. Il modo con cui andare a compilare i file che devono essere dati in ingresso al simulatore al suo avvio verrà descritto nei prossimi paragrafi. Elettrodomestici simulati Come visto dai file che caratterizzano gli elettrodomestici, ogni appliance è caratterizzato dai seguenti elementi relativamente alla sua componente BEHAVIOR: Uno Statechart (file con estensione lvsc); Una classe UML (file con estensione lvclass); Un VI che richiama lo Statechart e la classe UML relative 74 Il Front Panel del VI relativo ad un elettrodomestico è rappresentato dagli indicatori di stato dello stesso (Start, Pause) e da un counter che visualizza le fasi di lavoro e il tempo necessario per il loro completamento. Come esempio si riporta di seguito il VI della Washing Machine (WM). Figura 6.3 - Front Panel WM Come si può osservare dall‟immagine, non è presente sul Front Panel un pulsante di Start dell‟elettrodomestico, ma soltanto il led che indica lo stato di accensione. Questo perché come già accennato, l‟avvio degli elettrodomestici è gestito dal pannello principale di scenario in simulazione che va ha leggere gli istanti ai quali far avviare i diversi appliance da dei file di testo che vengono richiesti dal simulatore all‟avvio di ogni simulazione. Ogni elettrodomestico oltre alla componente BEHAVIOR avrà anche una sua componente PLUG, la quale è stata modellata con un PN. La particolare PN che è dietro ad ogni elettrodomestico (simulato e reale che sia) è quella introdotta in 5.3.1 (Figura 5.4). Le priorità associate alle diverse PLUG del sistema domotico vengono caricate dagli stessi file di testo che vengono richiesti dal simulatore ad inizio di ogni simulazione. In questi file, come vedremo in seguito, dovrà essere riportato il numero di token da posizionare nei posti P4 (Switch On) e P6 (Switch Off) relativi ad ogni PLUG. In questo modo il simulatore avrà l‟informazione necessaria per andare a modificare la rete di Petri che prende in ingresso (il file “PNFUS.RDP” presente nella directory del progetto LabVIEW dal simulatore) inserendo in modo automatico il numero di token indicato nei posti relativi alle priorità di Switch Off e Switch On. La costruzione del BEHAVIOR di ciascun terminale è descritta da una sequenza di fasi di lavoro, con relativi consumi di energia e tempistiche, per mezzo degli strumenti Statechart e UML. Essi lavoreranno in background al vi del dispositivo, che ne visualizza i risultati sul 75 proprio Front Panel. Nella Figura 6.4 viene portato ad esempio lo Statechart della Washing Machine, al cui interno sono richiamati i metodi, della classe relativa, per la scrittura e lettura degli attributi associati alla potenza consumata e alla fase di lavoro in cui l‟elettrodomestico opera in relazione con la componente PLUG. Figura 6.4 - Struttura BEHAVIOR/PLUG HAS-Sim 2.8 Si ha un‟ analoga schematizzazione per gli altri elettrodomestici presenti nel sistema domotico in questione, tranne che per il Generic Appliance che presenta un struttura molto più semplice, in quanto non viene controllato. La sua rete di Petri si riduce alla sola parte riguardante il consumo di energia. Figura 6.5 - Generic Appliance 76 Ciascun elettrodomestico possiede pertanto una sua struttura BEHAVIOR e una PLUG. La prima appartiene al comportamento del singolo dispositivo mentre la seconda, viene utilizzata dal controllore per attuare le strategie di consumo energia. A tal fine, è richiesta una rete di Petri totale con cui è possibile monitorare tutti gli elettrodomestici di cui è costituito il sistema domotico simulato. Le singole reti possono essere fuse tra loro con i metodi della teoria classica. In questo caso è stato adoperato un tool di fusione descritto nella sezione 4.3, che permette di ottenere la seguente rete in Figura 6.6. Figura 6.6 - PN dell'intero sistema domotico È possibile notare come le singole reti di Petri siano state fuse insieme in modo tale da condividere un posto chiamato Power Place. 77 I token presenti nel Power Place della PN totale fusa sono 140 (1 token = 100 W) e rappresentano la Plim (il massimo valore di potenza istantanea che può essere erogato dal contatore GEM, Figura 5.6), è questa la massima potenza supportata dal sistema prima di generare un errore, mostrato da un popup, che termina la simulazione. Questo errore rappresenta l‟eventuale intervento del contatore ENEL o una situazione di malfunzionamento (eventuale marcatura negativa della PN), rintracciabile poi nella PN salvata dal programma e apribile con il software Pipe descritto di seguito. Figura 6.7 - POPUP errore marcatura negativa PN All‟interno del controllore è già settato il limite contrattuale disponibile di 3300W prima di un overload. L‟apertura della rete durante la simulazione può avvenire per mezzo del software PIPE usando gli apposti pulsanti presenti nel Front Panel di “user_interface.vi” (“Save PN”, “Open PIPE”). Per poter visualizzare la rete di Petri ad un preciso istante è necessario premere il pulsante “Save PN” (che andrà a fare un‟ istantanea della rete al momento della richiesta, aggiornando il file della rete che si trova all‟interno della cartella del progetto sotto il nome PNFUSA.xml) prima di andarla ad aprire con PIPE premendo il pulsante “Open PIPE”. Il programma PIPE è già contenuto all‟interno della cartella del progetto al path “.\pipe25_rc5\pipe.bat”. Se si vuole accedere all‟ultima rete di Petri salvata mentre si è fuori dalla simulazione è necessario far partire il programma PIPE utilizzando il file .bat “.\pipe25_rc5\pipe.bat.”, Figura 6.8. 78 Figura 6.8 - Apertura PN con PIPE 6.1.2 Gestione potenza istantanea All‟interno del progetto incluso come esempio è stato sviluppato un modulo software (che verrà chiamato Controllore) in grado di eseguire una strategia di controllo per la gestione dei sovraccarichi all‟interno del sistema domotico. Esso si basa sul controllo delle priorità assegnate a ciascun elettrodomestico (vedi sezione 5.3.1). In situazione di overload, ossia al superamento della soglia contrattuale di potenza (3300 W), il controllore fa scattare la transizione T5 (nella parte D relativa alla PN del singolo elettrodomestico) per tutti i dispositivi attivi e controlla il numero di token nel posto P4 (indicante la priorità di switch Off). L‟azzeramento di tale valore, comporterà l‟inibizione del relativo elettrodomestico da parte del controllore con lo scatto di T3. Se la situazione di overload risulta non superare il periodo temporale che porterebbe allo Switch Off di qualche elettrodomestico, le priorità di Switch Off verranno resettate al valore iniziale. Una volta inibito uno o più elettrodomestici, al fine di riportare i consumi del sistema domotico al di sotto della soglia di overload, il controllore inizia a monitorare le priorità di Switch On (delle sole prese inibite) monitorando il posto P6 e a scalandone il valore con lo scatto di T7 fino all‟azzeramento, che comporta la riattivazione della presa corrispondente (scatto di T4) e quindi la concessione di potenza all‟elettrodomestico associato. Il popup di errore, in precedenza descritto, viene gestito sempre dal controllore che monitora continuamente le prese dell‟intera rete e il consumo totale del sistema. 79 A differenza degli elettrodomestici, il controllore è costituito da: Uno Statechart; Un vi che richiama lo Statechart. Il vi del controllore, mostra sul Front Panel le prese del sistema simulato, il loro stato, un indicatore luminoso di overload e il numero di sovraccarichi avvenuti durante la simulazione. Lo stato di ciascuna presa è rappresentato per mezzo di tre led, così posizionati: il primo (in alto) è verde e indica lo stato On della presa, in quanto l‟elettrodomestico a cui essa è associata, sta richiedendo potenza al contatore; il secondo è rosso, e visualizza lo stato di inibizione della presa da parte del controllore, in seguito ad un overload; il terzo led è verde, e segna lo stato Off dell‟elettrodomestico a cui è associata. Di seguito si visualizza una situazione critica in cui è possibile notare che la presa 1 è inibita (led rosso) e le prese 2 e 3 sono in stato di On e la potenza richiesta al contatore supera la fascia di energia contrattuale disponibile, causando un overload del sistema, come si può notare dal led omonimo acceso. Figura 6.9 - Front Panel controllore.vi riportata dalla user_interface.vi In questa situazione le prese sono associate agli elettrodomestici come di seguito: PLUG 1 – Washing machine; 80 PLUG 2 – Dishwasher; PLUG 3 – Oven; PLUG 4 – Fridge; PLUG 5 – Appliance 1; PLUG 6 – Appliance 2; PLUG 7 – Appliance 3. Dove gli Appliance 1, 2 e 3 rappresentano delle prese lasciate libere dove poter collegare fino a 3 nuovi elettrodomestici realizzati come quelli collegati alle prese dalla 1 alla 4, oppure utilizzando i VI della directory “Real PLUGs” è possibile inserire degli elettrodomestici reali. L‟informazione fornita dal controllore sullo stato di overload e sullo stato delle PLUG viene inviata alla dashboard del simulatore (Global VI.vi). Tale informazione viene poi prelevata dall‟interfaccia utente (user_interface.vi) per essere comunicata all‟utente. 6.1.3 Stima e gestione delle taglie energetiche Questo modulo software del simulatore implementa l‟algoritmo della gestione taglie descritto nella sezione 5.3.2. Al suo interno vengono calcolati e gestiti i serbatoi di energia (Wh) nbase , n1 , n2 e in base al valore che tali serbatoi assumono durante la simulazione vengono comunicati dei comandi di disconnessione delle PLUG al controllore, il quale si occuperà della disconnessione effettiva, in concomitanza con la sua politica di controllo basata sulla gestione della potenza istantanea (W). Il modulo software dedicato a questi compiti verrà chiamata Supervisore e agisce in parallelo al Controllore, ed è per questo motivo che non va direttamente lui a disconnettere le prese, ma rimanda la richiesta al controllore, in modo tale da evitare conflitti tra le due politiche di controllo. Infatti nel caso una presa fosse in fase di Switch Off, la richiesta di un comando di disconnessione da parte del Supervisore viene interpretata dal Controllore come una priorità da soddisfare immediatamente, andando a sospendere il countdown di switch off (resettando la relativa priorità) e disconnettendo immediatamente la PLUG. Il Supervisore si occupa anche di interpretare i valori dei serbatoi durante e a fine simulazione, in modo da poter sintetizzare una serie di informazioni con cui andare ad avvisare l‟utente sullo stato dei consumi. Gli avvisi forniti dal Supervisore sono: 1. la percentuale di taglia consumata nel mese (aggiornata ogni 15 minuti) - Figura 6.10: a. valore numerico b. indicatore grafico 2. La percentuale di energia presente nei serbatoi Rbase, R1 e R2 - Figura 6.11 81 3. la previsione di sforamento o meno della taglia a seconda dello storico di consumi dei precedenti 3 giorni. Ciò viene fatto analizzando i dati che vengono raccolti nel VI “print_data.vi” e che poi vengono passati ogni 15 min al VI “stima n2.vi”. Il risultato fornito da quest‟ultimo VI a fine di ogni giornata viene utilizzato per selezionare lo stato del semaforo - Figura 6.12 Queste informazioni vengono inviate sulla dashboard del simulatore (Gloabl VI.vi) e raccolte dalla ”user_interface.vi” per essere comunicate all‟utente. Figura 6.10 - Percentuale di taglia consumata nel mese Figura 6.11 - Livelli dei serbatoi in percentuale Per quanto riguarda il semaforo nel dettaglio: il led verde indica che previsionalmente la taglia stimata non verrà oltrepassata il led arancione indica che previsionalmente la taglia stimata verrà oltrepassata (n 2 della settimana corrente verrà esaurito prima di terminare la settimana) 82 il led rosso indica che la taglia è stata oltrepassata in base allo stato di n2 (n2 della corrente settimana è stato esaurito) Figura 6.12 - Semaforo di allerta superamento taglia Il tasto “Variable scheduling” accanto al semaforo permette di rendere il simulatore sensibile allo stato del semaforo. In questo modo il simulatore cambierà lo scheduling da seguire in base al semaforo, andando a selezionare uno scheduling di basso consumo nel caso che il led sia arancione o rosso. Gli scheduling in questione dovranno essere caricati ad inizio simulazione e comprendere due diversi scheduling, uno relativo ad un comportamento standard degli utenti e uno relativo ad un comportamento di basso consumo energetico. Questo secondo comportamento dovrebbe rispecchiare una eventuale variazione nelle abitudini energetiche degli abitanti della casa nel caso in cui il sistema allerta superamento taglia indicasse un comportamento scorretto. 6.1.4 Scheduling comportamento abitanti All‟avvio di ogni simulazione l‟HAS-Sim 2.8 richiede tramite 2 popup di selezionare 2 directory. Di default il simulatore visualizzerà come cartella da dove caricare gli scheduling la cartella “SCHEDULING” presente nella stessa cartella del progetto del simulatore: 1. La prima directory che deve essere scelta è quella contenente i 4 file .txt che descrivono le abitudini degli inquilini e lo scheduling NORMAL degli elettrodomestici nelle 4 settimana (istante di avviamento programmato per ogni elettrodomestico, campionato ogni 30 minuti). Con NORMAL si intende lo scheduling principale, cioè quello che rispecchia il comportamento dell‟utente che si vuole simulare. 83 2. La seconda directory che deve essere scelta è quella contenente i 4 file .txt che descrivono le abitudini degli inquilini e lo scheduling LOW degli elettrodomestici nelle 4 settimana (istante di avviamento programmato per ogni elettrodomestico, campionato ogni 30 minuti). Con LOW si intende lo scheduling secondario a basso consumo energetico, cioè quello che rispecchia un comportamento di risparmio dell‟utente che verrebbe intrapreso nel caso in cui l‟utente stesso fosse sensibile allo stato del semaforo che stima lo sforamento della taglia. I file degli scheduling dovranno avere il seguente formato: AAMM_HOMEx_FAMy_WK1.txt AAMM_HOMEx_FAMy_WK2.txt AAMM_HOMEx_FAMy_WK3.txt AAMM_HOMEx_FAMy_WK4.txt (e.g. 1107_HOME1_FAM1_WK1.txt) Per rendere più agevole la compilazione di questi file si è preferito non andare a modificare direttamente i file .txt, ma sono stati forniti 4 file .xls (EXCEL) che possono essere utilizzati per inserire i dati della particolare simulazione che si vuole far partire. Una volta terminata la compilazione, i file EXCEL devono essere salvati come file di “Testo (delimitato da tabulazioni) (*.txt)” per generare i file che possono essere accettati dal simulatore. I valori di “x” e “y” che indicano il tipo di casa ed il tipo di famiglia che abita nella casa sono scelti a piacimento dall‟operatore che deve andare a compilare i file. Tali valori saranno utili per poter catalogare i tipi di scenari che verranno creati. Il simulatore non andrà ad utilizzare direttamente questi valori, ma differenzierà tra di loro i file solo in base alla settimana che rappresentano, in modo da inserire lo scheduling nella simulazione in modo cronologico. Di seguito verrà descritta la procedura di compilazione dei file .xls, la conversione in .txt e il loro collocamento nella cartella del progetto LabVIEW del simulatore/emulatore HASSim 2.8. Compilazione file .xls Per l‟inserimento delle abitudini e dello scheduling vengono forniti all‟interno del progetto 4 file .xls che possono essere editati per inserire le informazioni relative al proprio scenario. I file si trovano, rispetto al progetto del simulatore, all‟interno della cartella: “.\SCHEDULING\HOME1_FAM1\XLS”. Tali file devono essere compilati tutti e 4 per poter andare a definire lo scheduling delle 4 settimane del mese. Per quanto riguarda invece le abitudini di utilizzo degli elettrodomestici 84 e le priorità di disconnessione a loro associate è necessario inserirle nel primo file (.*WK1.xls). Nei successivi 3 file possono essere ricopiate per completezza, ma il simulatore andrà a leggere le informazioni sulle abitudini solamente dal primo file. All‟interno del file devono essere compilate le seguenti sezioni (Figura 6.13): 1. PRIORITY: priorità di Switch Off di WM, DW, OVEN, FRIDGE e APPLIANCE 1,2 e 3. Rappresentano il numero di token ND che andrà posizionato nel posto P4 delle sotto delle PLUG relative agli elettrodomestici. Il valore di NC verrà calcolato ed inserito automaticamente dal controllore in modo complementare andando ad associare una priorità di Switch On inversa a quella di Switch Off scelta dall‟utente. 2. HABITS: a. TENANTS: è il numero di persone che vive nella casa b. APPLIANCES WEEKLY FREQUENCY: è il numero di volte che un elettrodomestico verrà fatto partire durante la settimana. E‟ una previsione che da l‟utente sulla base delle sue abitudini c. SCHEDULING: sono gli istanti ai quali l‟utente farà partire i diversi elettrodomestici. Sulla base di questa informazione il simulatore andrà a fare partire gli elettrodomestici in modo automatico. E‟ per questo motivo che gli elettrodomestici non possono essere più avviati manualmente, ma solamente messi in pausa, infatti la fase di avvio è gestita dal simulatore e schedulata partendo dalle informazioni fornite da un operatore che ha compilato il file .xls La schedulazione è stata campionata ogni 30 minuti e gli elettrodomestici partiranno in automatico all‟inizio della mezzora in cui è stato indicato con un “1” che debbano partire. Nel caso viene trovato uno “0” il simulatore non interviene. La procedura si ripete identica per i 7 giorni della settimana e per i 4 elettrodomestici schedulati (WM, DW, OVEN, FRIDGE). Da notare che nel caso del FRIDGE il ciclo di funzionamento non ha termine, perciò dal primo istante in cui viene avviato rimane sempre accesso. 85 Figura 6.13 - AAMM_HOMEx_FAMy_WK1.xls Conversione da .xls a .txt Una volta compilati, i 4 file .xls devono essere convertiti in .txt per essere accettati dal simulare. Per fare ciò è sufficiente per ognuna delle settimane: aprire il relativo file .xls fare click su “Salva con nome” prima di salvare selezionare come “Tipo file” “Testo (delimitato da tabulazione) (*.txt)” dare un nome compatibile con la struttura “AAMM_HOMEx_FAMy_WKz.txt” cliccare su Salva I file TXT salvati, una volta aperti, si presenteranno come in Figura 6.14. Figura 6.14 - AAMM_HOMEx_FAMy_WK1.txt 86 I 4 file .txt salvati dovranno essere collocati in una stessa cartella. La cartella deve avere un nome compatibile con quello dei file .txt, cioè con la struttura “AAMM_HOMEx_FAMy” (per esempio 1107_HOME1_FAM1) e deve essere collocata all‟interno della cartella SCHEDULING presente nella cartella che contiene il progetto LabVIEW del simulatore (e.g. “C:\Program Files\HAS-Sim\HAS_SIM_2.8\SCHEDULING”). All‟avvio del simulatore verrà richiesto di indicare 2 cartelle contenenti questo tipo di file per poter caricare le abitudini e scheduling NORLAM e LOW. 6.1.5 Interfaccia utente Una possibile interfaccia utente del simulatore è stata implementata nel modulo software “user_interface.vi”.Qui si riportano le principali funzioni con un esempio di un possibile sviluppo Questo VI si occupa di: caricare i file che definiscono lo scheduling dell‟utilizzo degli elettrodomestici e le abitudini dell‟utente inizializzare variabili che vengono condivise con gli altri vi attraverso il “Global VI.vi” avviare: o PL/PN o Controllore o Supervisore gestire il tempo della simulazione sincronizzando tutti i moduli chiamati gestire il salvataggio dei dati a fine simulazione esibire e gestire l‟andamento della simulazione: o mostrando sul suo Front Panel: il grafico della potenza istantanea consumata le priorità degli elettrodomestici scelte dall‟utente le abitudini di utilizzo degli elettrodomestici scelte dall‟utente il numero di abitanti la taglia stimata sulla base delle abitudini caricate da file l‟avanzamento del tempo della simulazione lo stato delle 7 PLUG controllate lo stato dei serbatoi la percentuale di taglia consumata il semaforo che mostra la stima dell‟andamento di n2 comunicando se previsionalmente la teglia sarà sufficiente o permettendo: di controllare la quantità di energia consumata dal Generic appliance di controllare l‟accelerazione temporale della simulazione 87 di rendere il simulatore sensibile allo stato del semaforo di salvare i dati della simulazione in ogni momento di salvare lo stato della rete di Petri ad un certo istante di mostrare la rete di Petri salvata abilitare o disabilitare le politiche di controllo disponibili (controllore e supervisore) Front panel Aprendo il VI “user_interface.vi” viene aperte l‟interfaccia in Figura 6.15, dove sono presenti tutti gli indicatori ed i controlli descritti. Figura 6.15 - Interfaccia utente (user_interface.vi) 88 Sezioni “user_interface.vi” Il Front Panel del VI user_interface.vi è stato suddiviso in 5 sezioni. Nel dettaglio le sezioni sono le seguenti: 1. Abitudini utente caricate da file - sono i dati sulle abitudini di consumo normali degli abitanti della casa, contenute nei file di testo caricati come “NORMAL SCHEDULING” . Vengono riportati: a. il numero di inquilini b. il numero di volte che ogni elettrodomestico viene fatto partire durante una settimana c. le priorità di Switch Off degli elettrodomestici d. la taglia che è stata stimata sulla base delle abitudini 2. Monitoraggio W, Taglia e Serbatoi – sono le informazioni relative ai consumi. Vengono riportati: a. il consumo istantaneo di potenza in watt in un grafico b. la percentuale di energia della taglia che è stata consumata fino a quel momento c. la percentuale di gettoni energia presenti nei serbatoi Rbase , R1 , R2 d. un semaforo che indica la previsione sull‟andamento di n2 E‟ inoltre possibile selezionare con il tasto “Variable scheduling” la sensibilità del simulatore allo stato del semaforo. Se il tasto è premuto il simulatore selezionerà un profilo di basso consumo a semaforo giallo o rosso 3. Monitoraggio e gestione del tempo della simulazione – informazione e controllo sul tempo della simulazione. E‟ possibile: a. avere informazione sul giorno ora e minuto e secondo si simulazione attuale (in modo testuale e grafico). Una volta che la barra gialla raggiunge la fine del 28° giorno la simulazione termina. b. controllare la velocità di simulazione, accelerando rispetto alla velocità reale di esecuzione 4. Azioni di controllo permesse all’utente – L‟utente durante la simulazione può: a. attivare o disattivare le politiche di controllo (contemporaneamente sia il Supervisore energia che il Controllore potenza) usando il tasto “Controller & Supervisor ON/OFF” b. decidere se a fine simulazione (dopo 28 giorni o premendo il tasto STOP) devono essere salvati i dati sui consumi di energia, potenza e sui serbatoi premendo il tasto “Save DATA” 89 c. salvare istantaneamente i dati della simulazione senza interromperla premendo sui tasti “Save Power NOW” (salvataggio dei dati della potenza istantanea – salvataggio istantaneo) “Save Energy NOW” (salvataggio dei dati dell‟energia – salvataggio al termine del primo multipolo successivo di 15 min del tempo di simulazione) d. fare una fotografia del sistema premendo il tasto “Save PN” andando a salvare la rete di Petri all‟istante del click e. aprire il software PIPE presente nella cartella del progetto premendo il tasto “Open PIPE” per andare ad aprire la rete di Petri salvata facendo click su “Save PN” precedentemente descritto f. variare la quantità watt assorbiti da un generico dispositivo, non controllato, presente nella rete domotica, la cui potenza può essere variata durante la simulazione muovendo la barra orizzontale “Not controlled appliance [W]” g. terminare la simulazione premendo il tasto “STOP”. Nel caso sia stato attivato il salvataggio dei dati premendo “Save DATA” verranno salvati dei file .txt contenenti i valori assunti durante la simulazione della potenza, dall‟energia e da i serbatoi 5. PLUG controllate – mostra lo stato delle prese dell‟ambiente simulato a. sono presenti 7 prese il cui stato può essere OFF (nessun assorbimento misurato – led basso verde), ON (la prese assorbe energia – led alto verde) o STOP (la presa è stata inibita dal controllore – led centrale rosso) b. viene indicato lo stato di overload (consumo in potenza istantanea del sistema > 3300 watt) 6.1.6 Avvio di una simulazione/emulazione Il simulatore/emulatore “HAS-Sim 2.8” è contenuto nella directory dove è stato installato con l‟installer “HAS-Sim-v2.8-Installer.exe” (e.g. “C:\Programmi\HASSim\HAS_SIM_2.8”). Verranno adesso indicati i passi per eseguire una simulazione completa. Avvio simulatore Aprire il progetto LabVIEW facendo click due volte sul file “Z_HAS_SIM.lvproj” presente nella cartella del simulatore (o andate sotto “Start Programmi HAS-Sim HAS-Sim v2.8” 1. aprire il vi “user_interface.vi” presente nel progetto 90 2. mandare in Run “user_interface.vi” 3. selezionare la cartella dove sono state descritte le abitudini e lo scheduling NORMAL degli elettrodomestici indicando come “Current Folder” la cartella contenente i 4 file TXT descritti in precedenza: raggiungere l‟interno della cartella contenente i 4 file TXT e fare click su “Current Folder”. 4. Selezionare la cartella dove sono state descritte le abitudini e lo scheduling LOW allo stesso modo: Gestione simulazione Durante la simulazione l‟operatore attraverso il Front Panel della user_interface.vi può interagire con l‟HAS-Sim 2.8. Le funzioni principali della user_interface sono: Pulsante “Controller & Supervisor ON/OFF” - Permette di decidere di disattivare il Controllore e il Supervisore (di default i sistemi di controllo sono attivi, ma deselezionando il pulsante è possibile far andare il sistema senza controllo, ma con il solo monitoraggio dell‟Energia e aggiornamento del contenuto dei serbatoi). Una volta disattivato il controllo non è più possibile andare a riattivarlo poiché vengono persi degli eventi nell‟evoluzione della rete di Petri che non possono essere recuperati una volta che la simulazione è in Run. Pulsante “Save DATA” - Permette di decidere di salvare o meno dei file TXT dove sono stati riportati i consumi di Potenza, Energia, il contenuto dei serbatoi, lo stato del semaforo e delle PLUG. Se questo tasto è premuto si ha che: o Al termine della simulazione vengono salvati tutti i dati di Potenza ed Energia o Se la simulazione viene arrestata con il pulsante STOP vengono salvati tutti i dati di Potenza ed Energia o Se viene premuto il pulsante “Save Power NOW” o “Save Energy NOW” vengono salvati rispettivamente i dati sulla Potenza e sull‟Energia Se il pulsante “Save DATA” invece non è premuto, in nessun caso vengono salvati i dati. Pulsante “Save Power NOW” - salva istantaneamente tutti i dati relativi alla potenza senza interrompere la simulazione: o Consumo di potenza campionato al secondo o Stato delle 7 plug campionato al secondo 91 Pulsante “Save Energy NOW” – salva, al prossimo multiplo di 15 min del tempo di simulazione, tutti i dati relativi all‟energia senza interrompere la simulazione: o Consumo energetico complessivo campionato ogni 15 min o Serbatoi n1, n2 e nbase campionati ogni 15 min o Stato del semaforo campionato ogni 15 min Pulsante “Save PN” - Permettere di salvare la rete di Petri che rappresenta una fotografica del sistema al momento del click sul pulsante Pulsante “Open PIPE” - Permette di aprire il programma PIPE con cui andare ad aprire e visualizzare la rete di Petri salvata con il pulsate “Save PN” Pointer Slide control “Not controller appliance [W]”- Permette di selezionare il numero di watt che sono consumati da un elettrodomestico generico non controllato (per esempio l‟illuminazione della casa) Pointer Slide control “Acceleration” - Permette di accelerare la velocità della simulazione rispetto al tempo reale (valore massimo di accelerazione dipendente dall‟hardware del PC su cui gira il simulatore). Nel caso l‟accelerazione desiderata non fosse raggiungibile il simulatore accelera fino alla massima velocità che riesce a raggiungere (Suggerimento non superare un accelerazione di 20x) Pulsante “Variable scheduling” - rende il simulatore sensibili allo stato del semaforo passando allo scheduling LOW nel caso in cui il semaforo sia Arancione o Rosso Pulsante “STOP” - Termina la simulazione e salva i dati accumulati su file TXT se al momento del click il pulsante “Save DATA” risulta premuto Dati salvati A fine simulazione (terminati i 28 giorni o dopo aver premuto del tasto “STOP”) se il tasto “Save DATA” risulta premuto, vengono salvati 8 file TXT relativi alla Potenza e 5 file TXT relativi all‟Energia. Cliccando invece su “Save Power NOW” vengono salvati i soli 8 file relativi alla Potenza, cliccando invece su “Save Energy NOW” vengono salvati i soli 5 file relativi all‟Energia I file verranno salvati all‟interno della directory “SAVED FILES” presente nella stessa cartella del progetto del simulatore. 92 Salvataggio della Potenza: AAMMGG_HHMMSS_plot_power.txt o Contiene un campionamento al secondo della potenza istantanea [W] consumata AAMMGG_HHMMSS_plot_PLUG1.txt/AAMMGG_HHMMSS_plot_PLUG7.txt o Vengono salvati 7 file TXT contenenti un campionamento al secondo dello stato di ogni relativa presa (Stato di ON, OFF o STOP) Salvataggio dell‟Energia: AAMMGG_HHMMSS_plot_energy.txt o Contiene un campionamento ogni 15 minuti (900 secondi) dell‟energia [Wh] consumata dall‟intero sistema AAMMGG_HHMMSS_plot_n_base.txt o Contiene un campionamento ogni 15 minuti (900 secondi) dell‟energia [Wh] consumata dalla componente del sistema complementare a quella sotto controllo. Rappresenta il valore nbase,15 descritto in. AAMMGG_HHMMSS_plot_n1.txt o Contiene un campionamento ogni 15 minuti (900 secondi) dell‟energia [Wh] consumata dalla componente del sistema sotto controllo (elettrodomestici controllati). Rappresenta il valore n1,15. AAMMGG_HHMMSS_plot_n2.txt o Contiene un campionamento ogni 15 minuti (900 secondi) dell‟energia [Wh] ancora disponibile come energia di riserva. Rappresenta il valore n2,15. AAMMGG_HHMMSS_plot_semaphore.txt o Contiene un campionamento ogni 15 minuti (900 secondi) della stima della quantità di energia che verrà prelevata/riversata in n2 nei prossimi giorni. Questa stima si basa sulla media di quantità di energia prelevata/riversata in n2 nei 3 giorni precedenti. Sulla base di questo valore varierà lo stato del semaforo mostrato sulla “user_intercafe.vi” 6.2 Massimizzazione autoconsumo Al simulatore descritto nella precedente sezione (HAS-Sim 2.8) sono state apportate delle modifiche per poter inserire al posto dei sistemi di controllo Controllore/Supervisore il 93 sistema di gestione basato sulla strategia di controllo di massimizzazione dell‟autoconsumo descritta in 5.3.3. Le modifiche hanno permesso la sostituzione della PN in Figura 6.6 con quella in Figura 5.9 (PN di un sistema in cui sono presenti Agenti in grado di erogare energia). E‟ stato per questo necessario riscrivere il MATLABScript del controllore e ridisegnare lo Statechart del Controllore in modo da essere compatibile con la nuova PN. A livello implementativo il codice implementato nel MATLABScript esegue le seguenti operazioni ogni volta che avviene una variazione nel comportamento dei diversi BEHAVIOR: 1. Verifica quali posti sono coinvolti nella variazione di consumo energetico (quale agente ha avuto una variazione del suo carico e della quantità di energia erogata) 2. Individua tutte le transizione che in qualche modo possono essere coinvolte (scattando) nell‟aggiornamento della marcatura dei posti che hanno avuto una variazione di consumo/erogazione. 3. Analizzando la struttura della PN (che è stata costruita con l‟obiettivo di evolvere solo verso stati che massimizzino l‟autoconsumo) individuare l‟unica transizione attiva che scattando riduce la differenza tra marcatura attuale e stato del sistema, rispettando la legge di controllo desiderata Tali operazioni sono state rappresentate in Figura 5.11 e implementate in ambiente LabVIEW/Matlab. L‟interfaccia dell‟HAS-Sim è stata modificata per adattarsi alle diverse funzionalità richiesta dalla nuova politica di controllo. In Figura 6.16 è riportata una parte di tale interfaccia nella quale è visibile uno solo dei grafici disegnati durante l‟esecuzione dal software. Infatti durante la sua esecuzione sull‟interfaccia sono visualizzati contemporaneamente gli andamenti energetici di: Produzione fotovoltaica Carichi degli appartamenti Energia venduta all‟ENEL Energia acquistata da ENEL Livello di carica della batteria Quantità di energia fotovoltaica utilizzata per caricare la batteria 94 Figura 6.16 - Interfaccia utente HAS-Sim LeafHouse 6.2.1 Strumento di dimensionamento Con in mano uno strumento come quello presentato in 6.2, è stato possibile predisporre esperimenti con l‟obiettivo non solamente di massimizzare la l‟autoconsumo, ma anche di identificare quale possa essere la configurazione ideale del sistema. E‟ infatti un problema diffuso quello del dimensionamento dell‟impianto fotovoltaico e del sistema di accumulo, poiché essendo sistemi costosi e non ridimensionabili dopo il loro acquisito, vanno a far parte dei più sensibili problemi di progettazione. Avendo però a disposizione un ambiente in cui poter andare a simulare intere mensilità di gestione energetica (coinvolgendo questi sistemi sensibili) in pochi minuti rimane naturale pensare di andare ad utilizzarlo per poter prendere scelte più accurate in fase di progettazione, dimensionando correttamente la componente fotovoltaica e di accumulo del sistema. E‟ per questo motivo che viene proposto un utilizzo in tal senso di questa ultima versione dello strumento HAS-Sim. E‟ infatti possibile avviare in modo ricorsivo le simulazioni variando la capacità della batteria o la massima erogazione di energia da parte dei pannelli fotovoltaici (lasciati parametrici), potendo andare ogni volta a vedere come l‟algoritmo di massimizzazione si comporta e se le dimensione dei sistemi di generazione/accumulo sono correttamente dimensionati rispetto alle necessità energetiche dell‟ambiente domotico (schema in Figura 6.17). 95 Figura 6.17 - Simulazione con parte di generazione parametrica Avendo a disposizione anche un potente mezzo di simulazione di sistemi domotici, quale quello proposto nel capitolo 5, è possibile simulare ambienti domotici con configurazioni varie, con all‟interno scenari differenti (numero e tipo di elettrodomestici, numero di abitanti e loro abitudini). In questo modo è possibile , attraverso un processo di riprogettazione (Figura 6.18), trovare la configurazione ideale per il sistema che massimizzi l‟autoconsumo, adattandosi anche alla struttura di un particolare sistema domotico simulato. Figura 6.18 - Riprogettazione ricorsiva del sistema domotico 96 6.3 Integrazione/Comunicazione tra elettrodomestici reali e simulati Nella sezione 6.1.1 si è fatto riferimento ad una porzione di software dell‟HAS-Sim dedicata alla gestione delle prese reali (real plug). Sono stati infatti riservati dei vi (Virtual Instruments di LabVIEW) per l‟implementazione di codice adibito all‟acquisizione del consumo elettrico di 3 Smart Plug e alla relativa connessione/disconnessione dalla rete. In questi VI è perciò possibile inserire del codice in grado di comunicare con delle periferiche di acquisizione e pilotare un eventuale relè in grado di connettere/disconnette le prese (e di conseguenza gli agenti a loro connessi) dalla rete elettrica. Nel capitolo 7 porteremo un esempio in cui le smart plug a cui si fa riferimento sono dei componenti bticino commerciali installati nel DOMOLab del Dipartimento di Ingegneria dell‟Informazione dell‟UNIVPM. L‟ambiente di programmazione LabVIEW è ricco di strumenti che permettono l‟interazione e comunicazione con componenti esterni al computer che esegue il software. Nel caso specifico dei componenti bticino, verrà utilizzata una comunicazione con un gateway TCP/IP che farà da interfaccia con il bus SCS proprietario della bticino, attraverso è il quale è possibile comunicare con i loro prodotti. 97 98 7. Validazione In questo capitolo verranno riportati i risultati di alcuni simulazioni che metteranno alla prova i modelli e le strategie di controllo implementate per poterne verificare la validità. Per validare la tecnica di modellazione e la relative implementazione in ambiente LabVIEW verrà presentata la simulazione di un degli elettrodomestici simulate (la lavatrice –WM). Nella sezione successiva per verificare invece il corretto funzionamento della politica di controllo adibita alla gestione del consumo di potenza istantanea, una lavatrice e una lavastoviglie simulate verranno avviate in modo da necessitare in modo concorrente la risorsa elettrica, che risulterà non sufficiente per il completamento del processo di lavaggio di entrambe. Come terza simulazione verrà portato il risultato relativo ad una mensilità virtuale simulata in cui sarà testato il modulo software relativo alla stima e la gestione della taglia energetica. In fine verrà portato un estratto di una simulazione alla base delle quale è stato attivato il modulo software (e relativa PN) adibiti alla massimizzazione dell‟autoconsumo. 7.1 Elettrodomestico simulato Il modello della lavatrice è stato costruito seguendo il processo di modellazione introdotto nel capitolo 3, infatti una volta descritto lo State diagram UML della lavatrice esso è stato replicato in LabVIEW usando lo Statechart module che ha permesso di ridisegnare la struttura a stati all‟interno di un ambiente software. Il modulo software che simula un modello di WM presenta un interfaccia come quella in Figura 7.1 che permette ad esempio di avviare un ciclo di lavaggio o di mettere in pausa l‟elettrodomestico, mostrando il nome del ciclo in corso e un contatore della fase in corso. Figura 7.1 - Interfaccia WM 99 L‟evoluzione da uno stato all‟altro del ciclo di lavaggio è stato realizzato in LabVIEW Statechart (Figura 7.2) ed è composto da 4 stati Heating Wash Rinse Centrifuge Ogni face è caratterizzata da uno specifico consumo energetico e un durata. Tali informazioni sono memorizzate negli attributi della classe WM. Figura 7.2 - Statechart WM Nello Statechart le transizioni tra gli stati scattano interrogando la porzione di PN della PLUG relativa alla WM richiamando un VI dedicato (Transition PN WM.vi) il quale va a leggere il file della PN e abilita la transizione solamente se il suo scatto rispetta le regole descritte dalla PN stessa. Il risultato di una simulazione in ci viene avviata la sola WM è riportato in Figura 7.3. 100 Figura 7.3 - Firma elettronica WM Il comportamento mostrato con la firma elettronica si riferisce alle fasi di lavaggio riportate nella Tabella 7-1. Tabella 7-1 FASE Consumo [W] Durata [s] HEATING (HE) 2000 420 WASH (WA) 1700 1800 RINSE (RI) 600 840 CENTRIFUGE (CE) 500 120 Viene riportato in Tabella 7-2 la descrizione delle fasi di lavaggio anche della lavastoviglie in modo da poter meglio comprendere le simulazioni delle sezioni 7.2.1 e 7.2.2. Tabella 7-2 FASE Consumo [W] Durata [s] COLD WASH 1 (CW1) 200 150 HEATING (HE) 2000 30 PREWASH (PRE) 100 90 HOT WASH 1 (HW1) 2000 1000 COLD WASH 2 (CW2) 200 1600 HOT WASH 2 (HW2) 2000 1200 101 7.2 Gestione potenza istantanea Per andare a verificare il corretto funzionamento della strategia di controllo dedicata alla gestione della potenza istantanea descritta in 5.3.1 verranno portati i risultati di 2 simulazioni dove in entrambe una lavatrice (WM) e una lavastoviglie (DW) simulate verranno avviate contemporaneamente e dovranno concorre per l‟accesso alla stessa risorsa energetica che risulterà insufficiente per soddisfare le loro richieste contemporanee. Nella prima simulazione i due elettrodomestici verranno avviati mantenendo disattivato il sistema di controllo, nella seconda invece verranno riproposte le stesse condizioni operative, ma con il sistema di controllo attivato. Nella Tabella 7-3 e nella Tabella 7-4 verrà fatto riferimento ai cicli di lavaggio della lavastoviglie con degli acronimi che sono riportati in 7.2.1 DW e WM senza sistema di controllo Il risultato in uscita dal HAS-Sim relativamente ad una simulazione di 7.010 secondi è riportato in Figura 7.4. Figura 7.4 - WM e DW senza gestione potenza istantanea Nella Tabella 7-3 viene riportata una sintesi della sequenza degli eventi accaduti durante la simulazione che permettono di meglio comprendere il grafico del consumo elettrico. 102 Tabella 7-3 CHI QUANDO [s] COSA POTENZA FASE [W] DURATA [s] POTENZA TOTALE [W] DW 400 CW1 200 150 200 DW 580 HE 2000 30 2000 DW 640 PRE 1000 90 100 DW 760 HW1 2000 1000 2000 WM 840 HE 2000 420 4000 WM 1290 WA 1700 1800 3700 DW 1790 CW2 200 1600 1900 WM 3120 RI 600 840 800 DW 3420 HW2 2000 1200 2600 WM 3990 CE 500 120 2500 WM 4140 OFF 0 - 2000 DW 4650 OFF 0 0 E‟ possibile vedere come senza un controllo attivo il sistema non è in grado di evitare situazioni in cui il consumo oltrepassa i 3 KW permanendo in una situazione di overload dal secondo 840 al secondo 1790 (istanti evidenziati in rosso nella Tabella 7-3). 7.2.2 DW e WM con sistema di controllo Per testare l‟efficacia del sistema di controllo sviluppato per la gestione della potenza istantanea e verificare che vengano evitate situazioni di overload prolungate, è stata replicata la stessa situazione della sezione 7.2.1, dovere però il sistema di controllo è stato attivato, assegnando alla WM una priorità maggiore rispetto alla DW. Il risultato in uscita dal HAS-Sim relativamente ad una simulazione di 7.010 secondi è riportato in Figura 7.5. 103 Figura 7.5 - WM e DW con gestione potenza istantanea Nella Tabella 7-4 viene riportata una sintesi della sequenza degli eventi accaduti durante la simulazione che permettono di meglio comprendere il grafico del consumo elettrico. 104 Tabella 7-4 CHI QUANDO [s] COSA POTENZA FASE [W] DURATA [s] POTENZA TOTALE [W] DW 450 CW1 200 150 200 WM 570 HE 2000 420 2200 DW 630 PAUSE 0 - 2000 WM 1030 WA 1700 1800 1700 WM 2860 RI 600 840 600 DW 2960 HE 2000 30 2600 DW 3020 PRE 100 90 700 DW 3140 HW1 2000 1000 2600 WM 3730 CE 500 120 2500 WM 3880 OFF 0 - 2000 DW 4170 CW2 200 1600 200 DW 5800 HW2 2000 1200 2000 DW 7030 OFF 0 - 0 In questa simulazione, dove il sistema di controllo è stato attivato, il sistema è stat in grado di evitare situazioni di overlaod prolungato mettendo in pausa la DW dal secondo 630 al secondo 2.960 (istante evidenziato in blu nella Tabella 7-4). 7.3 Gestione stima/taglia energetica In questa sezione vengono riportati gli andamenti dei contenuti dei serbatoi descritti in 5.3.2 durante una simulazione di un particolare scenario. Nel caso particolare di nbase quando si parla di elettrodomestici non controllati, si fa riferimento a tutti quelli che non sono stati collegati a prese il cui consumo istantaneo è misurato e che sono attuabili (possono essere scollegate dalla rete da parte dal sistema di controllo). Nel caso degli scenari in esame gli elettrodomestici controllati sono la Lavatrice (WM), la Lavastoviglie (DW), il Forno (OVEN) e il Frigorifero (FRIDGE) e sono questi gli elettrodomestici che 105 varranno monitorati attraverso il serbatoio n1. Tutti gli altri vengono considerati elettrodomestici non controllati e sono monitorati dal serbatoio n base e ne fanno parte: l‟illuminazione, TV, phon, eventuali piastre induttive per la cucine, eventuale scaldabagno elettrico, eventuali pompe di calore elettriche ecc…). La modellazione e definizione delle firme elettriche di elettrodomestici ad elevato consumo elettrico come lo scaldabagno, le piastre induttive e le pompe di calore rientra nei possibili sviluppo futuri e in queste analisi si è ipotizzato fossero assenti all‟interno degli scenari. Verranno riportati i grafici delle Energia consumata, dei serbatoi e della potenza istantanea i quali verranno brevemente descritti per interpretarne il significato e le potenziali utilità. Lo scenario della casa con cui verrò testato il modulo software è composto dai seguenti elettrodomestici: Lavatrice Forno Frigorifero Le informazioni sullo scenario verranno passata all‟HAS-Sim compilando un file di scheduling come quello descritto in 6.1.4. PRIORITY: (Minuti dopo i quali gli elettrodomestici vengono distaccati in caso di una situazione di overload): WM 40 DW 45 OVEN 50 FRIDGE 60 APP_1 10 APP_2 20 APP_3 30 TENANTS: 1 (numero di inquilini della casa) APPLIANCES WEEKLY FREQUENCY: (Numero di volte che ogni settimana ogni elettrodomestico viene fatto partire. Questi valori sono una stima dell‟utente data a inizio mese): WM 2 DW 0 OVEN 1 FRIDGE Sempre APP_1 0 APP_2 0 APP_3 0 Sintesi dello scheduling: Qui di seguito viene riassunto lo scheduling di una settimana tipo: 106 DAY1 DAY2 WM 21:00 OVEN 21:30 FRIDGE DAY3 DAY4 DAY5 21:00 DAY6 DAY7 16:00 11:00 20:00 ON Gli orari dello scheduling non in grassetto sono quelli relativi allo scheduling NORMAL. Gli orari dello scheduling evidenziati in grassetto sono quelli che nello scheduling LOW non vengono fatti partire dall‟utente (semaforo Arancione o Rosso ). Tale scheduling si ripeterà identico per le 4 le settimana della simulazione. Grafici: Vengono adesso riportati i grafici dell‟energia, dei serbatoi descritti in 5.3.2 e alcuni dettagli della potenza istantanea misurata. Energia Questo grafico rappresenta il consumo in Wh totale dell‟abitazione simulata. E‟ infatti il consumo energetico che sarebbe stato misurato del contatore dell‟appartamento. Figura 7.6 - Energia consumata [Wh] La taglia che il simulatore aveva stimato a inizio simulazione era una SMALL, cioè con un consumo consentito non maggiore di 150 kWh al mese. Poiché lo scheduling degli elettrodomestici è stato settato in modo tale da rispettare le stime date a inizio simulazione, si è ottenuto a fine mese un consumo di energia di poco superiore alla taglia stimata. nbase 107 Viene riportato in Figura 7.7 il grafico di nbase , serbatoio relativo a tutti quei consumi non correlati ad elettrodomestici sotto controllo (e.g. luci, TV, phon, ecc…) Figura 7.7 - Serbatoio nbase [Wh] Come si può vedere dal grafico, ogni giorno il serbatoio viene ricaricato con una quantità di kWh costante, stimata in base al numero di inquilini dell‟abitazione (in questo caso 1). Per testare il funzionamento dell‟Algoritmo taglie in questa simulazione, si è deciso di imporre un consumo giornaliero di energia costante leggermente superiore alla stima. In questo modo si è ottenuto un esaurimento di nbase a fine di ogni giornata (valore negativo del contenuto del serbatoio) meno che dal giorno 16 al giorno 21 dove il consumo è stato ridotto a 200 W. La quantità di energia che qui ha un valore negativo, vedremo che verrà sottratta dal serbatoio di emergenza n2. n1 Viene riportato in Figura 7.8 il grafico di n1 relativo ai consumi di energia degli elettrodomestici controllati (misurati e attuati). Figura 7.8 - Serbatoio n1 [Wh] L‟andamento dei consumi è qui dipendente dallo scheduling passato al simulatore. Come possiamo vedere a fine di ogni settimana il serbatoio viene ripristinato a un valore che è 108 stato stimato a inizio simulazione. La quantità di energia che a fine di ogni settimana è in eccesso/difetto viene aggiunta/sottratta a n2. Il caso di un esaurimento di n1 si verifica solo a fine della quarta settimana. E possibile osservare come il controllore del simulatore tenda a risolvere i conflitti spostando verso la fine del mese l‟esecuzione degli elettrodomestici (ritardandoli). Questo ha l‟obbiettivo di evitare che si creino situazioni di overload troppo prolungate che possono portare a un distacco del contattore. n2 Viene riportato in Figura 7.9 il grafico dell‟andamento del serbatoio n2, rappresentante la riserva energetica di emergenza disponibile durante il mese: Figura 7.9 - Serbatoio n2 [Wh] E‟ possibile vedere come in coincidenza del termine di ogni giornata, parte del serbatoio venga consumata. Questo è causato dall‟esaurimento giornaliero del serbatoio nbase . Ciò non accade solamente dal giorno 16 al giorno 21 dove il consumo di n base è inferiore al valore stimato. E‟ possibile notare anche come a fine delle prime 3 settimane il serbatoio venga ricaricato di una quantità notevole di energia. Questo è dovuto all‟avanzo di Wh di n1 sommato alla nuova porzione di n2 riservata alla settimana successiva. La quantità di energia ricaricata va decrescendo poiché mano a mano che ci si avvicina a fine mese, il serbatoio n 1 viene eroso maggiormente ad ogni nuova settimana, fino a diventare negativo alla fine dell‟ultima. La pendenza di n2 permette di individuare un comportamento dell‟utente che previsionalmente porterebbe ad uno sforamento della taglio. In questa particolare simulazione abbiamo questo comportamento a partire dall‟inizio della seconda settimana, dove la pendenza di n2 porta chiaramente ad un suo esaurimento a fine settimana. Il semaforo infatti è diventato arancione all‟inizio del giorno 11 come possiamo vedere da un particolare istante dei grafici generati in Figura 7.10. 109 Figura 7.10 - Semaforo avvertimento esaurimento taglia Power Il grafico in Figura 7.11 rappresenta il consumo in W totale dell‟abitazione simulata campionato al secondo. E‟ infatti il consumo energetico che verrebbe misurato del contatore dell‟appartamento. Figura 7.11 - Consumo di potenza istantanea [W] Come si vede dall‟immagine il consumo di potenza relativo agli elettrodomestici non controllati è quel valore che rimane pressoché costante durante tutta la simulazione. Infatti è stato imposto in questa simulazione ad un valore oscillante tra 250 e 350 W rappresentate il consumo medio di 1 persona nella casa. I picchi nell‟immagine rappresentano invece gli elettrodomestici che vengono avviati dallo scheduling caricato ad inizio simulazione. Andando a fare uno zoom nell‟intorno del giorno 2 è possibile anche vedere il profilo della firma elettrica dell‟elettrodomestico che è stato avviato (Figura 7.12) 110 Figura 7.12 - Firma elettronica WM e OVEN In questo caso abbiamo un dettaglio dell‟avvio concorrente di WM e OVEN. Il sistema di simulazione integra al suo interno agenti differenti che possono essere modellati e gestiti singolarmente, ma interagire tra loro all‟interno dell‟ambiente di simulazione (elettrodomestici controllati, non controllati, utenti con il relativo scheduling). L‟utilizzo di tutti questi elementi in diversi scenari ha permesso di valutare le capacità dello strumento e le sue potenzialità ed eventuali miglioramenti che potrebbero essere apportati. Alla luce dei risultati sperimentali forniti dai grafici della simulazione è possibile giungere alle seguenti conclusioni. 1. Il sistema di simulazione calcola correttamente i consumi correlati ai sottosistemi della casa (elettrodomestici controllati e non) gestendo i serbatoi nbse e n1 La suddivisione del monitoraggio energetico in serbatoi permette di comprendere cosa accade nel sistema domotico durante la simulazione, riuscendo ad interpretare quale sottosistema è causa di eventuali comportamenti anomali, sui quali è necessario indagare maggiormente. La sintesi in n2 di tutti i consumi energetici fornisce un valido strumento di indagine che in un unico valore numerico mette a disposizione un indice di andamento del consumo energetico della taglia. Infatti proiettando ed estrapolando l‟andamento di n2 è possibile individuare in anticipo (fino ad una settimana prima) un comportamento che potrebbe portare all‟esaurimento della taglia stimata. Questo permette di utilizzare n2 come sistema di monitoraggio per prendere decisioni che possano evitare un eventuale sforamento della taglia stessa. 2. Il sistema riesce correttamente a gestire contemporaneamente 2 tipologie di scheduling differenti e passando da uno all‟atro a seconda delle necessità permette in alcuni casi di risolvere situazioni critiche che potrebbero portare all‟esaurimento della taglia. In pratica lo switch tra i 2 scheduling è reso possibile da un sistema di stima che proietta nel futuro l‟andamento del serbatoio n 2. Se la 111 proiezione di n2 fino a fine della settimana risulta tale da esaurire tutto il contenuto di n2 , il sistema di controllo passa automaticamente dallo scheduling NORMAL a quello LOW riducendo in consumi istantanei ed evitando di esaurire la taglia in alcuni casi. 3. Analizzando le situazioni in cui, nonostante la presenza di un sistema di monitoraggio e controllo, la taglia è stata comunque esaurita, si è giunti alla seguente conclusione: Il valore numerico su cui si base il sistema di stima è di controllo è n 2. Il suo andamento nel tempo è fortemente correlato all‟andamento degli altri due serbatoi nbase e n1. Osservando nbase si può notare che il suo andamento è lineare e facilmente modellabile dal sistema di stima. Infatti la predizione di n2 nel futuro modella correttamente l‟andamento di nbase proiettando il suo effetto su n2 come una pendenza pressoché costante. Per questo motivo nbase è stato scartato come causa degli errori di stima. Osservando n1 invece si è notato il suo andamento fortemente non lineare. Infatti durante il suo ciclo settimanale n1 presenta spesso dei picchi di consumo concentrati nella parte finale di ogni settimana. Questi picchi sono dovuti alle abitudini degli utenti, sintetizzate negli scheduling passai al simulatore, che spesso concentrano l‟utilizzo degli elettrodomestici durante il sabato e la domenica. Poiché lo scheduling e la simulazione gestiscono le settimane partendo sempre da lunedì, a fine di ogni settimana si verifica un picco di consumo che viene ritrovato nell‟erosione nel contenuto di n2 proprio nei giorni 6 e 7 di ogni settimana. Questa non linearità nella parte finale del periodo di stima (la settimana) comporta la generazione di un warning (semaforo giallo o rosso) solo a fine settimana e in modo più critico a fine mese (fine dell‟ultima settimana), non fornendo al sistema di controllo il tempo necessario per prendere decisioni che evitino uno sforamento della taglia. Questa non linearità nell‟andamento di n1 potrebbe essere equilibrata chiedendo all‟utente di indicare anche in quale giornata della settimana solitamente concentra l‟utilizzo di un numero maggiore di elettrodomestici. In questo modo sarebbe possibile suddividere le settimane diversamente (e.g. da sabato a sabato invece che da lunedì a lunedì, se il giorno di maggiore di consumo indicato fosse la domenica) dando allo stimatore di n2 il modo di osservare un sovra consumo già a inizio settimana e poter prendere così per tempo le giuste decisioni (switch dello scheduling). In questo modo l‟attivazione dello scheduling LOW avrebbe più di metà settimana per influenzare l‟andamento dei consumi e variare la pendenza di n2 aumentando l‟efficacia nel prevenire l‟esaurimento della taglia. 112 7.4 Massimizzazione autoconsumo Per validare il sistema di controllo adibito alla massimizzazione dell‟autoconsumo di energia prodotta da fonti energetiche interne all‟ambiente domotico (sezione 5.3.3), verrà riportato un particolare di una simulazione alla quale sono stati forniti i dati storicizzati reali di consumi elettrici degli appartamenti e della produzione fotovoltaica della LeafHouse Loccioni. In Figura 7.13 sono stati affiancati i grafici di produzione fotovoltaica, energia venduta e livello di carica della batteria relativamente ad un giorno di simulazione. Si può osservare come l‟algoritmo di massimizzazione intervenga, deviando la quantità di energia prodotta dal sorgente fotovoltaica dando priorità alla ricarica della batteria. Una volta che però la batteria risulta completamente carica (campione 2.347) l‟energia generata dai pannelli (ipotizzando un consumo nullo da parte degli appartamenti) viene completamente rivenduta al provider energetico. 113 Figura 7.13 - Produzione solare - Energia venduta - Carica batteria 114 8. Collaborazioni Lo sviluppo dell‟intero sistema di simulazione è stato inserito all‟interno di una collaborazione tre l‟UNIPM e il centro di ricerca ENEL IIR di Pisa. Tale collaborazione ha guidato lo sviluppo di alcune parti del simulatore in modo da venire incontro alle necessità di ricerca del centro (stima e mantenimento della taglia, scheduling degli elettrodomestici). La collaborazione con tale centro di ricerca si è conclusa con la consegna di un sistema di simulazione completo in grado si simulare in 2/3 giorni un mese di andamento dei carichi, implementando la politica di controllo richiesta, in grado di mantenere i carichi sotto una soglia massima di consumo e inducendo l‟utente ad un comportamento che incrementasse la probabilità di mantenere a fine mese la taglia scelta. Ulteriore contesto di collaborazione è stata l‟interazione con il Gruppo Loccioni che ha messo a disposizione i dati e l‟infrastruttura della LeafHouse [18]. Nella collaborazione è stata anche finanziata un‟ulteriore borsa di dottorato con argomento proprio l‟approfondimento delle questioni affrontate in questo lavoro. 115 116 9. Conclusioni Questo lavoro ha portato allo sviluppo di uno strumento di simulazione/emulazione (software HAS-Sim) modulare ed efficacie, in grado di simulare un‟ampia varietà di situazioni, fornendo uno strumento che permette di costruire rapidamente strutture domotiche anche complesse, integrando tra loro modelli di elementi domotici elementari. L‟obiettivo raggiunto è stato quello di permettere la simulazione di intere mensilità in pochi minuti, dando la possibilità di individuare in breve tempo le configurazioni più adatte alle necessità degli utenti, testando in anticipo le politiche di gestione energetica che si vogliono adottare. E‟ stato verificato che gli approcci di modellazioni basati sulla teoria UML e i sistemi a stati finiti (come le PN) sono risultati funzionali nella caratterizzazione di elementi come quelli che popolano i sistemi domotici rendendo disponibile al termine del lavoro svolto uno strumento per poterli studiare. Il prodotto software sviluppato è risultato anche predisposto alla diffusione sul mercato industriale da parte dei principali attori del settore dove la realizzazione di sistemi domotici complessi, che integrano diverse fonti di energia sono diventati sempre più numerosi, grazie anche agli incentivi che hanno permesso di diffondere la generazione di energia elettrica da fotovoltaico ormai anche a livello residenziale e di privati cittadini. E‟ infatti al giorno d‟oggi un problema diffuso quello di dover prendere scelte strategiche sul dimensionamento dei sistemi fotovoltaici e di accumulo elettrico per permette all‟utenza finale un ritorno economico. Scelte non ottimali in fase di progettazione di questi sistemi potrebbero portare ad un mancato guadagno che potrebbe essere evitato utilizzando sistemi di progettazione e simulazioni come quelli proposti con questo progetto. Si è potuto ottenere con questo lavoro uno strumento in grado anche di validare le strutture prima di collegare qualsiasi hardware, portando ad un elevato risparmio in fase di progettazione. Successivamente ci si vorrà spostare anche in ambito internazionale, adattando il software alle normative e alle legislazioni estere rilasciando versioni dello stesso in grado di simulare correttamente i vincoli governativi ed energetici di altre nazioni. I possibili sviluppi del sistema di simulazione, monitoraggio e controllo che è stato descritto in questi documenti sono molteplici. Si potrebbe prevedere l‟inserimento di altri elettrodomestici fornendo un‟estensione dell‟attuale sistema di simulazione, permettendo di modellare scenari più complessi. In questo modo potrebbero essere tenuti in considerazione ulteriori elementi domotici ad elevato consumo energetico, come piastre induttive per la cucina, scaldabagno elettrico e pompa di calore elettrica. Inoltre avendo noto il modello di un vettore elettrico per il riscaldamento della casa e per la cottura degli alimenti, il sistema di simulazione e monitoraggio, a termine di una simulazione nella quale non vi è stato un completo sfruttamento delle risorse (e.g. taglia energetica), potrebbe suggerire di passare a diversi sistemi di riscaldamento anziché ridurre la taglia. Potrebbe essere inserita anche 117 un‟influenza stagionale nei consumi, infatti a seconda del mese a cui fa riferimento una simulazione, le abitudini di consumo di un utente potrebbero cambiare, influenzando le curve di consumo della casa in cui vive. Sviluppando ulteriormente il software potrebbe essere possibile realizzare un sistema di riconoscimento automatico della firma degli elettrodomestici, riuscendo ad isolarne il profilo all‟interno dei consumi complessivi della casa. In questo modo potrebbe essere ridotto il numero di sensori all‟interno della casa riducendo la complessità e il costo dei sistemi di monitoraggio. Infine si propone l‟inserimento in una futura implementazione nel simulatore di un sistema di rescheduling dell‟avvio degli elettrodomestici, sulla base di parametri comportamentali e liste di merito degli elettrodomestici e dei dispositivi in gioco. Sarebbe possibile in questo modo andare a ottimizzare l‟avvio degli elettrodomestici (evitando sovraccarichi e esaurimenti della taglia) rispettando le priorità che l‟utente assegna ad ognuno di essi. 118 Riferimenti [1] G. Conte and D. Scaradozzi, “An Approach to Home Automation by means of MAS Theory,” Chapter 15 of Modeling and Control of Complex Systems, 2007. [2] G. Conte, D. Scaradozzi, A. Perdon, and G. Morganti, “Parameter tuning in distributed home automation systems: towards a tabu search approach,” in MED, 2008. [3] G. Morganti, A. Perdon, G. Conte, D. Scaradozzi, and A. Brintrup, “Optimising home automation systems: a comparative study on tabu search and an evolutionary multi-objective algorithm,” in MED, 2009. [4] G. Morganti, A. Perdon, G. Conte, and D. Scaradozzi, “Multi-Agent System Theory for Modeling a Home Automation System,” Lecture Notes in Computer Science, vol. 5517, pp. 585–593, 2009. [5] D. Scaradozzi, “Methodologies and techniques for analysis and design of home automation systems,” 2005. [6] G. Conte, D. Scaradozzi, A. Perdon, M. Cesaretti, and G. Morganti, “A Simulation Environment for the Analysis oh Home Automation Systems,” in MED, 2007. [7] J. Arlow and I. Neustadt, UML 2 e Unified Process: analisi e progettazione Objectoriented, 2nd ed. 2006. [8] P. R. S., Principi di ingegneria del software, 4th ed. 2004. [9] “Umbrello UML Modeller,” in uml.sourceforge.net. [10] D. Harel, “Statecharts: A Visual Formalism for Complex Systems,” in Science of Computer Programming, North-Holland, Ed. 1987, pp. 231 – 274. [11] T. Murata, “State equation, controllability, and maximal matchings of petri nets,” Automatic Control, IEEE Transactions, vol. 22, pp. 412–416, 1977. 119 [12] C. N. Hadjicostis and G. C. Verghese, “Power system monitoring using Petri net embeddings,” in Generation Transmission and Distribution, 2000. [13] A. Badara, F. Pape, and A. Dimitri, “Petri nets control design for hybrid electrical energy systems,” in American Control Conference, 2009. [14] L. Zhiwu, Y. Mingming, and Z. MengChu, “Synthesis of Structurally Simple Supervisors Enforcing Generalized Mutual Exclusion Constraints in Petri Nets,” Systems, Man, and Cybernetics, Part C: Applications and Reviews, vol. 40, pp. 330–340, 2010. [15] A. Godon and F. Bousseau, “PM Editor.” [16] M. Cotti and G. Casa, “Il „Telegestore‟: una nuova infrastruttura di comunicazione per i Servizi a Valore aggiunto,” in ANIPLA, 2001. [17] “bticino,” in www.international.bticino.com. [18] Loccioni, “LeafHouse,” in http://energy.loccioni.com/sustainable-community/leafhouse/. 120 A. Appendice A.1 Strumenti Software Il software Umbrello UML Modeller Il software scelto per la descrizione UML è stato il software Umbrello UML Modeller. Esso ha un'interfaccia utente molto intuitiva, grazie alla quale si sarà subito operativi nella modellazione. Tutte le azioni sono accessibili attraverso il menu e le barre degli strumenti, ma si usano molto anche i menu contestuali, forniti cliccando con il tasto destro del mouse. La finestra principale di Umbrello UML Modeller è divisa in tre aree che ci aiuteranno a mantenere una panoramica dell‟intero sistema e ad accedere rapidamente ai diversi diagrammi mentre si lavora al modello. Grazie all‟ausilio del software in esame si è in grado di disegnare i diagrammi di interesse, fornendo in questo modo le basi per lo sviluppo del simulatore al livello successivo relativo all‟ambiente LabVIEW. Queste aree sono chiamate vista ad albero, area di lavoro e finestra di documentazione, come indicato nella Figura A.1: Figura A.1 - Schermata del software Umbrello UML Modeller 121 Si avranno così a diposizione, terminata questa fase di modellazione UML, i seguenti due diagrammi: Diagramma delle classi, che ci permetteranno di definire gli oggetti nella loro completezza, grazie alla definizione degli attributi che li caratterizzano e i metodi associati. Inoltre all‟interno del diagramma si andranno inoltre a scrivere le varie associazioni e dipendenze tra le classi. Diagramma di stato, per modellare l‟evoluzione dell‟oggetto, il cambiamento del suo stato e il cambiamento degli attributi. Sono inoltre utilizzati i metodi per il passaggio da uno stato all‟altro, grazie anche all‟utilizzo delle transizioni caratterizzate da un evento, azione e guardia. Si utilizzeranno ora i diagrammi delle classi e di stato, prodotti per mezzo del software Umbrello UML Modeller , per procedere con la successiva fase di programmazione. Si vogliono ora riportare questi diagrammi all‟interno dell‟ambiente di programmazione LabVIEW, riuscendo ad ottenendo in questo modo una base di partenza strutturata per la definizione del simulatore. Si andranno ora a definire gli strumenti utilizzati per procedere con il passaggio d‟importazione semi-automatica all‟interno dell‟ambiente di programmazione. LabVIEW In questo paragrafo si introdurranno i software utilizzati per il passaggio dal linguaggio UML, sviluppato mediante l‟utilizzo del software Umbrello UML Modeller, fino alla fase finale d‟implementazione nell‟ambiente LabVIEW, raffigurante il linguaggio di programmazione del nostro simulatore. I punti di partenza saranno i diagrammi delle classi e i diagrammi di stato, grazie ai quali si riesce a descrivere completamente ed in modo dettagliato il comportamento degli oggetti in esame e la loro evoluzione. I software scelti sono il tool Endevo UML Modeller utilizzato per l‟importazione delle classi, ed il modulo Statechart per il trasferimento del diagramma di stato all‟interno del software. In entrambi i casi, la fase di trasporto dei diagrammi all‟interno dei nuovi ambienti software avviene in modo manuale, in quanto si devono riportare i diagrammi ottenuti con il software Umbrello UML Modeller all‟interno dei nuovi ambienti di sviluppo. 122 LabVIEW (Laboratory Virtual Instrument Engineering Workbench) è un linguaggio di programmazione grafico in quanto usa icone anziché testo per creare le applicazioni. In contrasto con i linguaggi di programmazione basati maggiormente sul testo, dove le istruzioni determinano l‟ordine di esecuzione del programma, LabVIEW usa una programmazione dataflow, dove il flusso di dati attraverso i nodi del diagramma a blocchi, determina l‟ordine di esecuzione dei VIs e delle funzioni. VIs, o virtual instruments, sono dei programmi LabVIEW che imitano gli strumenti fisici nel loro aspetto grafico e nelle loro funzioni. Ogni VI è in grado di manipolare gli ingressi provenienti dall‟interfaccia utente o da altre sorgenti e mostrare i risultati sul display. Un VI contiene le tre seguenti componenti: Front Panel : è un‟interfaccia utente costruita usando una serie di oggetti, come i controlli (pulsanti o altri meccanismi per gli ingressi) e gli indicatori (LED, grafici o altri componenti per le uscite); Essi rappresentano i terminali interattivi di input ed output del VI. I controlli simulano gli strumenti di input e forniscono i dati al Block Diagram mentre gli indicatori riproducono i dispositivi di output e visualizzano le informazioni generate o acquisite da esso. Quindi il primo passo nella realizzazione del VI è costituito dalla definizione dell‟interfaccia attraverso la quale l‟utente vi interagisce. Block Diagram (diagramma a blocchi) : contiene il codice sorgente grafico che definisce le funzionalità del VI, conosciuto anche come G code o Block diagram code. Nel codice sono presenti degli oggetti con dei terminali collegati alle funzioni (nodes) tramite fili. Pannello delle icone e dei connettori : identifica l‟interfaccia al VI. Questo permette di adoperarlo anche all‟ interno di altri VIs, assumendo in questo caso il nome di subVI. 123 Figura A.2 - Esempio di Icon and Connector Pane Un‟icona costituisce una rappresentazione grafica del programma che può essere utilizzato come subVI semplicemente inserendo la sua icona nel Block Diagram del programma principale. Un‟icona può contenere testo, immagini, oppure una combinazione di entrambe e viene personalizzata attraverso un editor che si apre con un doppio click su di essa. Un altro metodo per definire un subVI è quello di costruire il suo pannello dei connettori. Tale pannello altro non è che il set di terminali corrispondenti agli indicatori ed ai controllori del relativo programma in maniera del tutto simile alla lista di parametri dei linguaggi di programmazione text-based. Attraverso questo metodo si definiscono gli ingressi e le uscite che possono essere collegati al modulo, quando viene usato come un subVI. La prima volta che viene visualizzato, il pannello si presenta come un modello di connessione contenete un terminale per ogni indicatore e controllore del Front Panel, successivamente però può essere personalizzato in base alle proprie esigenze. Esso può contenere fino a 28 terminali ma è buona regola non usarne più di 16 per non ridurre troppo la leggibilità e l‟usabilità dello stesso. I terminali rappresentano il tipo di dati associati agli indicatori oppure ai controllori; possono essere visti come delle porte di ingresso e d‟uscita attraverso le quali il Front Panel e il Block Diagram si scambiano informazioni. 124 LabVIEW inoltre permette di connettere le proprie applicazioni ad internet usando il suo web server e protocolli standard come TCP/IP e ActiveX. Attraverso questo linguaggio di programmazione, inoltre, si possono creare applicazioni compilate a 32-bit che garantiscono una velocità buona nei processi di acquisizione dati, test, misure e soluzioni di controllo. LabVIEW si presta molto per la costruzione di soluzioni personalizzate per sistemi scientifici ed ingegneristici garantendo buone performance e flessibilità, attraverso un linguaggio di programmazione che non si presenta né difficile né complesso. Anche se grafico, LabVIEW rimane un linguaggio strutturato in cui parti di codice possono essere ripetute o eseguite solo in determinate circostanze, questo è reso possibile grazie alla presenza di diversi costrutti, anch‟essi grafici, che possono essere inseriti opportunamente nel Block Diagram. Endevo UML Modeller Il tool Endevo UML Modeller è uno strumento di modellazione di sistemi, risulta facile da usare e strettamente integrato con il software LabVIEW. Il tool supporta i seguenti diagrammi UML: casi d‟uso, delle sequenza, delle classi, dei package e di stato. Nel nostro caso specifico è di interesse il solo diagramma delle classi, che supporta la generazione di codice partendo da una descrizione visiva. Lo strumento, infatti, si integra con Symbio GOOP Wizard 3 per la generazione del codice e permette di svolgere il reverse engineering. Il supporto avanzato per la generazione di codice, il reverse engineering e la sincronizzazione garantiscono che la descrizione del sistema realizzato tramite Endevo UML Modeller sia sempre tenuto in linea con il codice durante lo sviluppo. Quindi anche se il tool non è stato utilizzato fin dall'inizio è possibile generare i diagrammi delle classi in qualsiasi momento durante lo sviluppo. Questo è molto utile ai fini della documentazione o quando sono introdotti nuovi programmatori nel progetto, poiché si riesce ad ottenere una corretta descrizione del sistema in qualsiasi momento, utilizzando la funzionalità di reverse engineering. Questo è infatti utile per tutti i membri del team, un corretto livello elevato visualizzazione grafica del sistema integra piacevolmente il codice VI, durante la programmazione LabVIEW. Riportiamo nella Figura A.3 la schermata principale del tool, dove si può notare la application toolbar grazie alla quale è possibile selezionare i vari oggetti e comandi. Al di sotto è presente l‟area di lavoro, in cui è riportato un esempio di un diagramma delle classi. 125 Figura A.3 - Area di lavoro di Endevo UML Modeller Selezionando successivamente dal menù a tendina di Tools Generate code from UML… si andranno a creare all‟interno del nostro Project le classi riportate all‟interno del diagramma, caratterizzate dagli attributi e metodi inseriti al loro interno, come evidenziato nella Figura A.4 126 Figura A.4 - Inserimento classi UML in un progetto LabVIEW Si può notare in Figura A.4, come evidenziato di rosso, che all‟interno del nostro Project sono riportate le stesse classi definite all‟interno di Endevo UML Modeller. Sono create all‟interno del Project come oggetti lvclass caratterizzati ciascuno dagli attributi e metodi definiti in precedenza, divisi inoltre tra privati, protetti e pubblici. 127 A.2. Petri Net del sistema LeafHouse Figura A.5 - Petri Net sistema LeafHouse 128
© Copyright 2024 Paperzz