Automation Robotics and System CONTROL Università degli Studi di Modena e Reggio Emilia Automazione Industriale 4- Ingegneria del Software Cesare Fantuzzi ([email protected]) Ingegneria Meccatronica Ingegneria della Gestione Industriale AA 2010/2011 Strumenti per organizzare e strutturare un progetto ּסVari settore dell’ingegneria si basano sulla definizione di un modello del sistema da studiare e sviluppare. ּסMetodi e processi sono stati sviluppati per questo: – Calcolo strutturale per edifici – Dimensionamento e disegno 3D di componenti meccaniche – Modelli per lo sviluppo di sistemi software: Ingegneria del Software. Novembre 2010 4. Ingegneria del Software per l'Automazione 2 Ingegneria del Software ּסSviluppare un progetto attraverso la stesura di un modello dell’applicativo. ּסUtilizzare il modello per individuare i punti critici dell’applicazione, per la discussione nel team di progetto e per la documentazione. ּסSuddividere la complessita’ del progetto in sottomoduli In definitiva: Pensare prima di agire Novembre 2010 4. Ingegneria del Software per l'Automazione 3 Progettazione modulare ּסPer individuare i moduli in modo corretto occorre individuare le entità che hanno un significato “per sé” nel sistema con cui il software interagisce. ּסOccorre individuare quindi i componenti che hanno una precisa identità e una precisa responsabilità all’interno del sistema considerato. ּסIn altre parole occorre identificare le entità che possono “sopravvivere” in autonomia una volta estratte dal sistema considerato. ּסNel corso dell’evoluzione dei metodi di progettazione software e dei linguaggi di programmazione, questo concetto ha portato alla definizione sul finire degli anni ’70 delle metodologie Object-Oriented (OO) per la progettazione del software, ּסNell’approccio OO, l’attenzione si sposta dalle “funzioni” agli “elementi” costitutivi del sistema da realizzare Novembre 2010 4. Ingegneria del Software per l'Automazione 4 Object – Oriented (orientamento agli oggetti) ּסLa programmazione orientata agli oggetti (OOP, Object Oriented Programming) è un paradigma di programmazione, che prevede di raggruppare in un'unica entità (la classe) sia – le strutture dati che – le procedure che operano su di esse, ּסcreando per l'appunto un "oggetto" software dotato di proprietà (dati) e metodi (procedure) che operano sui dati dell'oggetto stesso. Novembre 2010 4. Ingegneria del Software per l'Automazione 5 Object – Oriented (cont.) ּסLa programmazione orientata agli oggetti può essere vista come una modulazione di oggetti software sulla base degli oggetti del mondo reale. ּסLa modularizzazione di un programma viene realizzata progettando e realizzando il codice sotto forma di classi che interagiscono tra di loro. ּסUn programma ideale, realizzato applicando i criteri dell'OOP, sarebbe completamente costituito da oggetti software (istanze di classi) che interagiscono gli uni con gli altri. ּסRef bibliografico sintetico: http://it.wikipedia.org/wiki/Programmazione_orientata_agli_ oggetti Novembre 2010 4. Ingegneria del Software per l'Automazione 6 I concetti chiave del “Object Oriented” ּס ּס ּס ּס ּס Modularità. Information Hiding. Astrazione. Identità e responsabilità. Riusabilità. Novembre 2010 4. Ingegneria del Software per l'Automazione 7 Software “Object Oriented” Un metodo di progettazione orientato agli oggetti Novembre 2010 Conduce alla programmazione modulare (di buona qualità) 4. Ingegneria del Software per l'Automazione 8 Il Concetto di Oggetto ּסUn oggetto è quindi un’entità a sè stante avente le caratteristiche di un “Centro di Servizi”, che incapsula informazioni e funzionalità disponibili a richiesta per gli altri oggetti. ּסIl modo con cui le informazioni che l’oggetto contiene vengono elaborate è nascosto (privato) ּסLe informazioni e le funzionalità sono accessibili dall’esterno solo attraverso una ben determinata interfaccia. Oggetto Funzioni di interfaccia Parte visibile Novembre 2010 Funzioni che agiscono sull’oggetto Parte nascosta 4. Ingegneria del Software per l'Automazione 9 Estensione dei linguaggi tradizionali in modo OO ּסUna nota descrizione più sintetica di oggetto `e fornita da Grady Booch (uno dei padri dell’“OO Design”): “ ּסUn oggetto è un componente software che ha uno stato, un comportamento e una identità” ּסIn altre parole esso è costituito da – una struttura dati (che memorizza lo stato), – da delle operazioni (che determinano il comportamento) – ed è unico nel programma Novembre 2010 4. Ingegneria del Software per l'Automazione 10 Applicazione alle macchine “Oggetto Meccatronico” ּסUn “Oggetto Meccatronico” implementa una funzione ben precisa all’interno della macchina (quindi è un “oggetto”) e ne rende disponibile l’uso a clienti esterni mediante interfaccie ben definite. ּסUn oggetto meccatronico è costituito da una parte meccanica ed una parte elettronica di controllo da progettarsi in modo integrato. Novembre 2010 4. Ingegneria del Software per l'Automazione 11 Modularità ּסIn generale, una macchina ha una struttura intrinsecamente modulare. ּסI processi produttivi o di trasformazioni eseguiti dalle macchine automatiche sono tipicamente scomponibili in funzionalità elementari (sotto-processi) ּסI sotto-processi sono eseguiti da parti ben precise della macchina. ּסLa struttura modulare della macchina puo’ essere legata alla modularita’ del software. Novembre 2010 4. Ingegneria del Software per l'Automazione 12 Strutturazione modulare del software. ּסMODULO: componente di un sistema caratterizzato da massima coesione interna e minimo accoppiamento esterno. ּסIn un contesto di software industriale possiamo dire che: Un modulo è una parte di software dedicata al controllo di una parte ben definita di una macchina automatica, che svolge un determinato sotto-processo produttivo, avente un numero minimo di collegamenti con altre parti. Novembre 2010 4. Ingegneria del Software per l'Automazione 13 Obiettivi di progetto per il software di controllo ּסModularità: definizione di componenti software “interagenti”, ciascuno con proprie responsabilità di controllo ּסRiusabilità: quella del modulo di controllo è strettamente legata a quella della parte di macchina controllata ּסUn modulo di automazione è un componente costituito da: – una parte sofware (controllo logico + controllo continuo) – una parte elettrica (sensori/attuatori) – una parte meccanica Novembre 2010 4. Ingegneria del Software per l'Automazione 14 Esempio: isola di foratura Novembre 2010 4. Ingegneria del Software per l'Automazione 15 Modularizzazione di un applicativo Novembre 2010 4. Ingegneria del Software per l'Automazione 16 Soluzione “Meccatronica” Sistema fisico Controllore Supervisore Start Modulo A Start Finish Finish stop_rotate Rotate Modulo C Start & Finish Modulo B Start Finish Modulo D Start Finish Novembre 2010 4. Ingegneria del Software per l'Automazione 17 Libreria di moduli meccatronici Blocco funzionaletastatore Start Blocco funzionale foratura Start Finish Finish Blocco funzionale evacuazione blocco funzionale controllo tavola Start Start Finish Finish Novembre 2010 4. Ingegneria del Software per l'Automazione 18 Aggiungiamo una nuova funzionalità Novembre 2010 4. Ingegneria del Software per l'Automazione 19 La qualità del software strutturato e modulare. ּסUn software strutturato in moduli ha buone caratteristiche di qualità secondo i criteri visti. Infatti: – Ciascun modulo opera su una porzione di macchina e vi sono poche interazioni fra diverse parti di programmi (facilità di verifica, incremento e manutenzione) – Focalizzando un modulo è più facile capire il funzionamento della macchina (un “pezzo” per volta) e “incapsulando” i dettagli implementativi di ciascun modulo è più facile la manutenzione del programma di controllo. Novembre 2010 4. Ingegneria del Software per l'Automazione 20 Come progettare in modo modulare? ּסOccorre chiedersi: – Quali sono le parti della macchina che sono strettamente legate fra di loro (dal punto vista del controllo)? – Posso isolare queste parti ed individuare delle funzioni software a loro dedicate che non interagiscono con le altre? – Posso, di contro, isolare delle “informazioni” di interfaccia fra tali funzioni? Novembre 2010 4. Ingegneria del Software per l'Automazione 21 Approccio alla modularizzazione concettuale ּסLa chiave consiste nell’isolare le azioni “finite” che la macchina esegue sul prodotto. – Nel caso in cui la produzione sia “sequenziale” questa operazione è banale. ּסUna volta isolate tali azioni, ci si chiede quali componenti fisici sono coinvolti nell’esecuzione di tali azioni ּסSe tali parti fisico–funzionali sono separabili, ci si chiede quali funzioni di controllo occorre eseguire il sottoprocesso produttivo.. ּס... e quali debbono essere le interfacce con altre parti del progetto ... ּס... e se è possibile ridurre il numero di tali interazioni (valutare i “confini” del modulo). Novembre 2010 4. Ingegneria del Software per l'Automazione 22 Tipica architettura del sistema di controllo per l’automazione Novembre 2010 4. Ingegneria del Software per l'Automazione 23 Architettura modulare Novembre 2010 4. Ingegneria del Software per l'Automazione 24 Un oggetto Meccatronico Novembre 2010 4. Ingegneria del Software per l'Automazione 25 Un oggetto meccatronico Novembre 2010 4. Ingegneria del Software per l'Automazione 26 Un “oggetto” ha ... ּסStato: nella progettazione del controllo basata sullo stato, tale aspetto vieneenfatizzato, ponendo come principio base che lo stato del software di controllo sia consistente con quello di funzionamento dell’impianto (di un modulo dell’impianto ּסComportamento: il comportamento di un “oggetto software” è determinato dai suoi metodi, il comportamento di un modulo meccatronico è dato dalle azioni eseguite dalla parte fisica e controllate dalla parte software, richieste tramite i segnali dell’interfaccia software del modulo ּסIdentità (...) ּסTipo: ogni modulo meccatronico della macchina può essere classificato secondo la necessaria astrazione, al fine di garantirne il riuso su diversi progetti o la “istanziazione” molteplice nello stesso progetto Novembre 2010 4. Ingegneria del Software per l'Automazione 27 Approccio ad “oggetti” per software industriale ּסI concetti della progettazione orientata agli oggetti possono essere utilizzati per il progetto dell’automazione, anche se i linguaggi di programmazione di PLC e simili non sono propriamente OO (v. norma IEC 61131-3.) ּסVantaggi: – Modularità e scalabilità. – Riusabilità. Novembre 2010 4. Ingegneria del Software per l'Automazione 28 Come definire un “oggetto” in ambito industriale? ּסLa meccatronica: – Componenti elettromeccanici combinati a moduli di controllo (hardware e software). – “Librerie” di moduli meccatronici riutilizzabili. – Sincronismo tra moduli tramite “segnali” (software) di interfaccia. Novembre 2010 4. Ingegneria del Software per l'Automazione 29 Come implementare un “oggetto” in ambito industriale? ּסOccorre un modulo software che abbia: – Stato interno, memorizzato in variabili private – Comportamento incapsulato in una parte di codice privata – Interfaccia “software” con gli altri moduli di controllo isolata e ben definita – Interfaccia “hardware” con la parte fisica privata del modulo meccatronico (parte pià critica dal punto di vista implementativo) Novembre 2010 4. Ingegneria del Software per l'Automazione 30 Programmazione controllori industriali: Normative ּסDue standard internazionali: – Standard IEC 61131-3, pubblicato nel 1993, ampiamente diuso e recepito dai costruttori di dispositivi per il controllo industriale. – Standard IEC 61499, estende i concetti IEC 61131-3 ai sistemi distribuiti, è ancora in fase di sviluppo, non esistono attualmente prodotti commerciali “maturi”. Novembre 2010 4. Ingegneria del Software per l'Automazione 31 Function Blocks: strumenti per l’implementazione degli oggetti • ּסIl “Function Block” (FB) è un concetto definito dalla IEC 61131-3 (e fonda mentale per la IEC 61499) per la realizzazione di moduli software che eseguano determinate funzionalità, nascondendone l’implementazione. ּסE’ caratterizzato da: – Una interfaccia di parametri (segnali) di ingressouscita. – Una struttura dati locale privata. – Un algoritmo interno, scritto in uno dei linguaggi IEC (ma non solo). ּסE’ definito come tipo e utilizzato come istanza (classe/oggetto). Novembre 2010 4. Ingegneria del Software per l'Automazione 32