Problemi tipici dell ingegneria aerospaziale risolti con Matlab e Simulink

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Problemi tipici dell ingegneria aerospaziale risolti con Matlab e Simulink"

Transcript

1 Università degli Studi di Napoli Federico II FACOLTÀ DI INGEGNERIA Corso di Laurea in Ingegneria Aerospaziale Classe delle Lauree in Ingegneria Industriale - n. 1 Tesi di Laurea Problemi tipici dell ingegneria aerospaziale risolti con Matlab e Simulink Candidato: Marco Lanzetta Matricola 517/949 Relatore: Ch.mo prof. A. De Marco Anno Accademico 27/28

2 Ringaziamenti Ringrazio in primo luogo il prof. Agostino De Marco, che mi ha seguito costantemente in tutto il periodo di tirocinio e tesi. Ringrazio poi tutti gli amici (non solo colleghi), in particolare il gruppo J-Z, non si poteva trovare compagnia migliore per trascorrere questi ultimi tre anni. i

3 Indice I Risoluzione di problemi ingegneristici tramite Matlab 1 1 Elementi di Matlab Vettori Funzioni Grafici Polinomi Matrici M-File Creazione del modello di un sistema Creazione del modello di un sistema e sistema treno Diagramma del corpo libero e leggi di Newton Variabili di stato e equazioni di output Rappresentazione in Matlab Come continuare la risoluzione del problema Conversione Funzione di trasferimento/spazio degli stati Modello di un controllore beccheggio Modello fisico e sistema di equazioni Criteri di progetto Funzione di trasferimento e spazio degli stati Rappresentazione in Matlab e risposta open loop Controllo PID Introduzione al controllo PID e sistema massa molla e smorzatore Introduzione Il controllore a tre termini Le caratteristiche dei controllori P,I e D Esempio: massa, molla e smorzatore Risposta open loop Controllo proporzionale Controllo proporzionale-differenziale Controllore proporzionale-integrale Controllo proporzionale-integrale-differenziale Consigli generali per il progetto di un controllore PID Soluzione PID per il controllore di beccheggio Controllo proporzionale Controllo PD Controllo PID Metodo del root locus Introduzione al metodo del root locus Poli closed loop Grafico del root locus Scelta di un valore del guadagno dal root locus Risposta closed loop Reti di compensazione e filtri elimina banda Reti di compensazione e metodo del root locus Filtro elimina banda Soluzione tramite root locus del controllo di beccheggio Root locus ii

4 INDICE iii Rete anticipatrice Risposta in frequenza Errore steady state Calcolo dell errore steady state Tipi di sistema ed errore steady state Diagrammi di Bode Margine di guadagno e margine di fase Frequenza di cut off Comportamento closed loop Diagramma di Nyquist Il criterio di Cauchy Stabilità closed loop Guadagno di margine Margine di fase Definizione delle reti di compensazione usando la risposta in frequenza Rete anticipatrice o anticipatore di fase Rete ritardatrice o ritardatore di fase Soluzione tramite risposta in frequenza del controllo di beccheggio Risposta senza controllo Aggiunta di un controllo Spazio degli stati Equazioni in forma di spazio degli stati Progetto di un controllore utilizzando il posizionamento dei poli Input di riferimento Progetto di un osservatore Risoluzione tramite analisi SS del controllore di beccheggio Controllabilità e osservabilità Progetto del controllore mediante posizionamento dei poli Dati discreti Introduzione ai controllori a dati discreti Zero order hold Conversione dei dati utilizzando c2d Stabilità e risposta nel transitorio Root locus discreto Risoluzione del controllo di beccheggio nel caso discreto Spazio degli stati discreto Controllabilità e osservabilità Progetto del controllo mediante posizionamento dei poli Simulink Elementi di Simulink Elementi di base Esempio di modello Esempio del modello di un sistema Importare valori da Matlab Creazione di un modello fisico con Simulink Sistema treno Costruire il modello Avviare la simulazione Modello Matlab Risoluzione del controllore di beccheggio con Simulink Creazione del modello Risposta open loop Inserimento di un controllore full-state

5 INDICE iv II Modello di un velivolo tramite Simulink 97 9 Creazione del modello Blocchi di base Modello aerodinamico Sistemi di riferimento e angoli di eulero Equazioni del moto Sviluppo del modello Input del modello aerodinamico Calcolo delle forze e dei momenti Completamento del modello e definizione dei parametri Immissione dei parametri Simulazione a comandi bloccati Animazione e controllo Animazione Animazione tramite Matlab Animazione tramite FlightGear Controllo e Trim Controllo di beccheggio Controllo di quota Trim Perturbazioni Altri modelli di velivoli Il modello Beaver Funzioni del toolbox FDC AirLib A Modello aerodinamico 141

6 Elenco delle figure 1.1 Rappresentazione della funzione sin(t) Modello del sistema treno Risposta open loop del sistema treno Sistemi di riferimento e forze agenti su un aereo Risposta open loop del controllore di pitch Sistema con feedback Sistema massa molla smorzatore Risposta open loop del sistema massa molla smorzatore Risposta closed loop del sistema massa molla smorzatore con controllo P Risposta closed loop del sistema massa molla smorzatore con controllo PD Risposta closed loop del sistema massa molla smorzatore con controllo PI Risposta closed loop del sistema massa molla smorzatore con controllo PID Confronto delle quattro risposte ottenute Controllore di beccheggio, risposta con controllo P (K P = 2) Controllore di beccheggio, risposta con controllo PD (K P = 9,K D = 4) Controllore di beccheggio, risposta con controllo PID (K P = 5,K D = 7,K I = 5) Rappresentazione di un sistema closed loop con feedback Root locus del sistema d esempio Root locus del sistema d esempio con curve a ζ e ω n costanti Posizione del polo selezionato e dei poli corrispondenti Risposta closed loop del sistema d esempio Root locus del sistema d esempio per il filtro notch Risposta closed loop del sistema d esempio per il filtro notch (K = 4) Root locus del sistema d esempio con filtro notch applicato Risposta closed loop del sistema d esempio con filtro notch applicato (K = 77) Root locus del sistema di controllo di beccheggio Root locus del sistema di controllo di beccheggio con lead compensator Risposta closed loop del controllore di beccheggio ottenuta col metodo del Root locus Sistema closed loop Sistema closed loop trasformato in open loop Sistema closed loop con azione di disturbo Sistema closed loop con feedback non unitario Sistema con feedback non unitario trasformato in sistema con feedback unitario Sistema closed loop con feedback unitario con integratori Diagrammi di Bode Generico sistema closed loop Margini di fase e di guadagno sui diagrammi di Bode Margini di fase e di guadagno trovati da Matlab sui diagrammi di Bode Diagrammi di Bode del sistema d esempio Risposta di un sistema con frequenza minore della frequenza di cut off Risposta di un sistema con frequenza maggiore della frequenza di cut off Diagrammi di Bode del sistema senza controllo Risposta open loop del sistema Diagrammi di Bode del sistema con controllo (con solo integratore) Diagrammi di Bode del sistema controllato (con integratore e guadagno unitario) Diagrammi di Bode del sistema controllato (con integratore e guadagno pari a 5). 43 v

7 ELENCO DELLE FIGURE vi 5.19 Risposta closed loop del sistema Sistema closed loop con feedback non unitario Diagramma di Nyquist con guadagno unitario Diagramma di Nyquist con guadagno pari a Diagramma di Nyquist con guadagno pari a, Diagramma di Nyquist Margine di fase sul diagramma di Nyquist Diagramme di Bode di un anticipatore di fase Diagramma di Bode di un ritardatore di fase Diagramma di Nyquist con funzione modificata del controllore di beccheggio Risposta closed loop del controllo di beccheggio Risposta closed loop del controllo di beccheggio con l aggiunta di uno zero Risposta closed loop del controllo di beccheggio con l aggiunta di due zeri Modello di pallina sospesa con un campo magnetico Risposta open loop del sistema pallina e campo magnetico Diagramma a blocchi del sistema pallina e campo magnetico Simulazione lineare closed loop del sistema pallina e campo magnetico Simulazione lineare closed loop del sistema con poli allontanati Simulazione lineare closed loop con input a gradino del sistema Simulazione lineare closed loop con input a gradino del sistema (scalato) Diagramma a blocchi del sistema più l osservatore Simulazione lineare closed loop dell osservatore con input a gradino Simulazione lineare closed loop del sistema di controllo di beccheggio Simulazione lineare closed loop del sistema di controllo di beccheggio (scalato) Diagramma a blocchi di un sistema con controllo digitale Funzione H zoh (z) nel diagramma a blocchi di un sistema con controllo digitale Esempio di zero order hold Linee a coefficente di smorzamento e frequenza naturale costante nello z-plane Mappa poli-zeri della funzione discreta d esempio Risposta al gradino della funzione discreta Risposta a dati discreti del controllore di beccheggio Risposta a dati discreti del controllore di beccheggio con fattore di scala Posizione del tasto Simulink in Matlab Libreria di Simulink Modello di esempio Finestra di dialogo del blocco Transfer Fcn Modello modificato con la nuova funzione di trasferimento Finestra di dialogo del blocco Step Finestra di dialogo del blocco Scope Posizione del comando Start Risposta del modello d esempio Risposta del modello d esempio con autoscale Risposta del modello d esempio con funzione di trasferimento modificata ([1 2 4]) Tempo di inizio e fine simulazione nella finestra di configurazione di simulazione Risposta del sistema con tempo di simulazione modificato (, 8 < t < 2) Blocchi inseriti nel modello di un sistema Blocchi modificati nel modello di un sistema Collegamento dei blocchi del modello di un sistema Risposta del sistema Modello del sistema treno, passo 1: blocchi Sum Modello del sistema treno, passo 2: blocchi Gain Modello del sistema treno, passo 3: blocchi Integrator Modello del sistema treno, passo 4: blocchi Scope Modello del sistema treno, passo 5: modifica dei blocchi Sum Modello del sistema treno, passo 6: blocco Signal generator Modello del sistema treno, passo 7: forza d attrito Modello del sistema treno, passo 8: azione della molla Modello del sistema treno, passo 9: blocco Scope per l output della velocità Risposta del modello del treno

8 ELENCO DELLE FIGURE vii 8.28 Estrapolazione del modello in Matlab tramite blocco Out Modello di controllo di beccheggio, passo 1: blocco Integrator Modello di controllo di beccheggio, passo 2: prima equazione di stato Modello di controllo di beccheggio, passo 3: equazione di output Modello di controllo di beccheggio, passo 4: blocchi In e Out Modello di controllo di beccheggio, passo 5: blocco Subsystem Modello di controllo di beccheggio, passo 6: blocchi Step e Scope Modello di controllo di beccheggio, risposta open loop Modello di controllo di beccheggio, passo 7: inserimento di un controllore Modello di controllo di beccheggio, risposta closed loop F-4 Phantom Inserimento del blocco S-function Finestra di dialogo del blocco S-function Inserimento del blocco 6DoF Finestra di dialogo con parametri modificati del blocco 6DoF Aggiunta dei blocchi Reshape Inserimento dei blocchi Constant nel modello Inserimento delle velocità angolari nel vettore di input Inserimento della velocità e degli angoli di incidenza nel vettore di input Inserimento del blocco COESA Inserimento del blocco Dynamic Pressure Calcolo delle forze aerodinamiche Inserimento del blocco Turbofan Inserimento del vettore forza peso in assi Body Immissione delle forze e dei momenti nel blocco 6DoF Modello completo Andamento della quota a comandi bloccati Andamento degli angoli di eulero a comandi bloccati Blocchi In e Out Blocco Subsystem Modello equivalente con il blocco Subsystem Inserimento del blocco 6DoF Animation Finestra di dialogo del blocco 6DoF Animation Animazione tramite il blocco 6DoF Animation Inserimento del blocco FlightGear Preconfigured 6DoF Animation Cambio di coordinate nel blocco Flat Earth to LLA Modifiche del blocco Generate Run Script Screenshot dell animazione in Flight Gear Modello del sistema con controllo di beccheggio Andamento dell angolo di beccheggio nel sistema controllato Modello del sistema con controllo quota Andamento della quota nel sistema con controllo di quota Andamento dell angolo di deflessione degli equilibratori nel sistema controllato Schermata iniziale del Control ed estimation tools Manager Finestra ottenuta con Sync with the model Tag States modificata (volo livellato) Tag States dell Operating Point (volo livellato) Tag Inputs dell Operating Point (volo livellato) Opzione Export to workspace Andamento della quota del velivolo in condizione di equilibrio Andamento degli angoli di eulero del velivolo in condizione di equilibrio Andamento della velocità (assi Earth) del velivolo in condizione di equilibrio Aggiunta dell output V Andamento degli angoli di eulero nella nuova condizione di trim Andamento di θ e δ E al variare di velocità e quota Aggiunta dell output omega_e Aggiunta dell output n Blocco raggio di virata Configurazione del modello con i nuovi output (virata) Tag States dell Operating Point (virata)

9 ELENCO DELLE FIGURE viii 1.33Tag Outputs dell Operating Point (virata) Traiettorie di virate corrette a diverse velocità di virata Creazione dell input V w Aggiunta del Signal Builder Blocco Signal builder modificato per la raffica verticale Andamento dell angolo d attaco nel caso di raffica verticale Andamento della quota nel caso di raffica verticale Blocco Signal builder modificato per la raffica laterale Andamento dell angolo di imbardata nel caso di raffica laterale Andamento della quota nel caso di raffica laterale Confronto delle traiettorie di virata con e senza raffica Modello Beaver Modello aerodinamico del Beaver Modello propulsivo del Beaver Risoluzione delle equazioni del moto nel modello Beaver Schermata di selezione dei modelli in Airlib A.1 Alcuni grafici del coefficiente aerodinamico C Z A.2 Alcuni grafici del coefficiente aerodinamico C X A.3 Alcuni grafici del coefficiente aerodinamico C m A.4 Alcuni grafici del coefficiente aerodinamico C l

10 Premessa L elaborato mostra vari utilizzi possibili di Matlab e Simulink nel campo ingegneristico, sopratutto per quanto riguarda la creazione di modelli di sistemi fisici e la creazione di controlli per questi modelli. L elaborato è diviso in due parti, nella prima sono mostrati i vari metodi utilizzabili per creare il modello e implementare il controllo, la seconda mostra come creare un modello non lineare di un velivolo (un F4 McDonnel-Douglas), e come utlizzare questo modello sia per quanto riguarda l animazione 3D, sia per quanto riguarda l implementazione di controlli o la ricerca di punti di equilibrio. Va detto che quest elaborato è pensato per essere utilizzato anche per scopi didattici. Quindi tutti gli argomenti trattati nella prima parte saranno accompagnati da un esempio dell applicazione dell argomento, e dalla descrizione passo-passo di come svolgere questi esempi. Stesso discorso vale per la seconda parte, la creazione del modello e il suo utilizzo sono descritti in modo da poter essere ripetuti dal lettore. ix

11 Parte I Risoluzione di problemi ingegneristici tramite Matlab 1

12 Capitolo 1 Elementi di Matlab In questo capitolo saranno utilizzati questi comandi chiave: plot, polyval, roots, conv, deconv, inv, eig, poly. Matlab è un programma interattivo per la computazione numerica e la visualizzazione di dati ed è usato in maniera estensiva dagli ingegneri di controllo per l analisi e il progetto. Esistono molti toolbox in rete, alcuni open source e gratuiti, che estendono le funzioni base di Matlab in differenti aree di applicazione. Matlab è supportato da ambienti Unix, Macintosh e Windows. Per maggiori informazioni su Matlab, si rimanda al sito Per l utilizzo a scopo didattico di questa prima parte si consiglia di seguire l elaborato con Matlab in funzione, così da essere in grado di riprodurre tutti i calcoli e le figure ricopiando il testo dall elaborato nella Command Window o in un m-file. 1.1 Vettori Iniziamo creando qualcosa di semplice, come un vettore. Questo può essere ottenuto inserendo ogni elemento del vettore (separato da uno spazio) all interno di parentesi quadre, e ponendo il tutto uguale ad una variabile. Ad esempio, per creare il vettore a, inseriamo nella Command Window di matlab: >> a = [ ] MatLab dovrebbe rispondere: a = Ipotizziamo ora di voler creare un vettore di elementi compresi tra e 2 (compreso), spaziati da incrementi di 2 (questo metodo è frequentemente usato per creare un vettore di tempo): >>t = :2:2 t = Manipolare vettori è facile quasi quanto crearli. Per prima cosa, proviamo ad aggiungere 2 ad ogni elemento del vettore a. Il comando sarà: >>b = a + 2 b = Ora Ipotizziamo di voler sommare 2 vettori tra loro. Se i due vettori hanno la stessa lunghezza è abbastanza facile, basta usare il seguente comando: >> c = a + b c = Le sottrazioni tra vettori della stessa lunghezza funzionano allo stesso modo. 1.2 Funzioni Matlab include molte funzioni standard. Ogni funzione è un blocco di codice che porta a termine un compito specifico. Matlab contiene tutte le funzioni standard come sin, cos, exp, sqrt e le costanti più comuni come π, e i o j per la radice quadrata di -1 (unità immaginaria). Per cui: 2

13 CAPITOLO 1. ELEMENTI DI MATLAB 3 >> sin(pi/4) ans =.771 Per capire l uso di qualsiasi funzione, basta digitare help [nome funzione]. Matlab consente di scrivere le proprie funzioni col comando Function. 1.3 Grafici Ipotizziamo di voler disegnare il grafico di un onda sinusoidale in funzione del tempo. Per prima cosa si crea un vettore tempo e poi si calcola il valore del seno ad ogni istante di tempo (si usa il punto e virgola alla fine di un istruzione per non far visualizzare la risposta a Matlab): >> t=:.25:7; >> y = sin (t); >> plot (t,y) Figura 1.1 Rappresentazione della funzione sin(t) Il grafico contiene approssimativamente un periodo di un onda sinusoidale. Il plot di base è molto semplice in Matlab, e il comando plot è altamente personalizzabile, come vedremo via via nell elaborato. 1.4 Polinomi In Matlab un polinomio è rappresentato da un vettore. Per creare un polinomio in Matlab, basta inserire tutti i coefficienti di questo in un vettore in ordine decrescente. Ad esempio, ipotizziamo di avere il polinomio: s 4 + 3s 3 15s 2 2s + 9 Per inserirlo in Matlab, basta inserire questo vettore: >> x = [ ]; Matlab interpreta un vettore di lunghezza n + 1 come un polinomio di ordine n. Quindi, se nel polinomio mancano dei coefficienti, dovremo inserire degli nelle posizioni appropriate del vettore. Ad esempio: s va rappresentato in Matlab come: >> y = [1 1]

14 CAPITOLO 1. ELEMENTI DI MATLAB 4 Possiamo trovare il valore del polinomio usando la funzione polyval. Ad esempio, per trovare il valore di quest ultimo polinomio ad s = 2 andremo a scrivere: >> z = polyval([ 1 1], 2) z = 17 Possiamo anche estrarre le radici di un polinomio, utile quando si hanno polinomi di ordine alto come: s 4 + 3s 3 15s 2 2s + 9 Per trovare le radici si usa il comando roots: >> roots([ ]) ans = Ipotizziamo di volere moltiplicare 2 polinomi tra loro. Possiamo trovare il risultato utilizzando la convoluzione dei loro coefficienti. La funzione in Matlab che fa questo è conv. Per cui, dati i polinomi: Si procederà così: >> x = [1 2]; >> y = [1 4 8]; >> z = conv(x,y) z = Che equivale a: s + 2s 2 + 4s + 8 s 3 + 6s s + 16 (1.1) Dividere due polinomi è ugualmente semplice. La funzione deconv restituisce il risultato ed il resto. Dividamo quindi z per y e vediamo il risultato: >> [xx, R] = deconv(z,y) xx = 1 2 R = } Notiamo che questo è proprio il polinomio/vettore x già definito. Se y non fosse entrato perfettamente in z, il vettore resto sarebbe stato non nullo. 1.5 Matrici Inserire le matrici in Matlab è simile all inserire vettori, con la differenza che ogni riga è separata da un punto e virgola o da un Return: >> B = [ ; ; ] B = >> B = [ ] B = Le matrici in Matlab possono essere manipolate in molti modi. trovare la trasposta di una matrice usando l apostrofo: Per prima cosa, possiamo

15 CAPITOLO 1. ELEMENTI DI MATLAB 5 >> C = B C = Notiamo che se C fosse stata complessa, l apostrofo avrebbe restituito la complessa coniugata trasposta. In quel caso per ottenere la trasposta si deve usare. (i due comandi hanno lo stesso effetto se la matrice non è complessa). Ora possiamo moltiplicare le 2 matrici B e C (Nel prodotto matriciale riga per colonna l ordine delle matrici è importante): >> D = B * C D = >> D = C * B D = Un altra opzione di manipolazione di matrici è il prodotto elemento per elemento con.* (le matrici devono avere le stesse dimensioni): >> E = [1 2;3 4] >> F = [2 3;4 5] >> G = E.* F G = Una matrice quadrata, come la E, può essere moltiplicata più volte per se stessa elevandola ad una potenza: >> E.3 ans = Se invece vogliamo elevare al cubo i singoli membri della matrice, dovremmo fare un elevazione elemento per elemento col.^: >> E.^3 ans = Possiamo trovare anche l inversa di una matrice: >> X = inv(e) I = O i suoi autovalori: >> eig(e) ans = Esiste anche una funzione per trovare il polinomio caratteristico di una matrice. La funzione poly crea un vettore che include i coefficienti del polinomio caratteristico:

16 CAPITOLO 1. ELEMENTI DI MATLAB 6 >> p = poly(e) p = Si ricorda che gli autovalori di una matrice sono uguali alle radici del polinomio caratteristico, quindi: >> roots(p) ans = M-File Usando Matlab in Windows, è incluso un built-in editor per m-file. Negli m-file può essere scritta una successione di comandi che verranno riprodotti in serie semplicemente lanciando lo m-file, o può essere creata una funzione da utilizzare successivamente.

17 Capitolo 2 Creazione del modello di un sistema In questo capitolo verranno usati questi comandi chiave: tf, ss, step, impulse, ss2tf, ssdata. Matlab può essere usato per rappresentare un sistema fisico o un modello. In questo capitolo vedremo come inserire un modello con equazioni differenziali in Matlab. 2.1 Creazione del modello di un sistema e sistema treno In questo esempio considereremo un treno giocattolo composto da una motrice e un vagone. Assumendo che il treno viaggi in una sola direzione, vogliamo applicargli un controllo in modo da avere partenze e fermate dolci, insieme ad un velocità di crociera costante. Le massa della motrice e del vagone sono rappresentate rispettivamente con M 1 e M 2. Queste sono unite insieme da una molla di coefficente elastico k. La forza applicata dalla motrice sarà rappresentata con F, il coefficente di attrito volvente con µ Diagramma del corpo libero e leggi di Newton Il sistema può essere rappresentato come nella figura 2.1. Dalla legge di Newton sappiamo che la somma delle forze agenti su un corpo è uguale al prodotto della massa per l accelerazione. In questo caso, le forze agenti su M 1 sono la reazione della molla, la forza di attrito e la forza dovuta al motore, mentre le forze agenti su M 2 sono la reazione della molla e la forza di attrito. Lungo la direzione verticale, la forza di gravità è cancellata dalla forza normale applicata dal suolo, quindi non ci sarà accelerazione lungo la verticale. Le equazioni del moto in direzione orizzontale sono le seguenti: M 1 ẍ 1 = F k(x 1 x 2 ) M 1 gẋ 1 µ M 2 ẍ 2 = k(x 1 x 2 ) M 2 gẋ 2 µ (2.1a) (2.1b) Variabili di stato e equazioni di output Queste equazioni possono essere manipolate nella forma delle variabili di stato. Le variabili di stato sono le posizioni, x 1 e x 2, e le velocità, v 1 e v 2 ; la variabile di input è F. Le equazioni di stato risultano: ẋ 1 = v 1 (2.2a) v 1 = k M 2 x 1 gv 1 µ + k M 1 x 2 + F M 1 (2.2b) ẋ 2 = v 2 (2.2c) v 2 = k M 2 x 1 k M 2 x 2 gv 2 µ (2.2d) Ponendo infine come output del sistema la velocità della motrice, l equazione di output sarà: y = v 1 (2.3) 7

18 CAPITOLO 2. CREAZIONE DEL MODELLO DI UN SISTEMA 8 x 1 x 2 F k(x 1 x 2 ) M 1 M 2 k(x 1 x 2 ) M 1 gẋ 1 µ M 2 gẋ 2 µ Figura 2.1 Modello del sistema treno Funzione di trasferimento Per trovare la funzione di trasferimento, per prima cosa applichiamo la trasformata di Laplace alle equazioni differenziali (per trovare la funzione di trasferimento si assume lo stato iniziale nullo). M 1 s 2 X 1 (s) = F (s) k(x 1 (s) X 2 (s)) M 1 gsx 1 (s)µ M 2 s 2 X 2 (s) = k(x 1 (s) X 2 (s)) M 2 gsx 2 (s)µ (2.4a) (2.4b) L equazione di output diventa: Y (s) = V 1 (s) = sx 1 (s) (2.5) 1 La variabile X 1 deve essere eliminata algebricamente per lasciare un espressione in Y (s)/f (s). La funzione assume quindi questa forma: Y (s) F (s) = M 2 s 2 + M 2 gsµ + k M 1 M 2 s 3 + (2M 1 M 2 gµ)s 2 + (M 1 k + M 1 M 2 (gµ) 2 + M 2 k)s + kgµ(m 1 M 2 ) (2.6) Spazio degli stati Oltre all utilizzo della funzione di trasferimento, esiste un altro metodo per inserire creare il modello matematico del sistema, mediante l utilizzo dello spazio degli stati. Il comportamento del sistema è caratterizzato da 4 matrici (A,B,C e D) che saranno usate per risolvere il problema. Lo spazio degli stati si trova a partire dalle variabili di stato: ẋ 1 v 1 ẋ 2 v 2 = Mentre il vettore di output sarà: 1 k/m 1 gµ k/m 1 1 k/m 2 k/m 2 gµ y = [ 1 ] Rappresentazione in Matlab x 1 v 1 x 2 v 2 x 1 v 1 x 2 v 2 + 1/M 1 [F ] (2.7) + [][F ] (2.8) Ora vedremo come inserire le equazioni appena trovate in Matlab. Poichè non è lo scopo di questo elaborato utilizzare Matlab per manipolare variabili simboliche assegneremo dei valori numerici. M 1 =1, kg M 2 =,5 kg k =1, N/m F =1, N

