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
Scarica

4. Ingegneria del Software per l`Automazione Industriale