CAPITOLO V
STIMA MULTIPLA CON SATV E FFT
1.1 INTRODUZIONE
1.2 FUNZIONAMENTO DEI METODI SVILUPPATI E PROBLEMI RISCONTRATI
1.1 Introduzione
In questo capitolo verrà spiegato il funzionamento, i risultati ottenuti ed i
problemi riscontrati nella risoluzione del problema della stima multipla dei parametri di
una funzione di trasferimento, utilizzando una tecnica che si basa sull’utilizzo di moduli
che agiscono in parallelo sul processo fisico G(s) con l’utilizzo dell’algoritmo FFT per la
stima delle fasi.
1.2 Funzionamento dei metodi sviluppati
Come conseguenza dei risultati ottenuti dalla soluzione che adotta la tecnica SATV con filtri, in questo capitolo verranno esposti i funzionamenti di alcuni dei metodi che sono stati sviluppati per cercare di eliminare i problemi riscontrati nella soluzione con i filtri. Tutti i metodi spiegati in questo capitolo hanno come caratteristica comune quella di aver eliminato l’utilizzo dei filtri per separare i segnali. Si è deciso infatti di non cercare di separare più i segnali per poterne studiare lo sfasamento introdotto dal sistema G(s) singolarmente ma di cercare di ottenere una stima delle fasi studiando i segnali sovrapposti con l’algoritmo di FFT.
Lo schema di massima del funzionamento di questi metodi è quello di figura V.2.1 in cui si possono notare i blocchi di stima, ognuno dei quali è dedicato a controllare la stima di un parametro della funzione di trasferimento di G(s), il sistema G(s) e il blocco dedicato ad analizzare lo spettro del sistema G(s) con la tecnica FFT.
Figura V.2.1 – Schema generico del funzionamento dei metodi sviluppati in questo capitolo.
Prima di spiegare il funzionamento generale dei metodi scelti, verrà analizzato il blocco analizzatore di spettro utilizzato in questi metodi in quanto la sua struttura è la solita per ogni metodo spiegato in questo capitolo.
Analizzatore di spettro
Il blocco analizzatore di spettro realizzato in simulink è quello rappresentato in figura V.2.2. Tale blocco è utilizzabile solo nel caso di due stime contemporanee ma il suo funzionamento non varia nel caso di più stime (cambia solo il numero di ingressi e uscite).
Figura V.2.2 – Modello dell’analizzatore di spettro.
In generale, il blocco analizzatore di spettro ha minimo tre ingressi:
o si Ingresso attraverso il quale viene memorizzato il segnale che andrà in ingresso al sistema G(s).
o so Ingresso attraverso il quale viene memorizzato il segnale in uscita dal sistema G(s).
o freq In questo ingresso viene indicata all’algoritmo FFT la frequenza
alla quale effettuare la stima di modulo e fase della f.d.t di G(s). Il numero
di questo tipo di ingressi è pari al numero di stime da effettuare.
Tale blocco inoltre ha una uscita denominata stime che restituisce un vettore di lunghezza pari a 3*numero_stime. I valori relativi ad una stima sono rappresentati in un vettore di tre elementi come si può notare in figura V.2.3.
bit di validità Stima del modulo Stima della fase
Figura V.2.3 – Forma dell’uscita del blocco stima spettrale nel caso di una singola stima.
Il blocco analizzatore di spettro ha inoltre una interfaccia attraverso la quale è possibile immettere i parametri necessari al suo funzionamento. Tali parametri sono:
o Lunghezza buffer Attraverso tale parametro è possibile decidere la lunghezza del buffer nel quale verranno memorizzati gli ingressi si e so.
o Nptfft Con questo parametro si decide su quanti punti (campioni) dei segnali memorizzati verrà effettuato il calcolo dell’algoritmo FFT.
o Sample time rappresenta il tempo di campionamento al quale verranno campionati i segnali provenienti dagli ingressi si ed so.
o Pltfft indica il numero di nuovi campioni da avere prima di effettuare il calcolo dell’algoritmo FFT.
In base alla regolazione dei seguenti parametri è possibile decidere il funzionamento del
blocco analizzatore spettrale. Dato che tale blocco dovrà stimare la fase e il modulo dei
segnali immessi nel sistema G(s), per i motovi spiegati nel capitolo dedicato all’algoritmo
FFT, bisogna scegliere un tempo di campionamento e la lunghezza del buffer in modo
tale che entri nel buffer il segnale più lento per un numero di periodi sufficienti.
Primo metodo
In questo metodo il blocco dell’analisi spettrale è stato applicato con un buffer di 2048 elementi, l’algoritmo FFT calcola le stime su N=2048 elementi ogni 2048 nuovi elementi.
Il tempo di campionamento è stato impostato a t
c= 0.05 secondi. Il valore del tempo di campionamento è stato deciso in base al fatto che per quella dimensione del buffer, in frequenza avrei ottenuto una risoluzione pari a
N t
ck
1 2 π
ω = = 0.06 (rad/s). In questo modo avrei potuto separare in frequenza due segnali molto vicini tra loro. Inoltre tale tempo di campionamento è sufficientemente basso da consentire buone stime anche in presenza di rumore sui segnali. Con tali parametri il blocco analizzatore di spettro emette una stima ogni 0.05*2048=102.4 secondi.
Visto che il tempo di stima è abbastanza elevato bisogna cercare un metodo per far convergere il più velocemente possibile la fase del processo P(s) al valore di -180 gradi.
Lo schema generale nel caso di due stime contemporanee si può osservare in figura V.2.4.
In figura V.2.5 si può vedere il blocco che serve a stimare il margine di fase. Tale blocco
ha come uscita Pm che rappresenta il valore del margine di fase stimato in gradi del
sistema fisico; omega rappresenta il valore della frequenza in rad/s in cui viene trovato il
margine di fase; Fase che rappresenta la fase del processo P(s) in gradi (solo quando
questa raggiunge -180 gradi i valori di Pm e omega sono quelli esatti).
Figura V.2.4 - Schema generale del primo metodo nel caso di due stime contemporanee.
Figura V.2.5 – Modello di stima per il margine di fase
Adesso si andrà ad analizzare lo schema interno del blocco SATV che stima il margine di fase. Il funzionamento degli altri blocchi SATV che effettuano altre stime è identico e cambiano solamente le funzioni per il calcolo della fase del processo P(s) date le stime del sistema G(s). In figura V.2.6 è rappresentato lo schema interno del blocco SATV di stima del margine di fase.
Figura V.2.6 – Schema interno del blocco SATV per la stima del Phase margin.
Vediamo adesso di spiegare il funzionamento dello schema di Figura V.2.6.
Il blocco chiamato oscillatore è un blocco che funziona come generatore di segnali sinusoidali a frequenza imposta dal valore dell’ingresso freq. Dall’ingresso mefst entra un vettore di tre elementi proveniente dal blocco stima spettrale.
Nel blocco chiamato Phase margin viene calcolato il valore del margine di fase in gradi
come 180+(180/pi)* ∠ G ( j ω ) .
Nel blocco chiamato calcola pm viene richiamata una funzione (calcolapm.m) che calcola il modulo e fase del processo P(s) in base al criterio del cerchio per il calcolo del margine di fase.
Di seguito viene allegato il codice della funzione calcolapm.m:
function risu=calcolapm(mf)
%serve per calcolare lo sfasamento di modulo e fase di un sistema
%retroazionato con il metodo del cerchio
%per calcolare il phase margin dato solo lo sfasamento in modulo e fase
%del processo vero G(s).(mf=[modulo fase])
%ATTENZIONE: deve entrare la fase in radianti ed esce la fase in radianti
a=mf(1)*exp(i*mf(2));
faseu=phase(a-1)-phase(1+a)-pi/2;
risu=[modu; faseu];
Sarà proprio la fase calcolata da questa funzione che dovrà essere portata al valore di - 180 gradi (agendo sulla variabile omega) affinchè venga rispettata la condizione del criterio del cerchio.
Tale condizione viene controllata dalla macchina a stati finiti Chart [10]. Essa ha tre ingressi:
o fase che rappresenta la fase stimata del processo P(s)
o omega che rappresenta la frequenza alla quale si riferisce la stima di fase o pronto che indica quando il blocco FFT ha reso disponibile nuove stime.
E tre uscite:
o out che abilita la vera stima sullo switch
o porta che seleziona una delle tre porte del multiswitch port
o stima che rappresenta il valore della stima da inviare all’integratore
In Figura V.2.7 viene rappresentato il diagramma a blocchi del funzionamento
dell’automa.
Figura V.2.7 – Schema interno dell’automa.
L’automa contiene otto stati i quali vengono elencati di seguito:
o attesa_pronto all’avvio l’automa si trova in questo stato ed attende che il bit pronto (inviato dal blocco FFT) venga settato ad 1 (pronto=1 significa che i dati sono pronti).
o Prima_stima superato il primo stato significa che i dati sono arrivati, quindi si salva il valore della fase stimata e il relativo valore di frequenza.
o Mantieni_uscita Questo stato pone l’uscit out = 0 (abilita il passaggio della stima effettuata) e mantiene tale stato per un numero di secondi pari a T=delay*periodo del clock.
1Fatti delay cicli passa allo stato successivo.
1 Il valore del periodo del clock è stato posto pari a 0.01 in modo che un delay pari a 10 significa che l’uscita manterrà quel determinato valore per un tempo pari a T=0.01 * 10 = 0.1 secondi. Questo tempo assieme al valore di scelto permette all’integratore di modificare il proprio valore di omega in questo
o Attesa_pronto2 In questo stato viene riportato l’uscita out ad 1 ( quindi adesso nell’ingresso dell’integratore entra il valore -180 gradi e quindi non viene modificato il valore di omega) e si attende che il bit pronto venga riportato ad 1.
o Stime_successive Una volta entrati in questo stato viene salvato il valore della fase stimata e della frequenza relativa. A questo punto viene calcolato il
“coefficiente angolare”
2presunto del diagramma di fase del processo P(s) (viene utilizzata ancora la variabile delay). Prima di passare ad uno degli stati successivi viene calcolato il passo (differenza tra i due valori di omega) e se esso risultasse troppo piccolo (< 0.05) viene escluso lo stato primo_cost
3o Primo_cost Questo stato abilita la prima porta del multiswitch quella con coefficiente minore (si presuppone una forte inclinazione della funzione di fase). Dopo questo stato si ritorna allo stato mantieni_uscita
o Seconda_cost Questo stato abilita la seconda porta del multiswitch quella con coefficiente angolare maggiore (si presuppone una bassa inclinazione della funzione fase). Dopo questo stato si ritorna allo stato mantieni_uscita
o Terza_cost Questo stato abilitala terza porta del multiswitch ossia quella che ha un coefficiente intermedio. Dopo questo stato si ritorna allo stato mantieni_uscita
Si può subito notare che nel caso di risposte in frequenza particolari ( dove solo in un picco si raggiunge il valore di -180 e in tutti gli altri casi la fase è < -180 gradi) questo automa potrebbe non convergere alla soluzione.
2 Il coefficiente angolare della fase è calcolato semplicemente come
1
.
1−
−
−
= −
i i
i i
omega omega
fase ang fase
coeff
il valore del coeff. Ang. per discriminare la scelta di è stato trovato empiricamente provando su diversi sistemi in modo che nei punti in cui l’incremento di omega risultasse troppo lento si applicasse un più grande
3 Questo viene fatto perchè si possono verificare altrimenti dei passi troppo piccoli che manderebbero il valore del coefficiente angolare calcolato a dei valori troppo alti; quindi si verificherebbe un incremento di omega troppo piccolo. In questa maniera invece si puo ottenere un passo < 0.05 solo in prossimità della fase -180 e quindi non ho problemi se utilizzo il corfficiente di più alto.
Problemi della prima realizzazione
Il problema principale di questa realizzazione è il tempo di simulazione che è molto alto (1000 sec. circa). Questo è dovuto principalmente al fatto che avendo più segnali sovrapposti non si può utilizzare un buffer o un tempo di campionamento tali da poter cercare di diminuire i tempi di simulazione sfruttando le caratteristiche della trasformata di Fourier. Il tempo di stima infatti rimane costante e pari a 102.4 secondi per tutto il tempo della simulazione.
Secondo metodo
Visti i problemi riscontrati con il primo metodo, si è ritenuto necessario provare ad effettuare delle modifiche a tale metodo al fine di poter diminuire i tempi di simulazione.
Per diminuire i tempi di simulazione si è pensato di far calcolare l’algoritmo FFT non ogni 2048 nuovi elementi in ingresso ma bensì ogni 4 elementi. Si è visto che alcune stime calcolate in questo modo dopo un tempo fissato pari al riempimento del buffer per 3/4 (al di sotto del quale le stime sono errate) possono convergere al loro valore finale. In questo modo si potrebbe guadagnare dei secondi di simulazione per ogni stima se tutti i valori stimati convergessero prima del riempimento del buffer ( 102.4 secondi per un buffer di 2048 elementi campionati a 0.05 secondi). Questo evento dovrebbe avvenire più frequentemente all’aumentare delle pulsazioni delle sinusoidi in ingresso al sistema G(s).
Per questo metodo viene utilizzato una macchina a stati finiti che oltre a decidere la nuova frequenza da emettere controlla se le stime di fase sono converse ad un valore fisso; solo quando tutte le stime sono converse, la macchina a stati finiti emette le stime definitive ad i vari sottosistemi SATV.
In figura V.2.8 è rappresentato lo schema generale del secondo metodo. Si può subito
notare che è stato aggiunto un nuovo automa in cascata al blocco analizzatore di spettro.
pltfft = 4, sample time = 0.05, nptfft = 2048.
Figura V.2.8 – Schema generale del secondo metodo.
Figura V.2.9 – Schema interno della macchina a stati finiti automa.