19 CAPITOLO 2. CREAZIONE DEL MODELLO DI UN SISTEMA 9 u =,2 s/m g=9,8 m/s 2 Creiamo un nuovo m-file ed inseriamo questi comandi: M1=1; M2=.5; k=1; F=1; u=.2; g=9.8; Ora possiamo seguire due strade:usare la funzione di trasferimento o usare lo spazio degli stati per risolvere il problema. Se scegliamo di usare la funzione di trasferimento dovremo aggiungere questi comandi all m-file: num=[m2 M2*u*g k]; den=[m1*m2 2*M1*M2*u*g M1*k+M1*M2*u*u*g*g+M2*k M1*k*u*g+M2*k*u*g]; train=tf(num,den) Se invece scegliamo di usare lo spazio degli stati dovremo inserire questi comandi: A=[ 1 ; -k/m1 -u*g k/m1 ; 1; k/m2 -k/m2 -u*g]; B=[ ; 1/M1; ; ]; C=[ 1 ]; D=[]; train=ss(a,b,c,d) Come continuare la risoluzione del problema Una volta inserite in Matlab le equazioni differenziali che rappresentano il problema, in forma di funzione di trasferimento o spazio degli stati, il comportamento open loop e closed loop può esser studiato. Per ottenere la risposta open loop del sistema si deve aggiungere il comando: step(f*train) Lanciando l m-file si ottiene il grafico dell ampiezza della risposta (nel nostro caso v) in funzione del tempo (Fig 2.2) Conversione Funzione di trasferimento/spazio degli stati Sebbene gran parte delle operazioni possono essere effettuate usando sia la funzione di trasferimento (da ora TF) che lo spazio degli stati (da ora SS), è semplice passare tra le due rappresentazioni se necessario. Per passare da spazio degli stati a funzione di trasferimento si utilizza il comando: >>[num,den]=ss2tf(a,b,c,d,iu) Dove iu è l iu-esimo input per cui si vuole la TF. Nel caso di singolo input, il parametro iu va omesso. Per passare da TF a SS, posta G la nostra TF si usa il comando: [A,B,C,D]=ssdata(G) 2.2 Modello di un controllore beccheggio Modello fisico e sistema di equazioni Le equazioni che governano il moto di un aereo sono un sistema molto complicato di 6 equazioni differenziali non lineari accoppiate. In ogni caso, sotto certe ipotesi, possono essere disaccoppiate e linearizzate nei piani longitudinale e laterale. Il controllo di beccheggio è un problema longitudinale,

20 CAPITOLO 2. CREAZIONE DEL MODELLO DI UN SISTEMA 1 35 Risposta al gradino 3 25 Ampiezza della risposta Tempo (sec) Figura 2.2 Risposta open loop del sistema treno L (Portanza) X θ V X α γ CG δ D (Resistenza) Z Z, W (Peso) Figura 2.3 Sistemi di riferimento e forze agenti su un aereo

21 CAPITOLO 2. CREAZIONE DEL MODELLO DI UN SISTEMA 11 e in questo esempio progetteremo un autopilota che controlla il beccheggio di un aereo. Nella figura 2.3 vengono mostrati i sistemi di riferimento e le forze agenti sull aereo. Ipotizziamo che l aereo sia in volo rettilineo a velocità e altitudine costante, quindi la spinta e la resistenza si cancellano a vicenda e la portanza si bilancia col peso. Inoltre assumiamo che una variazione dell angolo di beccheggio non provoca cambiamenti sulla velocità dell aereo (irreale ma semplificherà un pò il problema). Con queste ipotesi, le equazioni linearizzate del moto longitudinale dell aereo possono essere così scritte: α = F α (α, q, δ e ) q = F q (α, q, δ e ) θ = F θ(q) (2.9a) (2.9b) (2.9c) In questo sistema l input è l angolo dell equilibratore, l output l angolo di pitch Criteri di progetto Definiamo ora qualche criterio di progetto: Overshoot inferiore al 1% Rise time inferiore ai 2 secondi Settling time minore di 1 secondi Errore steady-state minore al 2% Ad esempio, se l input è di,2 rad (11 gradi), l angolo di pitch non dovrà superare gli,22 rad, deve raggiungere.2 rad in 2 secondi, stabilizzarsi al 2% dello steady-state entro 1 secondi e rimanere tra,196 e,24 rad Funzione di trasferimento e spazio degli stati Prima di trovare i due modelli inseriamo dei valori numerici nelle equazioni, riferiti ad un Boeing. α =.313α q +.232δ e q =.139α.426q +.23δ e θ = 56.7q (2.1a) (2.1b) (2.1c) Funzione di trasferimento Trasformiamo secondo Laplace le nostre equazioni: sα(s) =.313α(s) q(s) +.232δ e (s) sq(s) =.139α(s).426q(s) +.23δ e sθ(s) = 56.7q(s) (2.11a) (2.11b) (2.11c) Dopo qualche sostituzione otteniamo questa TF: θ(s) δ 2 (s) = 1.151s s s s (2.12) Spazio degli stati Poichè le equazioni sono già nella forma stato-variabile, possiamo subito scrivere il modello SS: α q = α q [δ e ] (2.13) θ 56.7 θ E considerando che il nostro output è l angolo di beccheggio: y = [ 1 ] α q + [][δ e ] (2.14) θ

22 CAPITOLO 2. CREAZIONE DEL MODELLO DI UN SISTEMA 12.8 Risposta al gradino.7.6 Ampiezza della risposta Tempo (sec) Figura 2.4 Risposta open loop del controllore di pitch Rappresentazione in Matlab e risposta open loop Ora siamo pronti per osservare le caratteristiche del sistema usando Matlab. Per prima cosa, simuleremo un sistema open loop sottoposto a gradino unitario e determineremo quali caratteristiche del sistema necessitano di esser migliorate. Ipotizziamo un input (δ e ) di,2 rad. Creiamo un nuovo m-file e inseriamo questi comandi: de=.2; num=[ ]; den=[ ]; pitch=tf(num,den); step(de*pitch) axis([ 15.8]) Lanciando questo m-file dovremmo ottenere il grafico nella figura2.4. Dal grafico osserviamo che la risposta open loop non soddisfa per niente i requisiti di progetto (va detto che per θ alti la linearizzazione non ha più senso, quindi il grafico è significativo solo per bassi valori di θ). Per usare il modello SS, inseriamo invece questi comandi nell m-file: de=.2; A=[ ; ; 56.7 ]; B=[.232;.23; ]; C=[ 1]; D=[]; pitch=ss(a,b,c,d); step(de*pitch) axis([ 15.8]) Lanciano questo m-file dovremmo avere lo stesso grafico di prima.

23 Capitolo 3 Controllo PID In questo capitolo sarà utilizzato il comando chiave feedback. 3.1 Introduzione al controllo PID e sistema massa molla e smorzatore Introduzione In questo capitolo mostreremo le caratteristiche dei controlli proporzionale P, integrale I, e differenziale D, e come usarli per ottenere la risposta desiderata. Considereremo il sistema con feedback mostrato nella figura 3.1, dove il sistema è ciò a cui va applicata l azione di controllo (in questo esempio sarà un sistema massa molla e smorzatore) e il controllore è ciò che modifica la risposta del sistema in modo da ottenere il comportamento desiderato Il controllore a tre termini La funzione di trasferimento di un controller PID può essere così scritta: K P + K I s K P =Guadagno proporzionale K I =Guadagno integrale K D =Guadagno differenziale + K Ds = K Ds 2 + K P s + K I s (3.1) Per prima cosa osserviamo come lavora il controllore PID nel sistema mostrato nella figura 3.1. La variabile e rappresenta l errore, cioè la differenza tra l output desiderato R e l output effettivo Y. Il segnalle errore e viene mandato al controllore PID, che calcola sia la derivata che l integrale del segnale. Il segnale u in uscita dal controllore sarà uguale al guadagno proporzionale moltiplicato l errore, più il guadagno integrale moltiplicato l integrale dell errore più il guadagno differenziale moltiplicato la derivata dell errore, quindi: de u = K p e + K I edt + K P (3.2) dt R + Input e Controllore u Sistema Y Output Figura 3.1 Sistema con feedback 13

24 CAPITOLO 3. CONTROLLO PID 14 x k M F bẋ Figura 3.2 Sistema massa molla smorzatore Il segnale u verrà quindi inviato all impianto così da ottenere un nuovo output Y. Questo output viene mandato indietro al comparatore per trovare un nuovo errore e. Il controllore prende il nuovo errore e calcola la sua derivata ed il suo integrale, e il processo va avanti ciclicamente Le caratteristiche dei controllori P,I e D Un controllore proporzionale (K P ) ha l effetto di diminuire il rise time e ridurre, ma mai eliminare, l errore steady state. Il controllore integrale (K I ) ha l effetto di eliminare l errore steady state ma peggiorare la risposta nel transitorio. Il controllore differenziale (K D ) ha l effetto di aumentare la stabilita del sistema, riducendo l overshoot, e migliorare la risposta nel transitorio. Gli effetti dei tre controllori in un sistema closed loop sono sintetizzati in questa tabella: Tabella 3.1 Dati del controllore PID Tipo di controllo Rise time Overshoot Settling time Errore ss K P Diminuzione Aumento Leggero cambiamento Diminuzione K I Diminuzione Aumento Aumento Eliminazione K D Leggero cambiamento Diminuzione Diminuzione Leggero cambiamento Notiamo che questi legami non sono accuratissimi poiché i tre controllori interagiscono tra di loro. Quindi questa tabella è accurata solo se si sta determinando il comportamento di un singolo controllore, mentre nel caso di più controlli può fornire un idea ma non la risposta esatta Esempio: massa, molla e smorzatore Supponiamo di avere un semplice problema massa, molla e smorzatore(fig 3.2). L equazione che modella il sistema è: Mẍ + bẋ + kx = F (3.3) Trasformando secondo Laplace la 3.3 otteniamo: Ms 2 X(s) + bsx(s) + kx(s) = F (S) (3.4) La funzione di trasferimento tra l input F (s) e l output X(s) diventa: 1 X(s) F (s) = 1 Ms 2 + bs + k (3.5) Assumiamo questi valori: M =1, kg b =1Ns/m k =2N/m

25 CAPITOLO 3. CONTROLLO PID 15.5 Risposta al gradino Ampiezza della risposta Tempo (sec) Figura 3.3 Risposta open loop del sistema massa molla smorzatore F =1 N Inserendoli nella funzione di trasferimento otteniamo: X(s) F (s) = 1 s 2 + 1s + 2 L obbiettivo del nostro problema è utilizzare i controllori K P, K I e K D per soddisfare questi requisiti: Breve rise time Minimo overshoot Errore steady state assente Risposta open loop Osserviamo prima la risposta open loop del sistema. Creiamo un nuovo m-file ed inseriamo questo codice: num=1; den=[1 1 2]; plant=tf(num,den); step(plant) Lanciando questo m-file otteniamo il grafico nella figura 3.3. Il guadagno del sistema open loop è di 1/2, quindi ad un input unitario corrisponde un output di,5. Sta a dire che abbiamo un errore steady state di.95, troppo grande. Inoltre il rise time è di circa 1 secondo, e il settling time di circa 1.5 secondi. Ora progetteremo un controllo che ridurra il rise time e il settling time, ed eliminerà l errore steady state Controllo proporzionale Dalla tabella sugli effetti dei controlli possiamo vedere che un controllore proporzionale (K P ) riduce il rise time, aumenta l overshoot e riduce l errore steady state. La funzione di trasferimento closed loop del nostro sistema con un controllore proporzionale è: X(s) F (s) = K P s 2 + 1s + (2 + K P ) Poniamo il guadagno proporzionale pari a 3 e cambiamo il nostro m-file aggiungendo queste istruzioni: (3.6) (3.7)

26 CAPITOLO 3. CONTROLLO PID Risposta al gradino Ampiezza della risposta Tempo (sec) Figura 3.4 Risposta closed loop del sistema massa molla smorzatore con controllo P Kp=3; contrp=kp; sys_clp=feedback(contrp*plant,1); t=:.1:2; step(sys_clp,t) Lanciando questo m-file dovremmo avere il grafico nella figura 3.4. Da questo grafico osserviamo che il controllore P ha diminuito sia il rise time che l errore steady state, ha aumentato l overshoot (che prima era assente) e ha diminuito di poco il settling time. Nota: La funzione feedback è usata per ottenere la funzione di trasferimento closed loop a partire dall open loop senza doverla calcolare manualmente Controllo proporzionale-differenziale Osserviamo ora il comportamento di un controllore PD. Dalla tabella sugli effetti dei controlli osserviamo che un controllore differenziale diminuisce sia l overshoot che il settling time. La funzione di trasferimento del sistema con controllore PD è: X(s) F (s) = K D s + K P s 2 + (1 + K D )s + (2 + K P ) (3.8) Assumiamo K P uguale a 3 e K D uguale a 1. Inseriamo queste istruzioni nel nostro m-file: Kd=1; contrpd=tf([kd Kp],1); sys_clpd=feedback(contrpd*plant,1); step(sys_clpd,t) Lanciandolo dovremmo ottenere il grafico nella figura 3.5 Questo grafico mostra come il controllore differenziale diminuisce sia l overshoot che il settling time, mentre ha poco effetto sia sul rise time che sull errore steady state Controllore proporzionale-integrale Prima di utilizzare un controllo PID, osserviamo il comportamento di un PI. Dalla tabella sugli effetti dei controlli leggiamo che il controllore integrale diminuisce il rise time, aumenta sia l overshoot che il settling time e elimina l errore steady state. La funzione di trasferimento con un

27 CAPITOLO 3. CONTROLLO PID Risposta al gradino Ampiezza della risposta Tempo (sec) Figura 3.5 Risposta closed loop del sistema massa molla smorzatore con controllo PD 1.4 Risposta al gradino Ampiezza della risposta Tempo (sec) Figura 3.6 Risposta closed loop del sistema massa molla smorzatore con controllo PI controllo PI è: X(s) F (s) = K I + K P s s 3 + 1s 2 (3.9) + (2 + K P )s + K I Riduciamo K P a 4, e poniamo K I uguale a 7. Nell m-file aggiungiamo questi comandi: Kp2=3; Ki=7; contrpi=tf([kp2 Ki],[1 ]); sys_clpi=feedback(contrpi*plant,1); step(sys_clpi,t) Lanciando questo m-file otterremo il grafico nella figura 3.6 Abbiamo ridotto il guadagno proporzionale perchè il controllore integrale riduce il rise time e aumenta l overshoot come il proporzionale (doppio effetto). Vediamo dal grafico che il controllore I ha ridotto l errore steady state.

28 CAPITOLO 3. CONTROLLO PID 18 1 Risposta al gradino Ampiezza della risposta Tempo (sec) Figura 3.7 Risposta closed loop del sistema massa molla smorzatore con controllo PID Controllo proporzionale-integrale-differenziale Osserviamo finalmente il controllore PID. La funzione di trasferimento closed loop del sistema con controllo PID è: X(s) F (s) = K D s 2 + K P s + K I s 3 + (1 + K D )s 2 (3.1) + (2 + K P )s + K I Dopo vari tentativi si troveranno i guadagni che danno la risposta desiderata. Nel nostro caso sono K P = 35, K I = 3 e K D = 5. Per avere la conferma, inseriamo queste istruzioni in un nuovo m-file. Kp=35; Ki=3; Kd=5; contr=tf([kd Kp Ki],[1 ]); sys_cl=feedback(contr*plant,1); t=:.1:2; step(sys_cl,t) Otterremo il grafico nella figura 3.7, in cui possiamo osservare che il sistema closed loop ora non ha overshoot, ha un rise time molto breve e non ha errore steady state. Possiamo confrontare le varie risposte eseguendo questa istruzione: >> t=(:1:2) %aumentiamo la precisione delle curve >> plot(t,step(sys_clp,t), r,t,step(sys_clpd,t), g,t,step(sys_clpi,t), b,t,step( sys_clpid,t), k ) Così da ottenere il grafico nella figura Consigli generali per il progetto di un controllore PID Quando si progetta un controllore PID è consigliabile seguire questi passi: 1. Ottenere la risposta open loop del sistema e determinare cosa deve essere migliorato 2. Aggiungere un controllo P per migliorare il rise time 3. Aggiungere un controllo D per migliorare l overshoot 4. Aggiungere un controllo I per eliminare l errore steady state 5. Modificare i valori dei vari guadagni per ottenere la risposta desiderata

29 CAPITOLO 3. CONTROLLO PID Risposta al gradino 1.2 Ampiezza della risposta Tempo Figura 3.8 Confronto delle quattro risposte ottenute. E importante tenere a mente che non c è bisogno di implementare tutti e 3 i controlli, a volte è soddisfacente anche un controllo PI. L importante è avere un controllore il più semplice (e quindi economico) possibile. 3.2 Soluzione PID per il controllore di beccheggio Nel paragrafo 2.2 abbiamo trovato la funzione di trasferimento di un aereo assumendo come input l angolo dell equilibratore δ e e come output l angolo di beccheggio θ. La TF risultava essere: θ(s) δ e s = 1, 151s +, 1774 s 3 +, 739s 2 +, 921s (3.11) Abbiamo anche assunto un input di,2 rad e stabilito i seguenti criteri di progetto: Overshoot minore del 1% Rise time inferiore ai 2 secondi Settling time inferiore ai 1 secondi Errore steady state minore del 2% Per inserire il modello open loop del sistema, creiamo un nuovo m-file ed inseriamo questi comandi: num=[ ]; den=[ ]; pitch=tf(num,den); de=.2; Controllo proporzionale Come primo approccio al problema, proviamo ad inserire un controllo proporzionale nel sistema. Per il primo tentativo poniamo K P uguale a 1. Per inserire il controllo ed ottenere la funzione di trasferimento closed loop aggiungiamo queste istruzioni al nostro m-file: Kp=2; sys_cl=feedback(kp*pitch,1); Per simulare la risposta ad una sollecitazione a gradino, completiamo l m-file con queste righe:

30 CAPITOLO 3. CONTROLLO PID 2.25 Risposta al gradino.2 Ampiezza della risposta Tempo (sec) Figura 3.9 Controllore di beccheggio, risposta con controllo P (K P = 2) t=:.1:3; step(de*sys_cl,t) Lanciando l m-file otterremo il grafico nella figura 3.9, in cui notiamo che pur avendo risolto i problemi di errore steady state rispetto al sistema open loop, sia l overshoot che il settling time non soddisfano i nostri criteri di progetto Controllo PD Per porre rimedio all overshoot e al settling time troppo alti inseriamo un controllore PD. Dopo qualche esperimento, troveremo che i valori K D = 9 e K P = 4 soddisfano i nostri criteri. Modifichiamo al solito modo l m-file inserendo queste righe: Kp=9; Kd=4; contr=tf([kd Kp],1); sys_cl=feedback(contr*pitch,1); t=:.1:1; step(de*sys_cl,t) Lanciandolo otterremo il grafico nella figura 3.1. Come si può vedere questa risposta è del tutto soddisfacente, ed è stata ottenuta senza l inserimento di un controllo integrale Controllo PID Anche se il controllo PD soddisfa i nostri criteri di progetto, possiamo migliorare la risposta eliminando il picco iniziale inserendo un controllo integrale. Dopo vari tentativi, i guadagni K D = 5,K P = 7 e K I = 5 risultano dare una risposta soddisfacente, visibile nel grafico nella figura 3.11.

31 CAPITOLO 3. CONTROLLO PID Risposta al gradino.2 Ampiezza della risposta Tempo (sec) Figura 3.1 Controllore di beccheggio, risposta con controllo PD (K P = 9,K D = 4).25 Risposta al gradino.2 Ampiezza della risposta Tempo (sec) Figura 3.11 Controllore di beccheggio, risposta con controllo PID (K P = 5,K D = 7,K I = 5)

32 Capitolo 4 Metodo del root locus 4.1 Introduzione al metodo del root locus In questo capitolo verranno usati questi comandi chiave: rlocfind, rlocus, sgrid Poli closed loop Il root locus di una funzione di trasferimento open loop H(s) è la posizione (locus) di tutti i possibili poli della funzione di trasferimento closed loop, al variare di un singolo parametro che assumeremo essere il guadagno di un controllo proporzionale, nel piano reale-immaginario. Lo schema closed loop è rappresentato nella figura 4.1. La funzione di trasferimento closed loop si presenta così: Y (s) R(s) = KH(s) 1 + KH(s) (4.1) I poli della funzione closed loop sono tutti i valori di s che risolvono l equazione: 1 + KH(s) = (4.2) Se poniamo H(s) = b(s)/a(s) possiamo scrivere l equazione nella forma: a(s) + Kb(s) = a(s) K + b(s) = (4.3) Indichiamo con n l ordine di a(s) e con m l ordine di b(s). Consideriamo poi tutti i valori positivi di K. Per K tendente a, i poli della funzione closed loop sono le soluzioni di a(s) = o i poli di H(s). Per K tendente a i poli della funzione closed loop sono le soluzioni di b(s) = o gli zeri di H(s). Indifferentemente dal valore di K il sistema closed loop deve avere n poli, dove n è il numero di poli di H(s). Il root locus deve avere n rami. Ogni ramo parte da un polo di H(s) e finisce in uno zero. Se H(s) ha più poli che zeri, come spesso accade, diremo che ha degli zero all infinito. Il numero degli zeri all infinito e quindi il numero dei rami che tende all infinito è n m, cioè il numero dei poli meno il numero degli zeri. Poichè il root locus è la posizione di tutti i possibili poli, possiamo selezionare il guadagno che faccia si che il nostro sistema closed loop si comporti nel modo desiderato. Se uno qualsiasi dei poli selezionati si trova nel semipiano destro, il sistema closed loop sarà instabile. I poli più vicini all asse immaginario sono quelli che avranno influenza maggiore nella risposta closed loop, quindi r + Input e K u H(s) Y Output Figura 4.1 Rappresentazione di un sistema closed loop con feedback 22

33 CAPITOLO 4. METODO DEL ROOT LOCUS 23 anche se il sistema ha 3 o 4 poli, può comportarsi come un sistema del secondo o del primo ordine a seconda di come sono disposti i poli. Prima di procedere all utilizzo del metodo del root locus, diamo qualche altra nozione. Sul piano R I il coefficente di smorzamento (ζ o zeta) corrisponde ad una retta passante per l origine, mentre la frequenza naturale (ω n ) corrisponde ad una circonferenza con centro nell origine. Nei sistemi del secondo ordine il rise time, l overshoot e il settling time sono legati da queste relazioni a ζ e ω n : In cui: T r indica il rise time T s indica il settling time ζ ω n M o indica il massimo overshoot σ indica la componente reale σ 4 T s (log n ( Mo π ))2 1 + log n ( Mo π ))2 1, 4167ζ + 2, 917ζ2 T r (4.4a) (4.4b) (4.4c) Di queste tre relazioni l unica esatta analiticamente è quella riguardante l overshoot. Le altre due sono relazioni approssimate, quindi i risultati che ne deriveranno serviranno per dare un idea su quale regione del root locus soddisfa i nostri criteri di progetto ma non saranno vincolanti. Per trovare la posizione del polo che risolve il problema si ricorrerà sempre ad un processo trial and error, cioè di prove ed errori, fino ad ottenere il risultato desiderato. In questo processo è importante tenere a mente che più lontano è il polo dall asse immaginario, minore sarà il settling time, e che più lontano è il polo dall origine minore sarà il rise time Grafico del root locus Consideriamo un sistema open loop che ha come funzione di trasferimento: H(s) = Y (s) U(s) = s + 7 s(s + 5)(s + 15)(s + 2) E proviamo a progettare un controllore feedback per questo sistema usando il metodo del root locus. Ipotizziamo che i nostri criteri di progetto siano: Overshoot inferiore al 5% Rise time minore di 1 secondo Creiamo quindi un m-file, inseriamo la funzione di trasferimento e con il comando rlocus creiamo il grafico del root locus. I comandi da inserire sono: num=[1 7]; den=conv(conv([1 ],[1 5]),conv([1 15],[1 2])); sys=tf(num,den); rlocus(sys) axis([ ]) Lanciando l m-file otterremo il grafico nella figura Scelta di un valore del guadagno dal root locus Il grafico nella figura 4.2 rappresenta tutti le possibili posizioni dei poli per un controllore proporzionale. Ovviamente non tutti i poli soddisferanno i nostri criteri di progetto. Per determinare quali sono accettabili, useremo il comando sgrid(zeta,wn) che disegna le linee a coefficiente di smorzamento e a frequenza naturale costante. I due argomenti della funzione sono la costante di smorzamento e la frequenza naturale, e possono essere vettori se vogliamo visualizzare un range di valori accettabili. Usando le equazioni 4.4 troviamo che ad un overshoot del 5% corrisponde una ζ maggiore di, 7, ed ad un rise time di 1 secondo corrisponde una ω n di 1,8. Nell m-file aggiungiamo queste righe e lanciamolo: (4.5)

34 CAPITOLO 4. METODO DEL ROOT LOCUS Root Locus 1 5 Asse immaginario Asse reale Figura 4.2 Root locus del sistema d esempio 15.7 Root Locus 1 Asse immaginario Asse reale Figura 4.3 Root locus del sistema d esempio con curve a ζ e ω n costanti zeta=.7; Wn=1.8; sgrid(zeta, Wn) Nel grafico nella figura 4.3 le due linee a circa 45 gradi indicano le posizioni dei poli per ζ =, 7 (ζ sarà maggiore di.7 a sinistra delle linee). La semiellisse rappresenta i punti per cui ω n = 1, 8 (ω n sarà maggiore di 1,8 all esterno della semiellisse). Tornando al nostro problema, per far si che l overshoot sia minore del 5% il polo deve trovarsi tra le due linee, e per far si che il rise time sia minore di 1 secondo, il polo dovra trovarsi all esterno della semiellisse. Poichè Tutto il root locus giace nel semipiano sinistro, quindi la risposta closed loop sarà stabile. Poichè dal grafico vediamo che una porzione del root locus si trova nella zona accettabile, basterà un controllore proporzionale per risolvere il problema. Lanciamo quindi il comando [k,pole]=rlocusfind(sys) dalla command

35 CAPITOLO 4. METODO DEL ROOT LOCUS Root Locus 1 Asse immaginario Asse reale Figura 4.4 Posizione del polo selezionato e dei poli corrispondenti window così da poter selezionare manualmente sul grafico i poli che riteniamo più soddisfacenti, e Matlab calcolerà la posizione di questi poli e il guadagno proporzionale (K) necessario per ottenerli. Quando si seleziona un polo con un click Matlab segnera con una croce rossa le posizioni degli altri poli corrispondenti, come si può vedere nella figura Risposta closed loop Utilizziamo ora il guadagno trovato con metodo del root locus per visualizzare la risposta del sistema. Per creare la funzione di trasferimento closed loop con controllo proporzionale con guadagno K inseriamo nella command window il comando: >> sys_cl= feedback(k*sys,1) E per visualizzare la risposta eseguiamo il comando: step(sys_cl) Otterremo così il grafico nella figura 4.5 in cui osserviamo che la risposta soddisfa tutti i requisiti di progetto. 4.2 Reti di compensazione e filtri elimina banda Nei prossimi paragrafi saranno usate reti di compensazione e filtri elimina banda. quindi brevemente cosa sono e a cosa servono. Esponiamo Reti di compensazione e metodo del root locus Le reti anticipatrici e ritardatrici (lead e lag compensators) sono usate estensivamente nell analisi dei sistemi. Una rete anticipatrice (lead compensator) può migliorare la stabilità o la velocità di risposta di un sistema, mentre una rete ritardatrice (lag compensator) può ridurre (ma non eliminare) l errore steady-state. A seconda dell effetto desiderato, una o piu reti compensatrici possono essere utilizzate in varie combinazioni. Le reti compensatrici sono in genere descritte in forma di funzione di trasferimento, ma con Matlab possono essere facilmente trasformate in forma di spazio degli stati.

