CONTROLLI AUTOMATICI e SISTEMI ELETTRICI LINEARI Ingegneria Meccatronica INTRODUZIONE Matlab (seconda parte) e SIMULINK Emilio Lorenzani Tel. 0522 522443 e-mail: [email protected] http://www.ingre.unimore.it Plot e Plot3: opzioni per la visualizzazione clear all close all x = 0:0.1:8*pi; y = sin(x); y1=cos(x); plot(x, y, 'b+:', x, y1,'r*-') grid on pause %occorre digitare un tasto %per eseguire i successivi comandi axis([0 2*pi -1 1]); xlabel('tempo'); ylabel('Seno e Coseno') title('Esempio uso plot') t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t, 'LineWidth',2); grid on; %disegna una linea in uno spazio 3D Introduzione Matlab/Simulink -- 2 Opzioni di visualizzazione da comandi user friendly della Figura E’ possibile salvare l’immagine in diversi formati, modificare l’immagine nei modi più disparati, inserire freccie, testo, legende, ecc… Altri comandi per disegnare grafici 2D, stesse funzionalità di plot: loglog: entrambi gli assi hanno scale logaritmiche semilogx: scala logartimica per asse x e lineare per asse y semilogy: scala lineare per asse x e logaritmica per asse y Introduzione Matlab/Simulink -- 3 Uso dei vettori in Matlab come polinomi 1/2 Oltre alla rappresentazione di segnali (mediante la sequenza dei valori che esso assume in determinati intervalli di tempo), i vettori possono rappresentate dei polinomi. Un polinomio è descritto dal vettore dei suoi coefficienti Esempio polinomio 5s2+s+2 >> pol=[5 1 2] pol = 512 >> roots(pol) % Calcolo radici di un polinomio rappresentato da % un vettore ans= -0.1000 + 0.6245i -0.1000 - 0.6245i Introduzione Matlab/Simulink -- 4 Uso dei vettori in Matlab come polinomi 2/2 COMANDO polyval >>pol=[5 1 2] >>polyval=(pol, 0) ans= 2 % polinomio 5s2+s+2 % determina il valore del polinomio per un %valore dell’incognita >>polyval=(pol, 2) ans= 24 COMANDO conv Prodotto di polinomi (conv) (s+1)(s+1)=s2+2s +1 >> pol1=[1 1]; pol2=[1 1]; >> polprod=conv(pol1,pol2) polprod= [1 2 1] Introduzione Matlab/Simulink -- 5 Simulink Simulink è un ambiente grafico per la simulazione di sistemi complessi • Interfaccia grafica dalla quale si risolve il problema numerico di simulazione desiderato • Blocchi elementari predefiniti (pronti per l’interconnessione) resi disponibili dalla libreria di Simulink • Elevata flessibilità nella variazione del progetto • Permette di simulare sistemi complessi, composti da numerosi blocchi interconnessi tra loro. I singoli blocchi possono essere anche nonlineari o tempo-varianti • Permette l’integrazione di sottosistemi continui e sottosistemi funzionanti a tempo discreti (come nei controlli digitali) Per accedere a Simulink basta digitare sim ulink dal prompt di matlab Introduzione Matlab/Simulink -- 6 Simulink All'avvio si possono distinguere due parti: le Librerie e il Foglio di lavoro Nelle librerie sono presenti i blocchi elementari che vengono utilizzati nel Foglio di lavoro. Nel Foglio di lavoro si costruisce il progetto interconnettendo i blocchi presi dalla librerie. Ci sono diverse librerie, noi useremo principalmente: • • • • • Sources: Moduli che generano segnali di vario genere Sinks: Moduli per la visualizzazione grafica dei segnali Math: Moduli per l’elaborazione matematica dei segnali Continuous: Moduli per l’inserimento di funzioni di trasferimento Discontinuities: blocchi non lineari (saturation, switch, dead-zone) Introduzione Matlab/Simulink -- 7 Simulink – Libreria Sources Contiene blocchi che producono particolari segnali utilizzati come ingresso per un opportuno sistema. I vari elementi si portano nel Foglio di lavoro semplicemente trascinandoli dentro come se fossero icone. Le librerie sono Read-only. Per poter variare i parametri di un blocco occorre prima trascinarlo nel workspace. Facendo doppio click sull’icona trascinata nel foglio di lavoro si apre una maschera che ci consente di impostare i parametri che la caratterizzano Insieme ai parametri che caratterizzano il blocco è presente il pulsante HELP che spiega il comportamento del blocco. Introduzione Matlab/Simulink -- 8 Simulink – Libreria Sources I blocchi più utilizzati sono: • Constant: genera un valore costante. • Step: genera un gradino. • Ramp: genera una rampa. • Sine wave: genera una sinusoide. • Signal generator: può generare vari tipi di segnali periodici • Repeating sequence: permette di creare segnali che si ripetono nel tempo • out1: blocco che permette l’interconnessione di segnali in ingresso per un sottoblocco creato dall’utente. Introduzione Matlab/Simulink -- 9 Simulink – Libreria Sinks Un insieme di strumenti che consente di visualizzare l'andamento di un segnale. I blocchi più importanti sono: • Scope: visualizza il segnale di ingresso in funzione del tempo. Un parametro importante è il massimo numero di punti che memorizza, parametro modificabile dall’utente. • XYGraph: Genera un grafico del segnale connesso all'ingresso y (il secondo) in funzione di quello connesso all'ingresso x (il primo). • To Workspace: Memorizza nel workspace i valori del segnale connesso in una variabile matlab. • out1: blocco che permette l’interconnessione di segnali di uscita da un sottoblocco creato dall’utente. Introduzione Matlab/Simulink -- 10 Simulink – Libreria Sinks Si consiglia di utilizzare To Workspace in quanto dopo la simulazione si dispone non solo di un grafico ma di una variabile in cui sono contenuti tutti i valori assunti da un segnale. Si può elaborare poi tale variabile con gli strumenti messi a disposizione da Matlab. Il blocco To Workspace permette di salvare i dati nel workspace di Matlab in 3 formati: structure, structure with time, array. Array: è un semplice vettore Structure: è una struttura con sottocampi. Esempio il vettore dei dati di uscita si trova in nomevariabile.signals.values Structure with Time: è memorizzata anche la variabile del tempo di simulazione Per visualizzare la variabile solo del tempo di simulazione è possibile usare il blocco clock collegato a un blocco To Workspace. Introduzione Matlab/Simulink -- 11 Simulik – Libreria Math Nella libreria Math sono presenti vari blocchi per l'elaborazione matematica dei segnali. Due tra i blocchi più importanti sono Gain e Sum Il blocco Gain riceve in ingresso un segnale e restituisce in uscita l'ingresso moltiplicato per la costante di guadagno che può essere impostato dall’utente. Il blocco Sum riceve in ingresso tanti segnali quante sono le somme o differenze che si settano. Restituisce in uscita il segnale somma/differenza degli ingressi. Ci sono i blocchi Product, Divide , abs (valore assoluto), Math function (permette di scegliere tra una vasta serie di funzioni), ecc… Introduzione Matlab/Simulink -- 12 Simulink – Lanciare una simulazione Una volta costruito il sistema da simulare occorre far partire la simulazione. Per lanciare la simulazione si può fare in uno dei seguenti modi: • Premere il tasto a forma di P lay sulla toolbar • Selezionare Start dal menu Sim ulation . Impostare prima il tempo di fine simulazione, in ogni caso è possibile interrompere o mettere in pausa la simulazione in ogni momento. Per cambiare i parametri della simulazione (tra cui il tempo di simulazione e i metodi di integrazione numerica) selezionare Configuration param eters dal menu Sim ulation . La simulazione potrebbe dare dei risultati sbagliati con alcuni Simulation parameters. Consiglio: non tenere «Max step size» in AUTO: massimo intervallo di tempo ogni quanto vengono effettuati i calcoli (ovviamente questa opzione modifica i tempi di calcolo necessari alla simulazione). Introduzione Matlab/Simulink -- 13 Esercizio circuito RLC 1/4 Determinare l’andamento di vc(t) per una data variazione del segnale di tensione in ingresso (per esempio variazione a gradino). Condizioni iniziali nulle vc(0)=0, dvc(0)/dt=0 di (t ) v (t ) = R ⋅ i (t ) + L + vc ( t ) dt dvc (t ) i (t ) = C dt dvc (t ) d 2 vc ( t ) + LC + vc ( t ) v (t ) = R ⋅ C 2 dt dt Introduzione Matlab/Simulink -- 14 Esercizio circuito RLC 2/4 2 d v (t ) v (t ) R dvc (t ) vc (t ) = − − 2 dt LC L dt LC Scrittura dell’equazione comoda per l’implementazione in Simulink Step da 0 a 10V File P aram etri.m clear all close all % circuito LCR L=100e-3; R=6; C=220e-6; Introduzione Matlab/Simulink -- 15 Esercizio circuito RLC 3/4 Evoluzione di vc(t) Esportare ora i dati della tensione di uscita nel workspace con il blocco To Workspace e graficare vc(t) con il comando plot Introduzione Matlab/Simulink -- 16 Esercizio circuito RLC 4/4 Le condizioni iniziali diverse da zero possono essere inserite all’interno del blocco Integrator come parametro Visualizzare l’andamento di vc(t) con differenti forme d’onda di v(t) Create subsystem Introduzione Matlab/Simulink -- 17