|
Riassunto: Vengono presentati due package sviluppati presso il Dipartimento di Elettronica, Informatica e Sistemistica dell'Università di Bologna allo scopo di facilitare l'impiego del MATLAB nel laboratorio didattico dei corsi di controlli automatici: TFI, ambiente interattivo basato su un interprete per funzioni di trasferimento, e CTT, sistema basato sull'impiego esteso di menu a finestre per rendere più immediato e didatticamente efficace l'accesso alle varie funzioni di MATLAB e SIMULINK.
Parole chiave: Interprete di linguaggio, menu a finestre, MATLAB, SIMULINK
Introduzione
L'organizzazione intensiva dei corsi d'insegnamento nelle Facoltà tecniche, ossia la loro contrazione in semestri nei quali il tempo a disposizione dello studente per assimilare la materia è inevitabilmente ridotto rispetto alla consueta distribuzione lungo l'intero anno accademico, consiglia la ricerca di nuovi e più adeguati ausili didattici. D'altra parte un potente strumento di simulazione dei sistemi dinamici, quale è MATLAB, fornisce un utilissimo supporto per lo sviluppo di siffatti ausili. Qui si descrivono due toolbox MATLAB sviluppati presso la Facoltà d'Ingegneria di Bologna, e concepiti come supporto per l'apprendimento e le esercitazioni nei corsi di base di Controlli automatici: TFI, che è un ambiente interattivo basato su un interprete di funzioni di trasferimento, e CTT che permette di sviluppare in ambiente SIMULINK esempi ed esercizi di analisi e sintesi di sistemi di controllo.
TFI (Transfer Function Interpreter)
TFI è un toolbox di MATLAB che consente di elaborare in modo immediato le funzioni di trasferimento e rende accessibili con un interattivo amichevole e facilmente comprensibile le principali procedure matematiche e grafiche per lo studio dei sistemi di controllo. Serve, quindi, per la progettazione assistita completamente interattiva nel campo dell'automatica e, in particolare, per il laboratorio didattico dei corsi di Controlli automatici di base. Pur utilizzando MATLAB, che è installato praticamente in tutti i laboratori didattici delle facoltà di ingegneria, non ne richiede la conoscenza, e risulta pertanto immediatamente accessibile da parte dello studente. TFI crea di fatto un ambiente proprio, in cui le istruzioni hanno sintassi e modalità di esecuzione completamente diverse da quelle della command window di MATLAB: infatti invece delle matrici vi vengono elaborate le funzioni di trasferimento sia a tempo continuo (in s) sia a tempo discreto (in z).
TFI si è originato da una tesi di laurea (A. Civolani, febbraio 1994), in cui si è voluto saggiare la possibilità di inserire entro il MATLAB un metainterprete, cioè un programma in grado di eseguire le quattro operazioni fondamentali e l'elevazione a potenza intera ( +,-,*,/, ^) in spazi vettoriali i cui elementi siano rappresentabili come insiemi finiti di matrici (numeriche o alfanumeriche), quali, appunto, le funzioni di trasferimento o, più in generale, i sistemi dinamici, anche multivariabili. Mentre il workspace (porzione di memoria destinata a contenere gli oggetti dell'elaborazione) di MATLAB è una parte di RAM (o più parti di RAM, in quanto ogni function chiamata da tastiera o dal programma principale ha un proprio workspace), quello di TFI è costituito dalla directory di lavoro del disco rigido, sul quale gli oggetti dell'elaborazione vengono salvati in modo permanente come file di dati del tipo *.mat.
Poichè il lavoro svolto nella tesi ha dimostrato che la velocità di elaborazione di espressioni, anche molto complesse, in termini di costanti reali e funzioni di trasferimento, è più che accettabile, il metainterprete è stato completato con programmi ausiliari che rendono disponibili all'interno del proprio ambiente tutte le metodologie di base per la progettazione dei sistemi di controllo, sia a tempo continuo sia a tempo discreto. Nell'elaborazione è stata particolarmente curata la robustezza numerica in ordine alla molteplicità dei poli, molto importante per una corretta riproduzione dei modi nelle risposte indiciali e nella conversione dal continuo al discreto. TFI è stato messo a punto durante le esercitazioni in laboratorio di quattro corsi di Controlli Automatici a Bologna e Cesena durante gli Anni Accademici 1993-94 e 1994-95 e pubblicato
in un dischetto allegato al volume [5].
Di TFI sono state sviluppate e messe a punto due differenti versioni, una per MATLAB 3.5 (DOS) e l'altra per MATLAB 4 (Windows). Nel seguito di questa nota vengono brevemente descritti l'ambiente di TFI e le principali funzioni accessibili da tale ambiente.
- L'ambiente di TFI
Il package TFI viene richiamato da ambiente MATLAB con il comando
![[COMANDO]](formu_1.gif)
il quale provoca il passaggio all'ambiente TFI, caratterizzato da un diverso prompt sullo schermo ( > invece di >>), a segnalare la presenza di una diversa sintassi, predisposta per eseguire operazioni su oggetti diversi, cioè funzioni di trasferimento invece di matrici. Per mostrare come si utilizza TFI dalla command window, vengono riportati di seguito alcuni esempi. Per definire una funzione di trasferimento si impiega un'istruzione del tipo
![[COMANDO]](formu_2.gif)
la funzione di trasferimento g1(s) viene interpretata, memorizzata nel file g1.mat, e visualizzata nella forma
![[COMANDO]](formu_3.gif)
Si suponga che g1(s) sia la funzione di trasferimento di un sistema da controllare in retroazione; si può introdurre la funzione di trasferimento di una rete anticipatrice con l'istruzione
![[COMANDO]](formu_4.gif)
in seguito alla quale la funzione di trasferimento gc(s) viene memorizzata nel file gc.mat e visualizzata come
![[COMANDO]](formu_5.gif)
A questo punto si può calcolare la funzione di trasferimento complessiva ad anello aperto g2(s) con la semplice istruzione
![[COMANDO]](formu_6.gif)
e quella ad anello chiuso g0(s) mediante
![[COMANDO]](formu_7.gif)
quest'ultima viene visualizzata come
![[COMANDO]](formu_8.gif)
Il modo di operare di TFI è analogo a quello di altri interpreti, e si realizza in tre fasi distinte: in primo luogo viene eseguita un'analisi lessicale, durante la quale vengono identificati i vari elementi significativi della stringa (operatori matematici, operandi e parentesi), poi un'analisi sintattico-semantica, durante la quale viene costruita una stringa equivalente a quella data, in notazione polacca postfissa, in cui vengono eliminate le parentesi e, infine, si procede all'esecuzione delle operazioni e alla memorizzazione del risultato. Durante ciascuna delle prime due fasi, il cui procedere è visualizzato sul display rispettivamente da una sequenza di punti e da una sequenza di linee, ogni errore individuato viene segnalato con apposito
messaggio.
Le funzioni di trasferimento sopra indicate vengono rispettivamente memorizzate nei file g1.mat, gc.mat e g0.mat, ciascuna attraverso quattro variabili: due matrici reali Numc e Denc, che riportano le strutture del numeratore e del denominatore, una costante moltiplicativa reale kc, e una stringa strc, i cui valori ammissibili sono "s" e "z", ad indicare se la funzione di trasferimento è relativa ad un sistema a tempo continuo o a tempo discreto. Ad esempio, nel caso della funzione di trasferimento (2) il corrispondente file g1.mat contiene le quattro variabili
![[COMANDO]](formu_9.gif)
nella matrice Denc sono memorizzati per righe i coefficienti dei tre polinomi di secondo grado a denominatore (quando i fattori sono di grado diverso, le righe di minore lunghezza vengono completate con degli zeri). Poichè le operazioni sulle funzioni di trasferimento sono eseguite da progammi dedicati prodg.m per prodotto e quoziente, sumg.m per somma e differenza ed expg.m per la potenza), l'utilizzazione dello stesso interprete per oggetti diversi, rappresentabili anch'essi con insiemi finiti di matrici ad elementi numerici o alfanumerici non presenta alcuna difficoltà: è sufficiente cambiare tali programmi; ad esempio, si potrebbe utilizzare una qualunque delle tre forme standard del MATLAB (num,den, z,p,k e a,b,c,d). Adottando quest'ultima forma, cioè la rappresentazione nello spazio degli stati, si potrebbe estendere l'utilizzazione dell'interprete ai sistemi a molte variabili.
Un'interessante estensione dell'interprete, attualmente in fase di messa a punto, è l'elaborazione di funzioni di trasferimento in forma simbolica, con i coefficienti espressi indifferentemente da numeri o da simboli alfanumerici, come alfa, J, gain, di cui vengono specificati a parte il valore nominale ed eventualmente gli estremi del campo di variazione, al fine di eseguire agevolmente l'analisi della robustezza del sistema di controllo in fase di progetto.
- Le funzioni accessibili da TFI
I programmi interattivi vengono direttamente chiamati dall'ambiente dell'interprete con l'istruzione tipica
![[COMANDO]](formu_10.gif)
in cui il numero delle funzioni di trasferimento specificate come argomenti della funzione generica {\it program\/} può variare da uno a quattro. I più importanti programmi interattivi sono, nella versione attuale (settembre 1995):
- antitrasformazione di Laplace o Z in termini finiti (comando invtr); viene visualizzata l'espressione in termini finiti dell'antitrasformata di Laplace di un rapporto di polinomi in s o dell'antitrasformata Z di un rapporto di polinomi in z;
- graficazione della funzione di risposta armonica (comando fresp); viene tracciato il grafico (o i grafici) della funzione di risposta armonica corrispondente a una data funzione di trasferimento in s o in z, con possibilità di scelta fra sei opzioni: diagramma di Bode dell'ampiezza, diagramma di Bode della fase, diagrammi di Bode dell'ampiezza e della fase in una sola figura, diagrammi di Bode dell'ampiezza e della fase in due figure distinte, diagramma di Nichols, diagramma di Nyquist;
- graficazione della funzione di risposta nel tempo (comando tresp); viene tracciato il grafico della funzione di risposta al gradino o all'impulso corrispondente a una data funzione di trasferimento in s o in z, con possibilità di scelta fra quattro opzioni: risposta al gradino ad anello aperto, risposta al gradino ad anello chiuso, risposta all'impulso ad anello aperto, risposta all'impulso ad anello chiuso;
- determinazione degli intervalli di stabilità (comando routh); data la funzione di trasferimento g(s)=p(s)/q(s) (o, nel caso dei sistemi a tempo discreto, g(z)=p(z)/q(z)), vengono visualizzati gli estremi degli intervalli di stabilità in K del polinomio q(s)+K p(s) (o q(z)+K p(z)), calcolati mediante il criterio di Routh;
- graficazione del luogo delle radici (comando rootl); viene tracciato il luogo delle radici del polinomio q(s)+K p(s) o, nel caso dei sistemi a tempo discreto, q(z)+K p(z));
- determinazione dei margini di stabilità (comando gpmarg); vengono calcolati e visualizzati i margini di ampiezza e di fase relativi a una data funzione di trasferimento in s o in z;
- progetto interattivo di reti correttrici e di regolatori basato sull'imposizione del margine di fase (comandi leadc, lagc, pidc e pidd);
- conversione dal tempo continuo al tempo discreto (comando convert); sono disponibili le seguenti tre opzioni: Z trasformata della corripsondente antitrasformata di Laplace campionata, equivalenza secondo la tenuta di ordine zero, equivalenza secondo la tenuta di ordine uno;
- conversione dal piano z al piano w e viceversa (comando wplane); tale conversione, com'è noto, serve per ricondurre il progetto delle reti correttrici e dei regolatori a tempo discreto a quello a tempo continuo;
- elaborazione di funzioni di trasferimento (comandi factor, defactor e select); viene facilitata la costruzione di funzioni di trasferimento per composizione di fattori, particolarmente utile nel progetto analitico dei regolatori.
- allocazione di poli e zeri per retroazione dall'uscita (comandi regsta e regzp); tali funzioni vengono utilizzate nel progetto analitico dei regolatori;
- definizione di funzioni di trasferimento particolari (comando deftf); sono disponibili le seguenti tre opzioni: filtro di Bessel, filtro di Butterworth ed approssimante di Padè, le prime due utilizzate per il progetto analitico dei regolatori, la terza per l'approssimazione razionale del ritardo finito;
- analisi di robustezza (comando roban): consente la verifica della robustezza, in rapporto alla stabilità, relativa a variazioni di parametri delle funzioni di trasferimento in intervalli preassegnati (contorno delel radici);
- simulazione di sistemi non lineari (comando nlsim): determina la risposta di un sistema in retroazione caratterizzato dalla presenza di una nonlinearità standard nella catena di amplificazione diretta a un segnale di riferimento trasformabile secondo Laplace.
I programmi grafici fresp, tresp e rootl dopo il tracciamento della figura con messa in scala automatica ne consentono la modifica o il completamento attraverso un menu che prevede la scelta delle scale e delle loro graduazioni, il disegno in diverso colore del grafico relativo ad una diversa funzione, la visualizzazione di informazioni generali sui grafici disponibili nella figura (ad esempio, nel caso di tresp, la massima sovraelongazione, i tempi di ritardo, salita ed assestamento, i valori degli errori a regime), la visualizzazione di informazioni su un punto del grafico selezionato col mouse. Tali opzioni rendono particolarmente interessante l'impiego delle sovraelencate funzioni grafiche in luogo di quelle disponibili nel Control Toolbox del MATLAB, in quanto le numerose opzioni disponibili in modo interattivo consentono di effettuare la sintesi per tentativi dei controlli in retroazione in modo molto semplice e veloce.
|