36 CAPITOLO 4. METODO DEL ROOT LOCUS Risposta al gradino Ampiezza della risposta Tempo (sec) Figura 4.5 Risposta closed loop del sistema d esempio Reti anticipatrici Una rete anticipatrice di primo ordine può essere progettata utilizzando il root locus. Nella forma del root locus una rete anticipatrice è data dall equazione: G(s) = K C (s Z O ) s P O (4.6) In cui Z O è in valore assoluto inferiore a P O ed entrambi sono negativi. Una rete anticipatrice tende a traslare il root locus verso il semipiano sinistro. Questo si traduce in un miglioramento della stabilità del sistema e della velocità di risposta. Per capire meglio questo fenomeno, ricordiamo che la relazione che permette di trovare l intersezione degli asintoti dei rami che vanno da uno zero ad infinito e l asse reale è: (poli) (zeri) α = (4.7) (nřpoli) (nřzeri) Quando una rete anticipatrice è aggiunta al sistema, il denominatore di α non cambia (si aggiunge infatti un polo e uno zero), mentre il numeratore diventa più negativo, perche il polo aggiunto era un numero negativo più grande rispetto allo zero aggiunto. Quindi l intersezione dell asintoto con l asse reale trasla verso sinistra, e di conseguenza tutto il root locus trasla verso sinistra. Questo porta ad un aumento della stabilita e della velocità di risposta del sistema. Per immettere una rete anticipatrice in Matlab, si usano questi comandi: numlead = kc*[1 z]; denlead = [1 p]; lead = tf(numlead,denlead); E per inserirla nel sistema basta dare questa istruzione: sys = lead*plant; Reti ritardatrici Una rete ritardatrice (lag compensator) ha la stessa equazione di una rete anticipatrice (eq. 4.6). In questo caso però Z O è in valore assoluto maggiore di P O. Quindi moltiplicando questa funzione per il sistema il root locus trasla verso destra (vale il discorso inverso fatto per la rete anticipatrice) con conseguente diminuzione di stabilità del sistema. Per evitare questo i valori di Z O e P O vanno scelti molti vicini, in modo da far traslare poco il sistema. Nonostante la rete ritardatrice provoca una traslazione del sistema trascurabile, apporta comunque un cambiamento nella risposta, si

37 CAPITOLO 4. METODO DEL ROOT LOCUS Root Locus 1 5 Asse immaginario Asse reale Figura 4.6 Root locus del sistema d esempio per il filtro notch ha infatti un miglioramento dell errore steady state. Mentre per s tendente a (e quindi per t tendente a ) il guadagno della rete ritardatrice è 1, per s tendente a (t tendente a e quindi allo steady state) il guadagno è Z O /P O, che per come sono stati scelti i termini è maggiore di 1. Questo guadagno andrà così a ridurre l errore steady state di un fattore Z O /P O Filtro elimina banda In molti casi la funzione di trasferimento di un sistema presente una o più coppie di poli complessiconiugati collocati vicini all asse immaginario. Questo comporta una risposta closed loop instabile o comunque poco smorzata. Ad esempio, consideriamo la funzione di trasferimento: G P (s) = K (s + 3)(s 2 + s + 1) (4.8) Tracciamo quindi con Matlab il root locus del sistema, inserendo questi comandi nella command window: num = 1; den = conv([1 3],[1 1 1]); plant = tf(num,den); rlocus(plant) Otterremo il grafico nella figura 4.6. Come si vede dal grafico, questo sistema è stabile solo in una piccola zona del root locus. La porzione stabile sarà inoltre poco smorzata (avrà ζ piccolo). Utilizziamo il comando [Kp, poles]=rlocfind(plant) per trovare il guadagno corrispondente alla porzione di piano stabile, e facciamo tracciare a Matlab la risposta closed loop inserendo questi comandi nella command window: >> sys_cl=feedback(kp*plant,1); >> step(sys_cl) Otterremo il grafico nella figura 4.7 che presenta un overshoot e un settling time troppo grandi. Anche provando a cambiare il guadagno, selezionandolo sempre nella porzione del piano stabile, la risposta non migliorera di molto. Risulta evidente che un controllo proporzionale non è sufficiente per avere una buona risposta. Un modo per ottenere una risposta soddisfacente è quello di inserire un controllore che abbia degli zeri vicini ai poli sotto-smorzati del sistema, così da attenuare l effetto dei poli. Un controllore che fa questo è detto filtro elimina banda, o notch filter. Prima di entrare nel dettaglio del filtro, ricordiamo che a causa della natura del problema non si può ottenere la cancellazione esatta dei

38 CAPITOLO 4. METODO DEL ROOT LOCUS Risposta al gradino.2 Ampiezza della risposta Tempo (sec) Figura 4.7 Risposta closed loop del sistema d esempio per il filtro notch (K = 4) poli/zeri del sistema, ne questa è necessaria. Una cancellazione approssimata darà infatti una risposta accettabile. Per il nostro esempio, proviamo a inserire degli zeri leggermente a sinistra dei poli sotto-smorzati (in genere conviene porre gli zeri a sinistra e non a destra). Proviamo quindi questo controllore: G c (s) = s s + 1 s 2 + 2s + 1 Come possiamo notare, le radici del numeratore del controllore sono quasi uguali ai poli complessi del denominatore del sistema. Implementiamo quindi il controllore nel sistema con questi comandi: >> numnotch = [ ]; >> dennotch = [1 2 1]; >> notch =tf(numnotch,dennotch); >> rlocus(notch*plant); Otterremo il root locus mostrato nella figura 4.8. Utilizzando di nuovo il comando [Kp, poles]= rlocfind(notch*plant) possiamo scegliere ora un polo molto più spostato verso sinistra, cioè più stabile. Dopo aver ottenuto il guadagno utilizzando questi comandi: >> sys_cl = feedback(kp*notch*plant,1); >> step(sys_cl) Otterremo la risposta closed loop del sistema (visibile nel grafico nella figura 4.9), che in questo caso (con un guadagno di circa 77 nel nostro esempio) ha una risposta decisamente migliore con un overshoot e un settiling time minori rispetto al caso precedente. 4.3 Soluzione tramite root locus del controllo di beccheggio (4.9) Nel paragrafo 2.2 abbiamo trovato la funzione di trasferimento del problema: θ(s) δ e s = 1, 151s +, 1774 s 3 +, 739s 2 +, 921s Abbiamo anche assunto un input di,2 rad e stabilito i seguenti criteri di progetto: Overshoot minore del 1% Rise time inferiore ai 2 secondi Settling time inferiore ai 1 secondi Errore steady state minore del 2% (4.1)

39 CAPITOLO 4. METODO DEL ROOT LOCUS Root Locus Asse immaginario Asse reale Figura 4.8 Root locus del sistema d esempio con filtro notch applicato.25 Risposta al gradino.2 Ampiezza della risposta Tempo (sec) Figura 4.9 Risposta closed loop del sistema d esempio con filtro notch applicato (K = 77)

40 CAPITOLO 4. METODO DEL ROOT LOCUS Root Locus Asse immaginario Asse reale Figura 4.1 Root locus del sistema di controllo di beccheggio Root locus Prima di tracciare il root locus troviamo le curve limite derivanti dai criteri di progetto. Utilizzando le equazioni 4.4 otteniamo che ζ, 52 e ω n, 9. Creiamo quindi un nuovo m-file ed inseriamo questi comandi: num=[ ]; den=[ ]; plant=tf(num,den); Wn=.9; zeta=.52; rlocus (plant) sgrid (zeta,wn) axis ([ ]) Lanciandolo otterremo il root locus mostrato nella figura 4.1. Com era prevedibile il problema non ha soluzioni con un semplice controllo proporzionale. Infatti tutti i rami del root locus sono oltre le curve limite Rete anticipatrice Per risolvere il problema dobbiamo traslare il root locus verso sinistra, cioè dentro i nostri limiti. Per farlo inseriremo una rete anticipatrice. Sappiamo che la funzione di trasferimento di una rete compensatrice è: G(s) = K c s Z O s P O (4.11) Come regola guida per posizionare lo zero e il polo, teniamo a mente che in genere lo zero va posizionato nei pressi del limite della frequenza naturale, mentre il polo va posizionato a una distanza grande dalle 3 alle 2 volte quella dello zero. Posizioniamo quindi lo zero a,9 e il polo a 2. Per trovare il nuovo root locus modificato dal lead controller inseriamo questi comandi nell m-file: Zo=.9; Po=2; contr=tf([1 Zo],[1 Po]); rlocus (contr*plant) axis ([-3-2 2]) sgrid (zeta,wn)

41 CAPITOLO 4. METODO DEL ROOT LOCUS 31 2 Root Locus Asse immaginario Asse reale Figura 4.11 Root locus del sistema di controllo di beccheggio con lead compensator..25 Risposta al gradino.2 Ampiezza della risposta Tempo (sec) Figura 4.12 Risposta closed loop del controllore di beccheggio ottenuta col metodo del Root locus. Lanciandolo otterremo il nuovo root locus visibile nella figura Ora possiamo scegliere un guadagno ed ottenere la risposta closed loop del sistema. Aggiungiamo questi comandi all m-file e selezioniamo i poli manualmente, all incirca a -1 sull asse reale in modo da tenere abbastanza lontano dall asse immaginario il polo sul ramo in blu: [K, poles]=rlocfind (contr*plant) de=.2; sys_cl=feedback (K*contr*plant,1); step(de*sys_cl) Otterremo così il grafico nella figura 4.12 che soddisfa tutti i criteri di progetto.

42 Capitolo 5 Risposta in frequenza In questo capitolo verranno usati questi comandi chiave: bode, nyquist, margin, lsim. Nonostante il modello di risposta in frequenza potrà sembrare meno intuitivo rispetto agli altri metodi mostrati fin ora, ha alcuni vantaggi pratici per quanto riguarda la creazione del modello della funzione di trasferimento di un sistema fisico. La risposta in frequenza di un sistema può essere visualizzata in due modi: con i diagrammi di Bode o con i diagrammi Nyquist. Entrambi i metodi mostreranno le stesse informazioni, la differenza sta nel modo in cui queste saranno presentate. In questo capitolo studieremo entrambi i metodi. La risposta in frequenza è la rappresentazione della risposta di un sistema ad una sollecitazione sinusoidale al variare delle frequenze di quest ultima. Poichè la risposta di un sistema lineare ad una sollecitazione sinusoidale è sempre sinusoidale, ma con ampiezza e fase differenti, la risposta in frequenza è definita come la differenza di fase e di ampiezza tra la sollecitazione e la risposta. In questo capitolo vedremo come potremo utilizzare la risposta in frequenza di un sistema open loop per prevedere il comportamento del sistema closed loop. Per creare il grafico della risposta in frequenza, utilizzeremo un vettore di frequenze varianti da ad infinito e calcoleremo il valore della funzione di trasferimento del sistema per ognuna di queste frequenze. Se G(s) è la funzione di trasferimento open loop del sistema e w è il vettore delle frequenze, faremo il grafico di G(jw) in funzione di w. Poiche G(jw) è un numero complesso, possiamo fare il grafico sia della ampiezza e della fase (diagrammi di Bode) sia della sua posizione nel piano complesso (diagrammi Nyquist). Prima di addentrarci in questi due metodi dovremo però approfondire le nostre conoscenze sull errore steady state. 5.1 Errore steady state L errore steady state è definito come la differenza tra l input e l output del sistema all infinito (cioè quando la risposta è diventata costante). L errore steady state dipende dal tipo di input (gradino, rampa, etc.) e dal tipo di sistema (, I o II). Dobbiamo tenere a mente che l analisi dell errore steady state ha senso solo per sistemi stabili, quindi anche se molte delle tecniche che andremo ad esporre daranno un risultato anche per un sistema instabile, questo risultato non avrà senso fisico Calcolo dell errore steady state Prima di trovare le relazioni tra l errore steady state ed il tipo di sistema, vediamo come differisce questo in base al tipo di input. Quindi iniziamo a calcolare le formule che useremo nell analisi dell errore steady state. L errore può essere calcolato dalla funzione di trasferimento open o closed loop di un sistema con feedback unitario. Ad esempio, consideriamo il sistema nella figura 5.1 che equivale al sistema nella figura 5.2. Possiamo calcolare l errore steady state del sistema sia per la funzione open loop che per quella closed (ricordiamo che questo teorema può essere applicato solo se la funzione non ha poli nel semipiano destro, cioè è stabile): sr(s) e ss = lim s 1 + G(s) e ss = lim s sr(s) 1 T (s) (5.1a) (5.1b) Ora inseriamo nella trasformata di Laplace i vari input per calcolare l errore steady state per la funzione open loop: 32

43 CAPITOLO 5. RISPOSTA IN FREQUENZA 33 R(s) Input + E(s) G(s) Y (s) Output Figura 5.1 Sistema closed loop R(s) Y (s) G(s) Input Output Input a gradino (R(s) = 1/s): Figura 5.2 Sistema closed loop trasformato in open loop e ss = Input a rampa(r(s) = 1/s 2 ): lim s G(s) = 1 K p = lim G(s) (5.2) 1 + K p s e ss = 1 lim s sg(s) = 1 K v K v = lim s sg(s) (5.3) Input parabolico (R(s) = 1/s 3 ): 1 1 e ss = lim s s 2 G(s) = 1 K a K a = lim s s 2 G(s) (5.4) Quando progettiamo un controllore in genere vogliamo compensare un disturbo. Consideriamo il sistema nella figura 5.3 e calcoliamo l errore steady state dovuto ad un disturbo a gradino unitario: 1 e ss = 1 lim s G(s) + lim s G c (s) (5.5) Come ultimo appunto possiamo dire che se abbiamo un sistema con feedback non unitario come quello in figura 5.4 possiamo trasformarlo facilmente nel sistema 5.5 e applicare i concetti appena esposti. R(s) Y (s) G(s) Input Output Figura 5.3 Sistema closed loop con azione di disturbo

44 CAPITOLO 5. RISPOSTA IN FREQUENZA 34 R(s) + E(s) G(s) Y (s) H(s) Figura 5.4 Sistema closed loop con feedback non unitario R(s) + E(s) G(s) 1+G(s)H(s) G(s) Y (s) 1 Figura 5.5 Sistema con feedback non unitario trasformato in sistema con feedback unitario Tipi di sistema ed errore steady state Nel calcolo degli errori in base all input abbiamo definito tre costanti (note come costanti di errore statico). Le costanti sono costante di posizione (K p ), costante di velocità (K v ) e costante di accelerazione (K a ). Noto il valore di queste costanti e il tipo del sistema, possiamo prevedere se il nostro sistema avrà un errore steady state. I tipi di sistemi sono definiti come il numero dei puri integratori nel sistema, ciò sta a dire che il tipo di sistema è uguale al valore di n nel caso in cui il sistema è raffigurato come nella figura 5.6. Il sistema può quindi essere di tipo, tipo 1 etc. In tabella seguono gli errori steady state in relazione al tipo di sistema: 1 Tabella 5.1 Errore stady state a seconda del tipo di sistema. Input a gradino Input a rampa Input parabolico Formula per errore steady state 1/(1 + K p) 1/K v 1/K a Sistemi di tipo Costante di errore statico K p =costante K v = K a = Errore 1/(1 + K p) Sistemi di tipo 1 Costante di errore statico K p = K v =costante K a = Errore 1/K v Sistemi di tipo 2 Costante di errore statico K p = K v = K a =costante Errore 1/K a 5.2 Diagrammi di Bode Il diagramma di Bode è la rappresentazione dell ampiezza e della fase di G(jω). Per creare il diagramma di Bode data una funzione di trasferimento, in Matlab si usa la funzione bode. Ad esempio dando questi comandi:

45 CAPITOLO 5. RISPOSTA IN FREQUENZA 35 R(s) + E(s) K(s+z 1)(s+z 2)... s n (s+p 1)(s+p 2)... Y (s) Figura 5.6 Sistema closed loop con feedback unitario con integratori 2 Diagrammi di Bode Ampiezza (db) Fase (deg) Frequenza (rad/sec) Figura 5.7 Diagrammi di Bode num = 5; den = [ ]; sys = tf(num,den); bode(sys) Otterremo i diagrammi di Bode (fig. 5.7) di questa funzione di trasferimento: 5 s 3 + 9s 2 + 3s + 4 Vale la pena sottolineare che la fase è riportata in gradi, l ampiezza è in scala logaritmica ed è riportata in decibel, cioè: db = 2 log 1 ( G(jω) ) Margine di guadagno e margine di fase Facciamo riferimento al classico sistema closed loop mostrato nella figura 5.8, in cui K è un guadagno e G(s) è la funzione di trasferimento open loop del sistema. Il margine di guadagno è definito come la variazione del guadagno open loop che fa diventare il sistema closed loop instabile. Sistemi con margine di guadagno più grandi possono sopportare maggiori cambiamenti nei loro parametri prima di diventare instabili in closed loop. Il margine di fase è definito come la variazione della fase open loop richiesta per far diventare instabile il sistema closed loop. Il margine di fase misura anche la tolleranza del sistema al ritardo temporale. Se c è un ritardo maggiore di 18/ω pc (ω pc è la frequenza in cui la fase vale -18 gradi) nel open loop, il sistema diventa instabile nel closed loop.

46 CAPITOLO 5. RISPOSTA IN FREQUENZA 36 r + Input e K u G(s) Y Output Figura 5.8 Generico sistema closed loop Diagrammi di Bode 2 Wgc Margine di guadagno Ampiezza (db) Fase (deg) 9 18 Margine di fase Wpc Frequenza (rad/sec) Figura 5.9 Margini di fase e di guadagno sui diagrammi di Bode Possiamo pensare al ritardo temporale come un blocco aggiuntivo messo all inizio del diagramma che abbia ampiezza unitaria e fase ωt d (espresso in rad/sec). Per ora non ci preoccuperemo della causa di questi guadagni, ma ci concentreremo sull individuazione dei margini di fase e di guadagno su un diagramma di Bode. Il margine di fase è la differenza di fase tra -18 deg e il punto (sulla linea di fase) corrispondente alla frequenza che da un guadagno di db (detta gain cross over frequency o ω gc ). Allo stesso modo, il margine di guadagno è la differenza di ampiezza tra la linea a db e il punto della curva corrispondente alla frequenza che da una fase di -18 deg (detta phase cross over frequency o ω pc ). I due margini sono visibili nella figura 5.9. In Matlab i due margini possono essere trovati con il comando margin. Proviamo quindi a lanciare dalla command window questo comando: >> margin(sys) Otterremo così i diagrammi di bode del sistema con sopra indicati i margini e le frequenze di cross over (fig. 5.1) Frequenza di cut off La frequenza di cut off è definita come la frequenza in cui l ampiezza della risposta closed loop è uguale a -3 db. Poichè noi vogliamo prevedere la risposta closed loop a partire da quella open loop faremo una approssimazione e considereremo la frequenza di cut off come la frequenza in cui l ampiezza della risposta open loop è compresa tra -6 e -7.5 db, assumendo che la fase della risposta open loop sia compresa tra -135 deg e -225 deg. Per illustrare l importanza della frequenza di cut off andiamo a calcolare i vari output al variare della frequenza dell input. Troveremo che un input sinusoidale con frequenza inferiore alla frequenza di cut off (detta bandwidht frequency o ω bw ) causerà una risposta abbastanza simile all input, mentre un input sinusoidale con frequenza maggiore della ω bw causerà una risposta attenuata di un fattore,77 o maggiore. Ipotizziamo di

47 CAPITOLO 5. RISPOSTA IN FREQUENZA 37 2 Diagrammi di Bode Gm = 13.3 db (at 5.48 rad/sec), Pm = 11 deg (at 1.85 rad/sec) Ampiezza (db) Fase (deg) Frequenza (rad/sec) Figura 5.1 Margini di fase e di guadagno trovati da Matlab sui diagrammi di Bode avere questa funzione closed loop che rappresenta il nostro sistema: 1 s 2 +, 5s + 1 Per prima cosa, troviamo la frequenza di cut off guardando il diagramma di Bode creato con questi comandi: >> num = 1; >> den = [1.5 1]; >> sys = tf(num,den); >> bode (sys) Tenendo presente che il sistema è closed loop quindi la frequenza di cut off è quella corrispondente ad un ampiezza di -3dB, dal grafico 5.11 osserviamo che la frequenza di cut off è di circa 1,4 rad/s. Consideriamo quindi un input con frequenza minore di ω bw. Teniamo a mente che ci interessa visualizzare la risposta steady state e non il transitorio, quindi modificheremo gli assi in modo da vedere soltanto questa. La risposta ad una sollecitazione sinusoidale la possiamo ottenere con il comando lsim. Utilizziamo questi comandi per ottenere la nostra risposta: >> w =.3; >> num = 1; >> den = [1.5 1]; >> sys = tf(num,den); >> t = :.1:1; >> u = sin(w*t); >> [y,t] = lsim(sys,u,t); >> plot(t,y,t,u) >> axis([5,1,-2,2]) Il grafico 5.12 conferma le nostre ipotesi, l ampiezza della risposta differisce di poco dall input. Proviamo ora ad utilizzare una frequenza superiore: >> w = 3; >> num = 1; >> den = [1.5 1]; >> sys = tf(num,den); >> t = :.1:1; >> u = sin(w*t); >> [y,t] = lsim(sys,u,t); >> plot(t,y,t,u) >> axis([9, 1, -1, 1])

48 CAPITOLO 5. RISPOSTA IN FREQUENZA 38 2 Diagramma di Bode Ampiezza (db) Fase (deg) Frequenza (rad/sec) Figura 5.11 Diagrammi di Bode del sistema d esempio Output Input Figura 5.12 Risposta di un sistema con frequenza minore della frequenza di cut off Il grafico nella figura 5.13 mostra chiaramente che con questa frequenza la risposta differisce notevolmente dall input, con un ampiezza di circa 1/1 e uno sfasamento quasi completo Comportamento closed loop Per dedurre il comportamento closed loop dalla risposta open loop dobbiamo avere chiari alcuni concetti: Il sistema deve essere stabile in open loop se vogliamo studiarlo tramite i diagrammi di Bode Se ω gc < ω pc il sistema closed loop sarà stabile Per i sistemi del secondo ordine, il coefficiente di smorzamento closed loop è approsimativamente uguale al margine di fase diviso 1, se il margine è compreso tra e 6. Questa approssimazione va usata con cautela se il margine è maggiore di 6

49 CAPITOLO 5. RISPOSTA IN FREQUENZA 39 1 Output Input Figura 5.13 Risposta di un sistema con frequenza maggiore della frequenza di cut off Per i sistemi di secondo ordine esistono delle relazioni tra coefficiente di smorzamento, frequenza di cut off e settling time riportate in seguito Si può fare una stima abbastanza approssimata ponendo la frequenza di cut off uguale alla frequenza naturale Le relazioni che legano coefficiente di smorzamento, frequenza di cut off e settling time sono: ω BW = ω n (1 2ζ 2 ) + 4ζ 4 4ζ (5.6a) ω n = 4 t s ζ (5.6b) ω BW = 4 (1 2ζ 2 ) + 4ζ t s ζ 4ζ (5.6c) Usiamo questi concetti per progettare un controllore per il sistema mostrato nella figura 5.8, in cui: 1 G(s) = (5.7) 1, 25s + 1 Il sistema dovra soddisfare questi requisiti: Errore steady state nullo Overshoot inferiore al 4% Settling time minore di 2 secondi Ci sono ora due strade per risolvere il problema, una grafica e una numerica. Usando Matlab la migliore è quella grafica, e quindi useremo questa. Come primo passo creiamo i diagrammi di Bode del sistema. Creiamo un nuovo m-file ed inseriamo questi comandi: num = 1; den = [1.25,1]; sys = tf(num,den); bode(sys) grid Dai diagrammi di bode ottenuti (fig. 5.14) possiamo dedurre alcune cose. La frequenza di cut off è circa 1 rad/s. Poichè abbiamo detto che possiamo approssimare la frequenza naturale alla frequenza di cut off (specialmente nei sistemi del primo ordine), il rise time sarà: t s = 1, 8/ω n = 1, 8/1 =, 18sec Poichè la relazione è molto approssimata diciamo che il rise time è di,2 sec. Il margine di fase è di circa 95 gradi, ma non potendo più applicare la relazione ζ = pm/1 (che porterebbe ad un sistema con ζ =, 96 e quindi sotto-smorzato), ed essendo il sistema del primo ordine possiamo ritenere

50 CAPITOLO 5. RISPOSTA IN FREQUENZA 4 Ampiezza (db) Diagrammi di Bode Fase (deg) Frequenza (rad/sec) Figura 5.14 Diagrammi di Bode del sistema senza controllo l overshoot nullo. Rimane da stabilire l errore steady state che può essere dedotto dai diagrammi di Bode. Infatti le costanti di errore statico (K p, K v e K a ) si possono trovare dall intersezione dell asintoto di bassa frequenza con la linea a ω = 1, poichè l ampiezza in quel punto sarà la nostra costante. Il sistema in esame ha un asintoto orizzontale, quindi è di tipo. L intersezione di questo asintoto con la retta a ω = 1 è di facile individuazione, ne consegue che il guadagno deve essere di 2dB (cioè di ampiezza 1). Quindi possiamo porre K p = 1 e ricordando che il sistema è di tipo, usando la tabella 5.1 ricaviamo che e ss = 1/(1 + K p ) = 1/(1 + 1) =.91, cioè un errore di circa il 9%. Per verificare se le nostre ipotesi sono fondate, lanciamo questi comandi dalla command window: sys_cl = feedback(sys,1); step(sys_cl) Il grafico nella figura 5.15 mostra che tutte le nostre ipotesi erano sensate, non c è infatti overshoot, il rise time è di circa,2 secondi e l errore steady state è di circa il 9%. Ora dobbiamo progettare un controllore che soddisfi i nostri criteri di progetto. Useremo un controllore PI, sia perché questo annulla l errore steady state, sia perché ha uno zero facilmente controllabile che da maggiore flessibilità in fase di progetto. La funzione di trasferimento di un controllore PI può essere scritta così: G c (s) = K P (s + a) s (5.8) In cui a = K I /K P. Per prima cosa ci serve sapere il valore del coefficiente di smorzamento corrispondente ad un overshoot del 4%. Usando le relazioni 4.4 si trova facilmente ζ =.28. Quindi il nostro margine di fase deve essere almeno di 3 gradi. Dalle equazioni 5.6 noto ζ troviamo che ω BW = 15, 9. Quindi vogliamo avere una frequenza di cut off maggiore di 15,9 per avere un settling time minore di 2 secondi. Ora che conosciamo il margine di fase e la frequenza di cut off desiderati, possiamo iniziare a progettare il controllore (vale la pena ricordare che la frequenza di cut off desiderata è quella per il sistema closed loop, e poichè noi studiamo i diagrammi di Bode open loop il guadagno corrispondente alla frequenza di banda sarà di circa -7dB). Vediamo che effetto ha l integratore (il polo nell origine) del controllore PI. Modifichiamo così il nostro m-file: num = 1; den = [1.25 1]; plant = tf(num,den); numpi = 1;

51 CAPITOLO 5. RISPOSTA IN FREQUENZA 41 1 Risposta al gradino Ampiezza della risposta Tempo (sec) Figura 5.15 Risposta open loop del sistema denpi = [1 ]; contr = tf(numpi,denpi); bode(contr * plant, logspace(,2)) grid Lanciamolo per ottenere il grafico nella figura Sia il margine di fase (circa 15 gradi) che la frequenza di cut off (circa 4 rad/s) sono troppo bassi. Possiamo aumentare sia la frequenza che il guadagno inserendo uno zero. Inseriamo quindi uno zero ad 1 modificando così l m-file: num = 1; den = [1.25 1]; plant = tf(num,den); numpi = [1 1]; denpi = [1 ]; contr = tf(numpi,denpi); bode(contr * plant, logspace(,2)) grid Otterremo il grafico nella figura Questa risposta soddisfa i nostri requisiti, infatti il margine di fase è di quasi 9 gradi (quindi avremo un overshoot piccolo o nullo) e la frequenza di cut off è di circa 19 rad/s. Anche se rispetta i nostri requisiti, la frequenza di cut off è troppo vicina a quella limite. Per aumentare la differenza, aumentiamo il guadagno e poniamolo uguale a 5. Questa modifca farà aumentare la frequenza di cut off mantenendo costante il margine di fase. Modifichiamo così l m-file: num = 1; den = [1.25 1]; plant = tf(num,den); numpi = 5*[1 1]; denpi = [1 ]; contr = tf(numpi,denpi); bode(contr * plant, logspace(,2)) grid La risposta mostrata nella figura 5.18 mostra una frequenza di cut off decisamente superiore alla precedente, quindi questa configurazione è del tutto soddisfacente. Vediamo ora la risposta closed loop del sistema così da verificare se abbiamo lavorato bene. Inseriamo questi comandi nella command window: sys_cl = feedback(contr * plant,1); step(sys_cl)

52 CAPITOLO 5. RISPOSTA IN FREQUENZA 42 2 Diagrammi di Bode Ampiezza (db) Fase (deg) Frequenza (rad/sec) Figura 5.16 Diagrammi di Bode del sistema con controllo (con solo integratore) 2 Diagrammi di Bode 1 Ampiezza (db) Fase (deg) Frequenza (rad/sec) Figura 5.17 Diagrammi di Bode del sistema controllato (con integratore e guadagno unitario) La risposta mostrata nella figura 5.19 mostra che la risposta è anche migliore di come prevedevamo. Questo non avverrà sempre e spesso si dovranno modificare i parametri per avere una risposta soddisfacente. 5.3 Diagramma di Nyquist Il diagramma di Nyquist permette di prevedere la stabilità e il comportamento closed loop di un sistema a partire dalla sua risposta open loop. Il criterio di Nyquist può essere usato indipendentemente dalla stabilità open loop. Quindi useremo questo criterio per determinare la stabilità closed loop quando la soluzione mediante i diagrammi di Bode è inapplicabile. Il diagramma di Nyquist è la rappresentazione di G(jω) nel piano Reale-Immaginario dove G(s) è la funzione di trasferimento open loop e w è il vettore di frequenze che racchiude il semipiano destro. Nel disegnare il diagramma di Nyquist vengono prese in considerazione sia le frequenza

53 CAPITOLO 5. RISPOSTA IN FREQUENZA 43 4 Diagrammi di Bode 3 Ampiezza (db) Fase (deg) Frequenza (rad/sec) Figura 5.18 Diagrammi di Bode del sistema controllato (con integratore e guadagno pari a 5) 1.4 Risposta al gradino Ampiezza della risposta Tempo (sec) Figura 5.19 Risposta closed loop del sistema

54 CAPITOLO 5. RISPOSTA IN FREQUENZA 44 R(s) + E(s) G(s) Y (s) H(s) Figura 5.2 Sistema closed loop con feedback non unitario positive che le negative. Nel lavorare sui diagramma Nyquist si deve porre parecchia attenzione ai poli che appartengono all asse jω. G(s) non è infatti definita in quei punti, e il diagramma dovrà girarci attorno. La funzione di Matlab nyquist non tiene però conto di questi poli, fornendo una rappresentazione sbagliata. Nel caso sia necessario studiare un sistema con dei poli sull asse immaginario è disponibile una funzione che disegna un grafico accurato a questo link: http: // Il criterio di Cauchy Il criterio di Cauchy per l analisi complessa dice che prendendo una curva chiusa nel piano complesso, e mappandola attraverso una funzione1 complessa G(s), il numero di volte che il grafico di G(s) gira attorno all origine è uguale al numero di zeri di G(s) racchiusi dalla curva meno il numero di poli racchiusi dalla curva. I giri attorno all origine sono contati come positivi se avvengono nello stesso verso della curva, negativi se nel verso opposto. Quando studiamo un controllo con feedback noi non siamo interessati alla funzione di trasferimento del sistema G(s) ma alla funzione di trasferimento closed loop: G(s) 1 + G(s) Se 1 + G(s) gira intorno all origine, G(s) racchiuderà il punto -1. Poichè siamo interessati alla stabilità closed loop, vogliamo conoscere se ci sono poli closed loop (cioe zeri di 1 + G(s)) nel semipiano destro Stabilità closed loop Consideriamo il sistema mostrato nella figura 5.2. Usando il criterio di Cauchy troviamo che il numero di volte N che il grafico di G(s)H(s) gira intorno a -1 è uguale al numero di zeri di 1 + G(s)H(s) racchiusi nella curva (detta frequenza di contorno) meno il numero di poli P di 1 + G(s)H(s) racchiusi nella frequenza di contorno. Guardando attentamente alla funzione di trasferimento closed e open loop dovremmo convincerci che: Gli zeri di 1 + G(s)H(s) sono i poli della funzione di trasferimento closed loop I poli di 1 + G(s)H(s) sono i poli della funzione di trasferimento open loop Il criterio di Nyquist dice che: P è il numero di poli open loop instabili di G(s)H(s) N è il numero di volte che il diagramma di Nyquist gira attorno a -1 (come convenzione scegliamo che i giri orari contano come positivi, gli antiorari come negativi) Z è il numero dei poli del sistema closed loop contenuti nel semipiano positivo Con questa convenzione, l equazione che lega queste tre quantita è: Z = P + N (5.9) E quindi molto importante capire quante volte il diagramma gira attorno al punto -1. Una volta trovati i poli open loop nel semipiano destro (P ) e il numero di giri che il diagramma fa attorno a

55 CAPITOLO 5. RISPOSTA IN FREQUENZA Diagramma di Nyquist 1.5 Asse immaginario Asse reale Figura 5.21 Diagramma di Nyquist con guadagno unitario -1 (N) possiamo determinare la stabilità del sistema con l equazione 5.9. Se Z è positivo il sistema closed loop sarà instabile. Possiamo anche utilizzare il diagramma Nyquist per trovare l intervallo di guadagni che rende il sistema stabile. Proviamo a studiare il sistema nella figura 5.8 in cui: G(s) = s2 + 1s + 24 s 2 8s + 15 Il guadagno K può essere variato in modo da modificare la risposta del sistema closed loop. Vedremo che potremo variare questo guadagno solo entro certi limiti per mantenere la risposta stabile. Quello che ora andiamo a cercare è l intervallo di guadagni che mantengono stabile la risposta. Per prima cosa cerchiamo il numero di poli positivi usando questo comando nella command window: roots([1-8 15]) La risposta di Matlab sarà: ans = 5 3 I poli della funzione open loop sono entrambi positivi, quindi per rendere stabile il sistema abbiamo bisogno di almeno 2 giri antiorari (N = 2) del diagramma di Nyquist in modo da avere stabilità nel sistema closed loop. Se il numero di giri è minore di 2 o non sono antiorari il sistema sarà instabile. Per trovare il diagramma di Nyquist del sistema inseriamo questi comandi nella command window: sys = tf([ ],[ ]); nyquist(sys) Otterremo il diagramma In questo diagramma ci sono 2 giri antiorari intorno a -1, quindi il sistema è stabile per un guadagno unitario. Proviamo a cambiare guadagno con questa istruzione: nyquist(2*sys) Il diagramma 5.22 si è esteso rispetto al precedente, quindi continuano ad esserci 2 giri antiorari attorno a -1. Ciò sta a dire che per qualsiasi guadagno maggiore di 1 il sistema è sempre stabile. Proviamo ora a diminuire il guadagno con questa istruzione: nyquist(.5*sys) Il diagramma 5.23 non compie alcun giro attorno a -1, quindi il sistema è diventato instabile. Attraverso varie prove troviamo che il sistema sarà stabile fino ad un guadagno di,8.

56 CAPITOLO 5. RISPOSTA IN FREQUENZA 46 3 Diagramma di Nyquist 2 1 Asse immaginario Asse reale Figura 5.22 Diagramma di Nyquist con guadagno pari a 2.8 Diagramma di Nyquist.6.4 Asse immaginario Asse reale Figura 5.23 Diagramma di Nyquist con guadagno pari a,5

57 CAPITOLO 5. RISPOSTA IN FREQUENZA Guadagno di margine Abbiamo già definito il margine di guadagno come il guadagno necessario a rendere instabile il sistema quando lo sfasamento è uguale a 18 gradi. Ipotizziamo di avere un sistema stabile se non ci sono giri del diagramma di Nyquist attorno a -1. Ad esempio consideriamo questo sistema: G(s) = 5 s 3 + 9s 2 + 3s + 4 Il sistema non ha poli open loop nel semipiano destro e quindi se non ci sono giri del diagramma di Nyquist attorno a -1 non avrà poli closed loop instabili. Ora ci chiediamo di quanto possiamo variare il guadagno prima che il sistema diventi instabile in closed loop. Facciamo disegnare a Matlab il diagramma di Nyquist di questo sistema: sys=tf(5,[ ]) nyquist(sys) Il sistema nella figura 5.24 diventrà instabile se il guadagno oltrepasserà un certo limite. La parte negativa dell asse reale compresa tra 1/a (cioè il punto in cui c è uno sfasamento di 18 gradi, in pratica l intersezione del diagramma con l asse reale) e -1. Quindi se il guadagno diventa pari ad a il sistema diventerà instabile poiché avremo: ag(jω) = 1 Quindi il margine di guadagno è proprio a, o meglio, poiche il margine si misura in decibel, il margine di guadagno è: GM = 2 log 1 (a) Non ci resta che trovare il valore di a, cioè il punto in cui c è uno sfasamento di esattamente 18 gradi. Questo significa che la funzione di trasferimento in quel punto è reale (non ha parte immaginaria). Poichè il numeratore è già reale, dobbiamo studiare solo il denominatore. Poiche s = jω, gli unici termini al denominatore che hanno parte immaginaria sono le potenze dispari di s. Quindi per farsi sì che G(jω) sia reale dobbiamo porre: jω 3 + 3jω = ω 1 =, ω 2 = 3 A noi interessa l intersezione più a sinistra del diagramma, cioè ω = 3. valore di G(jω) inserendo questi comandi: w=sqrt(3); polyval(5,j*w)/polyval([ ],j*w) Ed otterremo: ans = Troviamo quindi il Poichè il risultato è reale sappiamo che la risposta è corretta. Il punto, j è il punto 1/a. Ora che abbiamo il valore di a possiamo trovare il margine di guadagno: 1/a =, 2174 a = 4, 6 GM = 2 log 1 (4, 6) = 13, 26dB Margine di fase Abbiamo già definito il margine di fase come la differenza di fase nella risposta open loop necessaria per rendere instabile il sistema closed loop con un guadagno unitario. Il procedimento per trovare il margine di fase dal diagramm di Nyquist è semplice. Facendo riferimento al sistema appena analizzato, basta tracciare una circonferenza di raggio unitario e centro nell origine, trovare i punti di intersezione del diagramma di Nyquist con quest ultima e l angolo di cui è necessario ruotare il diagramma per portare questo punto a 18 gradi sarà il margine di fase. Nella figura 5.25 il margine di fase è l angolo compreso tra le 2 frecce. 5.4 Definizione delle reti di compensazione usando la risposta in frequenza Abbiamo già definito le reti di compensazione nel paragrafo 4.2, ora vogliamo solo scriverle nella forma della risposta in frequenza.

58 CAPITOLO 5. RISPOSTA IN FREQUENZA 48 1 Diagramma di Nyquist Asse immaginario Asse reale Figura 5.24 Diagramma di Nyquist Figura 5.25 Margine di fase sul diagramma di Nyquist

59 CAPITOLO 5. RISPOSTA IN FREQUENZA 49 Diagrammi di Bode 1 8 Ampiezza (db) Fase (deg) Frequenza (rad/sec) Figura 5.26 Diagramme di Bode di un anticipatore di fase Rete anticipatrice o anticipatore di fase Una rete anticipatrice o anticipatore di fase nella forma della risposta in frequenza ha questa equazione: G(s) = 1 + at s (5.1) 1 + T s Con a >. Questa forma equivale alla scrittura nel root locus se p = 1/T, z = 1/aT e K c = a. Una rete anticipatrice aggiunge una differenza di fase positiva che ha il picco tra le frequenze 1/aT e 1/T. Nella figura 5.26 sono mostrati i diagrammi di Bode di una rete anticipatrice. In base al valore di a, la variazione di fase può arrivare fino a 9 gradi. Se è necessaria una variazione di fase maggiore sarà necessario inserire più di una rete. Il valore massimo di fase aggiunta vale: E si trova alla frequenza: sin φ = a 1 a + 1 ω = 1 T a (5.11) (5.12) Per progettare questo controllore si determina a a partire dalla fase voluta, e poi si sceglie T per posizionare la frequenza di cross over. Oltre ad aumentare il margine di fase di un sistema, e quindi renderlo più stabile, una rete anticipatrice aumenta il guadagno del sistema alle altre frequenza di un valore pari ad A. Questo si traduce in un aumento della frequenza di cross over che può aiutare a ridurre il rise time ed il settling time del sistema Rete ritardatrice o ritardatore di fase Nella forma della risposta in frequenza, una rete ritardatrice ha questa equazione: G(s) = at s a 1 + T s (5.13) In cui a < 1. Il ritardatore di fase lavora in modo simile all anticipatore, con la differenza che da una variazione di fase e di guadagno opposta. Nella figura 5.27 sono mostrati i diagrammi di Bode di un ritardatore di fase. Il picco di variazione di fase si trova tra 1/T e 1/aT. L effetto principale del ritardatore di fase è aggiungere guadagno alle basse frequenze, così da diminuire l errore steady state della risposta closed loop di un fattore a. Poichè il guadagno diventa unitario alle medie e basse frequenze il transitorio non ne risentirà particolarmente. Un effetto collaterale del ritardatore di fase è la diminuzione della differenza di fase che può arrivare fino a 9 gradi. Questa diminuzione può rendere il sistema instabile.

60 CAPITOLO 5. RISPOSTA IN FREQUENZA 5 Ampiezza (db) Diagrammi di Bode 5 Fase (deg) Frequenza (rad/sec) Figura 5.27 Diagramma di Bode di un ritardatore di fase 5.5 Soluzione tramite risposta in frequenza del controllo di beccheggio Nel paragrafo 2.5 abbiamo trovato la funzione di trasferimento del problema: θ(s) δ e s = 1, 151s +, 1774 s 3 +, 739s 2 +, 921s (5.14) Abbiamo anche assunto un input di,2 rad e stabilito i seguenti criteri di progetto: Overshoot minore del 1%. Rise time inferiore ai 2 secondi. Settling time inferiore ai 1 secondi. Errore steady state minore del 2% Risposta senza controllo Abbiamo detto che la progettazione tramite diagrammi di Bode è utilizzabile se il sistema è stabile in open loop. Poichè il nostro sistema è instabile inopen loop dovremo usare i diagrammi di Nyquist. Per prima cosa, inseriamo il modello in Matlab e diamo uno sguardo ai poli e agli zeri della funzione di trasferimento con questi comandi: num = [ ]; den = [ ]; pitch = tf(num,den); roots(num) roots(den) Lanciandolo otterremo questi i valori dei poli e degli zeri: ans = ans = i i

61 CAPITOLO 5. RISPOSTA IN FREQUENZA Diagramma di Nyquist Asse Immaginario Asse Reale Figura 5.28 Diagramma di Nyquist con funzione modificata del controllore di beccheggio.2 Risposta al gradino Ampiezza Tempo (sec) Figura 5.29 Risposta closed loop del controllo di beccheggio Il sistema non ha quindi nessun polo nel semipiano positivo. Il diagramma Nyquist non dovrà compiere nessun giro attorno a -1 per far si che il sistema rimanga stabile. Notiamo che il sistema ha un polo sull asse immaginario, quindi non potremo usare il comando nyquist ma dovremmo usare la funzione scaricabile al link fornito nel paragrafo 5.3. Disegnamo quindi il diagramma di Nyquist sostituendo ai comandi roots questo comando: nyquist1(pitch) Otterremo il diagramma Poichè il diagramma di Nyquist non compie alcun giro attorno a -1, il sistema dovrebbe essere stabile in closed loop. Verifichiamo sostituendo nyquist1 con: syscl=feedback(pitch,1); step(.2*syscl) Otterremo la risposta 5.29 che come abbiamo previsto è stabile, ma non soddisfa alcun requisito di progetto.

62 CAPITOLO 5. RISPOSTA IN FREQUENZA 52 Risposta al gradino.25 Ampiezza della risposta Tempo (sec) Figura 5.3 Risposta closed loop del controllo di beccheggio con l aggiunta di uno zero Aggiunta di un controllo Per migliorare la risposta, proviamo ad aggiungere uno zero a -8 modificando così l m-file: num = [ ]; den = [ ]; pitch = tf(num,den); numc =[1 8]; denc = 1; k = 1; contr = k*tf(numc,denc); loop = contr*pitch; nyquist1(pitch) syscl=feedback(loop,1); t=:.1:1; step(.2*syscl,t) La risposta nella figura 5.3è migliorata, ma è ancora troppo instabile nel transitorio. Aggiungiamo quindi un secondo zero per stabilizzarla. Dopo diverse prove, questi valori danno una risposta soddisfacente: numc =conv([1 5],[1 4]); denc = 1; k = 2; Avremo infatti il grafico nella figura 5.31 che soddisfa i nostri criteri.

63 CAPITOLO 5. RISPOSTA IN FREQUENZA 53 Risposta al gradino.25 Ampiezza della risposta Tempo (sec) Figura 5.31 Risposta closed loop del controllo di beccheggio con l aggiunta di due zeri

64 Capitolo 6 Spazio degli stati In questo capitolo saranno usati questi comandi chiave: acker, lsim, place. 6.1 Equazioni in forma di spazio degli stati Come abbiamo già visto ci sono diversi modi per descrivere un sistema di equazioni lineari. La rappresentazione in forma di spazio degli stati (da ora SS) è data dalle equazioni: dx = Ax + Bu dt (6.1a) y = Cx + Du (6.1b) Dove x è un vettore di n elementi rappresentante gli stati (che in un sistema meccanico comune sono posizione e velocità), u indica l input e y è il vettore di output. Le equazioni rappresentano n equazioni differenziali del primo ordine. La rappresentazione SS puo essere utilizzata sia per sistemi SISO (single input single output) che per sistemi MIMO (multiple input multiple output). Per introdurre il metodo dello spazio degli stati considereremo un sistema composto da una pallina sospesa su un campo magnetico (fig 6.1). La corrente che attraversa l avvolgimento induce un campo magnetico che bilancia la forza di gravita e fa sì che la pallina (che è fatta di materiale magnetico) rimanga sospesa a mezz aria. Le equazioni che descrivono il sistema sono: m d2 h dt 2 Ki2 = mg h V = L di dt + it (6.2a) (6.2b) In cui h è la posizione verticale della pallina, i la corrente che passa nel circuito, V il voltaggio applicato, m la massa della pallina, g la costante gravitazionale, R la resistenza, L l induttanza e K è un coefficiente che determina la forza magnetica esercitata sula pallina. Fissiamo poi questi valori: M =,5 kg K =, 1 L =,1 H R =1 Ω g =9,81 m/s 2 Il sistema è in equilibrio quando h = Ki 2 /mg (cioè dh/dt = ). Linearizziamo le equazioni intorno ad h =, 1 (che corrisponde ad una corrente nominale di circa 7 ampere) e scriviamo la rappresentazione in forma SS, in cui u è il voltaggio in ingresso V, y è h e: h x = h (6.3) i Inseriamo il modello in forma SS in Matlab, creiamo quindi un nuovo m-file e inseriamo queste istruzioni: 54

65 CAPITOLO 6. SPAZIO DEGLI STATI 55 R L V + h mg Figura 6.1 Modello di pallina sospesa con un campo magnetico A = [ ]; B = [ 1]; C = [1 ]; D = ; 1 Una delle prime informazioni che ci servono dalle equazioni di stato sono i poli del sistema. Questi sono le soluzioni di det(si A) =, che in pratica rappresentano gli autovalori di A, che possono essere trovati lanciando questa istruzione da command window: poles = eig(a) Come risposta otterremo: poles = Uno dei poli è nel semipiano positivo, quindi il sistema è instabile in open loop. Per controllare la risposta open loop aggiungiamo queste righe all m-file: t = :.1:2; u = *t; x = [.5 ]; sys = ss(a,b,c,d); [y,t,x] = lsim(sys,u,t,x); plot(t,y) Dove il comando lsim da la risposta del sistema sys nel intervallo di tempo t alla sollecitazione u e pone la posizione iniziale pari a x. Lanciando l m-file otterremo il grafico nella figura 6.2, in cui è evidente che la risposta è instabile (ovviamente la pallina non va all infinito ma si ferma quando incontra il tavolo/pavimento, e in ogni caso dopo una certa distanza la linearizzazione non è più valida) Progetto di un controllore utilizzando il posizionamento dei poli Costruiamo un controllore per questo sistema (il diagramma a blocchi del sistema è visibile nella figura 6.3). Sappiamo che il polinomio caratteristico di questo sistema closed loop è det(si (A BK)). Poichè le matrici A e BK sono 3x3 ci saranno 3 poli nel sistema. Con l analisi SS possiamo

66 CAPITOLO 6. SPAZIO DEGLI STATI 56 4 x 124 Risposta al gradino Ampiezza Tempo Figura 6.2 Risposta open loop del sistema pallina e campo magnetico porre i poli ovunque vogliamo usando la funzione place che trova la matrice K corrispondente ai poli voluti. Decidiamo prima che risposta closed loop vogliamo. Supponiamo di volere settling time minore di,5 secondi, overshoot inferiore al 5% e cerchiamo di porre i due poli dominanti a 1 ± 1i (valori trovati utilizzando le formule 4.4 e corrispondenti a ζ =, 7 e σ = 1 4, 6/, 5). Il terzo polo possiamo collocarlo a -5 come prima prova, per poi cambiarlo in seguito se la risposta non ci soddisfa. Eliminiamo il comando lsim dall m-file e aggiungiamo queste righe: p1 = i; p2 = -1-1i; p3 = -5; K = place(a,b,[p1 p2 p3]); sys_cl=ss(a-b*k,b,c,d); lsim(sys_cl,u,t,x); Lanciandolo otteniamo il grafico nella figura 6.4. L overshoot è troppo alto e non soddisfa i nostri criteri. Nella formulazione SS si deve tenere in conto che non sono visualizzabili gli zeri della funzione di trasferimento, che possono aumentare l overshoot. Proviamo ad allontanare i poli con questi valori: p1 = i; p2 = i; p3 = -11; La risposta visibile nella figura 6.5 è migliorata per quanto riguarda l overshoot. In generale più lontani sono i poli, maggiore è il compito che deve effettuare il controllore (e quindi la sua complessità costruttiva o il suo costo). Sottlineamo che la funzione place non funziona se vogliamo collocare 2 poli nella stessa posizione. In quel caso si dovrà usare acker Input di riferimento Studiamo ora la risposta ad una sollecitazione a gradino (sceglieremo un gradino piccolo per non uscire dall intervallo di linearizzazione). Sostituiamo t, u e lsim con queste righe: t = :.1:2; u =.1*ones(size(t)); sys_cl = ss(a-b*k,b,c,d); lsim(sys_cl,u,t)

67 CAPITOLO 6. SPAZIO DEGLI STATI 57 R + E(s) ẋ = Ax + Byy = Cx Y y = Cx X K Figura 6.3 Diagramma a blocchi del sistema pallina e campo magnetico 7 x 1 3 Risultato della simulazione lineare Ampiezza Tempo (sec) Figura 6.4 Simulazione lineare closed loop del sistema pallina e campo magnetico

68 CAPITOLO 6. SPAZIO DEGLI STATI 58 6 x 1 3 Risultato della simulazione lineare 5 4 Ampiezza Tempo (sec) Figura 6.5 Simulazione lineare closed loop del sistema con poli allontanati axis([ ]) La risposta del sistema, visibile nella figura 6.6, non rispecchia per niente la realtà: non solo l ampiezza non è unitaria, ma è negativa invece di positiva. Questo si spiega osservando con attenzione il diagramma 6.6. Noi non confrontiamo l output con l input di riferimento, ma Kx, e non c è ragione per cui Kx debba essere uguale all output. Per eliminare il problema, dobbiamo scalare l input di riferimento e porlo uguale a Kx. Il fattore di scala che fa questo è spesso chiamato Nbar. Possiamo trovare Nbar con Matlab scrivendo questa funzione: function[nbar]=rscale(a,b,c,d,k) nargin1 = nargin; if (nargin1==2), % Input come sistema [A,B,C,D] = ssdata(a); K=b; elseif (nargin1==5), % A,B,C,D matrici A=a; B=b; C=c; D=d; K=k; else error( L"Input deve avere forma (sys,k) o (A,B,C,D,K) ) end; s = size(a,1); Z = [zeros([1,s]) 1]; N = inv([a,b;c,d])*z ; Nx = N(1:s); Nu = N(1+s); Nbar=Nu + K*Nx; Salvandola nei nostri m-file come rscale.m potremo richiamarla nei calcoli futuri. Proviamo quindi a scalare l input di riferimento del sistema e a ricalcolare l output eliminando la riga con lsim ed inserendo queste righe: Nbar=rscale(sys,K) lsim(sys_cl,nbar*u,t) axis([ 2.2]) Il grafico nella figura 6.7 mostra ora una risposta accettabile.

69 CAPITOLO 6. SPAZIO DEGLI STATI 59 x 1 5 Risultato della simulazione lineare Ampiezza Tempo (sec) Figura 6.6 Simulazione lineare closed loop con input a gradino del sistema 2 x 1 3 Risultato della simulazione lineare Ampiezza Tempo (sec) Figura 6.7 Simulazione lineare closed loop con input a gradino del sistema (scalato)

70 CAPITOLO 6. SPAZIO DEGLI STATI 6 R + E(s) ẋ = Ax + Bu x C y + K L ˆx = Aˆx + Bu + L(y ŷ) ˆx C ŷ Figura 6.8 Diagramma a blocchi del sistema più l osservatore Progetto di un osservatore Quando non possiamo misurare tutti gli stati di x (nella maggioranza dei casi), possiamo costruire un osservatore che faccia una stima degli stati mancanti misurando solo l output. Per l esempio della pallina nel campo magnetico possiamo aggiungere 3 stati stimati al sistema (diagramma nella figura 6.8). L osservatore non è altro che una copia del sistema, ha lo stesso input e spesso le stesse equazioni dfferenziali. Il termine aggiuntivo serve a comparare l output realmente misurato con l output stimato ŷ; questo serve per far convergere 1 lo stato stimato ˆx con l x reale. La dinamica dell errore dell osservatore è data dai poli di (A LC). Per prima cosa dobbiamo scegliere il guadagno dell osservatore L. Poichè vogliamo che la dinamica dell osservatore sia più rapida del sistema in sè, dobbiamo porre i poli almeno 5 volte più distanti dei poli del sistema. A causa del dualismo tra la controllabilità e l osservabilità, useremo la stessa tecnica utilizzata per trovare la matrice di controllo, ma sostituendo C a B e poi usando le trasposte. Per inserire i poli usiamo quindi questi comandi: op1 = -1; op2 = -11; op3 = -12; L = place(a,c,[op1 op2 op3]) ; Le equazioni mostrate nel diagramma nella figura 6.8 sono in funzione di ˆx. In genere si riportano le equazioni combinate del sistema più osservatore usando lo stato originale x più l errore e = x ˆx. Con un pò di algebra riusciamo arrivamo a inserire così le matrici: At = [A - B*K B*K zeros(size(a)) A - L*C]; Bt = [ B*Nbar zeros(size(b))]; Ct = [ C zeros(size(c))]; Per simulare la risposta a una condizione iniziale non nulla con nessun input di riferimento, aggiungiamo queste righe all m-file (in genere assumiamo che l osservatore abbia condizione iniziale nulla, ˆx =, così che la condizione iniziale dell errore è uguale alla condizione iniziale dello stato): sys=ss(at,bt,ct,); lsim(sys,zeros(size(t)),t,[x x]) Lanciando l m-file otterremo il grafico dell errore visibile nella figura 6.9.

71 CAPITOLO 6. SPAZIO DEGLI STATI 61 6 x 1 3 Risultato della simulazione lineare Ampiezza Tempo (sec) Figura 6.9 Simulazione lineare closed loop dell osservatore con input a gradino 6.2 Risoluzione tramite analisi SS del controllore di beccheggio Nel paragrafo 2.2 abbiamo trovato il modello a spazio degli stati del controllore di beccheggio: α α q = q [δ e ] (6.4) θ 56.7 θ y = [ 1 ] α q θ + [][δ e ] (6.5) L input (l angolo dell equilibratore δ e ) è di,2 rad e l output è l angolo di beccheggio (θ). I criteri di progetto sono: Overshoot inferiore al 1%. Rise time inferiore ai 5 secondi. Settling time inferiore ai 1 secondi. Errore steady state inferiore al 2% Controllabilità e osservabilità La prima cosa da fare nel progettare col metodo SS è verificare la controllabilità e la osservabilità del sistema. Per far sì che il sistema sia del tutto controllabile la matrice di controllo deve avere rango n: C T = [BAB... A n 1 B] (6.6) Allo stesso modo, per far sì che il sistema sia completamente osservabile, la matrice di osservabilità deve avere rango n: C O T = CA... (6.7) CA n 1

72 CAPITOLO 6. SPAZIO DEGLI STATI 62 Poichè le nostre matrici di controllabilità e osservabilità sono 3x3, il rango deve essere 3. Il comando di Matlab rank fornisce il rango di una matrice. Creiamo un nuovo m-file ed inseriamo queste righe: A = [ ; ; 56.7 ]; B = [.232;.23; ]; C = [ 1]; D = []; pitch = ss(a,b,c,d); co = ctrb(pitch); ob = obsv(pitch); Controllability = rank(co) Observability = rank(ob) Lanciandolo otterremo: Controllability = 3 Observability = 3 Questo dimostra che il nostro sistema è totalmente controllabile e osserbabile Progetto del controllore mediante posizionamento dei poli Come già detto, la tecnica del posizionamento dei poli può essere usata per trovare la matrice di controllo K. In questo esempio useremo però un altro metodo, detto Linear Quadratic Regulator (LQR). Questo metodo permette di trovare la matrice di controllo ottimale come risultato di un bilanciamento tra gli errori del sistema e il lavoro del controllo. Per usare il metodo LQR dobbiamo trovare 3 parametri: la matrice di indice di performance (R), la matrice di costo di stato (Q) e il fattore di peso (p). Per semplicità scegliamo la matrice di indice di performance pari a 1 (R = 1), e la matrice di costo di stato pari a C C. Il fattore di peso p sarà variato in funzione della risposta al gradino. Come prima prova poniamo p = 5. Riscriviamo così l m-file: t = :.1:1; de =.2*ones(size(t)); yo = [ ]; A = [ ; ; 56.7 ]; B = [.232;.23; ]; C = [ 1]; D = []; R=1; Q=C *C; p = 5; LQR = R*Q*p; [K] = lqr(a,b,lqr,1);

73 CAPITOLO 6. SPAZIO DEGLI STATI 63.4 Risultato della simulazione lineare Ampiezza Tempo (sec) Figura 6.1 Simulazione lineare closed loop del sistema di controllo di beccheggio sys_cl=ss(a-b*k,b,c,d); lsim(sys_cl,de,t,yo) axis([ 1.4]) Lanciandolo otterremo la figura 6.1. Il rise time, l overshoot e il settling time sono soddisfacenti, ma l errore steady state è troppo alto. Questo problema può essere facilmente risolto inserendo il fattore di scala Nbar. Come abbiamo già detto i sistemi di controllo a spazio degli stati non confrontano l output con l input di riferimento, ma confrontano tutti gli stati moltiplicati la matrice di controllo (Kx). Usando la funzione rscale definita nel paragrafo precedente possiamo facilmente trovare il fattore di scala, Nbar, e risolvere il problema. Modifichiamo così le ultime righe dell m-file: Nbar = rscale(pitch,k) sys_cl=ss(a-b*k,b*nbar,c,d); lsim(sys_cl,de,t,yo) Lanciamolo per ottenere il grafico nella figura La risposta ora soddisfa tutti i nostri criteri di progetto.

74 CAPITOLO 6. SPAZIO DEGLI STATI Risultato della simulazione lineare.2.15 Ampiezza Tempo (sec) Figura 6.11 Simulazione lineare closed loop del sistema di controllo di beccheggio (scalato)

75 Capitolo 7 Dati discreti In questo capitolo saranno usati questi comandi chiave: c2d, pzmap, zgrid. 7.1 Introduzione ai controllori a dati discreti I sistemi di feedback studiati fin ora lavoravano su dati continui, mentre invece tutti i controlli moderni lavorano su dati discreti. Ciò nonostante, le tecniche studiate fin ora possono essere applicate con qualche modifica a dati discreti. Il diagramma di un sistema di controllo digitale è mostrato nella figura 7.1. Il controllore racchiuso nel rettangolo tratteggiato svolge la stessa funzione di un controllore continuo, la differenza sta che questo controllore lavora su segnali digitali. Nella figura 7.1 vediamo che il controllore lavora sia con segnali discreti che continui Zero order hold Il controllore lavora così: il clock connesso ai convertitori D/A e A/D (digitale/analogico e viceversa) invia un impulso ogni T secondi e i convertitori mandano segnali solo quando arriva l impulso. Questo fa sì che la parte di sistema contrassegnata come H zoh (z) (diagramma nella figura 7.2) lavori solo sui segnali u(z) e produca solo segali discreti y(k), cosi la funzione H zoh (z) può essere realizzata come funzione discreta. Vogliamo quindi trovare una funzione discreta H zoh (z) che faccia si che da un input costante nel sistema continuo H(s) ricaviamo un output continuo che corrisponda all output discreto di H zoh (z). Supponendo che il segnale u(k) rappresenti il segnale di input, esistono tecniche che da un segnale di input discreto riescono a ricavare un segnale continuo mediante il semplice blocco di quello discreto. Nella figura 7.3 è mostrato un esempio di zero order hold, i pallini viola rappresentano i dati discreti campionati a frequenza costante (,5 secondi), la linea blu il segnale continuo ottenuto. Tramite questa tecnica, la funzione H(s) può lavorare su dati continui, dati che verranno poi digitalizzati dal convertitore A/C. Noi però sostituiremo tutto il blocco con la funzione H zoh (z) riducendo così il problema al progetto di una sola funzione di trasferimento. Controllore digitale r(t) A/D + r(k) G(z) H(s) e(k) Eq. differenziale u(k) D/A û(t) Sistema ŷ(t) y(k) Clock A/D ŷ(t) Figura 7.1 Diagramma a blocchi di un sistema con controllo digitale 65

76 CAPITOLO 7. DATI DISCRETI 66 Hzoh(s) r(t) A/D + r(k) G(z) H(s) e(k) Eq. differenziale u(k) D/A û(t) Sistema ŷ(t) y(k) Clock A/D ŷ(t) Figura 7.2 Funzione H zoh (z) nel diagramma a blocchi di un sistema con controllo digitale 1.15 Esempio di zero order Hold.1.5 Ampiezza Tempo (sec) Figura 7.3 Esempio di zero order hold.

77 CAPITOLO 7. DATI DISCRETI Conversione dei dati utilizzando c2d In Matlab esiste la funzione c2d che converte un sistema continuo (sia in forma di funzione di trasferimento che di spazio degli stati) in un sistema discreto usando l operazione di zero order hold descritta sopra, o operazioni più complesse. Il comando ha questa forma: sys_d = c2d(sys,ts, zoh ) In cui la frequenza di campionamento Ts deve essere minore di 1/3BW, dove BW è la frequenza di cut-off. Funzione di trasferimento Supponiamo di avere una classica funzione di trasferimento: X(s) F (s) = 1 Ms 2 + bs + k (7.1) M =1 kg. b = 11 N s/m. k = 22 N/m. F (s) = 1. Assumiamo che la frequenza di cut-off closed loop sia maggiore di 1 rad/s, sceglieremo quindi T s = 1/1. Creiamo quindi un nuovo m-file con questi comandi: M = 1; b = 1; k = 2; num = 1; den = [M b k]; sys = tf(num,den); Ts = 1/1; sys_d = c2d(sys,ts, zoh ) Lanciandolo otterremo questo risultato: Transfer function: 4.837e-5 z e z^ z Sampling time:.1 Ora abbiamo la funzione di trasferimento in forma discreta. Spazio degli stati Supponiamo di avere questo modello a spazio degli stati: [ ] [ ] [ ẋ 1 x = v k/m b/m v ] [ + 1/M [ F ] (7.2) [ x y = [1] v ] + [][F ] (7.3) Assumiamo gli stessi valori di prima, creiamo un nuovo m-file ed inseriamo questi comandi: M = 1; b = 1; k = 2; A = [ 1; -k/m -b/m];

78 CAPITOLO 7. DATI DISCRETI 68 B = [ ; 1/M]; C = [1 ]; D = []; Ts = 1/1; sys = ss(a,b,c,d); sys_d = c2d(sys,ts, zoh ) Otterremo questa risposta: a = x1 x2 x x b = u1 x e-5 x c = x1 x2 y1 1 d = u1 y1 Sampling time:.1 Discrete-time model. Che rappresenta il nostro modello a spazio degli stati in forma discreta Stabilità e risposta nel transitorio Nei sistemi continui sappiamo che certi comportamenti dipendono dal posizionamento dei poli nel piano reale-immaginario. Ad esempio un sistema è instabile se un polo si trova a destra dell asse immaginario. Per un sistema discreto, analizziamo il comportamento a seconda della posizione dei poli nel piano detto z-plane. I punti di questo piano sono legati ai punti dei piano reale immaginario dalla relazione: z = e st (7.4) In cui: T= tempo di campionamento s= posizione dei punti nel piano reale immaginario z= posizione dei punti nello z-plane La figura 7.4 mostra le linee a coefficiente di smorzamento costante (ζ) e frequenza naturale costante (ω n ) nello z-plane. In questo piano il limite di stabilità è un cerchio di raggio uguale a z = 1. Per analizzare il comportamento nel transitorio possiamo ancora utilizzare le equazione 4.4. Suppioniamo di avere questa funzione di trasferimento discreta: Y (z) F (z) = 1 z 2, 3z +, 5 (7.5) Creiamo un nuovo m-file ed inseriamo questi comandi: numdz = 1; dendz = [ ]; sys = tf(numdz,dendz,-1); % il -1 indica tempo di campionamento indeterminato

79 CAPITOLO 7. DATI DISCRETI π/T.9π/T π/t π/t.7π/t.6π/t.5π/t.4π/t.1.3π/t π/t.1π/t.2.9π/t.1π/t.4.6.8π/t.2π/t.8.7π/t.3π/t.6π/t.4π/t.5π/t Figura 7.4 Linee a coefficente di smorzamento e frequenza naturale costante nello z-plane pzmap(sys) axis([ ]) zgrid Lanciandolo otterremo il grafico nella figura 7.5 che mostra i due poli ad una frequenza naturale di circa 9π/2T e un coefficiente di smorzamento di,25. Ipotizziamo di avere un tempo di campionamento di 1/2 (che comporta ω n = 28) e usando le equazioni sopracitate possiamo determinare che il sistema ha un rise time di circa,6 secondi, un settling time di circa,65 secondi e un overshoot del 45%. Calcoliamo la risposta al gradino e vediamo se le nostre ipotesi sono corrette. Aggiungiamo queste righe all m-file: sys = tf(numdz,dendz,1/2); step(sys,2.5); La figura 7.6 conferma tutte le nostre ipotesi Root locus discreto L equazione caratteristica per un sistema a feedback unitario discreto è: 1 + KG(z)H zoh (z) = (7.6) In cui G(z) è il compensatore implementato nel controllore digitale e Hzoh(z) la funzione di trasferimento discretaa del sistema. Il root locus può esser disegnato allo stesso modo che nel caso continuo, con la differenza che ora essendo nel piano z dovremmo usare la funzione zgrid per orientarci nel root locus. 7.2 Risoluzione del controllo di beccheggio nel caso discreto Nel paragrafo 2.5 abbiamo trovato il modello a spazio degli stati del controllore di beccheggio: α α q = q [δ e ] (7.7) θ 56.7 θ

80 CAPITOLO 7. DATI DISCRETI 7 1.6π/T Mappa poli zeri.5π/t.4π/t Asse immaginario π/t.9π/t π/t π/t.9π/t.7π/t π/t.2π/t.1π/t.1π/t.4.6.8π/t.2π/t.8.7π/t.3π/t.6π/t.4π/t.5π/t Asse reale Figura 7.5 Mappa poli-zeri della funzione discreta d esempio 1.4 Risposta al gradino Ampiezza Tempo (sec) Figura 7.6 Risposta al gradino della funzione discreta

81 CAPITOLO 7. DATI DISCRETI 71 y = [ 1 ] α q θ + [][δ e ] (7.8) L input (l angolo degli equilibratori δ e ) è di,2 rad e l output è l angolo di beccheggio (θ). I criteri di progetto sono: Overshoot inferiore al 1%. Rise time inferiore ai 5 secondi. Settling time inferiore ai 1 secondi. Errore steady state inferiore al 2% Spazio degli stati discreto Per prima cosa troviamo lo spazio degli stati in forma discreta. Nel paragrafo sulla risposta in frequenza abbiamo visto che la frequenza di cut off del sistema è di circa 2 rad/s, quindi scegliamo come tempo di campionamento 1/1. Creiamo un nuovo m-file ed inseriamo queste righe: A = [ ; ; 56.7 ]; B = [.232;.23; ]; C = [ 1]; D = []; pitch = ss(a,b,c,d); Ts=1/1; pitch_d = c2d(pitch,ts, zoh ); Controllabilità e osservabilità Nel paragrafo dello spazio degli stati abbiamo detto che il sistema è completamente controllabile se la matrice di controllabilità ha rango n (con n numero di stati), ed è completamente osservabile se la matrice di osservabilità ha rango n. Vediamo quindi quanto questo sistema è controllaabile e osservabile aggiungendo queste righe: [F,G,H,J]=ssdata(pitch_d); Ts = 1/1; pitch_d = ss(f,g,h,j,ts); co = ctrb(pitch_d); ob = obsv(pitch_d); Controllability = rank(co) Observability = rank(ob) Lanciando l m-file otteniamo: Controllability = 3 Observability = 3 Quindi il sistema è del tutto controllabile e osservabile.

82 CAPITOLO 7. DATI DISCRETI Risultato della simulazione lineare: Modello discreto.3.25 Ampiezza Tempo Figura 7.7 Risposta a dati discreti del controllore di beccheggio Progetto del controllo mediante posizionamento dei poli Anche in questo caso useremo il metodo LQR per trovare la matrice di controllo K. Usiamo le stesse ipotesi del paragrafo 6.2 e scegliamo un fattore di peso pari a 5 come prima prova. Eliminamo i comandi rank dall m-file e aggiungiamo queste righe: t = :.1:1; de =.2*ones(size(t)); R=1; Q=C *C; p = 5; LQR = R*Q*p; [K] = dlqr(f,g,lqr,1) Ts = 1/1; sys_cl = ss(f-g*k,g,h,j,ts); [Y,T] = lsim(sys_cl,de); stairs(t,y) Lanciando l m-file otterremo la matrice di controllo e la risposta ad una sollecitazione a gradino (fig. 7.7). La risposta ci soddisfa per quanto riguarda rise time, settling time e overshoot ma ha un errore steady state troppo alto. Per risolvere il problema dobbiamo trovare il fattore di scala Nbar. Non possiamo però usare la funzione rscale perché è definita per dati continui, quindi tramite prove ed errori troviamo il fattore di scala ottimale pari a 6,95. Per verificarlo,modifichiamo così le ultime righe dell m-file: Nbar = 6.95; sys_cl = ss(f-g*k,g*nbar,h,j,ts); [x] = lsim(sys_cl,de); stairs(t,x) La risposta nella figura 7.8 soddisfa tutti i requisiti.

83 CAPITOLO 7. DATI DISCRETI Risultato della simulazione lineare: Modello discreto.2 Ampiezza Tempo Figura 7.8 Risposta a dati discreti del controllore di beccheggio con fattore di scala

84 Capitolo 8 Simulink Simulink è un estensione grafica di Matlab per la modellazione e la simulazione dei sistemi. In Simulink, i sistemi sono inseriti come diagrammi a blocchi. Molti elementi del diagramma sono già disponibili nel programma, come la funzione di trasferimento o le giunzioni di somma, così come sono disponibili input e output visivi come generatori e oscilloscopi. Simulink è integrato in Matlab e i dati possono essere facilmente trasferiti tra i programmi. In questi capitoli applicheremo Simulink agli esempi studiati fin ora con Matlab. 8.1 Elementi di Simulink Simulink può essere lanciato dando nella command window il comando: >> simulink O in alternativa col tasto Simulink mostrato nella figura 8.1. Una volta lanciato, comparirà una finestra (fig. 8.2) che rappresenta la libreria di Simulink. Nella libreria sono presenti tutti i blocchi già utilizzabili per creare un modello Elementi di base In Simulink un modello è un insieme di blocchi che in generale rappresentano un sistema. Il modello è composto da due classi di elementi, i blocchi e le linee. I blocchi sono usati per generare, modificare, combinare e mostrare i segnali. Le linee sono usate per trasferire i segnali da un blocco all altro. Blocchi La libreria di Simulink dispone di molti Blockset, insieme di blocchi appartenenti ad un determinato argomento (Aerospaziale, comunicazioni, controllo etc.). Oltre a questi ci sono i blocchi di base di Simulink, che si dividono in varie categorie tra cui: Sources: Usati per generare vari tipi di segnale. Sinks: Usati per creare l output o mostrare il segnale. Figura 8.1 Posizione del tasto Simulink in Matlab 74

85 CAPITOLO 8. SIMULINK 75 Figura 8.2 Libreria di Simulink Discrete: Element di un sistema lineare e a tempo discreto (funzioni di trasferimento, spazio degli stati, etc.). Continuous: Elementi di un sistema lineare e a tempo continuo. Math operation: Operazioni matematiche. Signal routing: Somma di segnali, differenza e varie combinazioni. Linee Le linee trasmettono i segnali nella direzione indicata dalla freccia. Le line devono trasmettere sempre dal punto di output di un blocco al punto di input di un altro blocco. L unica eccezione è una linea che nasce da un altra, dividendo il segnale in due linee. Le linee non possono mai immettere il segnale in altre linee, per combinarle è necessario usare un blocco appropriato. I segnali posson essere sia scalari che vettoriali, per sistemi SISO si usano in genere segnali scalari, per i MIMO si usano i vettoriali. Le linee usate per trasmettere segnali scalari o vettoriali sono identiche, il tipo di segnale che passa in esse è determinato dai blocchi alle estremità Esempio di modello Per inserire un blocco basta trascinarlo dalla libreria al modello. Creiamo un modello semplice composto da tre blocchi: Step, Transfer Fcn e Scope (visibile nella figura 8.3). Il blocco Step appartiene alla categoria Sources e fornisce un input a gradino. Il blocco Transfer Fcn appartiene alla categoria Continuous ed immette una funzione di trasferimento. Il blocco Scope appartiene alla categoria Sinks e da un output visivo simile ad un oscilloscopio. Modificare i blocchi Tutti i blocchi possono essere modificati. Ad esempio, se facciamo due volte click sul blocco Transfer Fcn nel nostro modello, otterremo la finestre mostrata nella figura 8.4, in cui possiamo modificare il numeratore e il denominatore della funzione di trasferimento, inserendoli come vettori

86 CAPITOLO 8. SIMULINK 76 Figura 8.3 Modello di esempio Figura 8.4 Finestra di dialogo del blocco Transfer Fcn che contengono i coefficienti del polinomio (come si è sempre fatto fin ora in Matlab). Se ad esempio vogliamo inserire come denominatore s 2 +2s+1 inseriremo [1 2 1]. Chiudendo la finestra di dialogo il modello apparirà come nella figura 8.5. Anche il blocco Step è modificabile. Nella finestra di dialogo di questo blocco (fig. 8.6) possiamo modificare il tempo iniziale del gradino, il livello di partenza e il livello finale. Di default è configurato in modo da fornire un gradino unitario da a 1 a t =1 s. Questi parametri possono essere tutti cambiati, ma per non modifichiamoli e chiudiamo la finestra di dialogo. L ultimo blocco dell esempio è il blocco Scope. La finestra di dialogo si presenta come nella figura 8.7, ed in questa finestra verrà mostrato l output mentre la simulazione è in funzione. In ogni caso in questa trattazione non tratteremo a fondo il blocco Scope ma ci limiteremo alla funzione Autoscale.

87 CAPITOLO 8. SIMULINK 77 Figura 8.5 Modello modificato con la nuova funzione di trasferimento Figura 8.6 Finestra di dialogo del blocco Step

88 CAPITOLO 8. SIMULINK 78 Figura 8.7 Finestra di dialogo del blocco Scope Figura 8.8 Posizione del comando Start Simulazione Prima di avviare la simulazione, apriamo la finestra di dialogo del blocco Scope. Poi selezioniamo Start dal menù Simulation (fig. 8.8). La risposta nel blocco Scope sarà molto rapida e apparira come nella figura 8.9. L output della simulazione (in giallo) è però poco visibile con gli assi attuali. Per migliorare la visibilità, facciamo click sul bottone Autoscale (a forma di binocolo) che riscalerà gli assi come nella figura 8.1. Notiamo che la risposta non inizia prima di t = 1, questo parametro può essere cambiato nel blocco Step. Proviamo ora a cambiare i parametri del sistema e a far ripartire la simulazione. Nel blocco Transfer Fcn poniamo il denominatore pari a [1 2 4]. Rilanciamo la simulazione e rifacciamo l autoscale per ottenere la figura Notiamo che il comando Autoscale modifica solo l asse vericale, e poichè la nostra nuova funzione di trasferimento ha una risposta molto veloce il grafico si trova concentrato nella parte sinistra della figura. Questo non è un problema del blocco scope, ma della simulazione in sè. Simulink infatti simula il sistema per tutti i 1 secondi per cui è configurato, anche se la risposta raggiunge lo steady state in poco più di 1 secondo. Per correggere questo problema dobbiamo modificare i parametri di simulazione. Per farlo, selezioniamo la voce Configuration parameters dal menù Simulation. Nella finestra che si aprirà (fig. 8.12) cambiamo

89 CAPITOLO 8. SIMULINK 79 Figura 8.9 Risposta del modello d esempio Figura 8.1 Risposta del modello d esempio con autoscale

90 CAPITOLO 8. SIMULINK 8 Figura 8.11 Risposta del modello d esempio con funzione di trasferimento modificata ([1 2 4]) Figura 8.12 Tempo di inizio e fine simulazione nella finestra di configurazione di simulazione Start time da a.8 e Stop time da 1 a 2. Lanciando di nuovo la simulazione e rifacendo l autoscale, otterremo la schermata mostrata nella figura 8.13, decisamente più chiara Esempio del modello di un sistema Adesso proveremo a creare il modello di un sistema closed loop con Simulink. Per prima cosa inseriremo i blocchi necessari, poi li modificheremo, li collegheremo e infine otterremo la simulazione del modello. Inserimento dei blocchi Seguiamo questi passi per inserire i blocchi nel sistema: Creiamo un nuovo modello selezionando New dal menù di Simulink. Inseriamo il blocco Step dalla categoria Sources. Figura 8.13 Risposta del sistema con tempo di simulazione modificato (, 8 < t < 2)

91 CAPITOLO 8. SIMULINK 81 Figura 8.14 Blocchi inseriti nel modello di un sistema Inseriamo i blocchi Sum e Gain dalla categoria Math Operation. Inseriamo due blocchi Transfer Fcn (per inserire due blocchi dobbiamo trascinare lo stesso blocco due volte) dalla categoria Continuous- Inseriamo il blocco Scope dalla categoria Sinks. Alla fine il modello si presenterà come nella figura Modifica dei blocchi Seguiamo questi passi per modificare i blocchi del sistema: Dalla finestra di dialogo del blocco Sum inseriamo +- nel campo List of signs. Dalla finestra di dialogo del blocco Gain poniamo il guadagno pari a 2, 5. Dalla finestra di dialogo del blocco Transfer Fcn a sinistra inseriamo come numeratore [1 2] e come denominatore [1 ]. Dalla finestra di dialogo del blocco Transfer Fcn a destra lasciamo il numeratore pari a [1] e come denominatore inseriamo [1 2 4]. Cambiamo il nome della prima funzione di trasferimento clickando due volte sulla scritta Transfer Fcn e chiamiamola PI Controller. Cambiamo il nome della seconda funzione di trasferimento clickando due volte sulla scritta Transfer Fcn e chiamiamola Plant. Ora il modello dovrebbe apparire come nella figura Collegamento dei blocchi Dobbiamo ora collegare i vari blocchi tra di loro. Per prima cosa colleghiamo il blocco Step col segno + del blocco Sum. Poi colleghiamo in seguenza i blocchi Sum, Gain, PI Controller, Plant e Scope. Infine facciamo uscire una linea dal collegamento tra il blocco Plant e il blocco Scope e colleghiamola al segno del blocco Sum (per far uscire una linea da un altra linea, si deve tenere premuto il tasto CTRL mentre si seleziona la linea). Clickando due volte su una linea possiamo infine inserire un etichetta al segnale, così che il modello appaia come nella figura 8.16.

92 CAPITOLO 8. SIMULINK 82 Figura 8.15 Blocchi modificati nel modello di un sistema Figura 8.16 Collegamento dei blocchi del modello di un sistema

93 CAPITOLO 8. SIMULINK 83 Figura 8.17 Risposta del sistema Simulazione Ora che il modello è completo, possiamo lanciare la simulazione. Apriamo la finestra del blocco Scope e lanciamo la simulazione. Usando l autoscale otterremo la figura Importare valori da Matlab Simulink è completamente integrato in Matlab, quindi è possibile importare variabili salvate nel Workspace di Matlab in Simulink. Per far questo, basta inserire il nome della variabile al posto del numero in un blocco qualsiasi, ad esempio nel blocco Gain si poteva inserire come guadagno K, variabile che andava poi definita in Matlab. 8.2 Creazione di un modello fisico con Simulink In Simulink è molto facile rappresentare un sistema fisico o un modello. In generale, un sistema dinamico può essere costruito basandosi su semplici leggi fisiche. In questo paragrafo vedremo come Sistema treno In questo esempio creeremo il modello del treno giocattolo già analizzato nel paragrafo 2.1. Per la schematizzazione del modello, l assegnazioni delle costanti e i criteri di progetto si rimanda quindi a quel paragrafo. Il nostro modello si baserà sulla applicazione della seconda legge di Newton, che in Matlab è descritta da queste espressioni: F = M1 ẍ 1 (8.1) F = M2 ẍ 2 (8.2) Costruire il modello Questo sistema di equazioni può essere rappresentato graficamente e senza ulteriori manipolazioni. Per prima cosa costruiamo 2 copie (una per ogni massa) dell espressione F = Ma o a = 1/M F. Apriamo un nuovo modello in Simulink ed inseriamo due blocchi Sum, uno sopra l altro. Chiamiamoli Sum_F1 e Sum_F2 come nella figura 8.18 (ci preoccuperemo in seguito di modificarli). L output di questi blocchi rappresenta la somma delle forze agenti su ogni massa. Moltiplicando questa per 1/M otterremo l accelerazione. Inseriamo quindi 2 blocchi Gain, colleghiamoli ai blocchi Sum e modifichiamo i guadagni con 1/M1 e 1/M2 così da prendere successivamente le variabili da Matlab (probabilmente appena inseriti i nuovi guadagni nei blocchi Gain sarà mostrato un generico k-, basterà ingrandire i blocchi per

94 CAPITOLO 8. SIMULINK 84 Figura 8.18 Modello del sistema treno, passo 1: blocchi Sum Figura 8.19 Modello del sistema treno, passo 2: blocchi Gain vedere il guadagno reale). Rinominiamo quindi i blocchi a1 e a2. Dovremmo ottenere il modello nella figura L output dei due guadagni sono le accelerazioni delle due masse. Poichè siamo interessati sia alla velocità che alla posizione delle masse e la velocità è l integrale dell accelerazione e lo spazio e l integrale della velocità, inseriamo quatto blocchi Integrator (dal gruppo Continuous) ed inseriamone due per linea, chiamandoli rispettivamente v1, x1, v2 e x2 (fig. 8.2). Inseriamo infine due blocchi Scope alla fine delle due linee e chiamiamoli View_x1 e View_x2 (fig. 8.21). Ora siamo pronti a sommare le forze su ogni massa. Per prima cosa modifichiamo i blocchi Sum. In quello superiore inseriamo +-- nel campo List of signs e selezioniamo come forma rectangular. Nel blocco inferiore inseriamo +- nel campo List of signs e selezioniamo la forma rectangular (fig.

95 CAPITOLO 8. SIMULINK 85 Figura 8.2 Modello del sistema treno, passo 3: blocchi Integrator Figura 8.21 Modello del sistema treno, passo 4: blocchi Scope

96 CAPITOLO 8. SIMULINK 86 Figura 8.22 Modello del sistema treno, passo 5: modifica dei blocchi Sum Figura 8.23 Modello del sistema treno, passo 6: blocco Signal generator 8.22). Per rappresentare l input F, inseriamo un blocco Signal Generator dalla libreria Sources nell angolo superiore sinistro, colleghiamolo ad un segno + del blocco Sum e chiamiamolo F (fig. 8.23). La seconda forza che agisce su entrambe le masse è l attrito, e l equazione che lo descrive è F a = bgmv µ. Per inserirla nel modello, possiamo prendere la velocità facendo uscire due linee a valle del primo integratore e collegandole ad un blocco Gain che abbia come guadagno rispettivamente mu*g*m1 e mu*g*m2. Questi due blocchi vanno collegati ai segni meno dei blocchi Sum. Chiamiamoli rispettivamente Friction_1 e Friction_2 (fig. 8.24). Resta da inserire l azione della molla, che è descritta dall equazione F K = K(x 1 x 2 ) per la massa 1, mentre ha segno opposto per la massa 2. Inseriamo quindi un blocco Subtract e come

97 CAPITOLO 8. SIMULINK 87 Figura 8.24 Modello del sistema treno, passo 7: forza d attrito input inseriamo x1 e x2 presi a valle del secondo integratore e chiamiamolo x1-x2. Moltiplichiamo l output di questo blocco per un guadagno K tramite un blocco Gain ed infine collechiamolo al segno - del blocco Sum_F1 e al segno + del blocco Sum_F2 e chiamiamo questo blocco Spring (fig. 8.25). Per completare il modello inseriamo un altro Scope (che chiameremo Viev_v1 ) con input v1 preso a monte del primo integratore (fig. 8.26) Avviare la simulazione Per prima cosa immettiamo le costanti in Matlab. Da Command Window inseriamo quindi questi comandi: >> M1=1; >> M2=.5; >> K=1; >> F=1; >> mu=.2; >> g=9.8; Ora dobbiamo dare un input appropriato al sistema. Apriamo la finestra di dialogo del blocco Generator e selezioniamo un onda quadra (square) con frequenza di.1hz e ampiezza di -1. Infine secegliamo un tempo appropriato di simulazione. Poichè il ciclo ha onde di frequenza.1 Hz scegliamo come tempo di simulazione 1 secondi. Ora apriamo la finestra View_v1 e lanciamo la simulazione. Con l uso di autoscale la risposta dovrebbe essere quella nella figura Modello Matlab Da un modello Simulink possiamo estrarre un modello Matlab. Per fare questo, eliminiamo il blocco View_v1 ed inseriamo un blocco Out dal gruppo Sinks (fig. 8.28). Salviamo quindi il modello come train.mdl. Ora possiamo estrarre il modello in Matlab dando questo comando da Command Window: [A,B,C,D]=linmod( train ) Otterremo così il modello a spazio degli stati in Matlab nelle matrici A, B, C e D.

98 CAPITOLO 8. SIMULINK 88 Figura 8.25 Modello del sistema treno, passo 8: azione della molla Figura 8.26 Modello del sistema treno, passo 9: blocco Scope per l output della velocità

99 CAPITOLO 8. SIMULINK 89 Figura 8.27 Risposta del modello del treno Figura 8.28 Estrapolazione del modello in Matlab tramite blocco Out

100 CAPITOLO 8. SIMULINK 9 Figura 8.29 Modello di controllo di beccheggio, passo 1: blocco Integrator 8.3 Risoluzione del controllore di beccheggio con Simulink Le equazioni che descrivono il sistema sono state trovate e commentate nel paragrafo 2.5, quindi ora ci limiteremo a riportare i dati necessari. Il sistema nella forma dello spazio degli stati è così descritto: α q = α q [δ e ] (8.3) θ 56.7 θ y = [1] Queste equazioni possono essere così sintetizzate: dx dt α q θ + [][δ e ] (8.4) = Ax + Bu (8.5) Creazione del modello y = Cx + Du (8.6) Vogliamo usare queste equazioni esplicitamente in Simulink sfruttando la possibilità di avere segnali vettoriali. Le linee di vettori in Simulink sono automaticamente generate quando l input o l output di un blocco è un vettore. Per prima cosa rappresentiamo la derivata dello stato: Creiamo un nuovo modello in Simulink Inseriamo un blocco Integrator. Disegnamo una linea uscente dal blocco e assegnamo come etichetta X. Disegnamo una linea entrante nel blocco e assegnamo come etichetta d/dt(x) (fig. 8.29). Rappresentiamo ora la prima equazione di stato, d/dt(x) = Ax + Bu: Inseriamo un blocco Gain e rovesciamolo (selezioniamolo e poi usiamo il comando flip dal menù format).

101 CAPITOLO 8. SIMULINK 91 Figura 8.3 Modello di controllo di beccheggio, passo 2: prima equazione di stato Modifichiamo la voce multiplication dell elemento Gain e scegliamo Matrix(K*u)(u vector). Modifichiamo il guadagno di questo blocco e poniamolo pari a A. Modifichiamo poi l etichetta del blocco e chiamiamolo A Colleghiamo la linea in uscita del blocco Integrator con l ingresso del blocco A. Inseriamo un blocco Sum a sinistra dell integratore e colleghiamone l output con l ingresso dell integratore. Colleghiamo l uscita del blocco A con un ingresso positivo del blocco Sum. Inseriamo un altro blocco Gain a sinistra del blocco Sum. chiamiamolo B. Poniamo come guadagno B e Modifichiamo la voce multiplication dell elemento Gain e scegliamo Matrix(K*u)(u vector). Colleghiamo questo blocco al blocco Sum(fig. 8.3). Creiamo quindi il segnale di output y = CX + Du: Creiamo una linea entrante in B e chiamiamo il segnale u. Inseriamo un blocco Gain chiamato C e con guadagno C e colleghiamolo alla linea X. Modifichiamo la voce multiplication dell elemento Gain e scegliamo Matrix(K*u)(u vector). Inseriamo un altro blocco Gain e colleghiamolo alla linea u. Poniamo come guadagno D e chiamiamolo D. Inseriamo un blocco Sum a destra del blocco C. Modifichiamo la voce multiplication dell elemento Gain e scegliamo Matrix(K*u)(u vector). Colleghiamo come input del nuovo blocco Sumi blocchi C e D (fig. 8.31). Ora dobbiamo applicare degli input ed estrarre gli output mediante i blocchi In e Out: Inseriamo un blocco In e colleghiamolo alla linea u. Chiamiamo il blocco In deltae.

102 CAPITOLO 8. SIMULINK 92 Figura 8.31 Modello di controllo di beccheggio, passo 3: equazione di output Figura 8.32 Modello di controllo di beccheggio, passo 4: blocchi In e Out Inseriamo un blocco Out e colleghiamolo al blocco Sum. Chiamiamo il blocco Out theta. Inseriamo un altro blocco Out e colleghiamolo alla linea X, chiamiamolo X (fig. 8.32). Salviamo il modello col nome Pitch.mdl Risposta open loop Per generare una risposta open loop possiamo inserire il nostro modello come sottosistema di un altro modello.

103 CAPITOLO 8. SIMULINK 93 Figura 8.33 Modello di controllo di beccheggio, passo 5: blocco Subsystem Creiamo un nuovo modello Inseriamo un blocco Subsystem dal gruppo Ports & Subsystem. Apriamo la finestra di dialogo, otterremo così un nuovo modello chiamato Subsystem. Selezioniamo tutti i blocchi dal nostro modello Pitch e sostituiamoli nel modello Subsystem. Chiudiamo la finestra Subsystem e chiamiamo il blocco Pitch Model (fig. 8.33). Per completare il modello dobbiamo assegnare un input e un visualizzatore di output: Inseriamo un blocco Step e colleghiamolo all input del blocco Pitch Model. Configuriamo il blocco Step e cambiamo il tempo di inizio con. Inseriamo un blocco Scope e colleghiamolo all output theta (fig. 8.34). Prima di simulare la risposta dobbiamo immettere le matrici del modello a spazio degli stati in Matlab. Da Command Window digitiamo quindi questi comandi: >> A=[ ; ; 56.7 ]; >> B=[.232;.23; ]; >> C=[ 1]; >> D=[]; Ora siamo pronti a simulare la risposta. Apriamo la finestra di dialogo del blocco Scope, lanciamo la simulazione e dopo l autoscale dovremmo ottenere la risposta mostrata nella figura Inserimento di un controllore full-state Come nel paragrafo 6.2 vogliamo inserire un controllore progettato col metodo LQR, questa volta con Simulink. Inseriamo un blocco Gain sotto il blocco Pitch Model e chiamiamolo K. Modifichiamo il guadagno del blocco e poniamolo pari a K. Rovesciamo il blocco K col comando Flip. Modifichiamo la voce multiplication e scegliamo Matrix(K*u)(u vector).

104 CAPITOLO 8. SIMULINK 94 Figura 8.34 Modello di controllo di beccheggio, passo 6: blocchi Step e Scope Figura 8.35 Modello di controllo di beccheggio, risposta open loop

105 CAPITOLO 8. SIMULINK 95 Figura 8.36 Modello di controllo di beccheggio, passo 7: inserimento di un controllore Colleghiamo l output X del blocco Pitch Model con l input di K. Inseriamo un blocco Sum tra lo Step e il Pitch Model. Cambiamo i segni del blocco Sum in +- Colleghiamo il blocco Step al segno + e il blocco K al segno -. Colleghiamo l output del blocco Sum all input del blocco Pitch Model (fig. 8.36). Per ottenere la risposta closed loop non ci resta che definire K. paragrafo 6.2, inseriamo questi comandi in Command Window: Come abbiamo già fatto nel >> p=5; >> Q=[ ; ; p]; >> [K]= lqr (A,B,Q,1) Ora possiamo lanciare la simulazione, ed otterremo la risposta nella figura 8.37.

106 CAPITOLO 8. SIMULINK 96 Figura 8.37 Modello di controllo di beccheggio, risposta closed loop

107 Parte II Modello di un velivolo tramite Simulink 97

108 Capitolo 9 Creazione del modello 9.1 Blocchi di base Per creare il modello di un velivolo reale con un qualsiasi programma, è necessario conoscerne il modello aerodinamico. Nel nostro esempio, creeremo il modello di un F-4 (fig. 9.1), basandoci sui dati ricavati da un report NASA (vedi appendice A) sulla simulazione di modelli non lineari di velivoli Modello aerodinamico Nel report NASA (pag. da 39 a 45) sono riportate le funzioni polinomiali dei sei coefficienti aerodinamici (C X, C Y, C Z, C l, C m, C n ) in funzione degli angoli (in gradi) di incidenza e imbardata (α e β), delle velocità angolari adimensionalizzate del velivolo (p, q e r) e delle deflessioni (in gradi) delle superfici di controllo (δ e, δ a e δ r ). Queste relazioni sono valide per 15 α 55. Per utilizzare queste equazioni e costruire così il nostro modello aerodinamico possiamo creare una normale funzione Matlab in un m-file, ed inserirla nel modello Simulink tramite il blocco Embedded Matlab Function. Questo metodo diminuirà però le prestazioni del modello una volta completato, poichè Simulink dovrà compilare ad ogni avvio della simulazione la nostra funzione, provocando così un delay tra il comando Run e l effettivo inizio della simulazione consistente se la funzione è complessa. Per evitare questo inconveniente, per il modello aerodinamico useremo una S-function. S-function Una Level-2 S-function è una funzione, che può essere scritta in vari linguaggi tra cui il C, il C++ e ovviamente l M, che contiene al suo interno alcuni callback che Simulink normalmente usa quando simula un modello. Inserendo una S-function al posto di una normale funzione Matlab, si migliorano quindi le prestazioni del modello, poichè si usa una funzione già precompilata che diminuisce il carico di lavoro necessario a Simulink per poterla utilizzare. Figura 9.1 F-4 Phantom 98

109 CAPITOLO 9. CREAZIONE DEL MODELLO 99 Per scrivere la nostra S-function, andremo a modificare la funzione msfuntmpl_basic.m presente in tutte le distribuzioni recenti di Matlab. Prima però dobbiamo stabilire che genere di funzione vogliamo creare. Scegliamo di creare una funzione che ha come input un vettore di 13 parametri (nell ordine:cbar, span, xcgref, xcg, V, alpha, beta, p, q, r, deltae, deltaa, deltar) e come output un vettore di 6 parametri (C X, C Y, C Z, C l, C m, C n ). Apriamo quindi questo file con l editor e modifichiamolo così: Cambiamo il nome della funzione nella prima riga con AerodynamicModelF4_S(block) e lasciamo invariato il comando setup(block);. La prima parte da modificare della S-function è il setup(block). Ricordando che vogliamo come input un vettore di 13 elementi e come output un vettore di 6 elementi, andiamo a modificare solo queste righe del file: [...] block.inputport(1).dimensions = 13; [...] block.outputport(1).dimensions = 6; [...] Le parti DoPostPropSetup, InitializeConditions e Start non hanno bisogno di modifiche poichè la nostra funzione dovrà funzionare sempre, quindi le lasceremo invariate. La seconda parte da modificare è Outputs. Qui andranno inserite le equazioni, riportate nel report NASA, che rappresentano il cuore del modello aerodinamico. Ricordando l ordine degli input stabilito in precedenza, assegniamo ad ogni elemento del vettore alla rispettiva variabile con queste istruzioni: cbar = block.inputport(1).data(1); span = block.inputport(1).data(2); xcgref = block.inputport(1).data(3); xcg = block.inputport(1).data(4); V = block.inputport(1).data(5); alpha = block.inputport(1).data(6); beta = block.inputport(1).data(7); p = block.inputport(1).data(8); q = block.inputport(1).data(9); r = block.inputport(1).data(1); deltae = block.inputport(1).data(11); deltaa = block.inputport(1).data(12); deltar = block.inputport(1).data(13); Inizializziamo quindi i coefficienti con questa istruzione: CX=;CY=;CZ=;Cm=;Cl=;Cn=; Ora andranno inserite le equazioni presenti nel report NASA. A valle di queste equazioni andremo a definire il vettore di output con questi comandi: block.outputport(1).data(1) = CX; block.outputport(1).data(2) = CY; block.outputport(1).data(3) = CZ; block.outputport(1).data(4) = Cl; block.outputport(1).data(5) = Cm; block.outputport(1).data(6) = Cn; Lasciamo invariate le ultime due parti e salviamo il tutto col nome AerodynamicModelF4_S.m. La nostra S-function è completa. Possiamo quindi implementare questa funzione in un blocco Simulink. Apriamo un nuovo modello Simulink ed inseriamo un blocco Level-2 M-file S-Function (fig. 9.2). Ora apriamo la finestra di dialogo del blocco e modifichiamo il nome del M-file, inserendo AerodynamicModelF4_S.m (fig.9.3). Abbiamo così implementato il modello aerodinamico nel nostro modello.

110 CAPITOLO 9. CREAZIONE DEL MODELLO 1 Figura 9.2 Inserimento del blocco S-function Figura 9.3 Finestra di dialogo del blocco S-function Sistemi di riferimento e angoli di eulero Prima di parlare delle equazioni del moto è opportuno riportare qualche informazione sui sistemi di riferimento usati nel modello e sugli angoli di eulero. In questo modello useremo tre sistemi di riferimento: Il sistema di riferimento Body è un sistema solidale al velivolo, con origine coincidente col centro di massa del velivolo. L asse x b è l asse longitudinale del velivolo, contenuto nel piano di simmetria, e positivo verso la prua. L asse z b è normale ad x b, è contenuto nel piano di simmetria ed è diretto nel senso testa-piedi del pilota. L asse y b completa la terna levogira trirettangola. Il sistema di riferimento Earth è un sistema inerziale con asse z e diretto verso il basso nella direzione dell accelerazione di gravità e positivo verso il basso. In questo esempio assumiamo l asse x e diretto verso nord e l asse y e diretto verso est (riferimento north-east-down). Quando ci occuperemo dell output su simulatore di volo 3D useremo un ulteriore sistema di riferimento, detto LLA (latitudine, longitudine e altitudine). Per quanto riguarda gli angoli di eulero, si ricorda soltanto che in nel modello è utilizzata una sequenza Equazioni del moto Il secondo blocco fondamentale, contenuto nell Aerospace Blockset, è il 6DoF (euler angle). Questo blocco integra le forze e i momenti forniti in riferimento Body, e restituisce varie informazioni, tra cui la posizione in riferimento Earth e l orientamento in termini di angoli di eulero (φ, θ e ψ), la velocità in riferimento Body e Earth e le velocità angolari. Inseriamo quindi questo blocco nel modello (fig. 9.4), apriamone la finestra di dialogo e facciamo qualche modifica:

111 CAPITOLO 9. CREAZIONE DEL MODELLO 11 Figura 9.4 Inserimento del blocco 6DoF Figura 9.5 Finestra di dialogo con parametri modificati del blocco 6DoF Modifichiamo le velocità iniziali ed inseriamo: [u v z] Modifichiamo la massa iniziale come Acmass e la matrice di inerzia come Inertia_Matrix (fig Selezioniamo col tasto destro il blocco, e poi selezioniamo Look under the mask, apriamo poi il blocco Transform to inertial axis ed inseriamo 2 blocchi Reshape come in figura 9.6. Così facendo abbiamo inserito dei parametri che andremo a definire in seguito, usando sempre come fonte il report NASA. I due blocchi principali del modello sono ora inseriti e configurati, restano da definire gli input e collegare tra loro i blocchi, utilizzando dei blocchi ausiliari.

112 CAPITOLO 9. CREAZIONE DEL MODELLO Sviluppo del modello Figura 9.6 Aggiunta dei blocchi Reshape Dopo aver inserito i blocchi di base, possiamo sviluppare il nostro modello. Per farlo utilizzeremo alcuni blocchi ausiliari che ora andiamo rapidamente a descrivere: Turbofan Engine System: Questo blocco, presente nell Aerospace blockset simula un motore turbofan, richiede in ingresso il mach di volo, la quota e la manetta, e restituisce la spinta e il consumo di carburante COESA Atmosphere model: Fornisce densità, temperatura, velocità del suono e pressione al variare della quota secondo il modello COESA Incidence, sideslip, & Airspeed: Richiede come input il vettore velocità in assi Body, e fornisce l angolo di incidenza, l angolo di beccheggio e il modulo della velocità Dynamic Pressure: Richiede come input la densità e la velocità e restituisce la pressione dinamica Andiamo quindi a sviluppare il nostro modello Input del modello aerodinamico Iniziamo a fornire gli input al modello aerodinamico. Sappiamo già che dobbiamo fornire al modello aerodinamico 13 parametri. Di questi 4 sono parametri geometrici costanti, che non variano durante la simulazione, e 3 sono parametri di controllo, che per ora assumiamo costanti (in pratica a comandi bloccati). Inseriamo quindi 7 blocchi Constant e come parametri inseriamo cbar, span, xcgref, xcg, deltae, deltaa, deltar, deltath. Inseriamo un blocco Mux con 13 ingressi e colleghiamo le varie costanti nell ordine che abbiamo definito nel capitolo precedente. Colleghiamo poi l uscita del blocco Mux all ingresso della S-function. Dovremmo ottenere il modello nella figura 9.7. Mancano ancora 6 parametri, cioè le componenti della velocità angolare, l angolo di attacco e di beccheggio e il modulo della velocità. Queste sono variabili che vengono calcolate istante per istante dal blocco 6DoF. Colleghiamo quindi l uscita ω del blocco 6DoF ad un blocco Demux, così da ottenere le tre componenti della velocità angolare. Colleghiamo le 3 uscite del gruppo Demux agli ingressi corrispondenti del gruppo Mux. Otterremo il modello nella figura 9.8 Per completare il vettore di ingresso, inseriamo un blocco Incidence, sideslip, & Airspeed. In ingresso inseriamo V b proveniente dal blocco 6Dof, e poi colleghiamo in ordine le tre uscite (α, β e V ) al vettore di input. Nel farlo ricordiamo che il blocco Incidence, sideslip, & Airspeed restituisce gli angoli in radianti, mentre nel modello aerodinamico utilizziamo i gradi. Sulle due linee degli angoli inseriamo quindi dei blocchi di conversione da radianti a gradi (fig. 9.9).

113 CAPITOLO 9. CREAZIONE DEL MODELLO 13 Figura 9.7 Inserimento dei blocchi Constant nel modello Figura 9.8 Inserimento delle velocità angolari nel vettore di input

114 CAPITOLO 9. CREAZIONE DEL MODELLO 14 Figura 9.9 Inserimento della velocità e degli angoli di incidenza nel vettore di input Calcolo delle forze e dei momenti Ora che il modello aerodinamico può lavorare, possiamo utilizzare i risultati per calcolare le forze e i momenti agenti sul velivolo. A questo punto è utile ricordare come ricavare le forze e i momenti partendo dai coefficienti aerodinamici. Le equazioni sono: F x = C x qs F y = C y qs F z = C z qs L = C l qsb M = C m qs c N = C n qsb (9.1a) (9.1b) (9.1c) (9.1d) (9.1e) (9.1f) (9.1g) Iniziamo col inserire un blocco COESA Atmosphere model. Inseriamo poi un blocco Demux con 3 uscite, cosi da dividere in componenti il vettore posizione X e. La terza componente del vettore posizione, z e, non è però utilizzabile direttamente come quota. Essa è infatti positiva verso il basso, mentre la quota è positiva verso l alto. Per ovviare a questo problema inseriamo un blocco di guadagno -1. Inoltre se il nostro velivolo si trova a z e = non si trova a quota zero, ma bensì alla quota in cui è posto il sistema di riferimento. La componente cambiata di segno andrà quindi sommata ad un altezza di riferimento, così da ottenere la quota utilizzabile nel blocco COESA (fig.9.1). Inseriamo quindi un blocco Dynamic Pressure, e come ingressi forniamogli la densità proveniente dal blocco COESA e la velocità in assi Body proveniente dal blocco 6DoF (fig. 9.11). Inseriamo ora un blocco Demux, con 6 uscite, e colleghiamolo al modello aerodinamico, così da avere i 6 coefficienti separati. Ricordando quindi le equazioni sopracitate, possiamo ricavare in vari modi il vettore delle forze e il vettore dei momenti aerodinamici. Un modo è quello mostrato nella figura 9.12.

115 CAPITOLO 9. CREAZIONE DEL MODELLO 15 Figura 9.1 Inserimento del blocco COESA Figura 9.11 Inserimento del blocco Dynamic Pressure

116 CAPITOLO 9. CREAZIONE DEL MODELLO 16 Figura 9.12 Calcolo delle forze aerodinamiche Prima di inserire le forze calcolate nel blocco 6Dof dobbiamo considerare due ulteriori contributi. Il primo è quello della spinta fornita dal motore: Inseriamo quindi un blocco Turbofan Engine System. Inseriamo poi un blocco constant con variabile deltath, e calcoliamo il Mach utilizzando la velocità del suono fornita dal blocco COESA. Nella finestra di dialogo del blocco Turbofan Engine System inseriamo come spinta massima al livello del mare Tmax_Static_SL. Poichè l F-4 ha due motori, inseriamo un blocco Gain con parametro 2 e colleghiamolo alla output Thrust. Inseriamo un blocco Terminator collegato all uscita del consumo di carburante. Concludiamo rendendo vettoriale la spinta. Assumendo che la spinta non abbia alcun calettamento e sia quindi diretta lungo x b, otteniamo la configurazione di figura Oltre al contributo della spinta, dobbiamo inserire la forza peso. Il blocco 6Dof ci fornisce tra i vari output anche la matrice 3x3 di conversione di coordinate dal sistema Earth al sistema Body (DCM). Inseriamo quindi un blocco Constant contenente come parametro Weight_E (Weight_E è un vettore 1x3 che definiremo in seguito) e facciamo il prodotto riga per colonna tra DCM e Weight_E. Otterremo così un vettore colonna, e facendo la trasposta di quest ultimo, il vettore della forza di gravità nel sistema Body (fig. 9.14). Possiamo ora sommare i 3 contributi delle forze e collegarli al blocco 6DoF. Si assume che non ci siano altri momenti oltre a quelli aerodinamici, quindi possiamo collegarli direttamente al blocco 6DoF (fig Completamento del modello e definizione dei parametri Adesso il nostro modello è quasi completo, basta inserire dei blocchi Scope sui parametri che vogliamo visualizzare, e dei blocchi Terminator sugli output inutilizzati. Riorganizzando i blocchi per motivi di spazio, otterremo un modello simile a quello mostrato nella figura 9.16

117 CAPITOLO 9. CREAZIONE DEL MODELLO 17 Figura 9.13 Inserimento del blocco Turbofan Figura 9.14 Inserimento del vettore forza peso in assi Body

118 CAPITOLO 9. CREAZIONE DEL MODELLO 18 Figura 9.15 Immissione delle forze e dei momenti nel blocco 6DoF Immissione dei parametri Restano ora da definire tutti i parametri che abbiamo indicato con incognite fino a questo momento. Rifacendoci al report NASA, creiamo un nuovo m-file ed inseriamo queste righe: % Dati geometrici cbar = 2.5; xcg =.289*cbar; xcgref = xcg; span = 11.68; Ixx = 2497; %( slug ft2) Iyy = 12219; Izz = 1398; Ixy =.; Ixz = 1175; Iyz =.; lb2kg = e-1; ACmass = *lb2kg; slug2kg = e+1; g = 9.81; Weight_E = [ ACmass*g]; % slug per cubic foot (slug/ft3) kilogram per cubic meter (kg/m3) % E+2 ft2m = 3.48e-1; Inertia_Matrix = [... Ixx -Ixy -Ixz; -Ixy Iyy -Iyz; -Ixz -Iyz Izz ]*slug2kg*ft2m*ft2m;

119 CAPITOLO 9. CREAZIONE DEL MODELLO 19 Figura 9.16 Modello completo

120 CAPITOLO 9. CREAZIONE DEL MODELLO 11 Figura 9.17 Andamento della quota a comandi bloccati Figura 9.18 Andamento degli angoli di eulero a comandi bloccati deltae = -3; deltaa =.; deltar =.; deltath =.5; Tmax_Static_SL = 79624; href = 5.; % Calcolo dati atmosferici % Nota: funzione presente nella v28a [temperature, speed_of_sound, pressure, rho] = atmoscoesa(href); Mach =.4; u = Mach * speed_of_sound; %m/s v =.; w =.; Simulazione a comandi bloccati Per collaudare il modello, possiamo lanciare subito una simulazione a comandi bloccati, con i parametri impostati nel precedente m-file. Le variazioni di quota e di angoli di eulero in questa simulazione sono mostrate nelle figure 9.17 e 9.18.

121 Capitolo 1 Animazione e controllo Il modello di base può essere ora utilizzato per varie applicazioni. Per farlo è comodo trasformare il modello stesso in un blocco Simulink con i rispettivi Input e Output. Sostituiamo quindi i blocchi Costant assegnati ai parametri di controllo (deltae, deltaa, deltar, deltath) con dei blocchi In. Come output del sottoblocco scegliamo gli angoli di eulero, la posizione, la velocità in assi Body e la velocità angolare, e colleghiamo quindi dei blocchi Out a questi parametri. Dovremmo ottenere un modello simile a quello mostrato nella figura 1.1 (conviene eliminare il blocco di conversione da radianti a gradi nell output degli angoli di eulero, poichè i blocchi di Matlab che andremo ad utilizzare richiederanno sempre gli angoli in radianti). Selezioniamo quindi tutto il nostro modello, apriamo un nuovo modello Simulink, ed inseriamo un blocco Subsystem, che non è altro che un modello nel modello. Aprendo la sua finestra di dialogo comparirà un altra schermata di modello Simulink, con all interno un modello predefinito con un solo input e un solo output. Cancelliamo il modello di base e copiamo il nostro, poi chiudiamo la finestra di dialogo. Rinominando il blocco, avremo qualcosa di simile alla figura 1.2. Per ora inseriamo 4 blocchi Constant coi parametri di controllo e 4 blocchi Scope, come in figura 1.3. Questo modello è ora equivalente al modello definito alla fine del paragrafo precedente, con blocco Subsystem lo si è reso solo più semplice da utilizzare. 1.1 Animazione Il primo esempio di utilizzo del modello consiste nel visualizzare in 3D il comportamento dell aereo. Prenderemo in considerazione due metodi: Il primo metodo utilizza solo strumenti presenti in Matlab, il secondo metodo utilizza il motore grafico di Flight Gear, un simulatore di volo 3D open source Animazione tramite Matlab Nell Aerospace Blockset, nella categoria Animation sono presenti vari blocchi che permettono l animazione tramite Matlab, tra cui il blocco 6Dof Animation. Inseriamo quindi il blocco 6Dof Animation nel nostro modello Questo blocco richiede come ingressi il vettore posizione in assi Earth e gli angoli di eulero. Queste informazioni sono presenti tra gli output del blocco Subsystem, quindi basta collegare le rispettive porte per ottenere il modello nella figura 1.4. Ora non resta che modificare il blocco 6DoF Animation aprendo la finestra di dialogo e modificando la dimensione del modello, gli assi e la posizione della telecamera come nella figura 1.5. Modifichiamo quindi il tempo di simulazione del modello e poniamolo uguale a 1 secondi, e poi lanciamo la simulazione per vedere come lavora l animazione in Matlab. 111

122 CAPITOLO 1. ANIMAZIONE E CONTROLLO 112 Figura 1.1 Blocchi In e Out

123 CAPITOLO 1. ANIMAZIONE E CONTROLLO 113 Figura 1.2 Blocco Subsystem Figura 1.3 Modello equivalente con il blocco Subsystem

124 CAPITOLO 1. ANIMAZIONE E CONTROLLO 114 Figura 1.4 Inserimento del blocco 6DoF Animation Figura 1.5 Finestra di dialogo del blocco 6DoF Animation

125 CAPITOLO 1. ANIMAZIONE E CONTROLLO 115 Figura 1.6 Animazione tramite il blocco 6DoF Animation Otterremo qualcosa di simile alla figura 1.6, in cui si vede l orientamento del modello, la traiettoria e la traccia a terra. Dobbiamo però sottolineare che il nostro sistema di riferimento z e è diretto verso il basso, e sebbene Matlab mostri il corretto comportamento durante l animazione, se si vanno a visualizzare le viste ausiliare come X Z l alto e il basso saranno invertiti, poichè queste viste sono concordi con gli assi (quindi il basso, positivo, diventa l alto e viceversa). Nota: Fino a che non implementeremo un controllo, il comportamento del velivolo è quello a comandi bloccati sui valori imposti nel m-file Animazione tramite FlightGear Nella categoria Animation, Matlab contiene dei blocchi che rendono possibile l animazione su motori grafici 3D esterni, tra cui FlightGear, un simulatore di volo open source reperibile all indirizzo Per prima cosa dobbiamo procurarci la versione 1. del programma, scaricabile gratuitamente all indirizzo sopracitato, e dobbiamo installarlo. Torniamo quindi nel nostro modello, cancelliamo il blocco 6DoF Animation, ed inseriamo un blocco FlightGear Preconfigured 6DoF Animation. Questo blocco vuole come input un vettore contenente gli angoli di eulero e la posizione del velivolo nel sistema LLA. Dobbiamo qundi fare un cambio di sistema di riferimento. Inseriamo un blocco Flat Earth to LLA e colleghiamolo all output X e del blocco Subsystem. Inseriamo poi un blocco Constant con parametro -href e colleghiamolo al secondo input del blocco Flat Earth to LLA.

126 CAPITOLO 1. ANIMAZIONE E CONTROLLO 116 Figura 1.7 Inserimento del blocco FlightGear Preconfigured 6DoF Animation Creiamo quindi un vettore contenente tutti e 6 i parametri, stando attenti alla corrispondenza tra longitudine e latitudine. Aggiungiamo poi un blocco Generate Run Script che non necessita di nessun collegamento, così da ottenere il sistema nella figura 1.7. Procediamo quindi col configurare i blocchi: Apriamo la finestra di dialogo del blocco Flat Earth to LLA ed inseriamo in modo collocare il velivolo sopra l aeroporto che sceglieremo in seguito, queste coordinate iniziali (fig. 1.8): [ ] Lasciamo invariato il blocco FlightGear ed apriamo la finestra di dialogo del blocco Generate Run Script modificando il percorso in cui abbiamo installato Flight Gear, il modello di velivolo (useremo come riferimento il modello già presente T38) l altitudine e l heading iniziale (fig. 1.9). Dopodichè sostituiamo al posto del file T38.ac il nostro modello 3D dandogli lo stesso nome. Il comando Generate Script non fa altro che creare un bat che lancia FlightGear (il cui percorso nel pc viene impostato nella finestra di dialogo) con determinate opzioni. L opzione più importante dello script è: --fdm=network,localhost,551,552,553 Cioè, FlighGear viene lanciato per utilizzare come fdm (Flight Data Model) un modello esterno, proveniente dalla rete, all indirizzo localhost (in questo caso il proprio pc, di default ) e attraverso le porte specificate. Nota: Di default FlightGear assume come indirizzo ip locale , nel caso di indirizzo ip differente sarà necessario o modificare il proprio o quello di lettura di FlightGear. Ora il modello è pronto a ricevere i dati da Matlab. Apriamo la finestra di dialogo del blocco Generate Run Script e selezioniamo Generate Script, quindi nella finestra di comando di Matlab diamo questa istruzione: >> dos( runfg & ) Se tutto è stato svolto correttamente, si avvierà Flight Gear in modalità di attesa, e verrà visualizzato il modello fermo a mezz aria. Lanciando quindi la simulazione su Simulink, vedremo il modello in Flight Gear muoversi seguendo i dati inviati da Matlab. Possiamo migliorare la simulazione tramite Flight Gear e visualizzare anche le deflessioni delle superfici di controllo, ma in questo caso non è possibile utilizzare il blocco preconfigurato ma dovremo crearne uno nuovo.

127 CAPITOLO 1. ANIMAZIONE E CONTROLLO 117 Figura 1.8 Cambio di coordinate nel blocco Flat Earth to LLA Figura 1.9 Modifiche del blocco Generate Run Script

128 CAPITOLO 1. ANIMAZIONE E CONTROLLO 118 Figura 1.1 Screenshot dell animazione in Flight Gear 1.2 Controllo e Trim Come ultimi esempi di utilizzo del nostro modello, inseriamo qualche semplice esempio di controllo e troviamo la condizione di trim del velivolo. Per quanto riguarda il controllo progetteremo un semplice controllore di beccheggio ed uno stabilizzatore di quota Controllo di beccheggio Partendo dal modello con animazione, creiamo un controllore che stabilizzi il velivolo ad un angolo di beccheggio scelto. Cominciamo col eliminare il blocco Constant con parametro deltae, ed inseriamo un blocco Constant con parametro theta. Inseriamo poi un blocco Demux che divida in componenti gli angoli di Eulero, terminiamo gli output di φ e ψ ed inseriamo un blocco di conversione da radianti a gradi sull output di θ. Creiamo quindi un ciclo closed loop che parta dalla costante theta, abbia come errore la differenza tra θ e theta, e colleghiamolo all ingresso deltae del blocco Subsystem. Aggiungiamo quindi un controllore PID per migliorarne le prestazioni, utilizzando il blocco PID Controller, scegliendo come guadagni: K P = 3, K I = 1, 3, K D = 4. Il sistema sarà simile a quello nella figura Non resta che definire l angolo di beccheggio desiderato. Aggiungiamo quindi all m-file di configurazione del modello questa riga: theta = 6; Lanciamo l m-file, poi lanciamo la simulazione e guardiamo la risposta in un blocco Scope, che sarà accettabile (fig. 1.12).

129 CAPITOLO 1. ANIMAZIONE E CONTROLLO 119 Figura 1.11 Modello del sistema con controllo di beccheggio Figura 1.12 Andamento dell angolo di beccheggio nel sistema controllato

130 CAPITOLO 1. ANIMAZIONE E CONTROLLO 12 Figura 1.13 Modello del sistema con controllo quota Controllo di quota Come secondo esempio, progetteremo un controllore di quota. Vogliamo cioè un sistema che mantenga il velivolo in volo alla quota di riferimento. Per fare questo useremo ancora un ciclo closed loop. Rimuoviamo il blocco Constant di parametro theta. Poichè la componente z e del vettore X e è nulla se il velivolo è alla quota di riferimento, la useremo direttamente come errore del ciclo. Colleghiamo quindi questa componente ad un blocco PID Controller (with Approximate Derivative) e modifichiamo solo il divisore differenziale ponendolo uguale a 1. Colleghiamo quest ultimo al blocco Sum utilizzato nel primo esempio, che ha nell altro ingresso θ. Inseriamo quindi un blocco Saturation con valori compresi tra -25 e 25 per evitare di immettere nel modello deflessioni irreali dell equilibratore. A questo punto il controllore è completo, e il sistema dovrebbe apparire come quello in figura Lanciando la simulazione, possiamo vedere che la quota del velivolo, dopo una oscillazione iniziale di circa 3 metri, si va stabilizzando al valore di riferimento (fig 1.14). Per completezza possiamo visualizzare anche l andamento dell angolo di deflessione degli equilibratori (fig 1.15) Trim Il trim è una condizione di equilibrio dinamico del velivolo, e come tale può essere utilizzata per applicazioni quali linearizzazione del modello. In questo esempio, troveremo la condizione per cui il velivolo sia in condizione di volo rettilineo uniforme senza dover agire sui comandi o inserire sistemi di controllo, ed una condizione di virata equilibrata. Per trovare la condizione di trim in Matlab, ci rifacciamo al modello completo mostrato nella figura Sostituiamo ai blocchi Constant DeltaE e DeltaTh con due blocchi In. Utilizziamo quindi il Control ed estimation tools Manager (fig. 1.16), selezioniamo Operating point, e succesivamente la tag Compute Operating Point. Selezioniamo poi Sync with the model, ed otterremo la finestra mostrata nella figura 1.17.

131 CAPITOLO 1. ANIMAZIONE E CONTROLLO 121 Figura 1.14 Andamento della quota nel sistema con controllo di quota Figura 1.15 Andamento dell angolo di deflessione degli equilibratori nel sistema controllato Volo rettilineo Per prima cosa scegliamo quali stati vogliamo mantenere in equilibrio. Scegliamo di bloccare l orientamento del velivolo (quindi i 3 angoli di eulero), la velocità di rotazione, la quota e la spinta fornita dal propulsore. Nella tag States eliminiamo l opzione Steady state dai rimanenti stati, e inseriamo poi dei valori massimi e minimi per l angolo di beccheggio (ricordando che theta è espresso in radianti, come valori scegliamo -,75 e,75). Spuntiamo poi l opzione Know per la componente Z e, lasciando il suo valore. La tag States dovrebbe apparire come nella figura Non modifichiamo nulla nelle tag Inputs e Outputs. In effetti, mentre gli outputs del nostro sistema coincidono con gli stati e quindi ulteriori specifiche diventano ridondanti, per gli input andrebbero almeno specificati gli intervalli di accettabilità. Ma come vedremo, pur senza specificarli il risultato sarà accettabile, quindi non faremo alcuna modifica alla tag Inputs. Per trovare la condizione di trim premiamo quindi Compute Operating point, e Matlab restituirà un Operating point che soddisfi le nostre specifiche. Come si vede dalla figura 1.19 la condizione di trim si ha con un angolo di beccheggio di circa,27 radianti (circa 16 gradi) e con velocità di componenti 124 m/s lungo X b e 35 m/s lungo Z b. Selezionando la tag Inputs (fig. 1.2) vediamo che tale condizione si ottiene con un angolo dell equilibratore di -6,68 gradi e la manetta al 93%, 2 valori accettabili per il nostro modello. Per verificare se il velivolo viaggia effettivamente in volo rettilineo uniforme, si può utilizzare l Operating Point per inizializzare il modello. Utilizziamo il tasto destro del mouse sulla voce Operating point nel menù a sinistra, e selezioniamo Export to Workspace (fig. 1.21). Nella finestra successiva, selezioniamo Model Workspace e Use the operating point to initialize the model, poi

132 CAPITOLO 1. ANIMAZIONE E CONTROLLO 122 Figura 1.16 Schermata iniziale del Control ed estimation tools Manager Figura 1.17 Finestra ottenuta con Sync with the model

133 CAPITOLO 1. ANIMAZIONE E CONTROLLO 123 Figura 1.18 Tag States modificata (volo livellato) Figura 1.19 Tag States dell Operating Point (volo livellato)

134 CAPITOLO 1. ANIMAZIONE E CONTROLLO 124 Figura 1.2 Tag Inputs dell Operating Point (volo livellato) premiamo Ok. A questo punto possiamo lanciare la simulazione, che da i risultati sperati, come si vede dalle figure 1.22, 1.23 e La condizione di trim trovata non è l unica, ma semplicemente la prima incontrata dal risolutore con qui vincoli. A ben guardare non è neanche una condizione di volo usuale, essendo θ pari a circa 16 gradi. Per trovare quindi condizioni di volo livellato a velocità o assetti differenti, basta modificare i valori minimi e massimi delle velocità nella tag degli stati. Se invece vogliamo bloccare la velocità in modulo e trovare la condizione di trim ad una certa V, possiamo aggiungere un blocco Out sulla linea V in uscita del blocco Incidence, Sideslip & AirSpeed (fig. 1.25), e poi modificare i valori del parametro V che ora compaiono nella tag Output. Proviamo quindi a imporre come V minima 2 m/s e come V massima 21 m/s,e troveremo un assetto equlibrato con θ poco inferiore ai 7 gradi (fig. 1.26), assetto decisamente più accettabile. Come detto, le condizioni di trim sono infinite, basta variare la velocità desiderata per trovare nuovi assetti. Nella figura 1.27 sono riportati gli assetti e gli angoli di deflessione dell equilibratore a varie velocità e 2 quote diverse: Livello del mare (in rosso) e 2m (in blu). Le velocità alle due quote non hanno lo stesso range di variazione perchè oltre un certo valore il modello del propulsore esce dal suo campo di validità. Virata Un altra interessante condizione di trim è quella di virata corretta, cioè virata a quota e velocità costante, e con sideslip nullo. Questa può essere trovata sempre tramite il Control ed estimation tools Manager, facendo comparire le variabili che ci interessano. Prima di iniziare, dobbiamo far comparire come parametro da trimmare la velocità di virata, che non è altro che la componente lungo Z e della velocità angolare, o la terza componente di ω e. Per trovare la velocità di virata dobbiamo operare all interno del blocco F4 model. Possiamo infatti utilizzare la matrice dei coseni direttori (DCM be ) fornita dal blocco 6DoF, e farne la trasposta, così da ottenere la matrice di trasformazione da riferimento body a riferimento earth. Moltiplichiamo poi la nuova matrice per ω (fornita sempre dal blocco 6Dof ), così da ottenere ω e. Infine colleghiamo questa ad un blocco out (fig. 1.28). Sempre all interno del blocco F4 model possiamo calcolare il fattore di carico. Questo è infatti uguale a 1/ cos φ, dove φ è l angolo di Bank, ma anche il primo angolo di eulero.

135 CAPITOLO 1. ANIMAZIONE E CONTROLLO 125 Figura 1.21 Opzione Export to workspace Figura 1.22 Andamento della quota del velivolo in condizione di equilibrio

136 CAPITOLO 1. ANIMAZIONE E CONTROLLO 126 Figura 1.23 Andamento degli angoli di eulero del velivolo in condizione di equilibrio Figura 1.24 Andamento della velocità (assi Earth) del velivolo in condizione di equilibrio

137 CAPITOLO 1. ANIMAZIONE E CONTROLLO 127 Figura 1.25 Aggiunta dell output V Figura 1.26 Andamento degli angoli di eulero nella nuova condizione di trim

138 CAPITOLO 1. ANIMAZIONE E CONTROLLO Condizioni di volo livellato al variare della velocità a due quote diverse θ (SL) δ E (SL) θ (2m) δ E (2m) 1 (deg) V (m/s) Figura 1.27 Andamento di θ e δ E al variare di velocità e quota Figura 1.28 Aggiunta dell output omega_e

139 CAPITOLO 1. ANIMAZIONE E CONTROLLO 129 Figura 1.29 Aggiunta dell output n Inseriamo quindi un blocco Trigonometric Function, con opzione cos, e immettiamo in questo l angolo φ. Inseriamo poi un blocco Divide e un blocco Constant ed otteniamo il fattore di carico come mostrato in figura Colleghiamo l uscita ad un blocco Out. Chiudiamo quindi il blocco F4 model, e torniamo alla finestra principale. Ora F4 model avrà 2 output in più, n e ω e, che andiamo a collegare a 2 blocchi Out. Un altro parametro interessante della virata corretta è il raggio di virata, possiamo creare un blocco che calcoli il raggio teorico utilizzando la formula: R = V 2 g sin(φ) (1.1) Il blocco è abbastanza semplice ed è mostrato in figura 1.3. Inseriamo un blocco Incidence, Sideslip & Airspeed per ottenere il modulo della velocità, e terminiamo le uscite alpha e beta. Colleghiamo poi l uscita del blocco Raggio di virata ad un blocco out. Inserendo qualche blocco Scope, il modello dovrebbe essere simile a quello mostrato in figura Ora possiamo iniziare a cercare la condizione di virata corretta desiderata. Per esempio cerchiamo la virata a quota 5m (z e = ), con velocità di virata,1 rad/s. Scegliamo quindi come Steady state i parametri: phi, theta, le tre componenti di ω, le tre componenti di V b e z e. Inoltre, impostiamo come Know e di valore i parametri z e e v b (così da porre nullo il sideslip (fig. 1.32). Nella tag Output, impostiamo la terza componente di Omega e come Know e pari a.1 (fig. 1.33). Lanciamo il solito Compute Operating Points, inizializziamo il modello con l Operating Point appena trovato e lanciamo la simulazione, per verificare che abbiamo effettivamente trovato una condizione di volo a quota costante ed alla velocità di virata desiderata. In figura 1.34 sono riportare le traiettorie di virate corrette a 3 diverse velocità di virata (,3,,4,,5 rad/sec). 1.3 Perturbazioni Possiamo fare in modo che il modello simuli la risposta del velivolo ad una perturbazione, basterà infatti far variare le velocità sentita dal velivolo sommando le velocità del vento a quella del velivolo. Supponiamo quindi di voler fornire come input anche la velocità del vento, possibilmente variabile nel tempo, e nella forma delle tre componenti in assi Earth. Apriamo quindi il blocco F4 model, inseriamo un nuovo blocco In chiamato Vw, inseriamo un blocco Matrix Multiply e come input immettiamo la matrice dei coseni direttori fornita dal blocco 6DoF e l input Vw. Inseriamo poi un blocco Sum sull uscita Vb del blocco 6DoF, e sottraiamo l output del blocco Matrix Multiply (fig. 1.35). Chiudiamo quindi il blocco F4 model e nella schermata principale inseriamo un Signal

140 CAPITOLO 1. ANIMAZIONE E CONTROLLO 13 Figura 1.3 Blocco raggio di virata Figura 1.31 Configurazione del modello con i nuovi output (virata)

141 CAPITOLO 1. ANIMAZIONE E CONTROLLO 131 Figura 1.32 Tag States dell Operating Point (virata) Figura 1.33 Tag Outputs dell Operating Point (virata)

142 CAPITOLO 1. ANIMAZIONE E CONTROLLO Confronto tra le traiettorie a diverse velocità di virata y (m) rad/s.4 rad/s.3 rad/s x (m) Figura 1.34 Traiettorie di virate corrette a diverse velocità di virata Figura 1.35 Creazione dell input V w Builder di 3 componenti, che tramite un blocco Mux andiamo a collegare al nuovo input del blocco F4 model (fig. 1.36). Possiamo ora creare il segnale tramite il Signal Builder e simulare l effetto del vento. Ad esempio, utilizzando il velivolo in volo orizzontale livellato a 17m/s e a 5m di quota, trovato nel paragrafo precedente, simuliamo l effetto di una raffica verticale a gradino della durata di 1 secondo e alla velocità di 1 m/s. Modifichiamo il blocco Signal Builder come in figura 1.37 e lanciamo la simulazione. Nella figure 1.38 e 1.39 sono mostrate le variazioni di angolo di attacco e di quota dovute alla raffica. Come ulteriore esempio, possiamo simulare l effetto di una raffica laterale nel caso di virata corretta. In questo caso è un pò più complicato far si che la raffica venga effettivamente dal lato dell aereo. Per semplificare le cose, utilizzando la configurazione di virata corretta a velocità di virata,5 rad/sec, inseriamo una componente di V w solo lungo x e nel momento in cui il velivolo si dirige parallelo all asse y e, cioè a circa 34 secondi. Il Signal builder

143 CAPITOLO 1. ANIMAZIONE E CONTROLLO 133 Figura 1.36 Aggiunta del Signal Builder. Figura 1.37 Blocco Signal builder modificato per la raffica verticale

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Documentazione esterna al software matematico sviluppato con MatLab

Documentazione esterna al software matematico sviluppato con MatLab Documentazione esterna al software matematico sviluppato con MatLab Algoritmi Metodo di Gauss-Seidel con sovrarilassamento Metodo delle Secanti Metodo di Newton Studente Amelio Francesco 556/00699 Anno

Dettagli

Fondamenti di Automatica

Fondamenti di Automatica Fondamenti di Automatica Progetto di controllo e reti correttrici Dott. Ing. Marcello Bonfè Dipartimento di Ingegneria - Università di Ferrara Tel. +39 053 974839 E-mail: marcello.bonfe@unife.it pag. 1

Dettagli

Transitori del primo ordine

Transitori del primo ordine Università di Ferrara Corso di Elettrotecnica Transitori del primo ordine Si consideri il circuito in figura, composto da un generatore ideale di tensione, una resistenza ed una capacità. I tre bipoli

Dettagli

L analisi dei dati. Capitolo 4. 4.1 Il foglio elettronico

L analisi dei dati. Capitolo 4. 4.1 Il foglio elettronico Capitolo 4 4.1 Il foglio elettronico Le più importanti operazioni richieste dall analisi matematica dei dati sperimentali possono essere agevolmente portate a termine da un comune foglio elettronico. Prenderemo

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

. Si determina quindi quale distanza viene percorsa lungo l asse y in questo intervallo di tempo: h = v 0y ( d

. Si determina quindi quale distanza viene percorsa lungo l asse y in questo intervallo di tempo: h = v 0y ( d Esercizio 1 Un automobile viaggia a velocità v 0 su una strada inclinata di un angolo θ rispetto alla superficie terrestre, e deve superare un burrone largo d (si veda la figura, in cui è indicato anche

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Nome: Nr. Mat. Firma:

Nome: Nr. Mat. Firma: Controlli Automatici - A.A. 1/11 Ingegneria Gestionale 13 Settembre 11 - Esercizi Nome: Nr. Mat. Firma: Rispondere alle seguenti domande. a) Calcolare la trasformata di Laplace X(s) dei seguenti segnali

Dettagli

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo Logica Numerica Approfondimento E. Barbuto Minimo Comune Multiplo e Massimo Comun Divisore Il concetto di multiplo e di divisore Considerato un numero intero n, se esso viene moltiplicato per un numero

Dettagli

Esempi di uso e applicazioni di Matlab e simulink. 1) Uso delle funzioni ode23 e ode45 per l'integrazione di equazioni differenziali con Matlab

Esempi di uso e applicazioni di Matlab e simulink. 1) Uso delle funzioni ode23 e ode45 per l'integrazione di equazioni differenziali con Matlab Esempi di uso e applicazioni di Matlab e simulink ) Uso delle funzioni ode23 e ode45 per l'integrazione di equazioni differenziali con Matlab Sia dato da integrare una equazione differenziale scalare di

Dettagli

Controlli Automatici T. Trasformata di Laplace e Funzione di trasferimento. Parte 3 Aggiornamento: Settembre 2010. Prof. L.

Controlli Automatici T. Trasformata di Laplace e Funzione di trasferimento. Parte 3 Aggiornamento: Settembre 2010. Prof. L. Parte 3 Aggiornamento: Settembre 2010 Parte 3, 1 Trasformata di Laplace e Funzione di trasferimento Prof. Lorenzo Marconi DEIS-Università di Bologna Tel. 051 2093788 Email: lmarconi@deis.unibo.it URL:

Dettagli

Guida Compilazione Piani di Studio on-line

Guida Compilazione Piani di Studio on-line Guida Compilazione Piani di Studio on-line SIA (Sistemi Informativi d Ateneo) Visualizzazione e presentazione piani di studio ordinamento 509 e 270 Università della Calabria (Unità organizzativa complessa-

Dettagli

Forze, leggi della dinamica, diagramma del. 28 febbraio 2009 (PIACENTINO - PREITE) Fisica per Scienze Motorie

Forze, leggi della dinamica, diagramma del. 28 febbraio 2009 (PIACENTINO - PREITE) Fisica per Scienze Motorie Forze, leggi della dinamica, diagramma del corpo libero 1 FORZE Grandezza fisica definibile come l' agente in grado di modificare lo stato di quiete o di moto di un corpo. Ci troviamo di fronte ad una

Dettagli

Laboratorio di Fondamenti di Automatica Ingegneria Elettrica Sessione 2/3. Danilo Caporale [caporale@elet.polimi.it]

Laboratorio di Fondamenti di Automatica Ingegneria Elettrica Sessione 2/3. Danilo Caporale [caporale@elet.polimi.it] Laboratorio di Fondamenti di Automatica Ingegneria Elettrica Sessione 2/3 Danilo Caporale [caporale@elet.polimi.it] Outline 2 Funzione di trasferimento e risposta in frequenza Diagrammi di Bode e teorema

Dettagli

Complementi di Analisi per Informatica *** Capitolo 2. Numeri Complessi. e Circuiti Elettrici. a Corrente Alternata. Sergio Benenti 7 settembre 2013

Complementi di Analisi per Informatica *** Capitolo 2. Numeri Complessi. e Circuiti Elettrici. a Corrente Alternata. Sergio Benenti 7 settembre 2013 Complementi di Analisi per nformatica *** Capitolo 2 Numeri Complessi e Circuiti Elettrici a Corrente Alternata Sergio Benenti 7 settembre 2013? ndice 2 Circuiti elettrici a corrente alternata 1 21 Circuito

Dettagli

Trasformate di Laplace

Trasformate di Laplace TdL 1 TdL 2 Trasformate di Laplace La trasformata di Laplace e un OPERATORE funzionale Importanza dei modelli dinamici Risolvere equazioni differenziali (lineari a coefficienti costanti) Tempo t Dominio

Dettagli

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000

lo 2 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Capittol lo 2 Visualizzazione 2-1 - PERSONALIZZARE LA FINESTRA DI WORD 2000 Nel primo capitolo sono state analizzate le diverse componenti della finestra di Word 2000: barra del titolo, barra dei menu,

Dettagli

Rappresentazione nello spazio degli stati

Rappresentazione nello spazio degli stati Chapter 1 Rappresentazione nello spazio degli stati La modellazione di un sistema lineare di ordine n, fornisce un insieme di equazioni differenziali che una volta trasformate nel dominio discreto, possono

Dettagli

Energia e Lavoro. In pratica, si determina la dipendenza dallo spazio invece che dal tempo

Energia e Lavoro. In pratica, si determina la dipendenza dallo spazio invece che dal tempo Energia e Lavoro Finora abbiamo descritto il moto dei corpi (puntiformi) usando le leggi di Newton, tramite le forze; abbiamo scritto l equazione del moto, determinato spostamento e velocità in funzione

Dettagli

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato

Dettagli

Consideriamo due polinomi

Consideriamo due polinomi Capitolo 3 Il luogo delle radici Consideriamo due polinomi N(z) = (z z 1 )(z z 2 )... (z z m ) D(z) = (z p 1 )(z p 2 )... (z p n ) della variabile complessa z con m < n. Nelle problematiche connesse al

Dettagli

Anche nel caso che ci si muova e si regga una valigia il lavoro compiuto è nullo: la forza è verticale e lo spostamento orizzontale quindi F s =0 J.

Anche nel caso che ci si muova e si regga una valigia il lavoro compiuto è nullo: la forza è verticale e lo spostamento orizzontale quindi F s =0 J. Lavoro Un concetto molto importante è quello di lavoro (di una forza) La definizione di tale quantità scalare è L= F dl (unità di misura joule J) Il concetto di lavoro richiede che ci sia uno spostamento,

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Dettagli

La grafica. La built-in funzione grafica plot. x spezzata poligonale. discretizzato

La grafica. La built-in funzione grafica plot. x spezzata poligonale. discretizzato La grafica. Il Matlab possiede un ambiente grafico abbastanza potente paragonabile a software grafici operanti in altri contesti. In questo corso ci limiteremo ad illustrare solo una funzione grafica,

Dettagli

Come visto precedentemente l equazione integro differenziale rappresentativa dell equilibrio elettrico di un circuito RLC è la seguente: 1 = (1)

Come visto precedentemente l equazione integro differenziale rappresentativa dell equilibrio elettrico di un circuito RLC è la seguente: 1 = (1) Transitori Analisi nel dominio del tempo Ricordiamo che si definisce transitorio il periodo di tempo che intercorre nel passaggio, di un sistema, da uno stato energetico ad un altro, non è comunque sempre

Dettagli

2.5 Stabilità dei sistemi dinamici 20. - funzioni di trasferimento, nella variabile di Laplace s, razionali fratte del tipo:

2.5 Stabilità dei sistemi dinamici 20. - funzioni di trasferimento, nella variabile di Laplace s, razionali fratte del tipo: .5 Stabilità dei sistemi dinamici 9 Risulta: 3 ( s(s + 4).5 Stabilità dei sistemi dinamici Si è visto come un sistema fisico può essere descritto tramite equazioni differenziali o attraverso una funzione

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Strumenti per la Progettazione

Strumenti per la Progettazione Strumenti per la Progettazione Diversi Ingegneri usano semplici Calcolatrici Il 40% usa fogli Spreadsheets tipo Excel Il 20%, per risolvere i loro calcoli, scrive programmi in linguaggi tipo C o Fortran

Dettagli

Capitolo 13: L offerta dell impresa e il surplus del produttore

Capitolo 13: L offerta dell impresa e il surplus del produttore Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:

Dettagli

Control System Toolbox

Control System Toolbox Control System Toolbox E` un insieme di funzioni per l analisi di sistemi dinamici (tipicamente lineari tempo invarianti o LTI) e per la sintesi di controllori (in particolare a retroazione). All'interno

Dettagli

F S V F? Soluzione. Durante la spinta, F S =ma (I legge di Newton) con m=40 Kg.

F S V F? Soluzione. Durante la spinta, F S =ma (I legge di Newton) con m=40 Kg. Spingete per 4 secondi una slitta dove si trova seduta la vostra sorellina. Il peso di slitta+sorella è di 40 kg. La spinta che applicate F S è in modulo pari a 60 Newton. La slitta inizialmente è ferma,

Dettagli

RAPPRESENTAZIONE GRAFICA E ANALISI DEI DATI SPERIMENTALI CON EXCEL

RAPPRESENTAZIONE GRAFICA E ANALISI DEI DATI SPERIMENTALI CON EXCEL RAPPRESENTAZIONE GRAFICA E ANALISI DEI DATI SPERIMENTALI CON EXCEL 1 RAPPRESENTAZIONE GRAFICA Per l analisi dati con Excel si fa riferimento alla versione 2007 di Office, le versioni successive non differiscono

Dettagli

4. Operazioni elementari per righe e colonne

4. Operazioni elementari per righe e colonne 4. Operazioni elementari per righe e colonne Sia K un campo, e sia A una matrice m n a elementi in K. Una operazione elementare per righe sulla matrice A è una operazione di uno dei seguenti tre tipi:

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

2 Fortino Lugi. Figura Errore. Nel documento non esiste testo dello stile specificato.-3 -- Finestra attiva o nuovo documento

2 Fortino Lugi. Figura Errore. Nel documento non esiste testo dello stile specificato.-3 -- Finestra attiva o nuovo documento 1 Fortino Lugi STAMPA UNIONE OFFICE 2000 Vi sarà capitato sicuramente di ricevere lettere pubblicitarie indirizzate personalmente a voi; ovviamente quelle missive non sono state scritte a mano, ma utilizzando

Dettagli

GIROSCOPIO. Scopo dell esperienza: Teoria fisica. Verificare la relazione: ω p = bmg/iω

GIROSCOPIO. Scopo dell esperienza: Teoria fisica. Verificare la relazione: ω p = bmg/iω GIROSCOPIO Scopo dell esperienza: Verificare la relazione: ω p = bmg/iω dove ω p è la velocità angolare di precessione, ω è la velocità angolare di rotazione, I il momento principale d inerzia assiale,

Dettagli

INTEGRATORE E DERIVATORE REALI

INTEGRATORE E DERIVATORE REALI INTEGRATORE E DERIVATORE REALI -Schemi elettrici: Integratore reale : C1 R2 vi (t) R1 vu (t) Derivatore reale : R2 vi (t) R1 C1 vu (t) Elenco componenti utilizzati : - 1 resistenza da 3,3kΩ - 1 resistenza

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

GRANDEZZE SINUSOIDALI

GRANDEZZE SINUSOIDALI GRANDEE SINUSOIDALI INDICE -Grandezze variabili. -Grandezze periodiche. 3-Parametri delle grandezze periodiche. 4-Grandezze alternate. 5-Grandezze sinusoidali. 6-Parametri delle grandezze sinusoidali.

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

Dettagli

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo

Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo Nell esempio verrà mostrato come creare un semplice documento in Excel per calcolare in modo automatico la rata di un mutuo a tasso fisso conoscendo - la durata del mutuo in anni - l importo del mutuo

Dettagli

Lezione 10: Il problema del consumatore: Preferenze e scelta ottimale

Lezione 10: Il problema del consumatore: Preferenze e scelta ottimale Corso di Scienza Economica (Economia Politica) prof. G. Di Bartolomeo Lezione 10: Il problema del consumatore: Preferenze e scelta ottimale Facoltà di Scienze della Comunicazione Università di Teramo Scelta

Dettagli

Invio SMS. DM Board ICS Invio SMS

Invio SMS. DM Board ICS Invio SMS Invio SMS In questo programma proveremo ad inviare un SMS ad ogni pressione di uno dei 2 tasti della DM Board ICS. Per prima cosa creiamo un nuovo progetto premendo sul pulsante (Create new project): dove

Dettagli

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro, EXCEL PER WINDOWS95 1.Introduzione ai fogli elettronici I fogli elettronici sono delle applicazioni che permettono di sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area

Dettagli

ESTRAZIONE DI RADICE

ESTRAZIONE DI RADICE ESTRAZIONE DI RADICE La radice è l operazione inversa dell elevamento a potenza. L esponente della potenza è l indice della radice che può essere: quadrata (); cubica (); quarta (4); ecc. La base della

Dettagli

Fondamenti di Automatica

Fondamenti di Automatica Fondamenti di Automatica Risposte canoniche e sistemi elementari Dott. Ing. Marcello Bonfè Dipartimento di Ingegneria - Università di Ferrara Tel. +39 0532 974839 E-mail: marcello.bonfe@unife.it pag. 1

Dettagli

EasyPrint v4.15. Gadget e calendari. Manuale Utente

EasyPrint v4.15. Gadget e calendari. Manuale Utente EasyPrint v4.15 Gadget e calendari Manuale Utente Lo strumento di impaginazione gadget e calendari consiste in una nuova funzione del software da banco EasyPrint 4 che permette di ordinare in maniera semplice

Dettagli

Psicometria (8 CFU) Corso di Laurea triennale STANDARDIZZAZIONE

Psicometria (8 CFU) Corso di Laurea triennale STANDARDIZZAZIONE Psicometria (8 CFU) Corso di Laurea triennale Un punteggio all interno di una distribuzione è in realtà privo di significato se preso da solo. Sapere che un soggetto ha ottenuto un punteggio x=52 in una

Dettagli

Analisi e diagramma di Pareto

Analisi e diagramma di Pareto Analisi e diagramma di Pareto L'analisi di Pareto è una metodologia statistica utilizzata per individuare i problemi più rilevanti nella situazione in esame e quindi le priorità di intervento. L'obiettivo

Dettagli

Gestione Rapporti (Calcolo Aree)

Gestione Rapporti (Calcolo Aree) Gestione Rapporti (Calcolo Aree) L interfaccia dello strumento generale «Gestione Rapporti»...3 Accedere all interfaccia (toolbar)...3 Comandi associati alle icone della toolbar...4 La finestra di dialogo

Dettagli

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete. Le equazioni Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete. Definizione e caratteristiche Chiamiamo equazione l uguaglianza tra due espressioni algebriche,

Dettagli

E1. IMPLEMENTAZIONE in MATLAB-SIMULINK del MODELLO e del CONTROLLO di un MOTORE ELETTRICO a CORRENTE CONTINUA

E1. IMPLEMENTAZIONE in MATLAB-SIMULINK del MODELLO e del CONTROLLO di un MOTORE ELETTRICO a CORRENTE CONTINUA E1. IMPLEMENTAZIONE in MATLAB-SIMULINK del MODELLO e del CONTOLLO di un MOTOE ELETTICO a COENTE CONTINUA 1. EQUAZIONI DEL MODELLO Equazioni nel dominio del tempo descrittive del Modello elettromagnetico

Dettagli

Analisi di sospensioni attive e passive con Matlab-Simulink

Analisi di sospensioni attive e passive con Matlab-Simulink Analisi di sospensioni attive e passive con Matlab-Simulink Appunti di Controlli Automatici Versione 1.0 Ing. Alessandro Pisano Miglioramento del comfort Iniziamo analizzando una sospensione passiva. Riferiamoci

Dettagli

Matematica 1 - Corso di Laurea in Ingegneria Meccanica

Matematica 1 - Corso di Laurea in Ingegneria Meccanica Matematica 1 - Corso di Laurea in Ingegneria Meccanica Esercitazione su massimi e minimi vincolati 9 dicembre 005 Esercizio 1. Considerare l insieme C = {(x,y) R : (x + y ) = x } e dire se è una curva

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo

Dettagli

Le query di raggruppamento

Le query di raggruppamento Le query di raggruppamento Le "Query di raggruppamento" sono delle Query di selezione che fanno uso delle "Funzioni di aggregazione" come la Somma, il Conteggio, il Massimo, il Minimo o la Media, per visualizzare

Dettagli

Quando troncare uno sviluppo in serie di Taylor

Quando troncare uno sviluppo in serie di Taylor Quando troncare uno sviluppo in serie di Taylor Marco Robutti October 13, 2014 Lo sviluppo in serie di Taylor di una funzione è uno strumento matematico davvero molto utile, e viene spesso utilizzato in

Dettagli

Esercitazione VIII - Lavoro ed energia II

Esercitazione VIII - Lavoro ed energia II Esercitazione VIII - Lavoro ed energia II Forze conservative Esercizio Una pallina di massa m = 00g viene lanciata tramite una molla di costante elastica = 0N/m come in figura. Ammesso che ogni attrito

Dettagli

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag.

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag. SOMMARIO CAPITOLO : I RADICALI. I radicali pag.. I radicali aritmetici pag.. Moltiplicazione e divisione fra radicali aritmetici pag.. Potenza di un radicale aritmetico pag.. Trasporto di un fattore esterno

Dettagli

UNIVERSITÀ DEGLI STUDI DI TERAMO

UNIVERSITÀ DEGLI STUDI DI TERAMO UNIVERSITÀ DEGLI STUDI DI TERAMO CORSO DI LAUREA IN ECONOMIA BANCARIA FINANZIARIA ED ASSICURATIVA (Classe 7) Corso di Matematica per l Economia (Prof. F. Eugeni) TEST DI INGRESSO Teramo, ottobre 00 SEZIONE

Dettagli

Il concetto di valore medio in generale

Il concetto di valore medio in generale Il concetto di valore medio in generale Nella statistica descrittiva si distinguono solitamente due tipi di medie: - le medie analitiche, che soddisfano ad una condizione di invarianza e si calcolano tenendo

Dettagli

L idea alla base del PID èdi avere un architettura standard per il controllo di processo

L idea alla base del PID èdi avere un architettura standard per il controllo di processo CONTROLLORI PID PID L idea alla base del PID èdi avere un architettura standard per il controllo di processo Può essere applicato ai più svariati ambiti, dal controllo di una portata di fluido alla regolazione

Dettagli

Basi di matematica per il corso di micro

Basi di matematica per il corso di micro Basi di matematica per il corso di micro Microeconomia (anno accademico 2006-2007) Lezione del 21 Marzo 2007 Marianna Belloc 1 Le funzioni 1.1 Definizione Una funzione è una regola che descrive una relazione

Dettagli

Circuiti amplificatori

Circuiti amplificatori Circuiti amplificatori G. Traversi Strumentazione e Misure Elettroniche Corso Integrato di Elettrotecnica e Strumentazione e Misure Elettroniche 1 Amplificatori 2 Amplificatori Se A V è negativo, l amplificatore

Dettagli

2 - Modifica. 2.1 - Annulla. 2.2 - Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1

2 - Modifica. 2.1 - Annulla. 2.2 - Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1 2 - Modifica FIGURA 2.1 Il menu a tendina Modifica contiene il gruppo di comandi relativi alla selezione delle entità del disegno, alla gestione dei layer, alla gestione delle proprietà delle varie entità

Dettagli

Consorzio Nettuno - Corso di Matematica 1 Schede di lavoro guidato per le esercitazioni

Consorzio Nettuno - Corso di Matematica 1 Schede di lavoro guidato per le esercitazioni Consorzio Nettuno - Corso di Matematica 1 Schede di lavoro guidato per le esercitazioni A cura di Sebastiano Cappuccio SCHEDA N. 6 ARGOMENTO: Grafici di funzioni sottoposte a trasformazioni elementari.

Dettagli

Soluzione degli esercizi sul moto rettilineo uniformemente accelerato

Soluzione degli esercizi sul moto rettilineo uniformemente accelerato Liceo Carducci Volterra - Classe 3 a B Scientifico - Francesco Daddi - 8 novembre 00 Soluzione degli esercizi sul moto rettilineo uniformemente accelerato Esercizio. Un corpo parte da fermo con accelerazione

Dettagli

Forze come grandezze vettoriali

Forze come grandezze vettoriali Forze come grandezze vettoriali L. Paolucci 23 novembre 2010 Sommario Esercizi e problemi risolti. Per la classe prima. Anno Scolastico 2010/11 Parte 1 / versione 2 Si ricordi che la risultante di due

Dettagli

Aprile (recupero) tra una variazione di velocità e l intervallo di tempo in cui ha luogo.

Aprile (recupero) tra una variazione di velocità e l intervallo di tempo in cui ha luogo. Febbraio 1. Un aereo in volo orizzontale, alla velocità costante di 360 km/h, lascia cadere delle provviste per un accampamento da un altezza di 200 metri. Determina a quale distanza dall accampamento

Dettagli

2. Leggi finanziarie di capitalizzazione

2. Leggi finanziarie di capitalizzazione 2. Leggi finanziarie di capitalizzazione Si chiama legge finanziaria di capitalizzazione una funzione atta a definire il montante M(t accumulato al tempo generico t da un capitale C: M(t = F(C, t C t M

Dettagli

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools Una breve introduzione operativa a STGraph Luca Mari, versione 5.3.11 STGraph è un sistema software per creare, modificare ed eseguire modelli di sistemi dinamici descritti secondo l approccio agli stati

Dettagli

L'impulso di una forza che varia nel tempo

L'impulso di una forza che varia nel tempo Lezione 13 approfondimento pag.1 L'impulso di una forza che varia nel tempo Un riassunto di quel che sappiamo Riprendiamo in esame il solito carrellino che si trova sopra la rotaia a basso attrito. Se

Dettagli

Esercizi sul moto rettilineo uniformemente accelerato

Esercizi sul moto rettilineo uniformemente accelerato Liceo Carducci Volterra - Classe 3 a B Scientifico - Francesco Daddi - 8 novembre 010 Esercizi sul moto rettilineo uniformemente accelerato Esercizio 1. Un corpo parte da fermo con accelerazione pari a

Dettagli

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI Pagina 1 UN SISTEMA DI NEWS Sommario UN SISTEMA DI NEWS...1 Introduzione...2 Scelgo l'area su cui operare...3 Un minimo di teoria...3 Creo le Pagine...4 Definizione dello Schedario Novità...6 Compilo la

Dettagli

Orlando Allocca Regolatori standard

Orlando Allocca Regolatori standard A09 159 Orlando Allocca Regolatori standard Copyright MMXII ARACNE editrice S.r.l. www.aracneeditrice.it info@aracneeditrice.it via Raffaele Garofalo, 133/A B 00173 Roma (06) 93781065 ISBN 978-88-548-4882-7

Dettagli

Tutorial 3DRoom. 3DRoom

Tutorial 3DRoom. 3DRoom Il presente paragrafo tratta il rilievo di interni ed esterni eseguito con. L utilizzo del software è molto semplice ed immediato. Dopo aver fatto uno schizzo del vano si passa all inserimento delle diagonali

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

Capitolo. La funzione di trasferimento. 2.1 Funzione di trasferimento di un sistema. 2.2 L-trasformazione dei componenti R - L - C

Capitolo. La funzione di trasferimento. 2.1 Funzione di trasferimento di un sistema. 2.2 L-trasformazione dei componenti R - L - C Capitolo La funzione di trasferimento. Funzione di trasferimento di un sistema.. L-trasformazione dei componenti R - L - C. Determinazione delle f.d.t. di circuiti elettrici..3 Risposta al gradino . Funzione

Dettagli

FIRESHOP.NET. Gestione completa delle fidelity card & raccolta punti. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione completa delle fidelity card & raccolta punti. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione completa delle fidelity card & raccolta punti Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 3 La gestione delle fidelity card nel POS... 4 Codificare una nuova fidelity

Dettagli

Appunti di: MICROSOFT EXCEL

Appunti di: MICROSOFT EXCEL Appunti di: MICROSOFT EXCEL INDICE PARTE I: IL FOGLIO ELETTRONICO E I SUOI DATI Paragrafo 1.1: Introduzione. 3 Paragrafo 1.2: Inserimento dei Dati....4 Paragrafo 1.3: Ordinamenti e Filtri... 6 PARTE II:

Dettagli

Metodi Stocastici per la Finanza

Metodi Stocastici per la Finanza Metodi Stocastici per la Finanza Tiziano Vargiolu vargiolu@math.unipd.it 1 1 Università degli Studi di Padova Anno Accademico 2011-2012 Lezione 6 Indice 1 Il metodo bootstrap 2 Esercitazione 3 Interpolazione

Dettagli

www.filoweb.it STAMPA UNIONE DI WORD

www.filoweb.it STAMPA UNIONE DI WORD STAMPA UNIONE DI WORD Molte volte abbiamo bisogno di stampare più volte lo stesso documento cambiando solo alcuni dati. Potremmo farlo manualmente e perdere un sacco di tempo, oppure possiamo ricorrere

Dettagli

Esercizi su lineare indipendenza e generatori

Esercizi su lineare indipendenza e generatori Esercizi su lineare indipendenza e generatori Per tutto il seguito, se non specificato esplicitamente K indicherà un campo e V uno spazio vettoriale su K Cose da ricordare Definizione Dei vettori v,,v

Dettagli

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1 Pagina 1 Sommario...1 Apertura...2 Visualizzazioni...2 Elenco...2 Testo sul pulsante e altre informazioni...3 Comandi...3 Informazioni...4 Flow chart...5 Comandi...6 Pulsanti Principali e Pulsanti Dipendenti...6

Dettagli

Esercitazione 5 Dinamica del punto materiale

Esercitazione 5 Dinamica del punto materiale Problema 1 Un corpo puntiforme di massa m = 1.0 kg viene lanciato lungo la superficie di un cuneo avente un inclinazione θ = 40 rispetto all orizzontale e altezza h = 80 cm. Il corpo viene lanciato dal

Dettagli

Studente: SANTORO MC. Matricola : 528

Studente: SANTORO MC. Matricola : 528 CORSO di LAUREA in INFORMATICA Corso di CALCOLO NUMERICO a.a. 2004-05 Studente: SANTORO MC. Matricola : 528 PROGETTO PER L ESAME 1. Sviluppare una versione dell algoritmo di Gauss per sistemi con matrice

Dettagli

~ Copyright Ripetizionando - All rights reserved ~ http://ripetizionando.wordpress.com STUDIO DI FUNZIONE

~ Copyright Ripetizionando - All rights reserved ~ http://ripetizionando.wordpress.com STUDIO DI FUNZIONE STUDIO DI FUNZIONE Passaggi fondamentali Per effettuare uno studio di funzione completo, che non lascia quindi margine a una quasi sicuramente errata inventiva, sono necessari i seguenti 7 passaggi: 1.

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

Dettagli

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1 Entrare nel sistema Clicca su Entra per entrare nel sistema. PAGINA 1 Entrare nel sistema Compare il box di login in cui inserire il nome utente e la password fornite tramite posta elettronica. PAGINA

Dettagli

1 Serie di Taylor di una funzione

1 Serie di Taylor di una funzione Analisi Matematica 2 CORSO DI STUDI IN SMID CORSO DI ANALISI MATEMATICA 2 CAPITOLO 7 SERIE E POLINOMI DI TAYLOR Serie di Taylor di una funzione. Definizione di serie di Taylor Sia f(x) una funzione definita

Dettagli

WORD 97 SCRIVERE UNA TESI DI LAUREA

WORD 97 SCRIVERE UNA TESI DI LAUREA WORD 97 SCRIVERE UNA TESI DI LAUREA PASSO 1 Per prima cosa pensiamo al formato generale della pagina: i margini richiesti da una tesi sono quasi sempre più ampi di quelli di un testo normale. Apriamo ora

Dettagli

ENTRARE NEL SISTEMA. Clicca su Entra per entrare nel sistema. PAGINA 1

ENTRARE NEL SISTEMA. Clicca su Entra per entrare nel sistema. PAGINA 1 ENTRARE NEL SISTEMA Clicca su Entra per entrare nel sistema. PAGINA 1 ENTRARE NEL SISTEMA Compare il box di LOGIN in cui inserire il nome utente e la password fornite tramite posta elettronica dall indirizzo

Dettagli

Modulo 3 - Elaborazione Testi 3.6 Preparazione stampa

Modulo 3 - Elaborazione Testi 3.6 Preparazione stampa Università degli Studi dell Aquila Corso ECDL programma START Modulo 3 - Elaborazione Testi 3.6 Preparazione stampa Maria Maddalena Fornari Impostazioni di pagina: orientamento È possibile modificare le

Dettagli

CAPITOLO 16 SUCCESSIONI E SERIE DI FUNZIONI

CAPITOLO 16 SUCCESSIONI E SERIE DI FUNZIONI CAPITOLO 16 SUCCESSIONI E SERIE DI FUNZIONI Abbiamo studiato successioni e serie numeriche, ora vogliamo studiare successioni e serie di funzioni. Dato un insieme A R, chiamiamo successione di funzioni

Dettagli

CAPACITÀ DI PROCESSO (PROCESS CAPABILITY)

CAPACITÀ DI PROCESSO (PROCESS CAPABILITY) CICLO DI LEZIONI per Progetto e Gestione della Qualità Facoltà di Ingegneria CAPACITÀ DI PROCESSO (PROCESS CAPABILITY) Carlo Noè Università Carlo Cattaneo e-mail: cnoe@liuc.it 1 CAPACITÀ DI PROCESSO Il

Dettagli