COMPENSAZIONE ADATTATIVA DELLE VIBRAZIONI NEGLI HARD DISKweb.tiscali.it/omedas/Cadv_hdd.pdf ·...
Transcript of COMPENSAZIONE ADATTATIVA DELLE VIBRAZIONI NEGLI HARD DISKweb.tiscali.it/omedas/Cadv_hdd.pdf ·...
UNIVERSITÀ DEGLI STUDI DI PADOVA
FACOLTÀ DI INGEGNERIA
CORSO DI LAUREA IN INGEGNERIA INFORMATICA
TESI DI LAUREA
COMPENSAZIONE ADATTATIVA DELLEVIBRAZIONI NEGLI HARD DISK
Relatore: Ch.mo Prof. D.CiscatoLaureando: Alessandro Stocco
Dipartimento di Elettronica e Informatica
Anno Accademico 2001/2002
2
3
A mio papà
Pietro
4
5
INDICE
INTRODUZIONE pag 07
CAPITOLO 1CONTROLLO DELLE TESTINE NEGLI HARD DISK
1.1 HARD DISK DRIVE 19
1.2 VOICE COIL MOTOR 10
1.3 POSITION ERROR SIGNAL 12
1.4 SOPPRESSIONE DELLE VIBRAZIONI 13
CAPITOLO 2ORGANIZZAZIONE DEL SISTEMA SPERIMENTALE
2.1 IL DISCO 17
2.2 HDD SERVO EVALUTATION BOARD 18
2.3 SCHEDA DI CONVERSIONE AD/DA 21
2.4 SUPER 10 EVALUTATION BOARD 24
2.4.1 LA MEMORIA 24
2.4.2 I PORT 26
2.4.3 IL CANALE DI COMUNICAZIONE SERIALE (SSC) 28
2.4.4 ACCESSO ESTERNO AL BUS DATI 28
2.4.5 AMBIENTE DI SVILUPPO SOFTWARE 31
2.5 ACCELEROMETRO ROTAZIONALE MEMS L6671 32
2.5.1 TECNOLOGIA MEMS 32
2.5.2 ARCHITETTURA DEL RAC 34
2.5.3 COMUNICAZIONE TRA RAC E SUPER 10 34
2.5.4 FILTRO INTERNO 37
2.5.5 REGISTRI 38
2.6 SHAKER 42
CAPITOLO 3PRINCIPI TEORICI SUL CONTROLLO ADATTATIVO
3.1 CENNI SUL CONTROLLO ADATTATIVO 45
3.2 PERFORMANCE SURFACE 46
3.3 LMS ED FILTERED-X LMS ALGORITHM 48
3.4 VELOCITA’ DI APPRENDIMENTO 51
6
CAPITOLO 4ELABORAZIONE NUMERICA DEI SEGNALI DI RIFERIMENTO
4.1 IDENTIFICAZIONE DI Gout E REALIZZAZIONE DELL’ALGORITMO 53
4.2 CRITERI DI SOGLIA 56
4.2.1.1 SOGLIA SULL’INTEGRALE DELLE CRESTE 57
4.2.1.2 SOGLIA SULLA STIMA DELL’ERRORE QUADRATICO MEDIO 58
4.2.2 SOGLIA SULL’ACCELERAZIONE ANGOLARE 59
4.3 STRUTTURE DATI 60
4.4 ESTENSIONE DEL PES 63
4.5 SEGNALE DI ACCELERAZIONE ANGOLARE 65
CAPITOLO 5RISULTATI SPERIMENTALI
5.1 FEED-FORWARD STATICO CON GUADAGNO ADATTATIVO 69
5.2 FEED-FORWARD DINAMICO CON FILTRO ADATTATIVO 76
5.3 CONCLUSIONI E SVILUPPI FUTURI 89
APPENDICE ACONFIGURAZIONE DEI REGISTRI SUPER 10 93
APPENDICE BLISTATO DEL PROGRAMMA 105
BIBLIOGRAFIA 127
RINGRAZIAMENTI
7
INTRODUZIONE
L’argomento trattato da questa tesi, svolta presso il laboratorio di Elettronica
Industriale dell’università di Padova, si colloca all’interno di un più ampio progetto atto
al miglioramento delle prestazioni degli hard disk drive (HDD) commerciali.
In particolare in questo lavoro si vuole migliorare le prestazioni di inseguimento di traccia
di un dispositivo HDD sollecitato da vibrazioni.
Un disco sottoposto a vibrazioni presenta difficoltà nel mantenere la testina nel
centro traccia. Se gli scostamenti della testina sono tali da superare il 5% dell’ampiezza
della traccia la correttezza delle operazioni di scrittura e lettura non sono più assicurate.
In queste condizioni le operazioni sul disco non vengono eseguite finché il controllo della
testina non riesce ad riallineare la testina con il centro traccia. Questo è causa di
rallentamenti ed un complessivo calo di prestazioni da parte del dispositivo di
memorizzazione.
Mantenere piccolo lo scostamento attraverso un controllo più preciso dà inoltre la
possibilità di aumentare la densità con cui si memorizzano le tracce nei dischi,
conseguentemente si può aumentare la capacità totale del disco a parità di volume.
L’interesse a questo tipi di problematiche è sempre più crescente dato il diffondersi
di applicazioni mobili di sistemi basati su processore elettronico ( si pensi ad esempio ai
notebook, cellulari, computer di bordo di autoveicoli ecc.). Le vibrazioni a cui è sottoposto
il disco non sono solo dovute a fonti esterne. Disturbi nell’inseguimento di traccia da
parte della testina possono essere dovuti a cause interne al supporto del disco, tra le quali
si citano le vibrazione autoindotte dovute alla rotazione dei dischi e allo spostamento del
braccetto meccanico sui dischi.
Si stanno diffondendo in commercio dei dispositivi (chip) in grado di misurare le
accelerazioni angolari e/o lineari. Questi sensori costruiti in tecnologia MEMS possono
essere usati con profitto nel problema della soppressione delle vibrazioni.
8
Conseguentemente lo studio per il perfezionamento del sistema di compensazione
delle vibrazioni si è rivolto a tecniche feed-forward possibili data la misura offerta da
questi tipi di accelerometri.
Un hard disk drive è un prodotto industriale di larga produzione, i suoi parametri
tipici (centro massa braccetto, resistenza degli avvolgimenti VCM e così via) possono
variare significativamente da disco a disco all’interno di dichiarate fasce di tolleranze.
Tecniche di filtraggio che usano parametri fissi richiederebbero una sintonizzazione per
ogni disco prodotto per ottenere il miglior risultato possibile, questo comporterebbe un
eccessivo dispendio di risorse.
Sono state proposte di recente tecniche che usano algoritmi adattativi per
sintonizzare i parametri in modo da ottenere il miglior controllo possibile per ogni
specifico disco. Il lavoro che è stato sviluppato è appunto l’implementazione e la
valutazione di una di queste tecniche.
Il lavoro è stato sviluppato presso il Dipartimento di Elettronica ed Informatica
(DEI) dell’università di Padova, sotto la guida dei professori Ch.mo Prof. Doriano
Ciscato e del Prof. Dott. Ing. Roberto Oboe, e con i preziosi consigli del Dott. Ing.
Federico Marcassa e del Dott.Ing. Riccardo Antonello.
CAPITOLO 1CONTROLLO DELLE TESTINE NEGLI HARD DISK
1.1 HARD DISK DRIVE
L’ hard disk drive è attualmente uno dei più importanti dispositivi di
memorizzazione in commercio. Il dispositivo è costituito da una serie di dischi
coassiali liberi di ruotare attorno al loro asse. Ogni faccia dei dischi è ricoperta da
materiale magnetico ad alta coercitività.Modificando la magnetizzazione di tali
superfici è possibile catturare e mantenere delle informazioni.
Le operazioni di lettura e scrittura avvengono tramite lo spostamento di una
serie di braccetti meccanici solidali tra loro che presentano alla loro estremità delle
testine elettromagnetiche.
Figura 1.1 – Hard Disk Drive
CAPITOLO 1
10
Le testine, sfruttando la formazione di un cuscinetto d’ aria, planano sui dischi
in movimento a distanze ridottissime dell’ ordine dei 50 nm.
La memorizzazione dei dati avviene su traiettorie circolari concentriche dette
tracce. Le tracce a loro volta sono divise in porzioni chiamati settori.
Per leggere (o scrivere) su di una particolare traccia è necessario spostare la testina
da una zona generica ad una posizione particolare sopra il disco, ed in particolare
sulla posizione dove la traccia di interesse sta ruotando per effetto del motore
mandrino.
Il servoposizionamento della testina è uno dei compiti più importanti per il
dispositivo hard disk. Si possono individuare due distinte fasi nel movimento delle
testine ossia la:
• FASE DI SEEK : la testina deve raggiungere una prefissata traccia, in
questa fase è determinante avere una elevata velocità di spostamento.
• FASE DI TRACK FOLLOWING : la testina è posizionata sulla traccia di
interesse e non deve allontanarsi dal centro traccia, in questa fase quello
che più interessa è la precisione dell’ inseguimento.
Nel proseguimento di questo lavoro si privilegerà lo studio del sistema hard
disk nella seconda di queste fasi. Si cercherà in particolare di mantenere la testina il
più vicino possibile al centro traccia sebbene il disco venga disturbato da agenti
esterni e interni.
1.2 VOICE COIL MOTOR
Il movimento delle testine è dovuto ad un motore chiamato VOICE COIL
MOTOR (VCM). Il VCM può essere schematizzato con il consueto schema a blocchi
per un motore elettrico in corrente comandato sulle armature (figura 2.1).
I disturbi che entrano nel motore sono disturbi di coppia e agiscono all’ interno
del modello. Il compito del controllo del posizionamento delle testine è di calcolare il
comando u(t) a dispetto dei disturbi agenti.
CONTROLLO DELLE TESTINE NEGLI HARD DISK
11
Figura 1.2 – Schema a blocchi VCM
I simboli della figura si riferiscono a:
• v : tensione applicata agli avvolgimenti del VCM
• e : forza contro elettromotrice
• Ra , La : resistenza e induttanza degli avvolgimenti
• B , J : coefficiente di attrito e momento di inerzia
• Kφ : costante di coppia
• τ : coppia motrice
• τd : coppia di disturbo
• ω , θ :velocità e posizione angolare VCM
L’ ingresso del sistema è costituito da C.I. (controllore di corrente), S.P. (stadio
di potenza) e dalla resistenza di sensing Rs. Data l’ ampia banda di controllo di questo
loop rispetto alle frequenze di interesse(>20kHz), il sistema a catena chiusa che
controlla la corrente è assimilabile ad un guadagno costante (transconduttanza), cioè
I(t) = Ki u(t). La coppia di disturbo τd viene introdotta per tenere in considerazione
effetti quali l’ attrito aerodinamico dovuto alle correnti d’ aria generate dalla rotazione
dei dischi, la forza elastica dei flat cable dedicato alla trasmissione dei dati ed altri
ancora la cui modellizzazione è tuttora oggetto di studio. Il coefficiente di attrito
viscoso B risulta trascurabile. In via semplificativa si può considerare il modello del
VCM come un doppio integratore.
K
u(t) C.I.S.P.
Rs
F(s) s
1 1 Ra + s La
B + s J
φ
v +
- -
i
+
ω
θ
+
τ
τ
φ
K
+
e
d
CAPITOLO 1
12
1.3 POSITION ERROR SIGNAL
Al fine di attuare un controllo a catena chiusa è essenziale disporre di un
segnale proporzionale allo scostamento dal centro traccia della testina. Il segnale in
questione è il comunemente chiamato Position Error Signal (PES).
I costruttori di hardware adottano abitualmente diverse tecniche per estrarre questo
segnale dal processo hard disk.
Il metodo dedicated servo riserva la superficie di un disco di sola lettura alla
memorizzazione di segnali di sincronismo dai quali è possibile estrarre il PES e
l’ indice di traccia. Più comune per dischi di piccole dimensioni è invece il metodo
sector servo (oppure embeded servo), metodo del dispositivo in uso in questo lavoro,
il quale riserva per ogni traccia un numero costante di settori contenenti i segnali di
sincronismo per la generazione del PES.
Figura 1.3 – Disposizione dati su di un disco
La distanza angolare tra servo settori, ossia i settori riservati alla generazione
del PES, è costante in ogni traccia in questo modo il tempo che trascorre tra la
lettura di due servo settori consecutivi è sempre costante (figura 1.3).
E’ messo a disposizione inoltre un segnale (nel caso in esame chiamato
SGATE) che indica quando la testina si trova in corrispondenza di un servo settore.
Questo segnale è importante perché può essere usato come segnale di
sincronismo per il controllo digitale dal momento che il tempo, che intercorre tra due
servosettori consecutivi, è pari al periodo di campionamento.
All’ interno dei servo settori sono memorizzati dei pattern ossia sequenze di
dati prestabiliti ( burst ) i quali consentono la ricostruzione della distanza della testina
dal centro traccia e il numero della traccia stesso. Il disco usato in questo lavoro
Settore Dati
Traccie
Servo Settore
CONTROLLO DELLE TESTINE NEGLI HARD DISK
13
possiede quattro tipi diversi di burst : A , B , C , D. Il calcolo del PES è condotto a
partire dai valori delle differenze A-B , B-A , C-D e D-C. Per maggiori dettagli si
può fare riferimento a [3].
1.4 SOPPRESSIONE DELLE VIBRAZIONI
L’ hard disk quindi è progettato per essere controllato in modo digitale da un
microcontrollore il quale è inserito a bordo della scheda elettronica di supporto del
disco. Uno schema di principio del controllo è riportato in figura 1.4.
Figura 1.4 – Schema di principio controllo hard disk.
Nel controllo ad anello ad anello chiuso C sta a rappresentare la serie del
controllore nel discreto seguito da un holder (DAC) e P rappresenta il processo hard-
disk.
Nel grafico sono stati messi in evidenza i disturbi che possono entrare nel
processo. Nel proseguo si farà però riferimento ad uno schema nel quale i disturbi
sono riportati all’ ingresso del disco come mostrato in figura 1.5.
Figura 1.5 – Schema di controllo con disturbo riportato in ingresso
C P
D i s t u r b i
-
+
C e n t r o T r a c c i a
C P
d
-
+ C e n t r o T r a c c i a
G r e f
+ +
θθθθ ..
u
CAPITOLO 1
14
In particolare nella figura 1.5 si è rappresentato il blocco Gref che rappresenta
la serie tra il blocco risultante dalla manipolazione dello schema a blocchi di figura
1.4 ed il blocco che lega l’ accelerazione angolare con il disturbo generico. Il segnale
di disturbo che si sovrappone al comando u(t) prodotto dal controllo è stato chiamato
d(t) e rappresenta il disturbo che si vuole sopprimere.
Nello schema è stato esplicitata..θ perché è possibile mediante accelerometri
rotazionali (RAC rotational accelerometer) produrre una misura dell’ accelerazione
angolare alla quale il disco è soggetto. Questa misura è un dato molto importante per
individuare l’ entità delle vibrazioni a cui è sottoposto un disco, l’ accelerazione
angolare è infatti una delle principali cause del deterioramento delle prestazioni
dell’ inseguimento traccia negli attuali dischi.
Disponendo quindi della misura dell’ accelerazione è attuabile uno schema a
controllo ad azione diretta ( feed-forward ). Si tenta cioè filtrare opportunamente il
dato di accelerazione in modo da produrre una stima del segnale di disturbo
denominato d(t).
Figura 1.6 – Compensazione feedforward
Il sensore RAC, come si vedrà nel seguito, ha una larghezza di banda limitata
ed una propria dinamica, nello schema di figura 1.6 il blocco RAC vuole appunto
tenere in considerazione questo aspetto.
C P
d
- +
C e n t r o T r a c c i a
G r e f
+ +
θθθθ ..
u
G f f
θθθθ ..
d
-
^
^
R A C
P E S
CONTROLLO DELLE TESTINE NEGLI HARD DISK
15
Il segnale di riferimento nello schema di controllo di figura 1.6 indicato come
‘centro traccia’ è pari a zero.
Nel proseguimento del lavoro sarà utile considerare invece dello schema di
figura 1.6 lo schema di figura 1.7 a) , nel quale il blocco Gout sta ad indicare la f.d.t.
che ha come ingresso il segnale d(t) ed uscita il segnale PES (il quale corrisponde
anche al segnale di uscita del processo hard disk) vedi figura 1.7 b).
Figura 1.7 – a) Schema di controllo ridotto, b) f.d.t. Gout
La progettazione del filtro Gff è stato argomento di due precedenti tesi ([1]-
[2]). Il risultato prodotto in questi lavori è risultato valido per il disco sottoposto ai
test su di una banda inferiore rispetto alla banda complessiva del sensore. Si cerca
quindi di individuare dei metodi diversi per la sintesi del filtro di compensazione con
il quale ridurre il più possibile l’ effetto delle vibrazioni sul segnale di errore (PES) e
aumentare la banda su cui la compensazione agisce. Oltre a questo si vuole rendere il
più generale possibile il metodo di compensazione in modo da garantire una efficace
compensazione su ogni diverso dispositivo. Nelle produzioni di beni di largo
consumo su larga scala, come nel caso degli hard-disk, sono comuni sostanziali
differenze nei parametri tra le singole unità prodotte. I metodi di sintesi del filtro di
feed-forward basati su modelli matematici a parametri fissi o da identificazioni su di
un singolo disco, possono non essere tali da garantire la miglior compensazione per
ogni singolo dispositivo prodotto. Inoltre il segnale di uscita dell’ accelerometro può
risultare significativamente diverso rispetto a quello di un altro accelerometro e che
R A C
d
G r e f θθθθ ..
d ^
^ G f f
G o u t +
-
P E S
θθθθ ..
Gout =P
1+CP
PESd
a)
b)
CAPITOLO 1
16
altre variazioni di parametri nei dischi possono attribuirsi alle variazioni di
temperatura e all’ invecchiamento dell’ apparato.
Da queste osservazioni è nata l’ idea di utilizzare tecniche di controllo
adattative per raggiungere una più efficace compensazione e allo stesso tempo
realizzare una procedura di autosintonizzazione dei parametri.
Figura 1.8 – Compensazione feedforward adattativa
Nello schema di principio riportato in figura 1.8 viene messo in evidenza che il
filtro Gff subisce una regolazione dei propri parametri attraverso un algoritmo di
aggiornamento dei parametri (AAP).
Si noti che con l’ uso di un controllo adattativo si passa da un sistema di
controllo tempo-invariante ad uno tempo variante.
R A C
d
G r e f θθθθ ..
d ^
^ G f f
G o u t +
-
P E S
θθθθ ..
A A P
CAPITOLO 2ORGANIZZAZIONE DEL SISTEMA SPERIMENTALE
2.1 IL DISCO
L’ hard disk drive usato nella sperimentazione è un disco commerciale con una
capacità di 4.3 GByte e una densità di 13 kTPI (kilo Tracks Per Inch). La velocità di
rotazione del disco è di 5400 giri/min dalla quale si ricava facilmente che la
frequenza di rotazione è di 90 Hz. La frequenza di campionamento del disco è di
Tpes ≈ 116 µsec e la corrispondente frequenza di Nyquist è FNyquist = 1/(2 Tpes) =
=_4.31 KHz.
Dalla frequenza di rotazione e dal periodo di campionamento del PES si può
risalire al numero di servosettori per ogni traccia ossia :
Il disco dopo circa 96 campioni del segnale PES ha compiuto un giro su se
stesso.
969010116
11#
6≈
⋅⋅≈
⋅= −FrTpes
riservosetto )1.2(
CAPITOLO 2
18
2.2 HDD SERVO EVALUTATION BOARD
Attraverso la scheda denominata HDD SERVO EVALUTATION BOARD
ALTERA è possibile commutare dal controllo interno (programmato sul DSP
montato sull’ elettronica di bordo del disco) al controllo residente su un DSP esterno
(Super 10).
Figura 2.1 – Schema di principio dell’innesto ALTERA sull’ HDD
Questo passaggio è reso possibile dall’ innesto della scheda ALTERA sui
segnali che mettono in comunicazione due particolari chip dell’ HDD. I chip in
questione sono il ‘Bellini’ , adibito alla trasmissione del canale, ed il chip ‘Atlantis’ ,
preposto al controllo del VCM. Le linee di segnale vengono tagliate fisicamente
quindi fatte passare sull’ ALTERA come mostrato in figura 2.1 (per maggiori dettagli
sulle linee in questione si rimanda a [1]). L’ interruttore è realizzato con un deviatore
meccanico con circuito antirimbalzo e da due interruttori elettronici integrati nel chip
MAX 313 (U22 nella scheda). All’ integrato sono connessi due jumper (J9) per rende
trasparente l’ interruttore all’ HDD, qualora fosse necessario, così da rendere attivo il
controllo elaborato dal canale.
Il componente principale di questa scheda è l’ FGPA (Field Programmable
Gate Array) ALTERA il cui compito è quello di convertire i segnali provenienti dal
disco in un formato compatibile con il DSP (Super 10) che sarà utilizzato per la
Bellini
(Canale)
Atlantis (Controllo
VCM)
HDD
Super 10 (Controllo esterno)
ALTERA interruttore
o
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
19
programmazione del controllo esterno. I dati che fluiscono serialmente dal disco all’
ALTERA vengono decodificati e ripartiti in altre linee di segnale uscenti dalla
scheda. In particolare si citano, oltre ai segnali di trasmissione sul bus dati, i segnali
di interruzione INT_GRAY, il quale segnala la presenza sul bus della servobanda
(16 bit) e INT_ABCD. Quest’ ultimo segnale di interruzione occorre dopo un
microsecondo dal INT_GRAY ed è caratterizzato da sei impulsi, distanziati tra loro
di un microsecondo, i quali segnalano la presenza sul bus dei valori dei burst
(disposti sugli 11 bit meno significativi) per il calcolo del PES. All’ accensione della
scheda è necessaria la programmazione dell’ FPGA attraverso l’ uso di un apposito
programma residente in una memoria ROM esterna o su di un PC. In quest’ ultimo
caso la trasmissione del programma non è diretta, infatti è necessario l’ uso di un cavo
di interfacciamento detto Altera Bit Blaster il quale si connette con il connettore 9.
Una rapida rassegna degli altri connettori interessati nella realizzazione del sistema
sperimentale sono qui sotto rappresentati.
Figura 2.2 – HDD SERVO EVALUATION BOARD ‘ALTERA’ e suoi
connettori
ALTERA
BNC2
BNC1
HDD SERVOEVAL. BOARD
U22
U7
U8 U9
J9
MAX313
DEMUX 3:8
S2 CONN5
CONN1
CONN9
CONN7
CONN8
Buffer8LSB
Buffer8MSB
CONN2J11J10
1
2 3 4 5 6 7
8 9
10
11 12
14
13
15 16
SP
DACREF
VCMSENSE
BSP
CONN8
SUMIN
1
2 3 4 5 6 7 8 9
10
11 12
14 13
15 16
26 27
18 17
20 19
21 22
23 24 25
28 29
31 30
32
GND GND
Gclock
Gstrobe Gdato
ASData BSData ASCloc BSCloc ASEn BSEn GND
SG
CONN7
1
2 3
4 5 6 7 8 9
10 11
12
14 13
15 16
26 27
18 17
20 19
21
22 23
24 25
28 29
31 30
32
A3 A4
D15
D14
D13
D12 D11
D10 D9 D8 D7
D1 D0
CONN5
A5 D6 D5
D4 D3 D2
TOHDD
TODSP
SUPER 10
TOHDD
3
TODSP
SUPER 10
FROMAD/DA(DAC1)
CAPITOLO 2
20
Nella figura 2.2 si possono notare altri importanti apparati della scheda. Il
connettore BCN2 serve per l’ iniezione e condizionamento del comando analogico al
VCM del disco. Anche la boccola BNC1 è collegata direttamente al punto di
iniezione se preventivamente si connettono tra loro SUMIN e SP1.
Sul connettore quadrato presente al centro della scheda ( vedi figure 2.2 e 2.3 )
è possibile estrarre segnali di controllo tra cui i già citati INT_GRAY ed INT_ABCD
ed i segnali CS4 (Chip Select 4) connesso alla Super 10, RSTOUT di reset output
delle periferiche connesse alla Super 10 durante la fase di inizializzazione e il RSTIN
di reset input per disabilitare il chip ST10 sull’ HDD evalutation board.
RSTOUT
CS4
INT_ABCD
INT_GRAY
RSTIN (GND)
Figura 2.3 – Connettore quadrato Altera
Sull’ ALTERA sono presenti due buffer (nella scheda contrassegnati come U8 e
U9) che imprimono sul bus dati i valori elaborati dalla scheda circa il valore della
servobanda e della composizione dei segnali generati dal passaggio della testina sui
burst. Entrambi i buffer sono abilitati dalla linea Y0 di un decoder 3:8 interno alla
scheda ( si veda figura 2.4 ) riferito come chip U7 .
La linea Y0 è attivata quando il decoder è abilitato e gli ingressi hanno il valore
A=0, B=0 e C=0. Dato che la scheda ALTERA è “vista” come periferica della Super
10 si è convenuto di usare il segnale di Chip Select 4 (CS4) del bus di controllo per
abilitare il decoder e di associare agli ingressi A,B e C i segnali del bus indirizzi
A3,A4 e A5.
1 Disporre di due connettori per l’ iniezione permette di eseguire identificazioni, si veda il cap 4.
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
21
Figura 2.4 – Connessione buffer ALTERA – bus
Al segnale di chip select 4 è stato associato via software una zona della
memoria esterna della Super 10 corrispondente agli indirizzi dal 140000h al
14FFFFh. Se dal programma di controllo si punta a questa zona di memoria si attiva
il chip select 4 e di conseguenza si abilitano il decoder se inoltre si punta ad una
locazione di memoria con indirizzo tale che i bit di indirizzo siano A3=A4=A5=0
allora il decoder attiva i buffer e sul bus dati verranno posti i valori processati
dall’ ALTERA.
2.3 SCHEDA DI CONVERSIONE AD/DA
Per l’ elaborazione di segnali analogici di comando e per l’ estrazione di altri
segnali per l’ analisi del sistema complessivo è stato necessario disporre di una
scheda di conversione D/A e A/D. Questa scheda è collegata al bus dati ed è abilitata
Figura 2.5 – Connessioni di ingresso e uscita della scheda AD/DA
bus dati
bus indirizzi
bus contollo
dall’
ALT
ER
A
dall’
ALT
ER
A
A3 A4 A5
D0
D7
D8
D15
U7 U8
U9
Y0
Y7
A B C
/CS4
HC244
HC138 HC244
BUS DATI + LINEA CS4 + LINEE A3,A4 e A5 proveniente da SUPER 10
ALL’ALTERA COMANDO VCM
DA
C 1
D
AC
3
DA
C 2
AD
C 2
A
DC
1
AI STRUMENTI DI MISURA
AI STRUMENTI DI MISURA
SCHEDA AD/DA
CAPITOLO 2
22
direttamente dal DSP Super 10. La scheda è composta da due dispositivi DAC
AD7538 a 14 bit e da due dispositivi ADC ADS7804 a 12 bit. Gli integrati sono
comandati da un decoder 3:8 il quale a sua volta è abilitato dalla linea CS4 in perfetta
analogia con i buffer dell’ ALTERA. Nel lavoro svolto non sono stati usati gli ADC,
inseriti per un lavoro precedente, mentre è stato necessario aggiungere alla scheda un
terzo DAC (DAC3) utile per la fase di identificazione.
Figura 2.6 – Decoder scheda AD/DA
Anche questa scheda è quindi una periferica della Super 10 e tutti i dispositivi
sono mappati nella stessa porzione di memoria del decoder dell’ ALTERA (140000h)
ovviamente ogni diverso dispositivo periferico ha un indirizzo diverso da un altro si
sfruttano pertanto le diverse configurazione dei bit A3,A4 e A5. Tutti i dispositivi
che non vengono attivati dall’ indirizzamento devono essere tali da porre le proprie
uscite sul bus in alta impedenza in modo da non creare eventuali conflitti.
Nella tabella 2.1 sono riassunti gli indirizzi associati ai diversi integrati.
A15 … A6 A5 A4 A3 A2 A1 A0 HEX Disp. selezionato
0100 0000 00 0 0 0 X X X 140000÷140007 BUFFER ALTERA
0100 0000 00 0 0 1 X X X 140008÷14000F DAC 3
0100 0000 00 1 0 0 X X X 140020÷140027 ADC 1
0100 0000 00 1 0 1 X X X 140028÷14002F ADC 2
0100 0000 00 1 1 0 X X X 140030÷140027 DAC 1
0100 0000 00 1 1 1 X X X 140038÷14002F DAC 2
Tabella 2.1 - Indirizzi dispositivi su scheda A/D D/A
bus indirizzi
bus contollo
A3 A4 A5
U2
Y0
Y7
A B C
/CS4
74LS138
/EN1
ADC1 ADC2 DAC1 DAC2
DAC3
Y5 Y4 Y3 Y2 Y1
Y6
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
23
Si riportano di seguito le caratteristiche principali dell’integrato DAC AD7538.
Numero di bit 14 con offsetTempo di assestamento 1,5 usec (MAX)
Alimentazione Singola +12V (tollera sino a +15V)Schema R-2R
Tabella 2.2 – Caratteristiche DAC
La quantizzazione operata dal DAC è riassunta nella tabella 2.3. Il
collegamento delle uscite del DAC con il bus è stato realizzato connettendo le 14
uscite dell’ AD7538 con le linee meno significative del bus dati (D0 – D13). Nella
programmazione si dovrà percui tener presente questo aspetto con aggiunta di
opportune operazioni di shift per allineare il dato con gli ingressi del DAC.
Binary Input
MSB LSB
Analog Outout (Vout) Analog Outout (Vout)
Vref = 5V
11 1111 1111 1111 +Vref(8191/8192) 4,9994 V
10 0000 0000 0001 +Vref (1/8192) 610 uV
10 0000 0000 0000 0 V 0
01 1111 1111 1111 -Vref (1/8192) - 610 uV
00 0000 0000 0000 -Vref (8191/8192) - 4,9994 V
.Tab 2.3 – Conversione DAC
Nel dettaglio sui collegamenti di uscita dei dispositivi si segnala la connessione
del DAC1 con il BNC2 dell’ ALTERA. Il DAC1 pone in forma analogica il comando
del VCM precedentemente elaborato dal microcontrollore. Le uscite dei DAC2 e
DAC3 sono stati, di volta in volta assegnate ai vari strumenti di misura ossia l’
oscilloscopio e l’ analizzatore di spettro DSA 35665A.
CAPITOLO 2
24
2.4 SUPER 10 EVALUTATION BOARD
Il SUPER 10 della ST Microelectronics è un Digital Signal Processor (DSP)
progettato appositamente per le applicazioni riguardanti gli hard disk e tuttora viene
montato su alcuni dischi in commercio. Il controllo digitale diretto esterno,
sviluppato in un precedenza nel laboratorio (cfr [3]) è eseguito da questo processore.
Il clock della CPU è impostabile sino a 140 MHz mentre la gestione delle periferiche
può arrivare sino ai 70 MHz.
2.4.1 LA MEMORIA
La dimensione della memoria della scheda è di 16 MByte. La sua struttura
viene suddivisa in 256 segmenti (dal seg. 0 al seg. 255) da 64 KByte ed ogni
segmento è a sua volta diviso in 4 pagine da 16 KByte. Non tutta la memoria è
disponibile all’ utente difatti sono presenti segmenti e pagine riservati. Ad esempio il
segmento 191 è riservato per operazioni di start-up.
Merita una citazione a parte la DPRAM (‘Dual Ported Ram’ ) contenuta in un
segmento della memoria, è sede degli SFR (‘Special Function Register’ ) registri
speciali per il controllo di tutte le attività del processore e degli GPR (‘General
Purpose Register) cioè dai 16 registri (R0-R15) utilizzati per le varie elaborazioni.
Quasi tutte le istruzioni consentite dal microcontrollore usano come operatore uno di
questi registri. Un banco di GPR può essere sostituito con un altro gruppo di GPR
sempre residente in memoria DPRAM. Questa operazione è detta context switch ed
è eseguita dalla CPU semplicemente assegnando ad il puntatore, che individua i
registri GPR correnti, un nuovo valore relativo ad una nuova porzione di memoria
non sovrapposta alla precedente, nella quale saranno contenuti i nuovi valori di R0-
R15 . Tutto questo dopo aver memorizzato nello stack interno (operazione di push)
l’ indirizzo dei GPR appena sostituiti. Per ritornare al contesto originario sarà quindi
sufficiente eseguire un pop dello stack interno e per caricare il registro che punta
all’ insieme dei registri di contesto. Tale puntatore è chiamato CP (sta per Context
Pointer).
Nella figura 2.7 viene schematizzata la struttura della memoria.
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
25
FF FFFF
Segment255
FF 0000
FE FFFF
C0 0000
BF FFFF
Segment 191Reserved
BF 0000
40 FFFF
Segment 64
40 0000
20 FFFF
Segment 32
20 0000
02 FFFF
Segment 2
02 0000
01 FFFF
Segment 1
01 000000 FFFF
Segment 0
00 0000
1.9Mbyte
64Kbyte
Ext.memory
2
Mbyte Ext
. I/
O
7.9
Mbyte
Ext.
M
emory
64Kbyte Sta
rtup
M
emory
4Mbyte
InternalProgram
Memory
00 FFFFRAM /SFR 00 F000
00 EFFFInternal I-O
00 E00000 DFFF
Data
Page
3
00 C000
Data
Page
2
InternalData
SRAM
24 Kbyte
08 0000
Data
Page
1
04 0000
Data
Page
0
ExternalMemory
00 0000
FF FFFF
Segment255
FF 0000
FE FFFF
C0 0000
BF FFFF
Segment 191Reserved
BF 0000
40 FFFF
Segment 64
40 0000
20 FFFF
Segment 32
20 0000
02 FFFF
Segment 2
02 0000
01 FFFF
Segment 1
01 000000 FFFF
Segment 0
00 0000
1.9Mbyte
64Kbyte
Ext.memory
2
Mbyte Ext
. I/
O
7.9
Mbyte
Ext.
M
emory
64Kbyte Sta
rtup
M
emory
4Mbyte
InternalProgram
Memory
00 FFFFRAM /SFR 00 F000
00 EFFFInternal I-O
00 E00000 DFFF
Data
Page
3
00 C000
Data
Page
2
InternalData
SRAM
24 Kbyte
08 0000
Data
Page
1
04 0000
Data
Page
0
ExternalMemory
00 0000
Figura 2.7 – Organizzazione della memoria
Il bus indirizzi della board è a 16 bit, i quali sono insufficienti per indirizzare
16Mbyte totali di memoria in modo diretto, infatti ne servirebbero 24. Vengono a tal
proposito usati i DPP (‘Data Page Pointer’ ), ossia dei registri che hanno il compito di
completare un indirizzo di 16 bit per crearne uno a 24. I DPP disponibili sono quattro
e ogni qual volta una variabile viene dichiarata è necessario specificare il DPP
assegnato. Il DPP contiene i 10 bit più significativi dell’ indirizzo, individua quindi
una particolare pagina di memoria (ne sono presenti 256 * 4 = 1024 cioè 210). Il resto
dell’ indirizzo viene specificato dall’ utente (o assegnato dalla CPU) in 14 bit meno
significativi di una parola mentre nei rimanenti 2 bit della parola viene ripetuto per
convenzione il valore (da 0 a 3) del DPP in uso. La figura 2.8 mostra graficamente la
operazione di indirizzamento.
CAPITOLO 2
26
00
00
00
00
31 16 15 14 13
15 14 13 0
0
Figura 2.8 – Composizione di un indirizzo con i Data Page Pointer
Ad esempio se l’ utente richiede l’ indirizzo B190h, verrà usato il DPP2 (i due
bit più significativi di B sono 10 bin = 2 dec) quindi il contenuto dei 10 bit più
significativi del DPP2 sono la parte più significativa dell’ indirizzo totale. Se DPP2
fosse caricato con 000Ah si otterrebbe come indirizzo completo 2B190h.
2.4.2 I PORT
La scheda del DSP Super 10 contiene dei port programmabili ossia delle serie
di pin con i quali si può comunicare con l’ esterno e le cui funzioni possono essere
impostate via software.
POR
T 2
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
P2.8
P2.9
P2.10
P2.11
P2.12
P2.13
P2.14
P2.15
PWM Channel 0
PWM Channel 1
I/O
I/O
I/O
I/O
I/O
I/O
External Interrupt 0
External Interrupt 1
External Interrupt 2
External Interrupt 3
External Interrupt 4
External Interrupt 5
External Interrupt 6
External Interrupt 7
POR
T 2
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
P2.8
P2.9
P2.10
P2.11
P2.12
P2.13
P2.14
P2.15
PWM Channel 0
PWM Channel 1
I/O
I/O
I/O
I/O
I/O
I/O
External Interrupt 0
External Interrupt 1
External Interrupt 2
External Interrupt 3
External Interrupt 4
External Interrupt 5
External Interrupt 6
External Interrupt 7
POR
T 3
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
P3.8
P3.9
P3.10
P3.11
P3.12
P3.13
P3.14
P3.15
I/O
SSC MRST
SSC MTSR
I/O
SSC Clock
I/O
I/O
POR
T 3
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
P3.8
P3.9
P3.10
P3.11
P3.12
P3.13
P3.14
P3.15
I/O
SSC MRST
SSC MTSR
I/O
SSC Clock
I/O
I/O
Figura 2.9 – Alternate Function dei port P2 e P3
DPP0DPP1DPP2DPP3
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
27
In particolare sono disponibili all’ utente i port P2 e P3 da 16 pin ciascuno più il P5
con 5 pin disponibili. Ogni bit dei port può essere impostato come canale di
comunicazione di input oppure output . Alla maggior parte dei pin dei port è inoltre
associata una Alternate Function, una funzione particolare per la quale il port può
lavorare. Nei test condotti sono stati usati i port P2 e P3 mentre il P5 sede del
General Purpose Timer non è stato usato. Nella figura 2.9 si illustrano le Alternate
Function dei port in uso.
Nel sistema in questione sono state usate le Alternate Function dei pin P2.8 ,
P2.9 cioè come pin di richiesta di interruzione esterna. Nel dettaglio P2.8 è connessa
alla linea INT_GRAY dell’ Altera ed il P2.9 è connesso con la linea INT_ABCD. I
port P3.13, P3.8 e P3.9 sono anch’ essi usati nella modalità Alternate Function e sono
dedicati alla comunicazione seriale oggetto di approfondimento nel successivo
paragrafo. Invece alcuni port sono usati come canali di input ed output come nel
caso del port P2.2 in output segnale di Enable dell’ accelerometro e dei P2.4, P2.5,
P2.6, P2.7 e P2.10 in input collegati a una serie di 5 switch montati sulla scheda. Tali
switch si sono rilevati particolarmente utili nella fase di misura. La gestione
software dei segnali dei port associati agli SW1, SW2 e SW3 consente di indirizzare
su di un DAC (in questo caso è stato scelto il DAC2) il valore di una variabile
definita nel programma di controllo. Lo SW0 invece è stato usato per abilitare o
meno la compensazione di feedforward. Lo SW4 è stato adibito
all’ abilitazione/disabilitare l’ algoritmo di adattamento.
Si riassumono di seguito le funzioni degli switch.
SW0 Descrizione
0 Disabilitata compensazione feedforward
1 Abilitata compensazione feedforward
SW4 Descrizione
0 Disabilitata algoritmo di adattamento
1 Abilitata algoritmo di adattamento
CAPITOLO 2
28
Tabella 2.4-Descrizione switch
2.4.3 IL CANALE DI COMUNICAZIONE SERIALE (SCC)
La Super 10 è dotata di una porta ad alte prestazioni per l’ I/O seriale in
modalità sincrona. Questa porta si è resa indispensabile per poter far comunicare il
DSP con l’ accelerometro rotazionale, il quale ha una propria interfaccia seriale.
Tale porta è ricavata sul port 3 come si può notare dalla figura 2.9. I pin P3.13,
P3.8 e P3.9 realizzano in modalità Alternate Function l’ interfaccia fisica della linea
seriale. Il segnale di clock che sincronizza la trasmissione dei dati è generato dal pin
SSCClock. Il protocollo di trasmissione è ampiamente personalizzabile ma
sostanzialmente si ha sempre una trasmissione del dato in corrispondenza di un
fronte del clock mentre la ricezione sul fronte immediatamente successivo del clock.
La scheda Super 10 può lavorare sia come ‘Master’ che come ‘Slave’ nella
trasmissione dei dati dal momento che si possono far comunicare tra di loro anche
diverse schede Super 10. Appositi registri vengono impostati per definire le modalità
in uso (vedi Appendice A) nel caso in esame la modalità è quella ‘Master’ mentre lo
‘Slave’ è l’ accelerometro.
2.4.4 ACCESSO ESTERNO AL BUS DATI
L’ accesso alla memoria esterna del processore viene regolata per mezzo di
appositi moduli denominati External Bus Controller, che fanno uso di appositi
segnali di Chip Select e di Ready per la trasmissione dei dati. La scheda ALTERA
come già descritto usa il Chip Select 4 per accedere al bus. Vi è la possibilità di
SW1 SW2 SW3 Variabile Selezionata (in ingresso al DAC2)
0 0 0 Weights
0 0 1 DebugFlag
0 1 0 PES
0 1 1 DF2
1 0 0 Pa
1 0 1 EQM
1 1 0 SUMEQM
1 1 1 Accelerometro
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
29
selezionare sino a 7 zone di memoria diverse ed associare ad ognuna di esse un
particolare segnale di Chip Select e una particolare modalità di lettura e scrittura con
la quale una periferica può accedere al bus. Nelle operazioni di scrittura e lettura in
modalità demultiplexata vengono individuate sei distinte fasi. Attraverso appositi
registri (vedi Appendice A) sono impostabili i tempi di clock delle singole fasi. Ad
ogni Chip Select quindi può essere assegnata una configurazione personalizzata
nell’ uso del bus. Si stabilisce in questo modo come verrà usato il bus dalla periferica
corrispondente a quel particolare Chip Select. Le periferiche in uso sono quindi del
tipo “memory mapped”.
La Super 10 offre la possibilità di prelevare i dati trasmessi dalle zone di
memoria esterna riservate alle periferiche e copiare il contenuto in una qualsiasi altra
area di memoria. Questo è reso possibile dai Peripherial Event Controller (PEC) un
insieme di registri che definiscono tra quali locazioni di memoria spostare i dati. I
registri sono tre il PECSEGx , DSTPx ed il SRGPx (x è un intero nell’ insieme [0,7])
i quali si combinano come mostrato in figura 2.10 per definire gli indirizzi di
sorgente e destinazione tra i quali spostare i dati.
DSTSEGxSRCSEGx
DSTPxSRCPx
Source Pointer Destination Pointer
Segment OffsetSegmentAddress
Segment OffsetSegmentAddress
23 231516 160 15 0
07815
PECSEGxDSTSEGxSRCSEGx
DSTPxSRCPx
Source Pointer Destination Pointer
Segment OffsetSegmentAddress
Segment OffsetSegmentAddress
23 231516 160 15 0
07815
PECSEGx
Figura 2.10 – Composizione indirizzi con modalità PEC
Una caratteristica dei PEC è quella di usufruire di un campo contatore che
stabilisce quanti dati spostare prima di far partire la routine di interruzione. In questo
lavoro il campo contatore serve per contare sul trasferimento dei 6 dati riferiti al
segnale INT_ABCD sulla composizione dei burst (dai quali si risale al PES), mentre
al segnale INT_GRAY il contatore sarà impostato ad uno.
La Super 10 può gestire sino a 64 sorgenti di interrupt distinte, per questo si
devono definire i livelli di priorità per ognuna interruzione. L’ assegnazione dei livelli
CAPITOLO 2
30
di priorità sono definiti dai cosiddetti Interrupt Priority Level (ILVL) e Group Level
(GL). I Group Level vanno da 0 a 4 mentre gli Interrupt Priority Level vanno da 0 a
15 costituiscono di fatto una gerarchia a griglia nella quale i valori più alti sia nel
livello che nel gruppo hanno priorità maggiore. Le interruzioni che fanno uso di PEC
possono avere solo dei determinati valori di priorità. Nella tabella 2.5 si mostra
come possono essere disposti i vari PEC. Decidendo il PLEV (ossia proprietà di
livello esclusiva dei PEC) è assegnato di conseguenza il ILVL ed il GL a seconda del
PEC (da 0 a 7) usato.
PEC Channel Assignement ILVL
PEC4 PEC5 PEC6 PEC7 15PEC0 PEC1 PEC2 PEC3 14PEC4 PEC5 PEC6 PEC7 13PEC0 PEC1 PEC2 PEC3 12PEC4 PEC5 PEC6 PEC7 11PEC0 PEC1 PEC2 PEC3 10PEC4 PEC5 PEC6 PEC7 9PEC0 PEC1 PEC2 PEC3 8
/ 0 ÷ 7
0 1 2 3
Tabella 2.5 – Livelli di priorità dei PEC
Oltre alle interruzioni esterne, il DSP deve gestire quelle generate in modo
automatico dall’ architettura del processore stesso o da dispositivi hardware presenti
sulla scheda stessa, è il caso delle interruzioni di debug, di stack overflow,
interruzioni di reset software o hardware e così via. Queste interruzioni sono
classificate come Hardware Trap ed hanno livelli prioritari intrisecamente più grandi
rispetto alle interruzioni esterne.
Gli interrupt sono gestiti dalla scheda in modo vettorizzato cioè ad ogni
sorgente di interrupt viene associato in modo univoco un puntatore, il quale servirà
all’ Instruction Pointer (IP) per puntare alla procedura di interruzione invocata.
L’ insieme di questi puntatori è arrangiato in una tabella detta VECTOR TABLE
(VCT_TABLE) la quale è stata posta per convenzione all’ indirizzo C00000h.
PLEV = 00
PLEV = 01
PLEV = 10
PLEV = 11
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
31
2.4.5 AMBIENTE DI SVILUPPO SOFTWARE
La programmazione del microcontrollore avviene mediante linguaggio
assembly proprietario e attraverso l’ uso del compilatore EDE (‘Embedded
Development Enviroment’ ) della TASKING sotto sistema operativo WINDOWS
98. Il programma viene quindi inviato da un comune PC alla scheda Super 10 via
seriale per mezzo del software CROSS VIEW. Oltre alla trasmissione del programma
il software CROSS VIEW permette di gestire al meglio la scheda Super 10 attraverso
la visualizzazione delle celle di memoria e dei registri, la monitorizzazione dello
stato della scheda ed inoltre permette l’ esecuzione del programma in modalità debug.
Prima di ogni prova sperimentale è stato necessario configurare correttamente
l’ hard disk ed in particolare posizionare la testina su di una specifica traccia (si è
scelto la 3000h) e far seguire indefinitamente questa traccia. Tutto questo è ottenuto
tramite HYPERTERMINAL, un programma della HILGRAVE che permette di usare
l’ interfaccia seriale per la comunicazione diretta con il disco. Da HYPERTERMINAL
quindi si lancia un programma (U4.HT) che contiene le impostazioni con le quale si
vuole configurare il disco. Si descrivono brevemente i comandi di questo programma
che sono stati usati.
Comando Descrizione
CTRL+Z Accesso al prompt dei comandi
/3 Rende disponibile i comandi del livello 3
Sxxxx Con xxxx codice esadecimale della traccia su cui si vuole
posizionare il VCM.
W Visualizza informazioni sulla servobanda, cilindro e codice Grey
della servobanda
CTRL+R Reset del controllore interno
Tabella 2.6 – Comandi del programma U4.HT su HYPERTERMINAL
CAPITOLO 2
32
2.4 ACCELEROMETRO ROTAZIONALE (RAC)
MEMS L6671Il sensore a cui è affidato il compito di fornire un segnale proporzionale al
disturbo dovuto alle vibrazioni è un accelerometro rotazionale in tecnologia MEMS
(Micro Electro Mechanical System) della ST Microelectronics.
Si tratta di un chip a 24 piedini che rileva accelerazioni angolari attorno al
proprio asse Z inteso come l’ asse perpendicolare al piano del corpo dell’ integrato.
A
Z axis
A
- Trasmissione dati su linea bidirezionale
- PLL digitale
- Filtro digitale del secondo ordine in uscita
- Registri per la configurazione interna e la
regolazione del guadagno e dell’ offset
- Coda per la memorizzazione dati in uscita
- Banda 800 Hz (dichiarata)
- Sensitività 2.5 rad/(sec^2)
- Fondo scala 200 rad /(sec^2)
Figura 2.11 – Caratteristiche Accelerometro RAC L6671
Il chip ha incorporata una porta seriale con cui può comunicare con l’ esterno.
Possiede al suo interno integrato un sistema di PLL digitale per la sincronizzazione
dei segnali. Ha una banda che arriva sino agli 800 Hz e produce dati su 8 , 16 oppure
32 bit.
2.5.1 TECNOLOGIA MEMS
Nel processo produttivo dei chip al silicio è possibile con aggiunta di pochi
nuovi passi ottenere un dispositivo MEMS. Questi dispositivi sfruttano una struttura
particolare del wafer di silicio la quale viene opportunamente combinata con
elementi meccanici ed elettrici. Nel chip vengono costruiti dei microscopici pettini in
una struttura fissa (statori) mentre degli altri pettini questa volta mobili (rotori)
vengono fatti combaciare a quelli fissi come in figura 2.12. La parte mobile viene
quindi appesa ad una sospensione. I denti dei pettini costituiscono le armature di
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
33
piccolissimi condensatori e le intercapedini tra i pettini vengono riempite con del gas
che funge da dielettrico. Un movimento del chip causa una variazione delle capacità
dei micro-condensatori dal momento che solo una armatura è fissa mentre l’ altra per
inerzia si muove. Attraverso la misurazione delle variazioni di capacità, che sono
dell’ ordine dei fF, si può risalire all’ accelerazione subita dal chip.
Figura 2.12 – MEMS : dettaglio statori – rotori
Nell’ accelerometro rotazionale i diversi pettini sono disposti come i raggi di
una ruota come si vede nella figura 2.13 e le armature sono alimentate da tensioni
sinusoidali ( figura 2.13 in basso).
Figura 2.13 – RAC : foto layout fisico e schema di principio
CAPITOLO 2
34
2.5.2 ARCHITETTURA DEL RAC L6671
L’ integrato L7661 contiene altri dispositivi oltre al vero è proprio
accelerometro. L’ architettura su cui si basa è una struttura Σ−∆, seguita da un filtro
decimatore e da una filtro digitale, il tutto può essere sincronizzato mediante un PLL
integrato che può essere agganciato ad una sorgente di sincronismo interna oppure
una esterna. Inoltre il chip contiene una interfaccia seriale con caratteristiche
particolarmente adatte alla comunicazione con la Super 10, nonché una serie di
registri per le impostazioni interne. Il RAC si basa su tecnologia TTL a 3.3V ma può
tollerare segnali di ingresso anche dell’ ordine dei 5V.
.
Figura 2.14 – Schema a blocchi RAC L6671
2.5.3 COMUNICAZIONE TRA RAC E SUPER 10
La comunicazione tra il RAC ed il DSP avviene per mezzo dell’ interfaccia
seriale presente a bordo dell’ integrato L6671. I pin interessati sono gli SPC , SPD e
SPE.
In SPC viene ricevuto il segnale di clock della trasmissione che arriva dal port
P3.13 della Super 10 (sul quale è impostato via software un baud-rate di 12.5MHz).
SPE serve per abilitare la trasmissione e deve essere attivato e disattivato per ogni
byte trasmesso, questo piedino viene collegato al P2.2. Il piedino SPD è la linea su
cui viaggiano i bit del dato in trasmissione ed è collegato al pin P3.8 che a sua volta è
connesso attraverso una resistenza con P3.9 per prevenire elevati valori di corrente
che si possono presentare in particolari condizioni (per dettagli si veda [1]).
Con l’ utilizzo del PLL interno è possibile avere tutti i segnali di clock usati
internamente al dispositivo sincronizzati. In questo modo si può disporre del dato
dell’ accelerometro con una velocità selezionabile. Il segnale di PLL è preso
A/DCONVERTER
DIGITALFILTER
SERIALIFC
PLL
SENSOR
CLOCK IN
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
35
direttamente dall’ ALTERA in dettaglio la linea INT_GRAY che dà un impulso ogni
116 µsec viene intercettata sul pin P2.8 e portata al piedino CK_IN
dell’ accelerometro. Il piedino CK_IN difatti è l’ ingesso del PLL digitale.
Nella figura sottostante vengono riprodotte le connessioni usate.
Figura 2.15 – Connessioni accelerometro – Super 10
Nella figura 2.15 sono riportati i nomi di tutti i piedini utilizzabili. In
particolare si può notare il piedino REF_CAP che fa capo ad un nodo al quale è
stabilita una tensione costante di 2.25 V la quale deve essere il più possibile stabile.
Mediante REF_CAP è possibile connettere delle capacità di filtro per ripulire da
eventuale disturbi il nodo in questione, in questo modo si vuole rendere più stabile il
valore di tensione richiesto. Altri piedini sono disposti per le alimentazioni, masse e
funzioni di test che non sono state prese in considerazione.
Il protocollo di lettura-scrittura di un dato di accelerazione angolare su 8 bit si
basa sulla trasmissione half-duplex di un word (due byte).
Si riassume brevemente le modalità con le quali si realizzano le operazioni di
lettura-scrittura dei dati.
SCRITTURA SUI REGISTRI DEL RAC
RAC L6671
SPC SPD SPE
CK_IN P2.2
SUPER 10
P2.8
P3.13 P3.8
AGND VDD-A
DGND VDD-D
1
12 13
24
N.C. N.C.
TEST_ST FUNCT_TEST
REF_CAP HV_EPROM
+
+
C esterna
0 0 1 1
6xxx h
R R R R D D D D D D D D
CAPITOLO 2
36
Nel primo bit si indica con il valore 0 che si tratta di una operazione di scrittura
sull’ accelerometro, i successivi tre bit contengono sempre 110 codice identificativo
del dispositivo. Seguono quattro bit con i quali si dà il valore del registro interno sul
quale si vuole scrivere. Il byte successivo contiene il valore da memorizzare. Una
operazione di scrittura comporterà quindi la trasmissione di un word con valore
esadecimale 6xxxh, nel quale x può assumere una qualsiasi configurazione tra 0 ed F.
LETTURA :
FASE 1 – INVIO RICHIESTA
Nella fase di lettura si alternano due fasi. La prima fase è di invio richiesta per
la lettura di un dato contenuto in uno dei registri messi a disposizione. La richiesta
consiste nella trasmissione di un primo bit 1 che identifica la richiesta della lettura
seguita da quattro bit che identificano il dispositivo e che come per la scrittura sono
sempre 110. I successivi 4 bit danno le coordinate del registro da leggere che in
particolare può essere un registro della coda fifo dedicata alla memorizzazione dei
dati dell’ accelerazione angolare. Segue una maschera di 8 bit con i quali vengono
messi in ‘or’ i dati contenuti nel registro. Per questo una richiesta di dato assume
sempre la configurazione Exxxh.
FASE II – RISPOSTA DELL’ACCELEROMETRO
Nella seconda fase viene inviato dal RAC due byte di risposta. Il primo
contiene le stesse informazioni della richiesta di lettura precedentemente inoltrata e il
1 0 1 1
Exxx h
R R R R M M M M M M M M
1 0 1 1 R R R R D D D D D D D D
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
37
secondo byte contiene il valore effettivamente presente nel registro. In caso di
anomalie nella trasmissione viene inviato il dato 80h che segnala un eventuale errore.
2.5.4 FILTRO INTERNO
Visualizzando il segnale di uscita dell’ accelerometro è possibile rilevare una
consistente rumorosità sovrapposta al segnale utile. Integrato nel chip è presente un
filtro digitale del secondo ordine i cui coefficienti sono impostabili arbitrariamente
(su 8 bit di modulo più uno di segno) attraverso i registri del RAC. Tale filtro ha
comunque dei valori di default per i coefficienti che vengono prelevati nella fase di
boot del dispositivo da una memoria flash anch’ essa contenuta nel chip. Il filtro di
default è un IIR del secondo ordine la cui funzione di trasferimento è qui sotto
descritta :
102
103
104
-30
-20
-10
0
10IIR Filter (default parameter) - Bode Diagrams
[Hz]
Mag
nitu
de [
dB]
102
103
104
-150
-100
-50
0
Frequency [Hz]
Pha
se [
deg]
Figura 2.15 – Filtro di default RAC: IIR del 2° ordine
21
21
22
110
22
110
116255255104866
)()(
)( −−
−−
−−
−−
+−++=
++++
==zz
zzzbzbbzazaa
zXzY
zH )2.2(
CAPITOLO 2
38
Si può notare dai diagrammi di Bode della f.d.t. del filtro che all’ interno della
banda utile del sensore [0-800Hz] il filtro dà uno sfasamento al massimo di –45° e
presenta una lieve amplificazione nelle frequenze più alte.
2.5.5 REGISTRI
Sono presenti numerosi registri, ben 48, da otto bit ciascuno i quali contengono
i parametri di impostazione dell’ accelerometro e una coda fifo nella quale transitano
i valori misurati dell’ accelerazione angolare. I quattro bit disponibili per lo
indirizzamento sono insufficienti per coprire tutti i registri per questo motivo i
registri sono stati divisi in tre banchi. Per passare da un banco ad un altro è
necessario accedere ad il registro 111 detto miscellaneous register quindi impostare il
campo BS1-BS0 con il valore binario del banco a cui si intende accedere.
Nella seguente tabella si mostra la collocazione dei vari registri all’ interno dei
banchi.
Indirizzo Banco 1 Banco 2 Banco 30000 FIFO_Low FIFO_Low FIFO_Low0001 Not Used Not Used Not Used0010 FIFO_High FIFO_High FIFO_High0011 Not Used Not Used Not Used0100 CTRL_Reg1 CTRL_Reg1 CTRL_Reg10101 CTRL_Reg2 CTRL_Reg2 CTRL_Reg20110 PLL_PRESC_MULT FLASH_Reg1 PLL_COMPARE_Reg0111 PLL_MULT FLASH_Reg2 PLL_RST_VALUE_Reg1000 IIR_A0 GAIN_Low Not Used1001 IIR_A1 GAIN_High Not Used1010 IIR_A2 OFFSET_Low Not Used1011 IIR_B1 OFFSET_High Not Used1100 IIR_B2 CURR_BANDGAP Not Used1101 IIR_SIGN_BIT BAND_CSACT_REG Not Used1110 DSC_Reg CS_TRIM Not Used1111 MISC_Reg MISC_Reg MISC_Reg
Tabella 2.6 – Disposizione in banchi dei registri interni del RAC
I dati riguardanti l’ accelerazione transitano nella struttura fifo disposta sui
registi 0 e 2 dei banchi 1 e 2. La coda fifo viene riempita con i dati partendo dal
registro FIFO_Low del banco 1 successivamente viene riempito il registro
FIFO_Low del banco 2 una volta finiti registri ‘Low’ vengono riempiti i registri
FIFO_high sempre dal banco 1 sino al 2.
Quando viene letto un dato vengono sovrascritti automaticamente i registri
‘Low’ con quelli ‘High’ .
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
39
I registri più rilevanti in questo lavoro sono stati i seguenti:
• CTRL_Reg1 : Registro di controllo 1 (presente su tutti e tre i banchi)
PDN IEN CS1 CS0 OPDN B2 B1 B0
Il significato dei campi del registro sono riassunti nella successiva tabella.
PDN Chip Power Down : (0) chip on , (1) chip power down mode
IEN Interrupt enable: (0) interrupt signal avaible to the external
(1) pad in high Z
CS1-CS0 Clock Source Selection
(00) Clock from CLK pin ,
(01) Internal Oscillator
(10) Clock from PLL locking on CLK pin
(11) Clock from PLL locking on FIFO_low register reading
ODPN Oscillator Power Down : (0) oscillator toggling
(1) oscillator turned off
B2-B0 Control bit definition : (000) Normal mode
In questo registro è stata impostata la configurazione 60h. Si è lavorato cioè in
Normal mode, non si è usato l’ oscillatore interno in quanto è stato usato il pin di
clock come ingresso del segnale di PLL.
• CTRL_Reg2 : Registro di controllo 2 (presente su tutti e tre i banchi)
DSCR DSC CEN OWL1 OWL0 IFB DF SO
DSCR Delayed Synchronous Conversion Reference
(0) CK_IN or FIFO_LOW_read depend on CS0 value
DSC Delayed Synchronous Conversion enable
(0) DSC disable (1) DSC enable
CAPITOLO 2
40
CEN Chip enable on the Offset and Gain adjustment unit
(0) clip disabled
(1) clip enable
OWL1-OWL0 Output Word Length selection
(00) 8 bit
(01) 16 bit
(10) 32 bit
(11) 32 bit
IFB IIR Filter Bypass : (0) IIR on , (1) IIR off
DF Decimation Factor Selection
(0) Decimate by 16 , (1) Decimate by 32
SO Sinc Order selection: (0) second order , (1) third order
Questo registro quindi incorpora l’ abilitazione o meno del filtro IIR. Spesso
nelle prove è stato utile disabilitare il filtro per capire quale influenza potesse avere
lo sfasamento introdotto da questo filtro sulle elaborazioni prodotte. La
configurazione di questo registro maggiormente usata è stata : 02h.
Altri importanti registri sono i quattro seguenti, i quali hanno il compito di
impostare il guadagno e l’ offset del segnale prodotto dall’ accelerometro :
• OFFSET_LSB : Registro di impostazione della parte meno significativa
dell’ offset
OL.7 OL.6 OL.5 OL.4 OL.3 OL.2 OL.1 OL.0
• OFFSET_MSB : Registro di impostazione della parte più significativa
dell’ offset
OH.7 OH.6 OH.5 OH.4 OH.3 OH.2 OH.1 OH.0
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
41
• GAIN_LSB : Registro di impostazione della parte meno significativa del
guadagno
GL.7 GL.6 GL.5 GL.4 GL.3 GL.2 GL.1 GL.0
• GAIN_MSB : Registro di impostazione della parte più significativa del
guadagno
GH.7 GH.6 GH.5 GH.4 GH.3 GH.2 GH.1 GH.0
Nelle prove è stato costantemente regolato l’ offset per ottenere un segnale di
accelerazione a riposo a valor medio nullo. A tal proposito va segnalato che il valore
medio dell’ accelerometro può subire variazioni nei lunghi periodi. I registri di
guadagno invece non sono mai stati modificati.
Viene di seguito riportata la struttura del registro usato per passare attraverso i
vari banchi di memoria.
• MISC_Reg : Miscellaneous Register
RES PLLT IOD3 IOD2 IOD1 IOD0 BS1 BS0
RES Force SW reset on device (high active)
PLLT PLL Test using external clock source
(0) : PLL clock from internal oscillator
(1) : clock from SPE pad
IOD3-IOD0 Internal Oscillator Divider (000 Default)
BS1-BS0 Register bank Select. At reset (00)
(00) Bank 1 , (01) Bank 2 , (10) Bank 3 , (11) not used
CAPITOLO 2
42
2.4 SHAKER
Le sollecitazioni esterne applicate al disco sono state ottenute mediante uno
shaker rotazionale. Lo shaker è costituito da un corpo metallico a forma di “L” entro
il quale è fissato un motore. L’ albero del motore è inserito su un soprastante piatto
plastico che è libero di oscillare.
Figura 2.16 – Shaker Rotazionale
Il meccanismo è stato fissato saldamente ad un tavolo robusto mediante
morsetti e il disco rigido è stato avvitato tramite supporti metallici sul piatto.
Il sistema di sollecitazione è inserito in un anello di retroazione. All’ estremità
del piatto è presente un sensore PSD con il compito di rilevare i movimenti del
piatto dal suo punto di riferimento (si veda figura 2.16) .
Il motore è pilotato da un amplificatore operazionale di potenza secondo uno
schema di conversione tensione\corrente. Il segnale di riferimento all’ ingresso del
controllo dello shaker, spesso sinusoidale, è stato prodotto da un generatore di forme
d’ onda.
L’ attivazione dell’ azione di shaking è delegata all’ azionamento di un
interruttore inserito sulla scheda elettronica sede dello stadio di potenza e del
����
���
oscillazioni
oscillazioni
PSD
ORGANIZZAZIONE DEL SISTEMA SPERIMETALE
43
controllore dello shaker. Lo shaker riesce a produrre movimenti rotazionali regolabili
in frequenza ed ampiezza.
Con questo strumento si vorrebbe ottenere una linearità tra il comando di
posizione e l’ accelerazione angolare prodotta dal motore sul disco rigido. Come si
vedrà in seguito questo non si verifica per tutte le frequenze nella banda del sensore
RAC a causa di risonanze dovute alla meccanica dello shaker ed al tavolo su cui
poggia il sistema.
In figura 2.17 viene riassunto schematicamente tutto l’ insieme della
strumentazione usata nella sperimentazione.
Figura 2.17 – Schema di principio sulla disposizione strumentale
Analizzatore di spettro
Oscilloscopio
Controllo Shaker
Accelerometro rotazionale L6671
Shaker
HDD
Super 10
DSP
PC
ALTERA
Scheda AD/DA DAC 1
DAC 2 DAC 3
LINEA Bus Digitale
Analogica
Bit Blaster
CAPITOLO 2
44
CAPITOLO 3PRINCIPI TEORICI SUL CONTROLLO ADATTATIVO
3.1 CENNI SUL CONTROLLO ADATTATIVO
Tra le più recenti tecniche di controllo, il controllo adattativo ha suscitato
molto interesse in ambito sia accademico che industriale.
Un controllore è detto adattativo quando oltre all’ azione di controllo opera una
variazione dei propri parametri in seguito ad una variazione della dinamica del
processo da controllare. Tale controllo è molto utile quando il processo controllato è
soggetto a forti variazioni dei propri parametri, alcuni esempi si possono trovare in
svariati campi dal campo aerospaziale al campo robotico. Cambi di assetto di volo
negli aerei o cambi di centro di massa nei robot manipolatori possono far variare
significativamente la dinamica del sistema da controllare, mettendo in seria difficoltà
i classici controlli tempo-invarianti.
Nell’ ambito industriale il controllo adattativo è apprezzato per la sua capacità
di autosintonizzazione dei parametri con la quale si conferisce un grado di
personalizzazione del controllo dedicato ad ogni singolo dispositivo prodotto.
Per effettuare la sintesi di un controllo adattativo è necessario sviluppare una
legge di aggiornamento dei parametri. Per la scelta di tale legge si è fatto riferimento
ai testi [10] - [11] e [12].
CAPITOLO 3
46
3.2 PERFORMANCE SURFACE
Si consideri quale filtro di feed-forward per la compensazione delle vibrazioni
(Gff), un filtro FIR definito dalla (3.1).
Come già discusso nel capitolo 1 , tale filtro ha come ingresso il segnale ACC
(accelerazione angolare) e ha come uscita il valore stima del disturbo (dovuto alla
vibrazione) ^
d .
Figura 3.1 – Schema di principio compensazione tramite filtro FIR
Si definisce come vettore di stato il seguente Xk =[ACC(k) ACC(k-1)..
…ACC(k-N+1)]’ ossia il vettore contenente gli N dati dell’ accelerazione angolare
più recenti (verrà nel proseguo anche indicato come vettore ACC(k) ).
L’ uscita del filtro FIR, ^
d è data dalla moltiplicazione del vettore di stato con il
vettore contenente i pesi del filtro definito come Wk1=[w0(k) w1(k) … wN-1(k)]’ nel
quale in particolare si fa notare la dipendenza dal tempo k dei parametri.
Dal momento che si vuole produrre l’ uscita desiderata dk , (ossia si vuole
eliminare il disturbo d ) viene definito errore il seguente:
Considerando ora i segnali definiti nello schema di controllo non più segnali
deterministici ma processi stocastici, si possono fare ulteriori considerazioni.
1 Nella notazione in uso il grassetto indica vettore oppure matrice mentre il pedice k rappresental’ istante di campionamento generico.
KTk XW−=−= kkkk ddde
^ )2.3(
d
d ^
G f f + -
^ θθθθ ..
e ( F IR ) ( A C C )
11
110 )(.....)()(),( +−
−− +++= N
N zkwzkwkwzkGff )1.3(
PRINCIPI TEORICI SUL CONTROLLO ADATTATIVO
47
Si pone come obbiettivo la minimizzazione dell’ errore quadratico medio cioè
della quantità definita come:
][ 2keE=ξ )3.3(
Se si assume che Xk e dk siano statisticamente stazionari allora si può dire che
Si definiscono il vettore e la matrice seguenti
Queste matrici contengono valori costanti dovuti all’ assunzione della
stazionarietà per le variabili Xk e dk. In questi termini la (3.4) diviene :
In questa scrittura si riconosce una tipica forma quadratica nella variabile Wk .
Questa funzione è chiamata performance surface in quanto individua nei suoi
punti l’ entità dell’ errore quadratico medio e quindi la prestazione del metodo di
filtraggio adottato. E’ da notare che questa superficie è convessa. Esisterà un solo
punto di ottimo di ξ che si ottiene facilmente derivando la (3.6) .
In via teorica quindi si potrebbe conoscere direttamente qual è il filtro di
compensazione migliore, dal punto di vista della minimizzazione dell’ errore
quadratico medio, se si fosse a conoscenza della matrice R e del vettore P. Purtroppo
questi valori non sono noti a priori.
KTKK
TKK
TK
KTKK
TKK
TK
WXWXXW
WXWXXW
][2][][
]2[][2
22
kk
kkk
dEEdE
ddEeE
−+=
=−+==ξ )4.3(
][ TKXP kdE= ][ T
KK XXR E= )5.3(
KT
KTK
KTKK
TKK
TK
WPRWW
WXWXXW
2][
][2][][][2
22
−+=
=−+==
k
kkk
dE
dEEdEeEξ )6.3(
PRW -1* = )8.3(
)7.3(022 == P - RWWδ
δξ
CAPITOLO 3
48
Resta comunque un risultato importante il fatto che la performance surface
associata al filtro FIR è convessa e che esiste un solo minimo globale, infatti con
l’ uso di opportuni algoritmi iterativi di discesa si potrà quindi raggiungere la
soluzione ottimale a partire da qualsiasi punto iniziale. Nella sperimentazione il
punto iniziale è sempre stato posto a Wk = [0 0 .. 0]’ .
3.3 LMS E FILTERED-X LMS ALGORITHM
L’ algoritmo noto in letteratura come LMS algorithm propone di prendere come
stima dell’ errore quadratico medio il valore puntuale dell’ errore quadratico stesso.
Quindi indica come possibile metodo di discesa iterativa lungo la performance
surface un classico metodo di Newton ( cfr [6] ). Il metodo di Newton ha come
equazione di discesa la seguente :
Nella quale il simbolo ∇eK sta ad indicare il gradiente dell’ errore rispetto al
peso Wk, mentre µ è il passo dell’ aggiornamento e che nel proseguito verrà indicato
come adaptation gain. Il valore del gradiente è dato da :
nella quale si è tenuto conto della derivata della (3.2).
In definitiva l’ equazione di aggiornamento risulta avere la seguente forma :
Il vantaggio che offre questo metodo è la semplicità dell’ equazione di
aggiornamento, ideale quindi per essere implementata nel DSP e fatta funzionare nel
tempo limitato concesso dall’ algoritmo di controllo dell’ intero processo
Ke∇−=+ µk1k WW
KXK
N
k
k
K
N
k
k
K e
we
we
e
we
we
e 2:::::::::::::2::::::::::::
1
0
1
2
0
2
−=
������
�
�
������
�
�
∂∂
∂∂
=
������
�
�
������
�
�
∂∂
∂∂
=∇
−−
Kk1k XWW Ke +=+ µ2
)9.3(
)10.3(
)11.3(
PRINCIPI TEORICI SUL CONTROLLO ADATTATIVO
49
L’ algoritmo fin qui considerato implica la conoscenza del segnale d(t), ossia il
segnale disturbo, ma questo segnale non è noto nel caso in esame. Il segnale che si
prende invece in considerazione è il PES attraverso il quale si cerca di osservare
l’ effetto del disturbo d(t). Si passa percui da una configurazione tipica dell’ LMS
algorithm (figura 3.2) alla versione filtrata-x (Filtered-x LMS Algorithm oppure
FXLMS Algorithm) di figura 3.3 .
Figura 3.2 - Schema a blocchi LMS Algorithm
Figura 3.3 - Schema a blocchi del Filtered-x LMS Algorithm
k 1 k ACC(k) W W K e + = + µ 2
..
R A C
d G r e f
θθθθ
d ^
G f f
G o u t +
-
P E S
θθθθ
..
L M S
e
( A C C )
)]()[(2^
koutGkPES ACCWW k1k ⋅+=+ µ
R A C
d G r e f
θθθθ
d
^
G f f
G o u t
+
-
P E S
θθθθ
..
L M S
e
G o u t
..
^
( A C C )
CAPITOLO 3
50
Nello schema a blocchi di figura (3.3) si è fatto uso della f.d.t. Gout la quale,
come in precedenza indicato, vuole rappresentare la f.d.t. che ha come ingresso il
segnale d(t) e come uscita il PES ossia:
Sempre nella figura 3.3 outG^
sta ad indicare una f.d.t. che approssima Gout.
Questo può sembrare una forte limitazione nella generalità del metodo che si
vuole adottare dal momento che si deve ricorrere ad una identificazione della f.d.t.
Gout su di un particolare disco, tuttavia il fatto di dover disporre della f.d.t Gout non
è limitante in quanto in diversi lavori è stato provato che basta una funzione
abbastanza vicina a quella reale per avere risultati apprezzabili.
La versione filtrata-x deriva dalla manipolazione dei diagrammi a blocchi con
l’ aggiunta delle ipotesi che il numero di parametri da regolare sia fisso e che le
variazioni dei parametri sia lenta. Questo tipo di tecnica di filtraggio viene
diffusamente usata nel campo della soppressione del rumore acustico con buoni
risultati.
Si noti che la scelta di implementare un filtro FIR a numero di parametri fisso
garantisce comunque la stabilità del filtro una volta disabilitato il processo di
adattamento. Se invece si usasse un IIR non si avrebbe la certezza che l’ adattamento
converga ad un minimo globale dal momento che nella performance surface per filtri
IIR potrebbero esistere anche minimi locali . Lo svantaggio nell’ uso di un FIR è che
richiede un maggior numero di parametri (più elevato ordine) per approssimare lo
stesso comportamento che si otterrebbe con un IIR di basso ordine.
L’ equazione di aggiornamento che è stata quindi usata è la seguente :
Nella (3.13) ACC sta ad indicare il vettore di stato del filtro Gff ossia il vettore
che contiene N campioni dei dati passati dell’ uscita dell’ accelerometro. Esprimendo
la (3.13) in forma scalare si ottiene:
CPP
Gout+
=1
)12.3(
)]()[(2^
koutGkPES ACCWW k1k ⋅+=+ µ )13.3(
PRINCIPI TEORICI SUL CONTROLLO ADATTATIVO
51
Mentre il filtro che si vuole implementare ha la seguente forma:
Il grado del filtro sarà oggetto di successive osservazioni ma si anticipa fin
d’ ora che non sarà possibile scegliere un grado molto elevato difatti il tempo di
calcolo per il filtro e l’ aggiornamento dei parametri dovrà essere compatibile con il
tempo messo a disposizione dal controllo del sistema complessivo. Il filtro digitale
Gff e l’ algoritmo di aggiornamento dei parametri dovrà essere inserito nello stesso
codice che realizza il controllo a catena chiusa del VCM mediante uno stimatore
asintotico dello stato (cft [3]).
3.4 VELOCITA’ DI APPRENDIMENTO
Nella determinazione della velocità con la quale l’ algoritmo LMS (filtrato-x
LMS) converge gioca un ruolo fondamentale il paramento µ ossia l’ adaptation gain.
Più alto è questo valore più veloce dovrebbe essere la convergenza dell’ algoritmo di
Newton.
Purtroppo questo valore non può essere grande a piacere. Come dimostrato in
[10]-[12] esiste difatti un vincolo di stabilità ossia :
max
0λ
2<µ< )16.3(
Nella quale λmax sta ad indicare il più grande autovalore della matrice di
autocorrelazione degl’ ingressi (accelerazione angolare) R.
Per questa ragione il metodo LMS risulta fortemente dipendente nella velocità
di convergenza dal tipo di segnale in ingresso.
)](ACC)[(2i)W(k,i)1,W(k ikGoutkPES −⋅+=+ µ 1.....0 −= Ni )14.3(
11
110 )(.....)()(),( +−
−− +++= N
N zkwzkwkwzkGff )15.3(
CAPITOLO 3
52
E’ possibile percui incorrere in una sbagliata taratura di tale parametro: se si
pone l’ adaptation gain troppo alto c’ è il rischio di una instabilità
nell’ aggiornamento, se si pone troppo piccolo si ottengono tempi di convergenza
eccessivamente lunghi.
Si è potuto verificare sperimentalmente che se si aumenta l’ ordine del filtro
adattativo è necessario porre un µ più basso rispetto a filtri di ordine inferiore con
una conseguente diminuzione nella velocità di convergenza.
CAPITOLO 4ELABORAZIONE NUMERICA DEI SEGNALI DI
RIFERIMENTO
4.1 IDENTIFICAZIONE DI Gout E REALIZZAZIONE
DELL’ ALGORITMO
Come in precedenza visto è necessario ottenere una stima della f.d.t. del blocco
nominato Gout. A questo scopo è stato adoperato l’ analizzatore di spettro HP
DSA35665 A. E’ stato necessario collegare i pin SP e SUMIN presenti sul
connettore 8 dell’ ALTERA, per avere la possibilità di accedere direttamente tramite
BNC1 al SUMPOINT, ossia il punto nel quale viene mandato il segnale di comando.
Figura 4.1 – Connessioni sul DSA per l’identificazione di Gout
C H 1 C H 2 S O U R C E
H P D S A 3 5 6 6 5 A
5 0 mv
S U M P O IN T ( B N C 1 ) P E S
CAPITOLO 4
54
I connettori del DSA sono stati collegati con l’ ingresso e l’ uscita del blocco da
identificare, quindi è stata avviata una identificazione in modalità swept sine con la
quale è stata inviata al sistema di sollecitazione una sinusoide in modulazione di
frequenza. In questo modo è stato ‘spazzolata’ la banda di frequenza nella quale
interessa identificare la f.d.t. (stessa banda sensore RAC), dalla frequenza minore alla
frequenza maggiore e con livello di tensione applicato alla sinusoide congruo con
l’ entità del comando del VCM (50mV). Le connessioni dei BNC del DSA è riassunta
nella figura 4.1.
I dati risultanti dall’ elaborazione sono stati raccolti da postazione remota e
successivamente sono stati elaborati con il programma MATLAB 5.3. In questo
ambiente è stata invocata una procedura di FITTING (invfreqs.m) con la quale è
stato possibile estrarre la f.d.t. del secondo ordine che approssima in modo migliore
(nel senso dei minimi quadrati) la f.d.t. appena identificata. Quindi si è passati da una
f.d.t. continua ad una discreta tramite una discretizzazione di tipo matched (funzione
matlab c2dm.m).
Nella figura 4.2 sottostante è riportato il risultato ottenuto.
Figura 4.2 – Identificazione Gout
101
102
103
-10
0
10
20
30Diagramma di Bode di Gout
Frequency - [Hz]
Mag
nitu
de -
[dB
]
IdentificazioneApprossimazione
101
102
103
-400
-300
-200
-100
0
Frequency - [Hz]
Pha
se -
[D
eg]
ELABORAZIONE NUMERICA DEI SEGNALI DI RIFERIMENTO
55
Nella figura 4.2 la linea rossa indica la risposta in frequenza della seguente
f.d.t.:
Successivamente è stato realizzato il filtro digitale che simula il
comportamento della Gout stimata. La realizzazione è una semplice cella del
secondo ordine ad uscite multiple dallo stato nella quale è stato opportuno operare
una modifica dei coefficienti per poter memorizzare tutti i coefficienti in ambiente ad
aritmetica a virgola fissa con notazione in complemento a due. Successivamente è
stato condotto uno studio sullo scalamento delle variabili necessario per evitare
eventuali overflow.
I coefficienti e lo schema della realizzazione sono di seguito riportati.
Figura 4.3 – Realizzazione Gout
Coeff Decimale Q151
C2 0.8076 675E
C3 -0.6626 AB31
D1 0.3019 26A4
D2 -0.8765 8FCF
D3 0.5747 498E
Tabella 4.1– Coefficienti Realizzazione
1 Per rappresentazione Q15 si intende la rappresentazione a virgola fissa su 16 bit con 1 bit di segno e15 bit di parte frazionaria
C 2
C 3
D 2
D 3
D 1
2
........θθθθ P a
S 3
S 1
S 2
z
z
- 1
- 1
21
21
21
211
6626,06151,115747,08765,03019,0
166626,06151,11
1948,90237,148301,4)( −−
−−
−−
−−−
+−+−⋅=
+−+−=
zzzz
zzzz
zGout
)1.4(
CAPITOLO 4
56
4.2 CRITERI DI SOGLIA
Un passo di fondamentale importanza nell’ algoritmo di adattamento è capire
quando sia necessario attivare la procedura di aggiornamento dei parametri. Si cerca
quindi di trovare un criterio con il quale segnalare alla procedura di adattamento che
i parametri correnti non sono più adeguati allo scopo di una corretta compensazione.
Per avere una idea dell’ entità del disturbo dovuto alle sollecitazioni rotazionali
si può osservare la figura 4.4 che rappresenta il segnale PES del sistema sottoposto a
vibrazioni sinusoidali a varie frequenze e di pari ampiezza.
Figura 4.4 – Effetti delle vibrazioni rotazionali sul PES
Il segnale PES non sollecitato (nella figura PES0Hz) è corrotto da numerosi
disturbi, molti dei quali hanno le maggiori componenti nelle alte frequenze. Come si
può inoltre notare i disturbi esterni maggiormente influenti nell’ evoluzione del PES
sono quelli ad alte frequenze questo dovuto oltre all’ effetto filtrante dovuto alla
dinamica del VCM, alla maggior precisione di stima da parte dello stimatore
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.1
0
0.1
0Hz
PE
S
PES in sollecitaz ione rotaz ionale (misure in ampiezza variabili DSP)
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.1
0
0.1
20H
z P
ES
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.1
0
0.1
100H
z P
ES
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.1
0
0.1
200H
z P
ES
Time [sec]
ELABORAZIONE NUMERICA DEI SEGNALI DI RIFERIMENTO
57
asintotico dello stato responsabile del controllo a catena chiusa. Tanto più lenti sono i
disturbi tanto meglio lo stimatore asintotico riesce a predire lo stato.
Per rilevare che il PES è soggetto a vibrazioni non ben compensate una
semplice soglia di livello sullo stesso segnale si è dimostrata troppo sensibile a picchi
spuri e in ogni caso di difficile taratura. Dal grafico della figura precedente infatti si
può anche osservare che non c’ è molta differenza nei livelli massimi tra il segnale
PES200Hz e il segnale PES0Hz, quanto piuttosto una modifica della forma d’ onda
dell’ errore.
Si è perciò ricorso ad altri metodi per stabilire l’ abilitazione della
compensazione: i criteri che sono stati considerati sono state sostanzialmente due.
4.2.1.1 SOGLIA SULL’ INTEGRALE DELLE CRESTE
Un primo approccio consiste nel valutare l’ area del PES che sta al di fuori di
prestabilite soglie. Tali soglie vengono calcolate al 3σ del segnale di errore senza
sollecitazioni ovvero al valore entro il quale si trova il 99.9% dei campioni.
Il calcolo dell’ area avviene in forma di media mobile su un numero prestabilito
di campioni passati. Nella sperimentazione è stato spesso usata una media mobile su
dieci campioni. Ad ogni iterazione quindi vengono calcolati i seguenti valori
Se il valore SUMPES supera una prestabilita soglia allora entra in funzione
l‘adattamento. Nella figura seguente si rappresentano graficamente i vari passaggi.
��� −
=0
|)(|)(
ESThresholdPiPESiABSPES
�−=
=i
NiK
kABSPESiSUMPES )()(
ESThresholdPPESse <||
altrimenti)2.4(
)3.4(
CAPITOLO 4
58
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09-0.2
0
0.2
PE
S
Algoritmo di media mobile
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.090
0.05
0.1
AB
SP
ES
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.090
0.02
0.04
0.06
SU
MP
ES
time [sec]
Figura 4.5 – Criterio integrale di creste
4.2.1.2 SOGLIA SULLA STIMA DELL’ERRORE QUADRATICO MEDIO
Il secondo metodo tenuto in considerazione è più congruo con la teoria del
filtraggio LMS ed Filtered X-LMS è consistita nell’ inserire una soglia sulla stima
dell’ errore quadratico medio.
Purtroppo non si dispone di tale dato, percui è necessario considerare una sua
approssimazione. E’ stato pertanto preso in considerazione quale stima di ξ il valore
della media mobile fatta su un predefinito numero di valori del PES(i)2 passati. Il
procedimento può essere sintetizzato dalle (4.2).
L’ adattamento inizia se il valore SUMEQM è superiore ad una prestabilita
soglia. Come si può notare nelle (4.2) la stima dell’ errore quadratico medio
SUMEQM(i) non è divisa per il numero di campioni questo allo scopo di guadagnare
][Ε= 2)(iPESξ )4.4(
;)()( 2iPESiMEMOEQM = �−=
=i
NiK
kMEMOEQMiSUMEQM )()( )5.4(
ELABORAZIONE NUMERICA DEI SEGNALI DI RIFERIMENTO
59
tempo di calcolo. Si terrà conto di questa convenzione nel regolare la soglia che
rileverà quando SUMEQM è diventata troppo grande.
Viene di seguito riportato andamenti tipici dell’ algoritmo di soglia.
0 100 200 300 400 500 600 700 800-0.2
0
0.2
PE
SAlgoritmo di soglia EQM
0 100 200 300 400 500 600 700 8000
0.005
0.01
0.015
EQ
M
0 100 200 300 400 500 600 700 8000
0.01
0.02
Time/Sampling Time
EQ
M(2
0)
Figure 4.6 – Criterio EQM
Sono stati eseguiti diversi tentativi nell’ aumento delle unità della media
mobile, questo in primo luogo per migliorare la stima dell’ errore quadratico medio
ed in secondo luogo per rilevare nel modo migliore componenti armoniche del PES
a basse frequenze dovute a sollecitazioni esterne. Un buon compromesso tra impiego
di tempo di calcolo e precisione nella stima è stato raggiunto con una scelta di 20
campioni.
4.2.2 SOGLIA SULL’ACCELERAZIONE ANGOLARE
Non sono state considerate solamente soglie sul segnale PES. E’ stata infatti
introdotta una ulteriore soglia sul segnale di accelerazione. Il suo compito è quello di
inibire qualsiasi tipo di aggiornamento dei parametri se il segnale di accelerazione
non supera in modulo un determinato valore di minimo. Questo per non correre il
rischio di andare ad adattare i parametri del filtro su sequenze rumorose prodotte dal
sensore RAC.
CAPITOLO 4
60
4.3 STRUTTURE DATIL’ algoritmo è stato studiato appositamente per la sperimentazione; è stata
perciò conferita una struttura ad alto grado di personalizzazione nel flusso del
programma. L’ algoritmo può implementare diversi tipi di adattamento : da un
semplice guadagno adattativo sino ad un filtro FIR del 39 ordine. Nelle strutture per
il rilevamento di soglia è impostabile il numero di campioni che entrano nella media
mobile. Eventuali saturazioni o inibizioni di parte dell’ algoritmo sono comandate da
un word particolare chiamato KOA (Kind of Adaptation) composto da sedici flags il
cui scopo è qui sotto riassunto.
BIT SIGNIFICATO
0 (0) 2u costante ; (1) 2u variabile
1 (0) filtraggio di ACC con Gout disabilitata ; (1) abilitata
2 (0) soglia EQM disabilitata ; (1) abilitata
3 (0) Saturazione incremento pesi disabilitata ; (1) abilitata
Per incremento si intende quella quantità che viene calcolata e che
viene sommata ai pesi precedenti per eseguire l’ aggiornamento dei
parametri.
4 (0) Saturazione pesi disabilitata ; (1) abilitata
5 (0) Soglie sul segnale accelerometro disabilitato ; (1) abilitato
6 (0) Wait window OFF ; (1) Wait Window ON
Abilita o meno una finestra temporale negli istanti di accensione di
controllo nella quale non viene eseguita nessun adattamento
7 (0) Delay OFF , (1) Delay ON
Per Delay si intende una operazione di inibizione della procedura di
aggiornamento successivamente ad un adattamento.
8 (0) Leaky OFF , (1) Leaky ON
9 (0) Disabilitazione software adattamento ; (1) ON
10 (0) Filtro sulla derivata dell’ accelerometro OFF , (1) ON
11 (0) Saturazione sull’ accelerometro OFF , (1) ON
12 Non usato
13 (0) estensione del PES ON , (1) estensione OFF
ELABORAZIONE NUMERICA DEI SEGNALI DI RIFERIMENTO
61
14 Flag che viene posto a 1 se è esaurita la finestra temporale Wait Window
15 Flag che viene posto a 1 se è stata eseguita una operazione di adattamento
Tabella 4.2– Registro interno KOA
Alcune delle funzioni implementate come ad esempio il leaky (cft. [12]) sono
stati introdotte per tener conto di alcuni aspetti numerici di rilievo. Nel caso del leaky
algorithm si sostituisce l’ operazione
Con una del tipo
Dove il fattore γ ∈(0,1) in grado di conferire una perdita nell’ algoritmo di
aggiornamento in modo da evitare problemi numerici di tipo integrativo.
Si tenga presente che l’ implementazione dell’ algoritmo non è la migliore da
un punto di vista computazionale. La struttura sviluppata permette un uso più
maneggevole da un punto di vista sperimentale ma una volta trovata la
configurazione migliore il numero di istruzioni può essere considerevolmente ridotto.
Si elencano le strutture dati principali definite all’ interno dell’ algoritmo :
• NweightCost : Costante che imposta l’ ordine del filtro di adattamento
• Weights : Vettore contenente i coefficienti del filtro FIR. Weights(0)
è stato usato come Kff nel caso si imposti il valore NweightsCost ad 1.
• Weights_1 : vettore contente i parametri del filtro che si useranno nella
successiva iterazione
• AccPast : Vettore contenete i valori delle accelerazioni negli istanti di
campionamento precedenti
• Pa : Vettore contenente i valori ottenuti dal filtraggio del valore di
accelerazione con il filtro Gout.
• NMA_1 : numero di campioni meno 1 che entrano nella media mobile per
la determinazione dell’ innesco procedura di adattamento
• EstimateD : stima del disturbo causato da vibrazioni agente sul disco
)](ACC)[(2i)W(k,i)1,W(k ikGoutkPES −⋅+=+ µ )6.4(
)](ACC)[(2i)W(k,i)1,W(k ikGoutkPES −⋅+ =+ µγ )7.4(
CAPITOLO 4
62
• DebugFlag : variabile di utilità in fase di debug
• DF2 : seconda variabile di utilità di debug
• CODA_PES : coda per la memorizzazione di 800 campioni della
variabile PES. L’ istante di memorizzazione è impostabile attraverso il
registro R10 del contesto INIT_RB. La relazione tra questo registro è la
seguente trec= R10 * 800 * Tcamp. La precedente relazione nasce dal fatto
che prima di memorizzare gli 800 campioni definitivi la procedura carica
R10 meno uno insiemi di 800 campioni provvisori i quali vengono riscritti
finchè non si raggiunge gli 800 campioni dichiarati come definitivi .
• CODA_TR : questa coda contiene 800 campioni del dato di traccia,
mantiene i dati a partire dallo stesso istante della coda precedente
• CODA_VAR2A e CODA_VAR2B :Code ausiliare per memorizzare 800
campioni di eventuali altre variabili di interesse prese allo stesso istante
delle code precedenti
• PES_After :Coda per la memorizzazione dei 800 campioni PES in un
tempo successivo all’ esecuzione di eventuali adattamenti. Solitamente
l’ adattamento è stato fatto partire a ta= (R10+1) * 800 * Tcamp, mentre
questa coda memorizza i campioni dopo un tempo
tafter=ta+R7*800*Tcamp=(R10+R7+1)*800*Tcamp. Nel quale si fa riferimento
al valore impostato come contatore sul registro R7 dalla procedura Salva.
Si noti che se i valori contenuti nei registri R10 ed R7 sono eccessivamente
grandi si possono attendere anche tempi dell’ ordine di secondi / minuti per
effettuare il salvataggio.
• ACC_After : Come la precedente questa coda salva il dato
dell’ accelerazione angolare dopo il tempo tafter.
• AdGain_After : Come la precedente questa coda salva 800 campioni
di variabili di interesse generale sempre all’ istante tafter , in prevalenza è
stata usata nella memorizzazione dell’ evoluzione del guadagno adattativo.
ELABORAZIONE NUMERICA DEI SEGNALI DI RIFERIMENTO
63
4.4 ESTENSIONE DEL PES
Quando le sollecitazioni a cui è sottoposto il disco sono molto elevate si corre
il rischio di non poter più disporre di un corretto segnale PES. Si è constatato
sperimentalmente che se gli scuotimenti sono eccessivamente forti la testina può
uscire dalla traccia che si sta inseguendo provocando una alterazione del PES. In
questi casi accade che il segnale d’ errore non rappresenta più una informazione sullo
scostamento della testina dalla traccia in inseguimento quanto invece una
indicazione dello scostamento della testina dalla traccia adiacente. La situazione è
documentata dalla figura 4.7 seguente, nella quale si osserva che il PES sottoposto a
forti sollecitazioni presenta dei picchi che non sono tali da dare continuità alla forma
d’ onda.
Figura 4.7 – PES in elevata vibrazione
L’ informazione del PES è pertanto insufficiente per la determinazione della
posizione della testina. L’ informazione completa è rappresentata dalla coppia PES e
numero di traccia.
Da un’ analisi sperimentale si è constatato che il segnale PES in fase di track
following su una specifica traccia dà informazioni ‘corrette’ , riguardanti cioè la
traccia in esame, solo se il valore resta approssimativamente all’ interno del range
[-0.25 , 0.25 ] ossia quando il PES varia all’ interno del +25% e –25% dell’ ampiezza
di traccia. Superato questi limiti l’ FPGA Altera passa al DSP i valori dei burst per la
composizione del PES riferiti non alla traccia in inseguimento ma a quella
immediatamente adiacente.
0 0 . 0 1 0 . 0 2 0 . 0 3 0 . 0 4 0 . 0 5 0 . 0 6 0 . 0 7 0 . 0 8 0 .0 9-0 . 8
-0 . 6
-0 . 4
-0 . 2
0
0 .2
0 .4
0 .6
0 .8P E S s o lle c ita to a i 4 1 0 H z
Tim e [ s e c ]
Am
plit
ude
DS
P
CAPITOLO 4
64
Figura 4.8 – Rappresentazione del PES
Quando il PES rappresenta scostamenti riferiti a tracce adiacenti si possono
individuare valori entro [-0.75 , -0.5] per la traccia superiore e [0. 5 , 0.75] per la
traccia inferiore. In figura 4.8 è rappresentata schematicamente la situazione
esprimendo il PES in funzione dello sviluppo radiale.
Considerato che si dispone dell’ informazione della traccia alla quale è riferito
il PES si è prodotto un calcolo correttivo. L’ algoritmo che opera l’ estensione del PES
è semplice. Supponiamo che la traccia in inseguimento sia la 3000h .Se il dato
traccia è maggiore di uno rispetto al numero della traccia in inseguimento (ossia
3001h) e se il PES è negativo allora si aggiunge al PES il valore 1. Viceversa con
traccia inferiore di 1 rispetto alla traccia in inseguimento(2FFFh) e PES positivo si
sottrae 1. Con questo metodo sono rappresentati scostamenti che interessano anche le
Figura 4.9 – PES Esteso
0,75
0,5 0,25
PES
x
Traccia 3001 Traccia 2FFF Traccia 3000
0,75
0,5 0,25
PES
x
Traccia 3001 Traccia 2FFF Traccia 3000
ELABORAZIONE NUMERICA DEI SEGNALI DI RIFERIMENTO
65
tracce limitrofe alla traccia in fase di lettura/scrittura (figura 4.9) . Il valore d’ errore
quindi può sfruttare tutte le configurazioni (da -1 a +1) della variabile alla quale è
assegnato
Se lo scostamento è tale da essere più grande del campo di rappresentazione
per la variabile PES viene impostato a zero il valore contenuto nella variabile. In
questo modo l’ adattamento dei parametri del filtro non viene eseguito in
corrispondenza di eccessive sollecitazioni (confronta con formula 3.13).
Usando questo tipo di estensione il PES della figura 4.7 diviene quello di figura 4.10.
Figura 4.10 – PES esteso in elevata vibrazione
4.5 SEGNALE DI ACCELERAZIONE ANGOLARE
Il segnale di accelerazione angolare presenta alcuni inconvenienti che si
possono rilevare dannosi per la regolazione automatica dei parametri del filtro
adattativo.
Il segnale sebbene filtrato prima dell’ uscita dall’ accelerometro presenta ancora
un consistente rumore di fondo (figura 4.11).
Figura 4.11 – ACC in quiete
0 .0 1 0 . 0 2 0 . 0 3 0 . 0 4 0 . 0 5 0 .0 6 0 .0 7 0 .0 8 0 .0 9-0 .1
-0 .0 5
0
0 .0 5
0 .1
T im e [ s e c ]
DS
P A
mpl
itude
0 0 . 0 1 0 . 0 2 0 . 0 3 0 . 0 4 0 . 0 5 0 . 0 6 0 . 0 7 0 . 0 8 0 . 0 9-0 . 8
-0 . 6
-0 . 4
-0 . 2
0
0 . 2
0 . 4
0 . 6
0 . 8P E S e s te s o s o l le c i ta t o a i 4 1 0 H z
T im e [ s e c ]
Am
plitu
de D
SP
CAPITOLO 4
66
Dall’ analisi del diagramma della DFT del segnale (figura 4.12) si può
osservare che le componenti spettrali maggiori nel disturbo sono presenti nelle
frequenze che vanno dai [0 – 1.3 KHz] . Per ridurre il rumore sarebbe opportuno
l’ uso di filtri con frequenza di taglio ai circa 800Hz i quali però possono
introdurre sfasamenti del segnale troppo pesanti per una compensazione di tipo
statico o per filtri FIR di basso ordine.
Figura 4.12 – FFT del segnale ACC in quiete
Oltre al rumore di fondo il segnale di accelerazione è soggetto a errori di tipo
picco spurio. Nella figura 4.13 è rappresentato un esempio della situazione.
Figura 4.13 – Segnale di accelerazione angolare affetto da problemi di tipo
picco spurio
Questo tipo di errore crea seri problemi all’ algoritmo di aggiornamento dei
parametri. L’ aggiornamento dei parametri infatti viene eseguito sul valore
puntuale dell’ accelerazione, un picco spurio se elevato può in primo luogo
0 500 1000 1500 2000 2500 3000 3500 4000 45000
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8Spettro ACC
Freq - Hz
Mag
nitu
de [
V/H
z]
0 . 0 1 0 . 0 2 0 . 0 3 0 . 0 4 0 . 0 5 0 . 0 6 0 . 0 7 0 . 0 8 0 . 0 9
-0 . 0 8
-0 . 0 6
-0 . 0 4
-0 . 0 2
0
0 . 0 2
0 . 0 4
0 . 0 6
0 . 0 8
0 . 1
0 . 1 2
T im e [ s e c ]
DS
P A
mpl
itude
ELABORAZIONE NUMERICA DEI SEGNALI DI RIFERIMENTO
67
causare l’ attivazione dell’ adattamento, quindi successivamente può spostare
consistentemente la configurazione dei parametri.
Per rimuovere questo tipo di errore si può pensare di effettuare un controllo
sulla derivata del segnale e in caso di valori eccessivi eliminare il dato ritenuto
sbagliato. Questo metodo però comporta che non siano più rilevabili
sollecitazioni di tipo impulsivo da parte dell’ accelerometro limitandone di molto
la propria funzionalità. Un compromesso accettabile è quello di conservare
comunque il dato di accelerazione ma inibire la procedura di adattamento su quel
valore, questo d’ altro canto comporta una introduzioni di nuove variabili
nell’ algoritmo.
CAPITOLO 4
68
CAPITOLO 5RISULTATI SPERIMENTALI
5.1 FEED-FORWARD STATICO CON GUADAGNO
ADATTATIVO
Il primo tipo di compensazione presa in considerazione è un semplice feed-
forward statico. Si cerca cioè di adattare un guadagno attraverso il quale moltiplicare
il segnale di uscita dell’ accelerometro.
∧..∧θ⋅= ffKd
I risultati ottenuti dall’ implementazione del filtered-x LMS sono stati
confrontati con il guadagno statico tempo-invariante KffBest.
032.0=ffBestK
Tale guadagno è stato trovato in precedenza in altri lavori ([1]-[2]) in via
sperimentale facendo variare un trimer digitale in modo continuo e scegliendo il
valore ritenuto il migliore nella maggior parte della banda del sensore.
Per la valutazione dell’ effetto della compensazione è stata considerata la
funzione di sensitività, ossia la relazione che intercorre tra l’ errore PES ed il segnale
di accelerazione. Per ricavare tale funzione è stato usato il DSA al quale sono stati
CAPITOLO 5
70
passati nei due canali di ingresso rispettivamente ACC (segnale accelerometro) ed il
PES, quindi il sistema è stato sollecitato in modo swept sine, ossia allo shaker è stata
inviata una sinusoide modulata in frequenza a partire da frequenze basse sino ad
arrivare a frequenze più elevate. Il sistema in questo modo è stato sollecitato
istantaneamente da vibrazioni a singola armonica. Come si noterà anche nel seguito
la velocità con la quale viene modulata la frequenza, è fondamentale ai fini della
misura. L’ algoritmo, infatti, non può convergere istantaneamente al valore ottimale
ma deve invece esaurire un transitorio. Se la misura viene effettuata in modo troppo
rapido non viene dato il tempo all’ algoritmo di convergere. Questo problema sarà
tanto più sentito quanto più l’ ordine del filtro di compensazione sarà elevato.
In presenza di compensazione adattativa ci si aspetta che per ogni frequenza di
sollecitazione, l’ algoritmo di regolazione dei parametri sia in grado di trovare il
miglior valore possibile per il guadagno. In questi termini ci si aspetta che Kff sia
una funzione della frequenza di sollecitazione Kff(f).
I risultati ottenuti sono raffigurati in fig 5.1.
Figura 5.1 – Funzione di sensitività
Il sistema presenta due evidenti risonanze a frequenze attorno ai 42 e 53 Hz.
Queste risonanze sono dovute alla struttura su cui poggia il sistema, il tavolo infatti
presenta dei modi risonanti che vengono sollecitati dalle vibrazioni prodotte dallo
shaker. Le vibrazioni del tavolo possono essere facilmente percettibili appoggiando
una mano sul piano di lavoro.
500 550 600 650 700 750 800
-20
-10
0
10
20
30
Frequency [Hz ]
Mag
nitu
de
[dB
]
Funzione di Sensitività tra segnale accelerometro e PES
Non comprensatoKff BestKff Adattativo
101
102
103
-40
-30
-20
-10
0
10
20
30
Frequency [Hz ]
Mag
nitu
de
[dB
]
Funzione di Sensitività tra segnale accelerometro e PES
Non comprensatoKff BestKff Adattativo
RISULTATI SPERIMENTALI
71
Oltre a queste due risonanze è presente una ulteriore risonanza ai 410 Hz,
questa è invece dovuta alla meccanica dello shaker. In prossimità di questa frequenza
risonante si sente lo shaker produrre un rumore simile ad un fischio.
Come si può notare dal grafico nelle basse frequenze la compensazione
adattativa non riesce ad aggiornare il guadagno, questo è principalmente dovuto alla
difficoltà di rilevare la presenza di disturbi nel segnale PES (vedi figura 4.4), infatti
la componente nell’ errore dovuta alle vibrazioni esterne è nascosta dal rumore di
fondo del PES. Questo oltre a far diventare difficoltosa l’ innesco della procedura di
adattamento del parametro, crea dei problemi nel calcolo stesso del nuovo parametro
di guadagno.
In corrispondenza delle prime risonanze si osserva una difficoltà oggettiva del
metodo di feed-forward; infatti anche usando guadagni tempo-invarianti non è
possibile migliorare significativamente la compensazione.
Nel feed-forward adattativo le risonanze provocano una continua accensione
dell’ algoritmo di aggiornamento, dal momento che per ogni valore di guadagno
calcolato, la procedura non riscontra miglioramenti apprezzabili. Si è notato che in
corrispondenza delle prime due risonanze l’ algoritmo tende ad evolvere in verso
guadagni bassi e addirittura negativi. In via cautelativa si è deciso di saturare il
guadagno al di sopra di una certa soglia e si è deciso di impedire al guadagno di
assumere valori negativi.
Nel tracciamento del grafico 5.1a, superate le frequenze risonanti l’ adattamento
comincia a funzionare in circostanze meno critiche, si nota che il sistema comincia a
trarre beneficio dalla compensazione feed-forward. Il processo di adattamento non è
però istantaneo come si è osservato in precedenza la velocità di convergenza dipende
fortemente dal valore µ il quale non può essere grande a piacere. E’ necessario un
transitorio quindi affinché si raggiunga una situazione di regime.
Poco prima dei 200Hz l’ algoritmo riesce a regolare il guadagno ad un valore
opportuno, tale garantire le stesse prestazioni, che si ottengono con Kffbest.
Nelle frequenze successive ossia dai 200Hz ai 400Hz l’ algoritmo funziona in
modo corretto, continuando a eguagliare o migliorare lievemente la compensazione
fatta attraverso Kffbest.
La risonanza meccanica a 410 Hz ha lo stesso effetto delle precedenti risonanze, in
questo caso però si riscontra la tendenza dell’ algoritmo nell’ evolvere verso valori
elevati.
CAPITOLO 5
72
Si tenga presente che in questa frequenza i segnali PES e ACC crescono molto
rispetto ai loro valori tipici, riscontrabili al di fuori delle risonanze. In particolare si
deve porre estrema attenzione all’ andamento delle variabili di stato della
realizzazione Gout, le quali possono causare errori di overflow se l’ ingresso della
realizzazione non è opportunamente scalato.
Subito dopo il picco risonante si osserva un comportamento migliore nel
grafico da parte del guadagno adattativo rispetto al guadagno fisso. In questa regione
lo sfasamento dell’ uscita dell’ accelerometro è tale da rendere inefficace la
compensazione statica.
Per poter osservare in modo migliore il comportamento nelle alte frequenze è
stata ripetuta la prova esclusivamente nel campo di frequenze che vanno dai 500 agli
800 Hz. In questa regione non ci sono particolari risonanze, quanto piuttosto un
progressivo indebolimento del segnale di accelerazione che agli 800Hz ha la stessa
entità del segnale a riposo; si ritiene percui che questa frequenza sia quella limite
nella banda utile del sensore, come documentato anche nei data sheets del
dispositivo. In questa regione del grafico si osserva come il guadagno adattativo sia
in grado di abbassare il proprio valore sino a raggiungere il valori bassi o addirittura
nulli: in questa regione la compensazione statica non può più dare beneficio al
sistema a causa dell’ eccessivo sfasamento del segnale di accelerazione angolare.
Si è constatato, quindi, che se il sistema viene sollecitato ad una frequenza
all’ interno della banda [200Hz - 400Hz], l’ algoritmo riesce a regolare il guadagno
adattativo a valori tali da garantire una compensazione statica efficace.
Se dopo una fase di sollecitazione in questa banda si riesamina la funzione di
sensitività si può osservare che la funzione di sensitività migliora anche nelle basse
frequenze.
Si segnala pertanto la capacità del sistema di compensazione adattativa di
trattenere valori opportuni del guadagno nelle basse frequenze frutto di precedenti
sollecitazioni. Nella figura 4.2 si mostra la funzione di sensitività del sistema con
sollecitazione preliminare ai 200Hz.
RISULTATI SPERIMENTALI
73
Figura 5.2 – Funzione sensitività del guadagno adattativo con fase di
sollecitazione preliminare ai 200Hz
Come ulteriore misura per la valutazione del metodo di compensazione sono
stati considerati gli spettri di potenza del segnale PES.
Nelle figure 5.3 che seguono vengono confrontati gli spetti di potenza del PES
che si ottiene in assenza di compensazione, in compensazione adattativa e in
compensazione con Kff Best.
Nella figura 5.3 b) si può notare lo spettro di potenza del sistema sollecitato
con una sinusoide a 50 Hz In questi spettri di potenza si può notare che a 50 Hz
l’ effetto della compensazione a guadagno adattativo è pressoché identico a quello
ottenuto in assenza di compensazione con un vistoso picco ai 50 Hz. Questo picco
sarebbe dimezzato se venisse usata una compensazione con Kff Best. Questa frequenza
ricade infatti all’ interno della banda di basse frequenze nella quale si sono
manifestati problemi nella procedura di soglia per l’ innesco dell’ algoritmo di
aggiornamento dei parametri.
Alle sollecitazioni sinusoidali di frequenza 100 Hz ( figura 5.3 c) ) si ottiene
un miglioramento nello spettro di potenza del PES attraverso compensazione
adattativa ma non della stessa entità del miglioramento ottenuta con Kff Best. Si noti
però che l’ uso della compensazione costante (Kff Best) riduce il picco ai 100 Hz però
peggiora lo spettro del PES alle alte frequenze. Con la compensazione adattativa
come si vedrà le componenti armoniche alle alte frequenze non vengono mai
eccessivamente peggiorate. Questo si traduce nel miglioramento del fattore 3σ
(valore entro cui stanno statisticamente 99.9% dei campioni) del segnale PES.
Alle vibrazioni a 200 Hz (figura 5.3 d) ) la compensazione adattativa agisce già
meglio della compensazione a valore costante. Il picco ai 200 Hz è ridotto allo stesso
101
102
103
-40
-30
-20
-10
0
10
20
30
Frequency [Hz ]
Mag
nitu
de
[dB
]
Funzione di Sensitività tra segnale accelerometro e PES
Non comprensatoKff BestKff Adattativo
CAPITOLO 5
74
Figura 5.3 – Spettri di potenza PES
Un altro aspetto di interesse nell’ uso del metodo di compensazione di feed-
forward è osservare come peggiora il comportamento del sistema con la
101
102
103
-60
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenz a del PES in modalità IDLE
Non comprensatoKff BestKff Adattativo
101
102
103
-60
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenza del PES sollecitato ai 50Hz
Non comprensatoKff BestKff Adattativo
101
102
103
-60
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenza del PES sollecitato ai 100Hz
Non comprensatoKff BestKff Adattativo
101
102
103
-60
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenza del PES sollecitato ai 200Hz
Non comprensatoKff BestKff Adattativo
101
102
103
-60
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenza del PES sollecitato ai 500Hz
Non comprensatoKff BestKff Adattativo
102.4
102.5
102 .6
102.7
102.8
-55
-50
-45
-40
-35
-30
-25
-20
-15
-10
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenza del PES sollecitato ai 500Hz
Non comprensatoKff BestKff Adattativo
a) b)
c) d)
e) f)
RISULTATI SPERIMENTALI
75
compensazione attivata senza che agisca nessun disturbo (modalità ‘IDLE’ ). In
questo caso il segnale che viene mandato in feed-forward è il rumore
dell’ accelerometro moltiplicato per il guadagno di feed-forward, si va quindi a
‘sporcare’ il segnale di comando del VCM precedentemente calcolato. Si ricorda che
il guadagno adattativo può variare significativamente a seconda delle frequenze di
sollecitazione alla quale il sistema è stato sottoposto. Quando una sollecitazione
cessa il guadagno adattativo viene mantenuto inalterato sino a quando non si
ripresentano le condizioni per aggiornare nuovamente il parametro. Nei confronti dei
spettri del PES in modalità ‘IDLE’ si è considerato per il metodo adattativo lo
spettro generato da un guadagno adattativo ottenuto da un sistema precedentemente
sollecitato con una sinusoide a 200 Hz. Questo perché si ritiene che in prossimità dei
200 Hz l’ algoritmo di aggiornamento funzioni correttamente, come già osservato, in
tale frequenza non sono presenti problemi quali risonanze e neppure problemi
sull’ individuazione del disturbo. Come si può vedere lo spettro di potenza del PES
risulta mediamente migliore con guadagno adattativo.
Si può notare inoltre che in tutti gli spettri del PES, misurati in assenza di
sollecitazione esterne, è sempre presente un picco ai 90 Hz e suoi multipli. Questo
componente di disturbo è generata dal moto rotazionale dei dischi, che come in
precedenza indicato ha frequenza pari a 90 Hz. Come si può notare dai grafici questa
componente di disturbo non viene mai compensata correttamente.
In definitiva l’ adattamento del guadagno risulta corretta dai 200 Hz ai 800 Hz,
mentre la compensazione adattativa dà beneficio sino ai 400Hz (come con Kffbest).
L’ implementazione di questo metodo di soppressione delle vibrazioni richiede
l’ introduzione di poche righe di codice nell’ algoritmo di controllo.
Come limitazione rimangono diversi aspetti sull’ individuazione nelle basse
frequenze di disturbi a partire dal segnale PES e la limitata velocità di convergenza.
Purtroppo se sul disco sono presenti disturbi generati da cause diverse dalla
semplice accelerazione angolare o comunque da disturbi non misurabili (anche a
causa di eccessivo sfasamento) direttamente dall’ accelerometro si possono
riscontrare problemi di convergenza nell’ aggiornamento del guadagno. Una
informazione più completa sui disturbi agenti sul disco sarebbe costituita dalla
conoscenza oltre dell’ accelerazione rotazionale anche delle accelerazioni lineari.
CAPITOLO 5
76
5.2 FEED-FORWARD DINAMICO CON FILTRO
ADATTATIVO
Successivamente lo studio si è rivolto all’ analisi di compensazioni feed-
forward adattativi di tipo dinamico. La compensazione è ottenuta dal segnale di
accelerazione filtrato dal filtro adattativo Gff.
∧..∧
⋅= θffGd
Come già detto il filtro Gff è un filtro FIR di ordine prestabilito.
Nella seguente figura (5.4) si mostra l’ effetto della compensazione dinamica
adattativa al variare dell’ ordine del filtro Gff, sul segnale PES.
Figura 5.4 – Andamenti del PES con compensazione dinamica di vario
ordine
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.10
0.1
Non
Com
pens
ato PES in sollecitazione ai 200 Hz
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.10
0.1
Kff
ad.
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.10
0.1
Gff
10°
ord
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.10
0.1
Gff
20°
ord
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.10
0.1
Gff
30°
ord
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.10
0.1
Gff
39°
ord
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09
-0.10
0.1
IIR 6
°
Time [Sec]
RISULTATI SPERIMENTALI
77
Come si può notare all’ aumentare dell’ ordine si riscontra un progressivo
miglioramento del PES. Questo miglioramento può essere quantificato nei valori
dell’ errore quadratico medio (stimato) e del parametro 3σ calcolati su 800 campioni
dei vari segnali PES considerati nella figura 5.4.
I dati sono riassunti nella tabella 5.1.
Tipo di compensazione Errore Quadratico Medio su 800
campioni (*103)3σσσσ
Assenza 1,87 0,129
Costante Adattativa 1,17 0,101
FIR 10° ord. Adattativo 0,94 0,090
FIR 20° ord. Adattativo 0,78 0,082
FIR 30° ord. Adattativo 0,72 0,079
FIR 39° ord. Adattativo 0,74 0,080
IIR 6° ord. 3,11 0,167
Errore Quadratico Medio su 800
campioni (*10-3)3σσσσ
Sistema in quiete e senza
compensazioni attivate
0,67 0,076
Tabella 5.1 – a) Valori caratteristici del PES in sistema sollecitato ai 200Hz
– b) Valori caratteristici del PES in condizione di quiete
Come si può notare, il miglioramento è progressivo sino alle compensazioni
tramite filtro FIR del 30° mentre non si osservano miglioramenti sostanziali per filtri
di ordine superiore . Sempre nella figura 5.4 è riportato l’ andamento del segnale
PES ottenuto mediante una compensazione attraverso un filtro IIR del 6° ordine a
parametri fissi. Tale filtro è stato calcolato in lavori precedenti (cfr. [1]-[2])
attraverso procedure di identificazione sul disco in esame ed è stato ritenuto il
miglior risultato ottenuto. La sua f.d.t. è la seguente :
zzzzzzzzzzzz
zH IIR 623456
23456
10557,30298,01137,04537,06589,00178,01234,02167,02987,00468,10871,04923,1
)( −⋅−+−+−+++−−+= )1.5(
a)
b)
CAPITOLO 5
78
Il filtro all’ aumentare dell’ ordine si è dimostrato meno robusto nella procedura
di aggiornamento dei parametri, è stato pertanto ridotto l’ adaptation gain rispetto ai
valori usati nella compensazione statica (si usava 2µ = 0.0156).
Come fatto per la compensazione statica si è valutato la funzione di sensitività
tra accelerazione angolare e PES. Le prove di compensazione adattativa sono state
eseguite considerando un filtro FIR del 39° ordine. Le prestazioni del filtro sono state
confrontate in particolare con quelle del filtro IIR del 6° ordine precedentemente
indicato. Nelle figure 5.5 vengono mostrati i risultati ottenuti.
Figure 5.5 – Funzioni di sensitività FIR adattativo del 39° ordine
Tutte le misure effettuate sono largamente dipendenti dalla durata stessa della
misura. Come osservato anche in precedenza nella modalità swept sine viene
mandato al comando dello shaker una sinusoide modulata in frequenza. Se la
101
102
103
-40
-30
-20
-10
0
10
20
30 2 µµµµ = 4.39 10-3
Frequency [Hz ]
Mag
nitu
de
[dB
]
Funzione di Sensitività tra segnale accelerometro e PES
Non comprensatoKff BestIIR 6° ord.FIR 39° ord. Adattativo
101
102
103
-40
-30
-20
-10
0
10
20
30 2 µµµµ = 7.81 10-3
Frequency [Hz ]
Mag
nitu
de
[dB
]
Funzione di Sensitività tra segnale accelerometro e PES
Non comprensatoKff BestIIR 6° ord.FIR 39° ord. Adattativo
101
102
103
-40
-30
-20
-10
0
10
20
30 2 µµµµ = 8.30 10-3
Frequency [Hz ]
Mag
nitu
de
[dB
]
Funzione di Sensitività tra segnale accelerometro e PES
Non comprensatoKff BestIIR 6° ord.FIR 39° ord. Adattativo
500 550 600 650 700 750 800
-20
-10
0
10
20
30
Frequency [Hz ]
Mag
nitu
de
[dB
]
Funzione di Sensitività tra segnale accelerometro e PES
2 µµµµ = 4.39 10-3Non comprensatoKff BestIIR 6° ord.FIR 39° ord. Adattativo
a) b)
c) d)
RISULTATI SPERIMENTALI
79
persistenza della sinusoide su di una singola frequenza (o frequenze tra loro vicine)
non è sufficientemente lunga l’ algoritmo di adattamento non ha il tempo di
convergere alla soluzione migliore.
Lo strumento di misura non offre la possibilità di regolare manualmente la
velocità con la quale si esegue la modulazione di frequenza nel metodo swept sine.
L’ unico metodo per modificare la velocità di misura è stato quello di aumentare il
numero di punti che l’ analizzatore di spettro deve tracciare per comporre il grafico.
Quindi si sono eseguite misure con molti punti e quindi più lente, in modo da
dare più tempo all’ algoritmo per convergere alla soluzione.
Nella figura 5.5 a) b) c) sono riportate le varie funzioni di sensitività al variare
del fattore di apprendimento 2µ.. Tutte le funzioni di sensitività raffigurate,
presentano un andamento alle basse frequenze che peggiora lievemente le prestazioni
del sistema in assenza di compensazione. Come già discusso in questo campo di
frequenze è estremamente difficile per l’ algoritmo osservare l’ effetto delle vibrazioni
sul PES. Molto probabilmente in queste frequenze l’ algoritmo di aggiornamento dei
parametri può essere innescato in modo involontario da una sequenza del segnale
PES ad alto contenuto rumoroso.
Come è possibile osservare nella figura 5.5 a) superata la seconda frequenza
risonante l’ algoritmo riesce ad adattarsi su parametri opportuni tanto da raggiungere
le stesse prestazioni del filtro IIR del 6 ordine. Si può osservare sempre nelle
frequenze immediatamente superiori a quelle risonanti come la velocità di
convergenza dell’ algoritmo aumenti all’ aumentare del fattore 2µ. Con 2µ = 4.39 10-3
il filtro adattato raggiunge l’ andamento del filtro IIR ai 200 Hz, con 2µ = 7.81 10-3
accade ancora ai 200Hz ma con andamento mediamente migliore ed infine con 2µ =
8.30 10-3 ai 100Hz.Purtroppo non si può aumentare arbitrariamente il valore 2µ pena
l’ instabilità dell’ algoritmo di aggiornamento dei parametri.
Per frequenze superiori a 250 Hz si nota inoltre un miglioramento delle
prestazioni rispetto al filtro a parametri fissi.
Purtroppo al passaggio nella frequenza risonante ai circa 410 Hz l’ algoritmo di
adattamento subisce variazioni tali da rendere instabile il processo di aggiornamento
dei parametri a seguito di una eccessivo aumento del valore di accelerazione in
concomitanza all’ aumento del PES . E’ stato pertanto disattivato manualmente il
processo di adattamento in corrispondenza di tali frequenze. La disattivazione
CAPITOLO 5
80
dell’ algoritmo sarebbe potuta essere eseguita in modo automatico in via software con
un rilevamento di soglia del segnale di accelerazione ma questo avrebbe impedito
all’ algoritmo di lavorare correttamente per le frequenze non soggette a risonanze.
Infatti nelle frequenze non risonanti l’ algoritmo di aggiornamento rimane stabile
sebbene il valore di accelerazione aumenti di molto. In queste frequenze l’ algoritmo
di aggiornamento dei parametri riesce a mantenere la stabilità probabilmente per il
fatto che il PES compensato rimane contenuto, come viceversa non accade per le
frequenze risonanti.
Per le frequenze immediatamente superiori alla risonanza cioè dai 500Hz gli
800Hz si osserva ( Figura 5.5 d) ) che il filtro adattativo riesce a fornire una
compensazione efficiente sino a circa ai 600Hz. Superata questa frequenza il filtro
non peggiora rispetto all’ andamento che si otterrebbe in assenza di compensazione.
Nelle alte frequenze ( oltre 500Hz ) si è notato un comportamento più robusto in
presenza di valori 2µ bassi.
Nell’ analisi dello spettro di potenza del PES (figura 5.6) si può notare che per
vibrazioni ai 50 Hz non c’ è alcuna compensazione da parte del filtro FIR, mentre il
filtro IIR opera in quel campo già una consistente attenuazione della principale
armonica rumorosa. Alle sollecitazioni sinusoidali a 100 Hz si nota già nello spettro
del PES una consistente attenuazione da parte del filtro adattativo, il filtro IIR opera
ancora una migliore compensazione dell’ armonica principale del disturbo ma alle
alte frequenze l’ IIR è tale da aumenta il contenuto spettrale del PES mentre il FIR
adattativo lo lascia circa inalterato. Ai 200 Hz si può già osservare una migliore
compensazione da parte del FIR rispetto all’ IIR su tutte le frequenze che vanno dai
180 agli 800 Hz.
Alle sollecitazioni sinusoidali a 500 Hz il filtro adattativo si comporta bene
tanto da cancellare la componente spettrale a 500Hz del PES e mantenere limitata
tutta la composizione spettrale del segnale, alle stesse vibrazioni il filtro IIR presenta
un ridotta capacità di attenuazione dell’ armonica principale e un aumento di tutto il
contenuto spettrale del PES.
In modalità ‘IDLE’ si osserva ancora un abbassamento del contenuto spettrale
del PES in compensazione adattativa (filtro adattato a vibrazioni 200Hz) rispetto alla
compensazione a parametri fissi.
RISULTATI SPERIMENTALI
81
Figure 5.6 – Spettri di potenza del segnale PES sottoposto a diversi regimi
di sollecitazioni esterne
101
102
103
-60
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenz a del PES in modalità IDLE
Non comprensa toCompensato con IIR 6° ord.Compensato con FIR 39° ord. adatta tivo (200Hz)
101
102
103
-60
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenza del PES sollecitato ai 50Hz
Non comprensa toCompensato con IIR 6° ord.Compensato con FIR 39° ord. adatta tivo
101
102
103
-60
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenza del PES sollecitato ai 100Hz
Non comprensa toCompensato con IIR 6° ord.Compensato con FIR 39° ord. adatta tivo
101
102
103
-60
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenza del PES sollecitato ai 200Hz
Non comprensa toCompensato con IIR 6° ord.Compensato con FIR 39° ord. adatta tivo
101
102
103
-60
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenza del PES sollecitato ai 500Hz
Non comprensa toCompensato con IIR 6° ord.Compensato con FIR 39° ord. adatta tivo
102 .3
102.5
102.7
-50
-40
-30
-20
-10
0
Frequency [Hz ]
Po
we
r [V
2/H
z]
Spettro di potenz a del PES sollecitato ai 500Hz: dettaglio
Non comprensa toCompensato con IIR 6° ord.Compensato con FIR 39° ord. adatta tivo
a) b)
c) d)
e) f)
CAPITOLO 5
82
Ulteriori prove sono state condotte per cercare di risolvere i problemi dovuti
all’ instabilità dell’ algoritmo di adattamento in corrispondenza delle frequenze
risonanti e alla velocità di misura del metodo swept sine. Si è quindi pensato, di
disabilitare la procedura di aggiornamento dei parametri del filtro dopo una
sufficientemente lunga fase apprendimento su vibrazioni a frequenza fissa.
In questo modo si vuole dare il tempo all’ algoritmo di convergere alla
soluzione migliore e con l’ algoritmo di aggiornamento disabilitato si esclude la
possibilità di instabilità.
E’ stato in questo modo analizzato il comportamento di filtri formati a partire
da sollecitazioni a singola armonica. I risultati prodotti dall’ analisi della funzione di
sensitività sono riprodotti in figura 5.7.
Le funzioni sensitività mostrano chiaramente che il filtro adattativo regola i
propri parametri allo solo scopo di cancellare la componente armonica di disturbo, a
scapito però delle altre frequenze non rumorose. Nei grafici di figura 5.7 si notano
regioni nelle quali la compensazione peggiora la situazione che si ha in assenza di
compensazioni
Figure 5.7 – Funzioni di sensitività FIR 39° ordine adattativo bloccato
dopo apprendimento con rumore sinusoidale
Un ulteriore tentativo è stato condotto sostituendo la fase di apprendimento a
singola sinusoide con una fase di apprendimento su sollecitazioni in rumore bianco.
Le funzioni di sensitività prodotta da questo tipo di filtro è rappresentata nella figura
5.8 .
101
102
103
-40
-30
-20
-10
0
10
20
30
Frequency [Hz ]
Po
wer
[V
2/H
z]
Funzione di Sensitività tra segnale accelerometro e PES
Non comprensa toKff BestIIR 6° ord.FIR 39° ord. con apprendim ento sinusoida le a i 100Hz
101
102
103
-40
-30
-20
-10
0
10
20
30
Frequency [Hz ]
Po
wer
[V
2/H
z]
Funzione di Sensitività tra segnale accelerometro e PES
Non comprensa toKff BestIIR 6° ord.FIR 39° ord. con apprendim ento sinusoida le a i 200Hz
RISULTATI SPERIMENTALI
83
Figure 5.8 – Funzioni di sensitività FIR 39° ordine adattativo bloccato
dopo apprendimento con rumore bianco
In questo caso non si è osservato un miglioramento della compensazione
prodotta, l’ andamento dei figura 5.8 è simile al comportamento che si ottiene con
sistema sollecitato a singola sinusoide a frequenza ai 400 Hz.
Dopo aver analizzato questo tipo di risposta si è cercato di identificare la
risposta in frequenza tra il riferimento di tensione dello shaker e il segnale
dell’ accelerometro. Ossia la seguente :
Figura 5.9 – Schema di principio per l’identificazione della risposta in
frequenza Shaker-RAC
R A C S H K
C H 1 C H 2 S O U R C E
H P D S A 3 5 6 6 5 A
3 ,5 v
θθθθ
.. ^
θθθθ
..
R e f
101
102
103
-40
-30
-20
-10
0
10
20
30
Frequency [Hz ]
Po
we
r [V
2/H
z]
Funzione di Sensitività tra segnale accelerometro e PES
Non comprensa toKff BestIIR 6° ord.FIR 39° ord. con apprendim ento in rumore bianco
CAPITOLO 5
84
L’ identificazione ha fornito il risultato di figura 5.10. Dai diagrammi di Bode
appare evidente la presenza della risonanza ai 410 Hz , nella quale il segnale di
accelerazione angolare risulta quasi 10 volte più grande del valore prodotto nella
banda utile, infine si può notare l’ effetto di un modo risonante proprio del tavolo nel
picco ai 42 Hz .
Figura 5.10 – Diagrammi di bode f.d.t. SHK-RAC
Il rumore bianco in ingresso dalla serie shaker-RAC esce fortemente colorato
come si vede chiaramente in figura 5.11, nella quale è rappresentato un segnale di
accelerazione del sistema sollecitato con sinusoide a 400Hz in confronto con il
segnale di accelerazione del sistema sollecitato con rumore bianco.
Questo quindi spiega perché usando rumore bianco l’ algoritmo ha prodotto una
risposta simile al filtro che si otterrebbe sollecitando il sistema con rumore
sinusoidale ai 400Hz.
1 01
1 02
1 03
-8 0
-6 0
-4 0
-2 0
0
F re q ue n c y [H z ]
Mag
nitu
de [
dB]
f.d .t. ing re s s o s ha k e r - us c i ta a c c e le ro m e tro
1 01
1 02
1 03
-6 0 0
-4 0 0
-2 0 0
0
2 0 0
F re q ue n c y [H z ]
Pha
se [
deg]
RISULTATI SPERIMENTALI
85
Figura 5.11 - Confronto tra segnali di accelerazione angolare
Per poter osservare quale sia il comportamento del filtro con fase preliminare
in rumore bianco è necessario eliminare la risonanza presente nel sistema meccanico.
Sono stati fatti a tal proposito diversi tentativi.
Il primo tentativo è stato quello di cambiare posizione dello shaker, il quale è
stato adagiato su di un lato ma questo non ha portato nessun miglioramento. Si è con
questo potuto escludere che la causa della risonanza fosse dovuta a modi torsionali
della struttura ad “ L” dello shaker.
Un secondo tentativo è stato quello di sostituire il motore dello shaker. Si è
passati quindi ad un motore trifase brushless, nella speranza che le eventuali
risonanze meccaniche tipiche del motore ricadessero all’ esterno della banda del
sensore RAC.
Figura 5.12 – Cambio Motore shaker
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09-0.2
-0.1
0
0.1
0.2
AC
C a
i 400
Hz
Confronto tra segnali di accelerazione angolare (in ampiezza variabile DSP)
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09-0.1
-0.05
0
0.05
0.1
AC
C in
WN
Time [sec]
CAPITOLO 5
86
Il nuovo motore è stato comandato in catena aperta attraverso lo stadio
amplificatore di potenza usato con il motore precedente. A tal fine si è realizzata la
semplice interfaccia elettronica per comandare gli avvolgimenti del motore in modo
da produrre un effetto di shaking. Nella quale i diodi di potenza df1 e df2 servono per
generare due opposte semionde mentre i diodi dp1 e dp2 sono di protezione per
l’ amplificatore di potenza
Figura 5.13 – Elettronica di comando motore brushless
Dall’ analisi della f.d.t. (figura 5.14) non si sono constatati miglioramenti, anzi
si è riscontrata la presenza di una risonanza simile a quella del sistema precedente in
una frequenza più bassa ( 250Hz ).
Figura 5.14 – Diagrammi di Bode del sistema a motore brushless
+
-
+ Vcc
- Vcc
Dp1
Dp2
Df2
Df1
��
��
��
REF
101
102
103
-80
-60
-40
-20
0
Frequency [Hz]
Mag
nitu
de [
dB]
f.d.t. ingresso shaker - uscita accelerometro
101
102
103
-200
-100
0
100
200
Frequency [Hz]
Pha
se [
deg]
RISULTATI SPERIMENTALI
87
Dopo essere tornati al sistema originario è stato effettuato un ulteriore
tentativo. Sono stati rinforzati i supporti che fissano il disco sul piatto. Questo per
escludere che le vibrazioni ad alte frequenze potessero innescare vibrazioni sui
supporti stessi
Figura 5.15 – Cambio supporti
Nella risposta in frequenza di figura 5.16 si può osservare che non ci sono stati
sostanziali miglioramenti rispetto alla situazione originaria figura 5.10. La risposta in
frequenza risulta mediamente più bassa ma la risonanza non è stata eliminata.
Figura 5.16 – Diagrammi di Bode del sistema con supporti rinforzati
101
102
103
-60
-40
-20
0
Frequency [Hz]
Mag
nitu
de [
dB]
f.d.t. ingresso shaker - uscita accelerometro
101
102
103
-600
-400
-200
0
200
Frequency [Hz]
Pha
se [
deg]
CAPITOLO 5
88
Per valutare in modo più approfondito quindi le prestazione del filtro adattativo
si è pensato di costruire un grafico per punti, ottenuti dalla funzione sensitività di
filtri adattati su singole frequenze. Il filtro subisce una fase di apprendimento
sufficientemente lunga per assicurarsi la convergenza dei parametri alla soluzione,
consecutivamente viene inibita la possibilità di riaggiornare i parametri. Sui filtri
così generati vengono misurate la funzioni di sensitività. Si ottengono in questa
maniera delle funzioni di sensitività dello stesso tipo di quelle illustrato in figura 5.7.
Da queste funzioni di sensitività si raccolgono i valori in corrispondenza alla
frequenza alla quale è stato effettuato l’ apprendimento.
Il grafico di figura 5.17 può anche essere considerato come la funzione di
sensitività di un filtro adattativo a velocità di apprendimento molto elevata.
Tramite il procedimento adoperato si è quindi reso la misura indipendente dal
tempo entro il quale viene eseguita.
Il risultato è mostrato per le frequenze che vanno dai 60 ai 750 Hz.
Il grafico mostra che l’ andamento della funzione di sensitività può essere
considerevolmente ridotto con l’ uso del metodo adattativo. A partire dai 100 Hz si
eguaglia il comportamento del filtro IIR. Prima dei 200Hz il filtro adattato migliora
la funzione di sensitività dell’ IIR e in alcune frequenze successive il miglioramento
può arrivare sino ai 20dB. La compensazione risulta efficace sino ai 650 Hz.
Figura 5.17 – Funzione di sensitività di filtri adattati a singola armonica
60 70 80 90 100 200 300 400 500 600 700 800-40
-30
-20
-10
0
10
20
30
Frequency [Hz]
Ma
gn
itu
de
[d
B]
Funz ione di Sensitività tra segnale accelerometro e PES
Non comprensatoKff BestIIR 6° ord.FIR 39° ord. adattato su singola armonica
RISULTATI SPERIMENTALI
89
5.3 CONCLUSIONI E SVILUPPI FUTURI
Sono state provate varie soluzioni in diverse configurazioni per la
compensazione adattativa mediante algoritmo filtered-x LMS.
La compensazione mediante guadagno statico se da un lato ha mostrato
capacità di sintonizzazione al miglior guadagno possibile nelle frequenze [200 Hz –
800Hz] dall’ altro ha esibito una forte dipendenza dal PES. Se questo parametro è
piccolo l’ algoritmo non si adatta, seppur esiste una configurazione del guadagno
migliore rispetto a quella in uso. E’ comunque vero che se il segnale d’ errore è
contenuto non è indispensabile una modifica del parametro.
Si segnala che l’ implementazione dell’ algoritmo per l’ aggiornamento del
guadagno non richiede molte istruzioni. Sono stati proposti in letteratura anche altri
lavori per la regolazione del guadagno con tecnica LMS che non fanno uso del filtro
Gout (cft [9]), con una ulteriore riduzione delle istruzioni. Questo tipo di soluzione è
stata provata anche nel contesto di questo lavoro ed il risultato è stato simile a quello
ottenuto con tecnica FXLMS.
Con la compensazione di tipo dinamico il numero di istruzioni in esecuzione
aumenta sensibilmente all’ aumentare dell’ ordine del filtro FIR, che come detto deve
avere un grado elevato per ottenere effetti paragonabili ad un IIR. Si è rilevato
comunque che gradi eccessivi, oltre cioè ad un certo limite, del filtro non comportano
miglioramenti. Con ordini elevati problemi numerici diventano più consistenti.
La stabilità dell’ algoritmo di adattamento rimane fortemente dipendente dal
valore che può assumere il dato di accelerazione come è descritto anche dal vincolo
di stabilità 3.15 per l’ adaptation gain.
max
0λ
2<µ<
Nella quale si ricorda che λmax è l’ autovalore massimo della matrice di
autocorrelazione del dato di accelerazione angolare.
Come accade per le prove effettuate con compensazione sempre abilitata in
corrispondenza di sollecitazioni di elevata entità, come quelle prodotte da risonanze
l’ algoritmo può non convergere . In genere , per disturbi più lievi, l’ algoritmo ha
CAPITOLO 5
90
mostrato la propria capacità di sintonizzazione dei parametri riuscendo al di fuori
delle basse frequenze a riprodurre l’ andamento del filtro digitale ottenuto in [1] e [2].
Per le frequenze contenute nei [250 Hz-650 Hz] eccezion fatta per la frequenza
risonante dei 410Hz il filtro prodotto è risultato essere anche migliore rispetto a
quello a parametri fissi.
Un altro dato interessante è la composizione spettrale del PES in
compensazione adattativa che è tale da garantire quasi sempre un valore del
parametro 3σ basso. Questo si traduce con il fatto che la compensazione oltre a
ridurre le armoniche nello spettro del PES prodotte dal disturbo è tale da non
‘sporcare’ eccessivamente tutte le altre non interessate direttamente dal disturbo
agente.
Lo studio sulla formazione di un filtro adattativo dopo una fase preliminare di
apprendimento a rumore bianco, purtroppo non ha avuto seguito per problemi
intrinseci dell’ attrezzatura a disposizione.
Sicuramente nello sviluppo futuro di questo lavoro sarebbe interessante capire
se una sollecitazione con rumore composto da più armoniche o lo stesso rumore
bianco siano tali da produrre un filtro che una volta bloccato sia in grado di
compensare una vasta gamma di frequenze e ripetere o magari migliorare le
prestazione del filtro IIR.
Se questo risultasse vero si disporrebbe di un metodo per trovare un filtro ‘ad
hoc’ per ogni disco in sollecitazione.
Come ulteriori sviluppi futuri si possono indicare la ricerca per ottenere
algoritmi con µ variabile.
Per la rilevazione di vibrazioni in bassa frequenza si potrebbe inoltre ricorrere a
filtri che amplificano le componenti a bassa frequenza quindi innescare tramite soglie
la procedura di adattamento, cercando nel contempo di trovare un filtro tale da
ripulire il segnale di accelerazione e del PES da rumori al di fuori della banda
dell’ accelerometro. Tutto questo è stato provato con scarsi risultati ma non si esclude
che uno studio più accurato possa portare a qualche miglioramento.
Altri sviluppi potrebbero arrivare nel caso fosse a disposizione dei sensori
meno rumorosi e a banda più elevata. L’ uso inoltre della compensazione potrebbe
essere arricchito del dato sulle accelerazioni lineari.
CONFIGURAZIONE REGISTRI SUPER 10
93
APPENDICE A
CONFIGURAZIONE DEI REGISTRI SUPER 10
Nella programmazione del microcontrollore Super 10 sono attivate numerose
impostazione di registri, necessarie per garantire la corretta definizione e
temporizzazione dei segnali. Qui di seguito si riportano le configurazioni adottate e si
commenta brevemente il significato delle scelte fatte.
REGISTRO CPUCON1
VECSC Scaling factor of Vector Table
Imposta lo spazio tra due vettori successivi asll’ interno ella
Vector Table, che contiene gli indirizzi delle procedure
associate agli interrupt esterni.
(00) : 2 word , (01) : 4 word , (10) : 8 word , (11) : 16 word
WDTCTL Configuration of Watchdog Timer : (0) disabilita le funzioni
di configurazione del timer
SGTDIS Segmentation Disable/Enable control
Impostato a (0) abilita l’ accesso a tutti i segmenti di memoria,
altrimenti si accederebbe solo al seg 0
INTSCXT Enable Interruptibility of Switch Context : (0) OFF (1) ON
BP Enable Brench Prediction unit : (0) OFF (1) ON
ZCJ Enable Zero Cycle function : (0) OFF (1) ON
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R VECSC
WDTCTL
SGT DIS
INT SCXT BP ZCJ
0 0 0 0 hex
bin
APPENDICE A
94
REGISTRO PSW :
ILVL CPU priority level
Riporta il valore corrente del livello di priorità della CPU;
una eventuale richiesta di interrupt viene eseguito solo se ha
livello superiore a questo.
IEN Interrupt Enable control bit
(0) Interrupt e PEC OFF , (1) ON
BANK Register Bank selection
Se posto a (00) i 16 registri ineterni sono definiti come
globalmente accesibili, altrimenti con altre configurazioni si
possono impostare dei banchi locali di registri.
USR1,2 Flags disponibili all’ utente
E End of table flag
Impostato a (1) quando un operando di una istruzione della
ALU termina in 8000h o 80h
Z Zero flag
Impostato ad (1) se l’ ALU dà come risultato un valore nullo
V Overflow Flag
Impostato ad (1) se nell’ ALU è stato provocato un overflow
C Carry Flag
Impostato ad (1) quando il risultato di un’ operazione
nell’ ALU comporta il riporto di bit
N Negative Flag
Impostato ad (1) quando il risultato di un’ operazione
nell’ ALU comporta un valore negativo
In questo registro sono configurabili solo i campi IEN, BANK, USR1,2 mentre
gli atri campi sono a sola lettura e identificano lo stato del processore. In particolare i
flags E,Z,V,C ed N possono essere combinati per ottenere strutture if… then nella
programmazione assembly.
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 E Z V C N
0 0 0 0 hex
bin
USR 1
USR 2 BANK R IEN ILVL
CONFIGURAZIONE REGISTRI SUPER 10
95
REGISTRO FEIxIC (con x = 0..7) : Fast Extenal Interruot Control
Questo registro configura una delle 8 possibili richieste di interruzione esterna.
IR Interrupt Request Flag
(0) : non ci sono richieste di interruzione dall’ interrupt x
(1) : è pendente la richiesta di interruzione dell’ interrupt x
IE Interrupt Enable control bit
(0) Interrupt x disabilitato , (1) abilitato
ILVL Interrupt priority level
Definisce il livello di priorità associato all’ interrupt x
GLVL Group Priority Level
Campo con il quale si discrimina tra richieste di interrupt
dello stesso livello: in caso di richieste contemporanee con lo
stesso ILVL vince quella con GLVL più alto
Nel programma complessivo vengono generate quattro chiamate ad interrupt esterno.
Nel dettaglio sono :
• Interrupt Seek (FEI4IC , ILVL=5h e GLVL=0) : viene segnalato al processore
che deve essere a
• Interrupt Servobanda (FEI7IC , ILVL=Fh e GLVL=3h) : segnala che sono resi
disponibili i dati circa la servobanda dall’ elettronica esterna
• Interrupt PES(FEI6IC , ILVL=Fh e GLVL=2h) : segnala che sono in arrivo i sei
dati riguardanti i servo burst dai quali si ricostruisce il PES
• Interrupt Salva(FEI5IC , ILVL=4h e GLVL=0) : viene generata per salvare i dati
memorizzati nelle strutture dati predisposte
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
R ILVL GLVL IR IE
APPENDICE A
96
Registro PECCx (x =0..7) Peripherial Event Controller Control
EOPINT End of PEC Interrupt
Se posto a (0) il livello di priorità alla fine del PEC rimane
inalterat, altrimenti viene aggiornato con un valore contenuto
in un registro apposito.
PLEV PEC level selection
I PEC vengono distinti dai loro livelli di priorità.
INC Increment Control Field
Definisce se si devono aggiornare i puntatori alla sorgente e
destinazionedei PECx
(00) invariati , (01) incrementa destinazione, (10) incrementa
sorgente , (11) incrementa entrambi
BWT Bit or Word Transfer
(0) si trasferice un byte , (1) si trasferisce un word
COUNT PEC Counter
Si imposta il numero di trasferimenti con le eccezioni di
(00) non viene eseguito il PEC ma una semplice interruzione
(FF) trasferimento di dati continuo
Nel lavoro in questione sono presenti due impostazioni PECC uno per trasferire il
dato riguardante la servobanda, l’ altro per i due principali valori dei servoburst (i
rimanenti quattro vengono mascherati).
COUNT
PEC 6
BWT PLEV R INC EOP
0
0
1
0
0
0
1
0
0
0
0
0
0
0
1
0
R
PEC 7 0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
1
2
2
0
2
(PES)
(SERVO BANDA)
3
0
0
1
h
h
CONFIGURAZIONE REGISTRI SUPER 10
97
REGISTRO EXICON – Extenal Interrupt Control Register
Determina su quale fronte (di salita o di discesa) del segnale di interruzione
viene avviata la routine corrispondente.
EXIxES External Interrupt x Edge Selection
(00) : Interrupt Disabilitato
(01) : Fronte di salita
(10): Fronte di discesa
(11) : Su entrambi
REGISTRO EXISEL – External Interrupt Source Selection
Questo registro definisce quale sarà la sorgente fisica del segnale di interruzione.
EXIxSS External Interrupt x Source Selection
(00) : Ingresso dal pin EXxIN associato all’ interrupt x
(01) : Ingresso da ‘Alternate function’ specifica
(10) : ingresso proveniente da una alternate function in ‘Or’
logico tra EXxIN e ‘Alternate Function’ associate
(11) : come la precedente in questo caso però si esegue un
‘And’
0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0
5 5 0 0 hex
bin
EXI7ES EXI3ES EXI5ES EXI4ES EXI6ES EXI2ES EXI1ES EXI0ES
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 hex
bin
EXI7SS EXI3SS EXI5SS EXI4SS EXI6SS EXI2SS EXI1SS EXI0SS
APPENDICE A
98
REGISTRO EBCMOD0 – External Bus Controller Mode Selection
Registro responsabile della configurazione riguardante l’ accesso al bus da
periferiche eterne.
RDYPOL Ready pin polarity
Definisce se il pin relativo al segnale ‘Ready’ è attivo a
livello alto (1) oppure basso (0)
RDYDIS Ready pin disable
(0) : pin ‘Ready’ abilitato , (1) : disabilitato
ALEDIS ALE pin disable
(0) : pin ALE abilitato , (1) : disabilitato
BTYDIS BHE pin disable
(0) : pin BHE abilitato , (1) : disabilitato
WRCFG Write Configuration Control
L’ operazione di scrittura può essere gestita per mezzo dei
segnali /BHE e /WR (0) oppure con /WRH /WRH (1)
EBCDIS EBC pin disable
Se posto a (0) ogni accesso al bus attiva i pin relativi
all’ EBC, altrimenti non vengono alterati (1)
SLAVE Slave bus enable
Il gestore bus può operare in modalità master (0) oppure
slave(1)
ARBEN Bus arbitration pins enable
Il processo di controllo del bus può utilizzare 3 segnali
ulteriori, /HOLD /HLDA /BREQ (0) oppure lasciare i pin
relativi in stato tristate
CSPEN CS pin enable
Con questo campo si selezionano quanti pin di Chip Select
attivare; va da 0h (nessun pin attivato ) a 8h (attivi /CS0-CS7)
APEN Adress pin enable
Con questo campo si selezionano quanti pin del bus indirizzi
attivare oltre ai 16 meno significativi di default; va dal valore
0h a 8h (in quest’ ultimo caso sono attivati 24 bit di indirizzo)
0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0
0 8 8 8 hex
bin
RDY POL CSPEN
ARB EN
WR CFG
RDY DIS
ALE DIS
BYT DIS
EBC DIS
SLAVE APEN
CONFIGURAZIONE REGISTRI SUPER 10
99
REGISTRO TCONCSx (x=0..7)
L’ accesso alla memoria esterna da parte di periferiche può venire eseguita
anche per mezzo di opportuni controlli di canale messi a disposizione dal DSP. I
segnali in questione sono i Chip Select ai quali sono associati ulteriori registri per
regolare la temporizzazione delle fasi di lettura e scrittura.
Nel progetto è stato adoperato il Chip Select 4.La configurazione qui sotto riportata
si riferisce appunto al TCONCS4.
WRPHFx Write Phase F
Temporizzazione in colpi di clock fase F del pattern di
scrittura
RDPHFx Read Phase F
Temporizzazione in colpi di clock fase F del pattern di lettura
PHEx Phase E
Fase comune alla lettura e scrittura, come del resto anche le
successive
PHDx Phase D
PHCx Phase C
PHBx Phase B
PHAx Phase A
0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1
7 7 0 7 hex
bin
0 PHEx WRPHFx RDPHFx PHDx PHAx PHBx PHCx
APPENDICE A
100
REGISTRO FCONCSx (x=0..7) Function Configuration for Chip Select
Channel x
BTYPx Bus Type Selection
Si seleziona la modalità di accesso al bus indirizzi
(00) Demultiplexer a 8 bit
(01) Multiplexer a 8 bit
(10) Demultiplexer a 16 bit
(11) Multiplexer a 16 bit
RDYMOD Ready Mode
Si imposta un segnale di ‘Ready’ asincrono (0) oppure
sincrono (1)
RDYENx Ready Enable
(0) : l’ accesso viene contrallato dal campo PHEx del registro
TCONCSx
(1) : l’ accesso al bus viene controllato anche dal segnale
Ready
ENCSx Enable Chip Select x
Abilita (1) o meno (0) il corrispondente pin di Chip Select
Riassumendo le impostazione adottate per il Chip Select 4 mediante FCONCS4 :
Chip Select attivo sul relativo pin senza l’ uso del segnale Ready in modalità
demultiplexer a 16 bit.
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1
0 0 2 1 hex
bin
0 BTYPx EN CSx
RDY ENx
RDY MOD 0
CONFIGURAZIONE REGISTRI SUPER 10
101
REGISTRO ADDRSELx – Address Selection x
Una volta configurato le modalità di accesso al bus non resta altro che definire quale
sia la finestra di memoria esterna a cui si fa riferimento definendo la dimensione e
l’ indirizzo di partenza. Queste informazioni posso essere codificate nel presente
registro.
RGSZ Window Size Range Start Address
0000 4 KB A23 – A12
0001 8 KB A23-A13
0010 16 KB A23-A14
0011 32 KB A23-A15
0100 64 KB A23-A16
0101 128 KB A23-A17
0110 256 KB A23-A18
0111 512 KB A23-A19
1000 1 MB A23-A20
1001 2 MB A23-A21
1010 4 MB A23.A22
1011 8 MB A23
11xx Riservato
Nel lavoro si vuole usare una finestra di 4 Kbyte (dimensione minima) che
parta dall’ indirizzo 014000h. Si selezioni percui il valore 0000 su RGSZ. Servono 12
bit per chiarire quale sia l’ indirizzo di partenza si prende percui 014h come
definizione del campo RGSAD.
0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0
0 1 4 0 hex
bin
RGSAD RGSZ
APPENDICE A
102
Come ultime impostazioni si menzionano quelle relativa alla porta SSC usata per
mettere in comunicazione l’ accelerometro L6671 con la scheda Super 10.
REGISTRO SSCCON – Synchronous Serial Channel Control Register
Questo registro ha una duplice configurazione dei campi a seconda del valore
del suo bit più significativo SSCEN. Di seguito si riportano entrambe le codifiche.
SSC EN SSC Enable Bit = ‘0’
Se questo campo è posto a (0) la trasmissione e ricezione
sono disabilitate e i campi seguenti svolgono funzioni di
impostazioni per la comunicazione seriale
SSCMS SSC Master Select Bit
(0) : SSC in modalità slave: in SCLK entra il clock
(1) : SSC in modalità master: in SCLK esce il clock
SSCAREN SSC Automatic Error Bit Enable
Se posto a (1) resetta automaticamente la seriale in caso di
errore da parte del Baud Rate Generator
SSCBEN SSC Baud Rate Error Check Enable Bit
Se posto a (1) verifica la natura eventuale di un eventuale
errore proveniente dal Baud Rate Generator
SSCPEN SSC Phase Error Check Enable Bit
Se posto a (1) verifica il regolare svolgimento delle fasi di
trasferimento della seriale.
SSCREN SSC Receive Error Check Bit Enable
Se posto a (1) controlla se si sono verificati errori in fase di
ricezione
SSCTEN SSC Transmit Error Check Bit Enable
Se posto a (1) controlla se si sono verificati errori in fase di
trasmissione
SSCLB SSC Loop Back Bit
0 1 0 0 0 0 0 0 0 1 0 1 1 1 1 1
4 0 5 F hex
bin
SSC EN=0
SSC TEN
SSC BEN
SSC MS R
SSC AREN
SSC PEN
SSC REN SSCBM
SSC LB
SSC PO
SSC PH
SSC HB
CONFIGURAZIONE REGISTRI SUPER 10
103
(0) : input e output separati (‘normal output’ )
(1) : il pin di input e quello di outout coincidono (‘half
duplex mode’ )
SSCPO SSC Clock Polarity Control Bit
(0): clock a livello logico basso in fase di attesa
(1) : clock a livello logico alto in fase di attesa
SSCPH SSC Clock Phase Control Bit
(0) : Trasmissione sul fronte di attivazione del clock,
ricezione sull’ altro fronte
(1) : ricezione sul fronte di attivazione del segnale di clock,
trasmissione sull’ altro
SSCHB SSC Heading Control Bit
Trasmissione prima del LSb (0) o del MSb (1)
SSCBM SSC Data Width Selection
(0h) : riservato
(1h) – (Fh) : la dimensione del dato trasferito è (SSCBM+1)
Ricapitolando le impostazioni si è scelto di trasmettere in modalità half duplex un
dato di 16 bit.
Il clock in attesa è alto la ricezione avviene sui fronti di salita e la trasmissione sui
fronti di discesa.
Si riporta ora la configurazione che assume il registro SSCCON quando SSC EN = 1
SSC EN SSC Enable Bit = ‘1’
Se questo campo è posto a (1) la trasmissione e ricezione
sono abilitate e i campi seguenti svolgono funzioni di flag di
stato di controllo della porta seriale
SSCMS SSC Master Select Bit
Stessa funzione nel caso SSCEN=0
SSCBSY SSC Busy Flag
(0) : la linea serial è in attesa
(1) : la linea seriale è occupata
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bin
SSC EN=1
SSC TE
SSC BE
SSC MS R
SSC BSY
SSC PE
SSC RE SSCBC R
APPENDICE A
104
SSCBE SSC Baud Rate Error Flag
Se posto a (1) verifica c’ è stato un errore nel Baud Rate
Generator
SSCPE SSC Phase Error Flag
Se posto a (1) si è verificato un errore nella fase di ricezione
del dato.
SSCRE SSC Receive Error Flag
Se posto a (1) significa che è arrivato un dato prima che
venisse letto il buffer di ricezione.
SSCTE SSC Transmit Error Flag
Se posto a (1) significa che è stata effettuata una trasmissione
prima che il buffer di trasmissione sia stato aggiornato
SSCBC SSC Bit Count Field
Contatore dei bit trasferiti; va usato in sola lettura
I campi SSCBSY e SSCBC sono a sola lettura.
LISTATO DEL PROGRAMMA
105
APPENDICE B
LISTATO DEL PROGRAMMA ASSEMBLY
Si riporta di seguito la parte più significativa del listato del programma usato.
;------------------------------------------------------------------------; ; ; ; ; ; ADAPTATIVE COMPENSATION IN HDD SERVO LOOP ; ; ; ; ; ; COPYRIGHT University of Padova, ALL RIGHT RESERVED. ; ; ; ; ; ;----------------------------------------------------------------------- ; ; Title : feedf_acc_SM.ASM ; ; Project : Changed1 ; ; File : Feedf_acc_ff_SM.ASM ; ; --------------------------------------------------------------------- ; ; Promemoria : P2.8 si collega a int Gray da Altera pin Varie. ; ; P2.0 in input collegato al general BUSY degli ADC(tramite partitore); ; P2.1 output per il CK scheda AD-DA ; ; P2.4 in input da SW0 per compensazione on/off; ; A3,A4 e A5 alla scheda AD-DA ; ; P3.13 SPC ; Tx-Rx SPD ;; P2.2 SPE ;
; Uscita DAC1 : comando per HDD su BNC2 Altera; ; CHIP SELECT 4 a \CS della scheda DAC e ADC ; ;------------------------------------------------------------------------;
$SEGMENTED $EXTEND2INIT_RB REGDEF R0-R15INTEXT REGDEF R0-R15REG_CTRL REGDEF R0-R15CONTESTOADATT REGDEF R0-R15
global INIT_PROCglobal TRACK_PROC0global TRACK_PROC1 SSKDEF 1
;file DATI.ASMEXTERN DPP1:DATA_INPUT_OFF:WORD ;SECTION DATA CONN3BUFFEREXTERN DPP1:DAC_3:WORDEXTERN DPP1:ADC_1:WORDEXTERN DPP1:ADC_2:WORDEXTERN DPP1:DAC_1:WORDEXTERN DPP1:DAC_2:WORD
[…];===============================================================; DICHIARAZIONE VARIABILI DELLA PARTE ALGORITMICA DI ADATTAMENTO;===============================================================
EXTERN DPP3:DebugFlag:WORDEXTERN DPP3:DF2:WORD
EXTERN DPP2:PES_After:WORDEXTERN DPP2:ACC_After:WORDEXTERN DPP2:AdGain_After:WORDEXTERN DPP2:CODA_END2:WORD
APPENDICE B
106
EXTERN DPP2:MEMOEQM:WORDEXTERN DPP2:SUMEQM:WORD
EXTERN DPP2:COUNTER_ONE:WORDEXTERN DPP2:COUNTER_TWO:WORDEXTERN DPP2:COUNTER_SAVE:WORDEXTERN DPP2:COUNTER_SAVE_I:WORDEXTERN DPP2:EQM:WORD
EXTERN DPP2:KOA:WORD
EXTERN DPP3:S1Gout:WORDEXTERN DPP3:S2Gout:WORDEXTERN DPP3:S3Gout:WORD
EXTERN DPP3:CC2Gout:WORDEXTERN DPP3:CC3Gout:WORD
EXTERN DPP3:CD1Gout:WORDEXTERN DPP3:CD2Gout:WORDEXTERN DPP3:CD3Gout:WORD
EXTERN DPP2:Pa:WORDEXTERN DPP2:Weights:WORDEXTERN DPP2:Weights_1:WORDEXTERN DPP2:AccPast:WORDEXTERN DPP2:EstimateD:WORDEXTERN DPP2:DelayV:WORDEXTERN DPP2:CountDown:WORDEXTERN DPP2:Accelerometro_1:WORD
;===============================================
;ADDRSEL1 per la comunicazione con l'ALTERAADDRWINDOW1SIZE EQU 00hADDRWINDOW1START EQU 0140h
; traccia per il track following ===============track_in EQU 3000hTRPIU1 EQU 3001hTRMENO1 EQU 2FFFh; ==============================================
filter_on EQU 0 ; 0 = off 1 = onCHANGE_INTERNAL_IIR EQU 0 ; 0 = off 1 = on
; ==============================================; COEFF HDD; ==============================================
[…];========================================================================;Costanti relative a IVC;========================================================================
[…];=========================================================
Kff EQU 0418h ; è KffBest
;============================================================;============================================================; COSTANTI DELLA PARTE ALGORITMICA DI ADATTAMENTO;============================================================
AdaptationGain2 EQU 110h;;------------------------------------; a seconda dell'ordine del filtro bisogna; cambiare l'adaptationgain2;------------------------------------
ThresholdPESH EQU 07aeh ; calcolati al 3 sigma del PESThresholdPESL EQU 0f70ah ; calcolati al 3 sigma del PES
LISTATO DEL PROGRAMMA
107
ThresholdAccH EQU 51eh ;ThresholdAccL EQU 0fae1h ;
MAXACCE EQU 0A00h ;MINACC EQU 0F500h ;
ThresholdEQM EQU 126h ;ThresholdEQMWarning EQU 7000h ;
MAXWEIGHT EQU 0CCCh ;MINWEIGHT EQU 0F333h ;
MAXINC EQU 147h ;MININC EQU 0FEB8h ;
MAXEQMPES EQU 2001h ;MAXABSPES EQU 1000h ;
MAXPES EQU 4000h ;MINPES EQU 0C000h ;
ACCINCH EQU 3d7h ;ACCINCL EQU 0FC28h ;
NWeightsCost EQU 40 ; ORDINE FIR = NWeigthCost -1 ;NMA_1 EQU 19 ;
DelayA EQU 50 ;Leaky EQU 7fdfh ; il fattore di Leaky è .999
NIR EQU 0 ; New IIR Rac
;============================================================;============================================================
INIT_CODE SECTION CODE GLOBAL 'ROM'
ASSUME DPP0:TRACK_PROC0,DPP1:NOTHING,DPP2:NOTHING,DPP3:SYSTEM
INIT_PROC PROC FAR
DISWDTBCLR IEN
;============================================================; CONFIGURAZIONE DEI DPP
MOV R0,#300hMOV DPP0,R0 ; 11 0000 0000 : C0 0000...C0 3FFF
MOV R0,#05hMOV DPP1,R0 ; 00 0000 0101 :01 4000...01 7FFF
MOV R0,#02hMOV DPP2,R0 ; 00 0000 0010 : 00 8000...00 BFFF
MOV R0,#03hMOV DPP3,R0 ; 00 0000 0011 : 00 C000...00 FFFF
; =====================================================================; CONFIGURAZIONE DEI BUS;======================================================================
;EBCMOD0 -------------------------------------------- MOV R0,#0888h MOV EBCMOD0,R0
; =====================================================================; CONFIGURAZIONE DEI BUS; BUS 0 ==> CS0;======================================================================
; TCONCS0 --------------------------------------------MOV R0,#0040h
APPENDICE B
108
MOV TCONCS0,R0;FCONCS0 ----------------------------------------------
MOV R0,#0021hMOV FCONCS0,R0
; =====================================================================; CONFIGURAZIONE DEI BUS; BUS 1 ==> CS1;======================================================================;ADDRESEL1 ---------------------------------------------
MOV R0, #ADDRWINDOW1SIZE + (ADDRWINDOW1START)MOV ADDRSEL4,R0 ;1
; TCONCS1 --------------------------------------------MOV R0, #7707hMOV TCONCS4,R0
;FCONCS1 ----------------------------------------------MOV R0,#0021hMOV FCONCS4,R0
;------------------------------------------------------NOP
;===================================EINIT
;===================================NOP
MOV CP , #INIT_RBNOP
; FINE PROCEDURA INIZIALIZZAZIONE
;================================================================================; SSC REGISTER;================================================================================
MOV R0,#405FhMOV SSCCON,R0MOV R0,#01h ;BAUD RATE TIMER RELOAD REGISTER 01hMOV SSCBR,R0MOV R0,#8000hOR SSCCON,R0
;=====================================================================================; INIZIALIZZAZIONE PORT 2: INPUT P2.0 riceve il Busy dal partitore; OUTPUT P2.1 per abilitazione start_conversion ADC1; OUTPUT P2.2 Enable per il RAC; INPUT P2.4 compensazione f.f. on/off switch 0; INPUT P2.5,P2.6,P2.7 variabile da visualizzare switch 1, 2 e 3.; INPUT P2.8 <== INT0 ,P2.9 <== INT1; INPUT P2.10 blocca adattamento (seconda serie switch); INPUT P2.11 switch libero; INPUT P2.12 switch libero; INPUT P2.13 switch libero;==================================================================================== BFLDL DP2,#0FFh,#0Eh BFLDH DP2,#0FFh,#00h
;=====================================================================================; INIZIALIZZAZIONE PORT 3: OUTPUT P3.1 P3.0;==================================================================================== BFLDL DP3,#1fh,#0Fh BFLDL P3,#0Fh,#0Fh BFLDH DP3,#22h,#22h BFLDH P3,#22h,#22h MOV R0,#220Fh
MOV ODP3,R0;=============================================================
BFLDH MCW,#6h,#4h;=============================================================
;========================================================================;Configurazione registri per la gestione della seek (nella procedura sperem);========================================================================
SCXT CP , #REGSEEK
[…]POP CP
LISTATO DEL PROGRAMMA
109
;========================================================================;Configurazione registri per la gestione del filtro notch e del repetitive;========================================================================
SCXT CP , #FEED
[…]POP CPNOP
;========================================================================;Configurazione registri per la gestione del Track Following;========================================================================
;Inizializzazione puntatori e registriSCXT CP , #REG_CTRL ;Registri:
[…];Inizializzazione variabili stimatore
[…]POP CP
NOP;fine inizializzazione
;========================================================================;--- Configurazione fase rilievo comando medio ------
;======================================================================== SCXT CP , #REGSETOFF
[…] pop CP
;----------------------------------------------------
;Configurazione REGISTRI INTERRUPTEXTR #1BFLDL EXICON, #0Fh, #05h ; salita gray - discesa abcd
;========================================================================;Configurazione registri per la gestione dell'interrupt 0 (Lettura servobanda);========================================================================
SCXT CP , #INTEXT1NOPMOV R0 , #21845MOV R1 , #TRMOV R2 , #0MOV R3 , R0SHL R3 , #1MOV R11 , #PRE_TRACK
BSET P2.2MOV R4,#6420h ; VALORE DI INIZ. PER IL CTRL_REG1 DEL L6671
; (#20h = 0010 0000b) per clock agganciato tramite PLL al pin ;CLK_IN; #64h E': 0b PER OP. DI WRITE SUL CHIP, 110b IDENT. DEL L6671,; 0100b PER IL CODICE DEL CTRL_REG1
MOV SSCTB,R4 ; PASSA IL VALORE AL TRASMITTER BUFFER REGISTERNOPNOPNOPNOPNOP
WAIT2 :NOPJB SSCBSY , WAIT2 ; ASPETTA CHE L'OPERAZIONE DI TRASMISSIONE SIA COMPLETATA.BCLR P2.2NOPBSET P2.2
;________________________________________________;; #6502 se voglio abilitare il filtro IIR ;; #6506 se si vuole disabilitare il filtro IIR ;;________________________________________________;
MOV R4 , #NIRCMP R4 , #0JMPR cc_NE , NIRlabelMOV R4, #6502h ; #65h E': 0b PER OP. DI WRITE SUL CHIP, 110b PER IL CODICE DEL L6671,; 0101b PER IL CODICE DEL CTRL_REG2; (#06h = 0000 0110b CONSIGLIATO PER COMPATIBILITA' CON IL L6670)JMPR NoNIRlabel
NIRlabel : MOV R4, #6506h ;
APPENDICE B
110
NoNIRlabel: MOV SSCTB,R4 ; PASSA IL VALORE AL TRASMITTER BUFFER REGISTERNOPNOPNOPNOPNOP
WAIT_L6671: NOPJB SSCBSY , WAIT_L6671
; ASPETTA CHE L'OPERAZIONE DI TRASMISSIONE SIA COMPLETATA.
; ----------- scrittura registro di offset del RAC ----------------BCLR P2.2NOPNOPBSET P2.2MOV R4,#6F21h ; registro MISC, seleziona il banco 2 di registriMOV SSCTB,R4NOPNOPNOPNOPNOP
WAIT_banco1:NOPJB SSCBSY , WAIT_banco1
; ASPETTA CHE L'OPERAZIONE DI TRASMISSIONE SIA COMPLETATA.NOPNOPBCLR P2.2NOPNOPNOPNOPBSET P2.2MOV R4,#6A86h ; scrivo nel LSB del registro di regolazione OFFSETMOV SSCTB,R4NOPNOPNOPNOPNOP
WAIT_6A : NOPJB SSCBSY , WAIT_6ANOPNOPNOPBCLR P2.2NOPNOPBSET P2.2MOV R4,#6BFFh ; scrivo nel MSB del registro di regolazione OFFSETMOV SSCTB,R4NOPNOPNOPNOPNOP
WAIT_6B : NOPJB SSCBSY , WAIT_6BNOPNOPNOPBCLR P2.2
;------------------------------------------NOPNOPBSET P2.2MOV R4,#6F20h; registro MISC, RIseleziona il banco 1 di registriMOV SSCTB,R4NOPNOPNOPNOPNOP
WAIT_banco0:NOPJB SSCBSY , WAIT_banco0BCLR P2.2NOP
LISTATO DEL PROGRAMMA
111
NOP; ----------------- INIZIALIZZAZIONE ELEMENTI DELLA TABELLA_PTR ------------------------
MOV R4 , #Weights ; SW3 SW2 SW1MOV TABELLA_PTR,R4 ; Weights 0 0 0MOV R4 , #DebugFlag ;MOV TABELLA_PTR+2 ,R4 ; DebugFlag 0 0 1MOV R4 , #pesprefiltro ;MOV TABELLA_PTR+4 ,R4 ; Pes 0 1 0MOV R4 , #DF2 ;
MOV TABELLA_PTR+6 ,R4 ; DF2 0 1 1MOV R4 , #Pa ;MOV TABELLA_PTR+8 ,R4 ; Pa 1 0 0MOV R4 , #EQM ;
MOV TABELLA_PTR+10 ,R4 ; EQM 1 0 1MOV R4 , #SUMEQMMOV TABELLA_PTR+12 ,R4 ; SUMEQM 1 1 0MOV R4 , #accelerometroMOV TABELLA_PTR+14 ,R4 ; ACCELE 1 1 1
;-----------------------------------------------------------------------------------------MOV R4 , #0MOV S0 , R4 ; inizializzazione variabili di stato filtraggio IIR Tempo-inMOV S1 , R4MOV S2 , R4MOV S3 , R4MOV S4 , R4MOV S5 , R4MOV S6 , R4
MOV R4 ,#24449MOV N0 , R4
MOV R4 ,#1427 MOV N1 , R4MOV R4 ,#-17150MOV N2 , R4MOV R4 ,#-4894MOV N3 , R4
MOV R4 ,#3550MOV N4 , R4
MOV R4 ,#2021MOV N5 , R4
MOV R4 ,#292MOV N6 , R4
MOV R4 , #21592MOV D1 , R4MOV R4 , #-14866MOV D2 , R4MOV R4 , #3727MOV D3 , R4MOV R4 , #-976MOV D4 , R4MOV R4 , #291 ; -(-3.5567e-6)*8192MOV D5 , R4MOV R4 , #0MOV D6 , R4
;=================================================================; INIZIALIZZAZIONE DEI PARAMETRI ADATTAMENTO;================================================================= ;---------------------------------------------------
; INIZIALIZZAZIONE VARIABILI Gout ; ATTENZIONE SI REALIZZA IN EFFETTI Gout/16 ; PER RAPPRESENTARE IN MODO IMMEDIATO I COEFFICIENTI ;---------------------------------------------------
MOV R4 , #0hMOV S1Gout , R4MOV S2Gout , R4MOV S3Gout , R4
MOV R4 , #675EhMOV CC2Gout , R4
APPENDICE B
112
MOV R4 , #0AB31hMOV CC3Gout , R4
MOV R4 , #26A4hMOV CD1Gout , R4MOV R4 , #8FCFhMOV CD2Gout , R4MOV R4 , #498EhMOV CD3Gout , R4
;--------------------------------------------------- ; INIZIALIZZAZIONE VARIABILI NIR
;---------------------------------------------------
MOV R4 , #0hMOV S1NIR , R4MOV S2NIR , R4MOV S3NIR , R4
MOV R4 , #4ce8hMOV CC2NIR , R4MOV R4 , #0c7bdhMOV CC3NIR , R4
MOV R4 , #79chMOV CD1NIR , R4MOV R4 , #0f39hMOV CD2NIR , R4MOV R4 , #79chMOV CD3NIR , R4
;--------------------------------------------------- ; INIZIALIZZAZIONE FINESTRA MEDIA MOBILE ;---------------------------------------------------
PUSH R0MOV R0 , #NMA_1; NMA_1 è il numero di camp. presi nella media mobile meno unoMOV R4 , #0h ;MOV SUMEQM , R4 ; AZZERA SUMEQMMOV R11 , #SUMEQM ;MOV R4 , #MEMOEQM ;
CyMA: CMP R0 , #0 ;JMPR cc_EQ,ExCyMA ;MOV [R4+] , [R11] ; AZZERA MEMOEQM(i)SUB R0 , #1 ;JMPR CyMA ;
ExCyMA:POP R0
;-----IMPOSTAZIONE REGISTRO Kind Of Adaptation---------------------------------; KOA.0 Tipo di Adaptation Gain : (0) = COSTANTE ,(1) = VARIABILE
;(cioè adaptationgain2=SUMEQM); KOA.1 Inserimento Gout : (0) = OFF ,(1) = ON; KOA.2 Abilitazione soglia EQM : (0) = disattivata ,(1) = attivata; KOA.3 Saturazione incremento : (0) = OFF ,(1) = ON; KOA.4 Saturazione del peso : (0) = OFF ,(1) = ON; KOA.5 Soglie accelerometro : (0) = OFF ,(1) = ON; KOA.6 Attivazione WaitWindow : (0) = OFF WW (adatt da subito) , (1) = ON
;Adattamento dalla seconda finestra temporale; KOA.7 Abilitazione Ritardo : (0) = OFF ,(1) = ON; KOA.8 Abilitazione Leaky : (0) = OFF ,(1) = ON; KOA.9 Disabilita Adattamento : (0) = Adatt. ON ,(1) = Adatt. OFF; KOA.10 Abilitazione Filtro incrementi accelerometro : (0) = OFF , (1) = ON; KOA.11 Saturazione Accelero. : (0) = OFF , (1) = ON; KOA.12 Usa PES esteso : (0) = OFF , (1) = ON; KOA.13; KOA.14 Flag che segnala l'abilitazione della seconda finestra temporale : Da impostareinizialmente a zero; KOA.15 Flag che segnala quando è stato effettivamente adattato il filtro : Da impostareinizialmente a zero;----------------------------------------------------------------------------- BFLDL R4 , #0FFh , #06h
BFLDH R4 , #0FFh , #06hMOV KOA , R4
LISTATO DEL PROGRAMMA
113
;---------------------------------------- ; Inizializzazione dei contatori ;----------------------------------------
MOV R4 , #2hMOV COUNTER_ONE , R4
MOV R4 , #010MOV COUNTER_TWO , R4MOV R4 , #19MOV COUNTER_SAVE , R4MOV R4 , #ACC_AfterMOV COUNTER_SAVE_I , R4MOV R4 , #0hMOV DF2 , R4MOV Accelerometro_1 , R4MOV R4 , #DelayAMOV DelayV , R4
;------------------------------------------------------------------------------ ; Inizializzazione a zero dei pesi ;------------------------------------------------------------------------------
MOV R4 , #NWeightsCostMOV R11 , #WeightsPUSH R12PUSH R13PUSH R14PUSH R15
MOV R12 , #Weights_1MOV R13 , #AccPastMOV R14 , #Pa
LoopAzzera : CMP R4 , #0 JMPR cc_EQ , FineLoopAzz MOV [R11] , R2 ; in R2 c è 0
MOV [R12] , R2MOV [R13] , R2MOV [R14] , R2ADD R11 , #2
ADD R12 , #2 ADD R13 , #2 ADD R14 , #2 SUB R4 , #1 JMPR LoopAzzera
FineLoopAzz:
;------------------------------------------------------------------------------ ; Inizializzazione del contesto di adattamento ;------------------------------------------------------------------------------
SCXT CP , #CONTESTOADATTMOV R5 , KOAMOV R8 , #0MOV R12, DF2POP CP
;=========================================================================; FINE INIZIALIZZAZIONE PARAMETRI ADATTAMENTO;=========================================================================
MOV R4,#0E000h; prepara il comando per la lettura del RAC in R4NOP
MOV R11 , #PRE_TRACKPOP R15
POP R14POP R13POP R12POP CP
NOP;========================================================================;Configurazione registri per INTERRUPT SEEK RIPETUTE;======================================================================== SCXT CP , #REG_RSEEK
[…]POP CP
APPENDICE B
114
;CONFIGURA INTERRUPT P2.8 MOV R0, #7fh ;7f MOV FEI0IC ,R0 ; LEVEL 15 PRIORITY 3
MOV PECC7 , #01hMOV R0,#0100hMOV PECSEG7,R0MOV R0,#TRMOV DSTP7,R0
MOV R0,#DATA_INPUT_OFF ;dichiarata all'inizio per risolvere prob.indirizzoMOV SRCP7,R0NOP
;CONFIGURA INTERRUPT P2.9 MOV R0, #3eh MOV FEI1IC ,R0 ; LEVEL 15 PRIORITY 2
MOV PECC6 , #202h ;202 due copie e incr dest.MOV R0,#0100hMOV PECSEG6,R0MOV R0,#PESABMOV DSTP6,R0
MOV R0,#DATA_INPUT_OFFMOV SRCP6,R0NOP
;CONFIGURA INTERRUPT sperem
MOV R0, #50h ;4c MOV FEI4IC ,R0 ; LEVEL 4 PRIORITY 0
;CONFIGURA INTERRUPT salva
MOV R0, #48h ;5c MOV FEI5IC ,R0 ; LEVEL 2 PRIORITY 0
;CONFIGURA INTERRUPT RIPSEEK
MOV R0, #4Ch ;6c MOV FEI6IC ,R0 ; LEVEL 3 PRIORITY 0
;Puntatori coda salvataggio dati
MOV R0,#CODA_PES MOV R1,#CODA_TR
MOV R2,#CODA_END1 MOV R12,#CODA_VAR2A MOV R13,#CODA_VAR2B
;============================================== ; Variabili salvate ;==============================================
;SALVATO SU CODA_TR ====================MOV R7 , #accelerometro ;#TR;=======================================;SALVATO SU CODA_PES ====================MOV R4 , #pesprefiltro;========================================; Impostazione delle variabili ausiliare che si desidera memorizzareMOV R8 , #DebugFlag ;questo è per CODA_VAR2AMOV R9 , #Weights ;questo è per CODA_VAR2B;=======================================
MOV R5 , #1MOV R10, #250 ; QUANDO ESEGUE IL SALVATAGGIOMOV R11 , #CODA_PES+100 ; PUNTO DI CAMBIO TRACCIANOPBSET IENNOPNOP
ciclo: NOP ; CICLO DURANTE IL QUALE ASPETTANO GLI INTERRUPTJMPR cicloRETS
INIT_PROC ENDP
;===================FINE MAIN PRG===========================================
LISTATO DEL PROGRAMMA
115
TRACK_PROC0 PROC TASK EXTINT_TASK_0 INTNO EXTINT_INUM_0 = 018h
NOPNOPNOPBSET P2.2 ; ENABLE PER LA SERIALE
NOPNOP
BFLDL FEI0IC , #0C0h , #00h ;disabilita la routine di lettura tracciaSCXT CP , #INTEXT1
NOP MOV PECC7 , #01h BFLDL FEI1IC , #0C0h , #40h ;ABILITAZIONE INTABCD e IR==0
;--- Servobanda -->TracciaCOMUL R0 , [R1]costore [R11] , MAHCOADD R3 , R2;---COSTORE [R1],MAHMOV SSCTB,R4 ;SERIALENOPNOPNOPNOPNOPPOP CPRETITRACK_PROC0 ENDP
PROC_PARI PROC NEARSHR R9 , #1JMPR cc_C , PES_OKNEG R11NEG R8
PES_OK: XOR R9 , R9COLOAD R9 , R8COABSCOSUB R9 , R11JNB MSW.8 , P23 ;BIT NEGATIVEMOV R11 , R8RET
P23: SUB R11 , #unterzoCMP R8 , R9JMPR cc_N , ABNEGNEG R11
ABNEG: RETPROC_PARI ENDP
PROC_DISPARI PROC NEAR SHR R9 , #1JMPR cc_NC , PESD_OKNEG R8NEG R11
PESD_OK: XOR R9 , R9 COLOAD R9 , R11COABSCOSUB R9 , R8JNB MSW.8 , PD23NEG R11RET
PD23: COADD R9 , R8COSTORE R14 , MAHCOLOAD R9 , R8COABSCOSUB R9 , R14JNB MSW.8 , PD23_2SUB R8 , #unterzoCMP R11 , R9JMPR cc_NN , DCMAG0NEG R8
DCMAG0: MOV R11 , R8RET
PD23_2: MOV R9, PRE_TRACKCMP R9, TRJMPR cc_EQ , CDMAG0XOR R9, R9
APPENDICE B
116
SUB R11 , #dueterziRET
CDMAG0: ADD R11 , #dueterziXOR R9, R9RET
PROC_DISPARI ENDP
TRACK_PROC1 PROC TASK EXTINT_TASK_1 INTNO EXTINT_INUM_1 = 019h
;SALVATAGGIO REGISTRI MAC - PER EVITARE PERDITE DI DATI NELL'ATTIVAZIONE DI SPEREMPUSH MSWPUSH MAHPUSH MALPUSH MDHPUSH MDL
;--------------------------------------; ALGORITMO DI CONTROLLO;--------------------------------------
SCXT CP , #REG_CTRL
[…]COSTORE R14 , MAH ; Salva il comando per liberare l'accumulatoreMOV U_nocomp , R14 ; Copia il comando non compensato in TABELLA_PTR
; ------------------- SERIALE ---------------------------------WAIT_ME: NOP
JB SSCBSY , WAIT_ME ; ASPETTA CHE L'OPERAZIONE DI TRASMISSIONE SIA COMPLETATA.NOPMOV R9,SSCRBNOP
BFLDH R9, #0FFh, #00h ; CANCELLA BYTE PIU' SIGNIFICATIVO CMP R9, #0080h
JMPR cc_NZ,acc_ok ; SE CODICE VALIDO, MEMORIZZALOMOV R9, last_RAC ; SE CODICE NON VALIDO, USA IL COMANDO PRECEDENTE
acc_ok: MOV last_RAC, R9 ; aggiorna last_RAC BCLR P2.2 ; DISABLE PER LA SERIALE
;-------FILTRO NEW IIR RAC----------------------------
MOV accelerometro , R9
PUSH IDX1 PUSH R4 PUSH R2 PUSH R8 MOV R4 , #NIR CMP R4 , #0 JMPR cc_EQ , SkipNIR
MOV IDX1 , #S2NIR MOV R4 , #CC2NIR CoMUL [IDX1+] , [R4+] ; ACC = S2Gout * CC2Gout CoSHL #1h ; ACC = 2*(S2Gout*CC2Gout)
ASHR R9 , #1h ; scalamento ingresso di 2 CoADD R8 , R9 ; ACC = accelerometro+2*(S2Gout*CC2Gout)
MOV IDX1 , #S3NIR MOV R4 , #CC3NIR COMAC [IDX1] , [R4] ; ACC = accelerometro+2 * (S2Gout*CC2Gout)+S3Gout*CC3Gout
COSTORE R2 , MAH ; MOV S1NIR , R2 ; S1Gout=accelerometro*CC1Gout+2*(S2Gout*CC2Gout)+
+S3Gout*CC3Gout MOV R4 , #CD3NIR COMUL [IDX1+] , [R4+] ; ACC = CD3Gout * S3Gout COMACM [IDX1+] , [R4+] ; ACC = CD3Gout* S3Gout+CD2Gout*S2Gout; S3Gout <- S2Gout COMACM [IDX1+] , [R4+] ; ACC = CD3Gout* S3Gout+CD2Gout*S2Gout+CD1Gout*S1Gout ;
e S2Gout <- S1Gout COSHL #1h ; Scalamento dell'uscita COSTORE R4 , MAH ; Pa = CD3Gout*S3Gout+CD2Gout*S2Gout+ CD1Gout * S1Gout;
MOV Accelerometro , R4
LISTATO DEL PROGRAMMA
117
SkipNIR: POP R8 POP R2 POP R4 POP IDX1
;=============================================================================================; ADATTAMENTO;=============================================================================================
SCXT CP , #CONTESTOADATT PUSH IDX1 MOV R0 , #Weights ; Weights === Weigths(k) MOV R1 , #Weights_1 ; Weights_1 === Weights(k+1) MOV R5 , KOA ; registro kind of adapt. BCLR R5.15 ;questo bit segnala quando è stata effettuata un passo di adattamento MOV R6 , #NWeightsCost ; MOV R9 , accelerometro ; MOV R11 , pesprefiltro ; MOV R12, DF2 ; DF2 contatore di eventi
;------------------------------------------------------------------------; Aggiornamento Pa a AccPast;------------------------------------------------------------------------
CMP R6 , #1 JMPR cc_EQ , OnlyG MOV R4 , #Pa ADD R4 , #NWeightsCost-2 ADD R4 , R6 MOV R7 , R4 SUB R7 , #2 MOV R14 , #AccPast ADD R14 , #NWeightsCost-2 ADD R14 , R6 MOV R15 , R14 SUB R15 , #2
CyAggPaAcc: CMP R6 , #1h ; JMPR cc_EQ, ExCyAggPaAcc ; MOV [R4],[R7] ; MOV [R14],[R15] ; SUB R4 , #2 SUB R7 , #2 SUB R14 , #2
SUB R15 , #2 SUB R6 , #1 JMPR CyAggPaAccExCyAggPaAcc: MOV R6 , #NWeightsCostOnlyG :
;------------------------------------------------------------------------; FILTRO SUGLI INC ACCELEROMETRO;------------------------------------------------------------------------
JNB R5.10 , DisableACCINCMOV R4 , AccelerometroMOV R7 , Accelerometro_1SUB R7 , R4
CMP R7 , #ACCINCHJMPR cc_SGT , SkipACCINC ; saltando a questa label si mantiene in
;AccPast il valore memorizzato in precedenza (Accelerometro(i-1))CMP R7 , #ACCINCLJMPR cc_SLT , SkipACCINC ; " " " "
DisableACCINC: MOV AccPast, R9SkipAccInc :
MOV R9 , accelerometroMOV Accelerometro_1 , R9
;------------------------------------------------------------------------; SATURAZIONE DEL'ACCELEROMETRO;------------------------------------------------------------------------
JNB R5.11, NoSatAcc ;COLOAD R8 , R9 ;MOV R3 , #MINACC ;
APPENDICE B
118
COMAX R8 , R3 ; /------MAXACCMOV R3 , #MAXACC ; /COMIN R8 , R3 ; MINACC---/
COSTORE R9 , MAH ;MOV accelerometro , R9 ;
NoSatAcc :;------------------------------------------------------------------------; Filtro Gout : ( Pa = GOUT * Acceler ); ---------; Accelerom ---| Gout |--- Pa; ---------;------------------------------------------------------------------------
MOV IDX1 , #S2Gout MOV R4 , #CC2Gout CoMUL [IDX1+] , [R4+] ; ACC = S2Gout * CC2Gout CoSHL #1h ; ACC = 2*(S2Gout*CC2Gout)
ASHR R9 , #2 ; scalamento ingresso di 2 CoADD R8 , R9 ; ACC = accelerometro+2*(S2Gout*CC2Gout)
MOV IDX1 , #S3Gout MOV R4 , #CC3Gout COMAC [IDX1] , [R4] ; ACC = accelerometro + 2 * (S2Gout*CC2Gout) +
;S3Gout*CC3Gout JNB MSW.14 , NoOverFlowS1;Ciclo di controllo overflow parziale dello stato 1 ADD R12 , #1h ; MOV DF2 , R12 ;
NoOverFlowS1: ; COSTORE R2 , MAH ; MOV S1Gout , R2 ; S1Gout = accelerometro*CC1Gout + 2 *
;*(S2Gout*CC2Gout) + S3Gout*CC3Gout MOV R4 , #CD3Gout COMUL [IDX1+] , [R4+] ; ACC = CD3Gout*S3Gout COMACM [IDX1+] , [R4+] ; ACC = CD3Gout*S3Gout+CD2Gout*S2Gout;S3Gout<- S2Gout COMACM [IDX1+] , [R4+] ; ACC = CD3Gout*S3Gout+CD2Gout*S2Gout+CD1Gout*S1Gout
; e S2Gout <- S1Gout COSHL #2 ; Scalamento dell'uscita COSHL #1 ; per fare in modo che il Pa ha circa la stessa
;entità ai 100 Hz del segnale accelerometro (sperimentalmente) COSTORE R4 , MAH ; Pa = CD3Gout* S3Gout + CD2Gout * S2Gout + CD1Gout *
S1Gout ; NEG R4 ; MOV Pa , R4
;------------------------------------------------------------------------; CALCOLO ERRORE QUADRATICO MEDIO;------------------------------------------------------------------------
MOV R2 , #EQM ; COMUL R11 , R11 ; PES^2 COSHR #2 ; PES^2/4 COSTORE [R2] , MAH ;
;------------------------------------------------------------------------; CALCOLO SUMEQM;------------------------------------------------------------------------
MOV R2 , #MEMOEQMMOV R3 , EQMMOV R10, #MAXSUMPESMOV R6 , #NMA_1
CySUMPES: CMP R6 , #0JMPR cc_EQ , ExCySUMPESADD R3 , [R2+]JMPR cc_V , SaturaSUMPESSUB R6 , #1JMPR CySUMPES
ExCySUMPES: CMP R10 , R3JMPR cc_SGT, SkipSaturaSUMPES
SaturaSUMPES: ; Saturazione di SUMEQMMOV R3 , R10
SkipSaturaSUMPES: MOV R2 , #SUMEQM ; Riga necessaria al verificarsi di overflow MOV [R2] , R3 ; SUMEQM ora è caricata
;------------------------------------------------------------------------; Aggiornamento dei Tap Weights : Weights(k+1)-->Weights(k);------------------------------------------------------------------------
MOV R6 , #NWeightsCostCyAggWeights: CMP R6 , #0
LISTATO DEL PROGRAMMA
119
JMPR cc_EQ, ExCyAggWeights MOV [R0+] , [R1] ADD R1 , #2 SUB R6 , #1 JMPR CyAggWeights
ExCyAggWeights:;------------------------------------------------------------------------; PES ESTESO;------------------------------------------------------------------------
JNB R5.12 , ExExtendPES MOV R3 , tr CMP R3 , #TRPIU1 JMPR cc_SGT , AzzPES JMPR cc_EQ , TracciaPiu
CMP R3 , #TRMENO1 JMPR cc_SLT , AzzPES
JMPR cc_EQ , TracciaMeno JMPR ExExtendPES
AzzPES: MOV pesprefiltro , R8 JMPA ExCyAdat
TracciaPiu : CMP R11 , #0 JMPR cc_SGT , AzzPES ADD R11 , #8000h JMPR ExExtendPES
TracciaMeno : CMP R11 , #0 JMPR cc_SLT , AzzPES SUB R11 , #8000hExExtendPES: MOV pesprefiltro, R11
;------------------------------------------------------------------------; Delay;------------------------------------------------------------------------
Del1: JNB R5.7 , NoDelayAMOV R6 , DelayVSUB R6 , #1CMP R6 , #-1JMPR cc_NE , L1AMOV R6 , #0
L1A: MOV DelayV , R6CMP R6 , #0hJMPA cc_NE , ExCyAdat
NoDelayA: ;-------------------------------------------------------------------------; RIPRISTINO REGISTRI;-------------------------------------------------------------------------
MOV R0 , #Weights MOV R1 , #Weights_1
MOV R6 , #NWeightsCost MOV R9 , AccPast
;------------------------------------------------------------------------; ABILITAZIONE ALG ADATTAMENTO NELLA PRIMA FINESTRA TEMPORALE;------------------------------------------------------------------------
JNB R5.6, NoWaitWindow JNB R5.14, ExCyAdat ; KOA.14 segnala in quale finestra
; temporale per salvare i dati ci si trovaNoWaitWindow:;------------------------------------------------------------------------; SOGLIA EQM;------------------------------------------------------------------------
JNB R5.2 , SgAcc MOV R3 , SUMEQM CMP R3 , #ThresholdEQM JMPR cc_SLT, ExCyAdat
CMP R3 , #ThresholdEQMWarningJMPR cc_SGT, ExCyAdat
APPENDICE B
120
;------------------------------------------------------------------------; SOGLIE ACCELEROMETRO;------------------------------------------------------------------------
SgAcc: JNB R5.5 , OkDeviAdatCMP R9 , #ThresholdAccHJMPR cc_SGT , OkDeviAdatCMP R9 , #ThresholdAccLJMPR cc_SGT , ExCyAdat
;------------------------------------------------------------------------; SOGLIE PES;------------------------------------------------------------------------
SgPES: JNB R5.13 , OkDeviAdat CMP R11 , #MAXPES JMPR cc_SGT , ExCyAdat CMP R11 , #MINPES JMPR cc_SLT , ExCyAdat
;------------------------------------------------------------------------; Ciclo entro il quale avviene l'adattamento vero e proprio;------------------------------------------------------------------------OkDeviAdat : JB P2.10 , ExCyAdat BSET R5.15
;-------------------------------------------------------------------------; All'attivazione di un adattamento si scarica la struttura dati MEMOEQM E EQM; si cancellano quindi elementi in memoria dovuti al filtro precedente;-------------------------------------------------------------------------
MOV R7 , #NMA_1 MOV EQM , R8 ; EQM = [0] MOV R3 , #EQM ; R3 -> [0] MOV R13 , #MEMOEQM
CyEraseMEM: CMP R7 , #0 JMPR cc_EQ , ExCyEraseMEM
MOV [R13+] , [R3] SUB R7 , #1 JMPR CyEraseMEM
ExCyEraseMEM:;--------------------------------------------------------------------------; CARICAMENTO DELAYV PER PROSSIME ITERAZIONI;-------------------------------------------------------------------------- MOV R7 , #DelayA ;
MOV DelayV , R7 ;
MOV R9 , #AccPast MOV R7 , #Pa
JB R5.9 , ExCyAdat ; se KOA.9 e a 1 non si esegue adattamento
;------------------------------------------------------------------------; CARICAMENTO ADAPTATION GAIN;------------------------------------------------------------------------
AG2IF: JB R5.0 , AG2VariabileMOV R2 , #AdaptationGain2 ;AdaptationGain2 = 2* muJMPR AG2VariabileSkip
AG2Variabile: MOV R2 , SUMEQM ADD R2 , #100h
AG2VariabileSkip:;------------------------------------------------------------------------; CICLO INTERNO PER ADATTARE CIASCUN PESO;------------------------------------------------------------------------InterCyAdat : CMP R6 , #0
JMPR cc_EQ , ExCyAdat;------------------------------------------------------------------------; Gout OR NOT Gout;------------------------------------------------------------------------
JB R5.1 , GoutYESCOMUL R11 , [R9] ;ACC = Accele(k-i) * PES(k)JMPR GoutYESSkip
LISTATO DEL PROGRAMMA
121
GoutYES: CoMUL R11 , [R7] ; ACC = Pa(k-i) * PES(k)GoutYESSkip: CoSTORE R3,MAH ;
CMP R3,#0FFFFh ; *****X PROBLEMI NUMERICIJMPR cc_EQ,NoSom ; attenzione underflowCOMUL R3 , R2 ; ACC = AdaptationGain2 * PES(k) * (Gout) *Accel(k-i)
;------------------------------------------------------------------------; VALUTA SE SOMMARE OPPURE NO L'INCREMENTO;------------------------------------------------------------------------
COSTORE R3,MAH ; *****X PROBLEMI NUMERICICMP R3,#0FFFFh ; *****X PROBLEMI NUMERICIJMPR cc_EQ,NoSom ; attenzione underflowJMPR GoOn ;
NoSom : COLOAD R8 , R8 ; JMPR NoSatInc ;GoOn :;------------------------------------------------------------------------; SATURAZIONE INCREMENTO AL PESO CORRENTE;------------------------------------------------------------------------; JNB R5.3 , NoSatInc ;
MOV R3 , #MININC ; COMAX R8 , R3 ; /------MAXINC MOV R3 , #MAXINC ; / COMIN R8 , R3 ; MININC---/
NoSatInc :
;------------------------------------------------------------------------; LEAKY;------------------------------------------------------------------------
JNB R5.8 , NoLeaky COSTORE R3 , MAH
MOV R13 , #Leaky COMUL R13 , [R0] CoADD R8 , R3 JMPR SkipNoLeaky ;ACC = Leaky * W_i(k) + 2 * PES(k) * Accel(k-i)
NoLeaky :
;------------------------------------------------------------------------ COADD R8 , [R0] ;ACC = W_i(k) + 2 * mu * PES(k) * Accel(k-i)
SkipNoLeaky:;------------------------------------------------------------------------; SATURAZIONE DEL PESO CORRENTE;------------------------------------------------------------------------
JNB R5.4 , NoSatW ;MOV R3 , #MINWEIGHT ;COMAX R8 , R3 ;MOV R3, #MAXWEIGHT ; /-------- MAXWEIGHTCOMIN R8 , R3 ; / ; MINWEIGHT ---/
NoSatW :;------------------------------------------------------------------------ COSTORE [R1] , MAH ;W_i(k+1) = W_i(k) + 2 * mu * PES * Accel(k-i);------------------------------------------------------------------------
ADD R0, #2ADD R1, #2ADD R7, #2ADD R9, #2SUB R6, #1
JMPR InterCyAdatExCyAdat:;------------------------------------------------------------------------; FINE DEL CICLO DI ADATTAMENTO;------------------------------------------------------------------------
;------------------------------------------------------------------------; AGGIORNAMENTO MEMOEQM;------------------------------------------------------------------------
MOV R6 , #NMA_1MOV R2 , #MEMOEQMADD R2 , R6ADD R2 , #NMA_1-2
APPENDICE B
122
MOV R13 , R2SUB R13 , #2
CyAgMEMOPES: CMP R6 , #1JMPR cc_EQ , ExCyAgMEMOPES
MOV [R2] , [R13]SUB R2 , #2SUB R13, #2SUB R6 , #1JMPR CyAgMEMOPES
ExCyAgMEMOPES: MOV R2 , EQM
MOV MEMOEQM , R2;-------------------------------------------------------------------; RIPRISTINO REGISTRI;-------------------------------------------------------------------
MOV R0,#WeightsMOV R1,#Weights_1MOV R6,#NWeightsCost
;-------------------------------------------------------------------; SALVATAGGIO Weights_1 in ACC_After;-------------------------------------------------------------------
JNB R5.15 , StopSave ;se non c'è stata variaz. nei pesi nn si memo. nienteMOV R14 , COUNTER_SAVE_I;contatore relativo all'indirizzo della coda su cui
;si memorizza (Acc_After)MOV R15 , COUNTER_SAVE ; contatore relativo al numero del set dati
;(nella coda Acc_After ce ne stanno 19...)CMP R15 , #0JMPR cc_EQ , StopSave2
WtoACCAfterCy:CMP R6 , #0JMPR cc_EQ , StopSave1MOV [R14+] , [R1]ADD R1 , #2SUB R6 , #1JMPR WtoACCAfterCy
StopSave1: SUB R15 , #1 ;
MOV COUNTER_SAVE , R15 ;si tiene traccia dei val. dei contatori aggiornati MOV COUNTER_SAVE_I ,R14 ;
JMPR StopSave ;
StopSave2: MOV R6 , #19 ; la coda è stata riempita si ricomincia da capo a salvare.... MOV COUNTER_SAVE , R6 ; si reimpostano i contatori SAVE
MOV R6 , #ACC_After ;MOV COUNTER_SAVE_I , R6 ;
StopSave:
;-------------------------------------------------------------------; MOV R8 , #Kff; MOV Weights , R8; MOV R8 , #0;-------------------------------------------------------------------; CALCOLO DEL COMANDO DI COMPENSAZIONE;-------------------------------------------------------------------
MOV R6 , #NWeightsCostMOV R9 , #AccPast ; R9 -> AccPastCOLOAD R8 , R8 ; ACC = 0
CyEstD: CMP R6 , #0JMPR cc_EQ, ExCyEstDMOV R4 , [R0] ; R4=[Weight(i,K)]COMAC R4 , [R9+] ; ACC = ACC + Accele(k-i-1) * Weight(i,K)ADD R0 , #2SUB R6,#1JMPR CyEstD
ExCyEstD:
COSTORE R4 , MAH ;CMP R4 , #0FFFFh ;***************JMPR cc_NE , HereD ; PROBLEMI NUMERICIMOV R4 , R8 ;**************
HereD: MOV EstimateD , R4 ;
LISTATO DEL PROGRAMMA
123
POP IDX1 POP CP
;===================================================================; FINE ADATTAMENTO;===================================================================
MOV R15 , [R10+] ; R10 ---> RESL[2] = 8000h
; ----------------------------- FILTRAGGIO -----IIR6ord--------------MOV R0,#filter_onJMPR cc_Z,end_filter
Filtro6: MOV R9 , accelerometro push IDX1
MOV R12 , #0MOV R0 , #S0MOV R8 , #D6 ; #D2 per filtro del 2° ordineMOV IDX1 , #S5 ; #S1COLOAD R12 , R12 ; ACC=0
; COASHR #2COMACM [IDX1+],[R8+] ;ACC=ACC+D6*S5 e S6=S5 ; MA D6 == 0COMACM [IDX1+],[R8+] ;,rnd ;ACC=ACC+D5*S4 e S5=S4
COASHR #13 ;ACC = ACC /8192 poiche' D5 era memorizzato *8192 !COMACM [IDX1+],[R8+] ;ACC=ACC+D4*S3 e S4=S3COMACM [IDX1+],[R8+] ;ACC=ACC+D3*S2 e S3=S2COMACM [IDX1+],[R8+] ;ACC=ACC+D2*S1 e S2=S1COMACM [IDX1+],[R8+] ;ACC=ACC+D1*S0 e S1=S0COADD R12 , R9 ;ACC = ACC + INGRESSO
; COSHL #2COSTORE [R0], MAHSUB IDX1,#4MOV R0 , [R0]COMUL R0 , [R8+] ; N0 * S0
COMAC [IDX1-],[R8+] ;ACC=ACC+N1*S1COMAC [IDX1-],[R8+] ;ACC=ACC+N2*S2COMAC [IDX1-],[R8+] ;ACC=ACC+N3*S3COMAC [IDX1-],[R8+] ;ACC=ACC+N4*S4COMAC [IDX1-],[R8+] ;ACC=ACC+N5*S5COMAC [IDX1],[R8] ;ACC=ACC+N6*S6COSHL #1COSTORE R9 , MAHMOV EstimateD , R9POP IDX1
end_filter:;-------------------------FINE FILTRO--------------------------------
;------------------------ ABILITAZIONE O MENO DELLA COMPENSAZIONE F.F. ---------------
JB P2.4 , no_comp_ff ; SE LO SWITCH 0 (ASSOCIATO AL PORT P2.4); ; NON E' "ON" (= AD UN LIVELLO LOGICO BASSO),
; NON ESEGUIRE LA SOMMA DEL COMANDO E DELLA LETTURA ; DELL'ACCELEROMETRO.
MOV R9 , EstimateD ; ADD R14 , R9 ; no_comp_ff: NOP
NOP
;----ESEGUE SCRITTURA SUL DAC_1 DEL COMANDO CALCOLATO PREVIA AGGIUSTAMENTO OFFSET + #num BIT
ADD R14 , R15 ; SOMMA 8000ASHR R14 , #2 ; DATI IN FORMATO 14 BIT PER IL DAC
MOV DAC_1 , R14 ; SCRIVE SUL DAC1 ADIBITO ALL'INIEZIONE DEL COMANDONOP
[…]; -- SCRITTURA SUL DAC_2 DI UNA VARIABILE SCELTA PER MEZZO DEGLI SWITCH 1, 2 E 3. ------
XOR R9 , R9 ; R9.0 POSTO A ZERO PER INDIRIZZI SEMPRE PARIBMOVN R9.1 , P2.5 ; SWITCH 1 "OFF" -----> P2.5 "0"BMOVN R9.2 , P2.6 ; SWITCH 2 "OFF" -----> P2.6 "0"BMOVN R9.3 , P2.7 ; SWITCH 3 "OFF" -----> P2.7 "0"
ADD R9 , #TABELLA_PTR ; R9 -> TABELLA_PTR + condizione SWITCHMOV R11 , [R9] ;R11 = [TABELLA_PTR+cond SWITCH] ora praticamente R11
; contiene un puntatore MOV R9 , [R11] ; in R9 viene inserito il valore puntato ADD R9 , #8000h ; OFFSET PER IL DAC
APPENDICE B
124
ASHR R9 , #2 ; 14 BIT PER IL DACMOV DAC_2, R9 ; MANDA AL DAC2 IL VALORE DI R9
;------------------------------------------------------------NOPNOP
;----------------------SCRITTURA DAC_3--------------------------
MOV R9 , pesprefiltro ADD R9 , #8000h ; offset per il DAC3,
ASHR R9 , #2 ; 14 BIT PER IL DACMOV DAC_3 , R9
[…];FINE ALGORITMO DI CONTROLLO
RETI
TRACK_PROC1 ENDP
sperem PROC NEAR
SCXT CP , #REGSEEK
[…]POP CPret
sperem ENDP
IVC PROC NEAR
SCXT CP , #REG_IVC
[…]IVC ENDP
setoffu PROC near SCXT CP , #REGSETOFF
[…]pop CPret
setoffu ENDP
;================================================================;;PROCEDURA DI SALVATAGGIO DATI;;================================================================
salva PROC TASK salva_TASK INTNO INT_INUM_1 = 01dh
SCXT CP , #INIT_RB ; NOP ; N.B. R2 -> CODA_END1 ;Salvataggio dati
CMP R0 , R2 ; verifica se si è arrivati alla fine della codaJMPR cc_NE , save ; se non si è alla fine si salta a "save"CMPD1 R10 ,#0 ; ; controlla se il contatore R10 è nullo e decrementa R0JMPR cc_EQ , no_save ;MOV R0,#CODA_PES ; inizializzazione si deve ripuntare all'inizio : R0 -> CODA_PESMOV R1,#CODA_TR ; R1 -> CODA_TR
MOV R12,#CODA_VAR2A ; R12 -> CODA_VAR2A MOV R13,#CODA_VAR2B ; R13 -> CODA_VAR2Bsave: ;Primi 1600 dati
MOV [R0+],[R4] ;R4 -> PES R0->CODA_PES[i_ma], CODA_PES[i_ma] = PES, R0 ;viene incrementato (di 1 word)
MOV [R1+],[R7] ; R7 -> TR R1->CODA_TR[i_ma], CODA_TR[i_ma] = TR , R1 increm;Secondi 1600 datiMOV [R12+],[R8]MOV [R13+],[R9]
noxequeo: CMP R10 , #0JMPR cc_EQ , change
LISTATO DEL PROGRAMMA
125
POP CPRETI
change: CMP R0 , R11JMPR cc_EQ , cambioPOP CPRETI;MODIFICO I PARAMETRI TARGET
cambio:mov R14 , OFF_UFLAG2jmpr cc_Z , nochangeforsetoffMOV R14 , #TARGET;#TARMOV R15 , #03000h ; <----- ; new target
MOV [R14] , R15 ;<--------------------Togliere se si usa ripseek
nochangeforsetoff: POP CP RETI
no_save: ADD R10,#1 MOV R7 , KOA JB R7.14 , NoNewSet
MOV R6,#PES_After;MOV R1,#ACC_AfterMOV R12,#AdGain_AfterMOV R13,#CODA_END2
BSET R7.14 MOV KOA , R7
MOV R3,#0 ;#100h ; contatoreMOV R8,#DebugFlag ; #accelerometro ;MOV R9,#Weights ;
;R4 punta ancora al valore impostato prima del loop main prg (PES)
NoNewSet:CMP R6 , R13JMPR cc_NE, SAVE2CMPD1 R3,#0hJMPR cc_EQ, NO_SAVE2
MOV R6,#PES_After;MOV R1,#ACC_AfterMOV R12,#AdGain_After
SAVE2: MOV [R6+],[R4] ;MOV [R1+],[R8]
MOV [R12+],[R9]POP CPRETI
NO_SAVE2: ADD R3,#1hPOP CPRETI
salva ENDP
;--------------------------------------------------------------------------; DEFINIZIONE VECTOR TABLE;--------------------------------------------------------------------------VCT_TABLE SECTION DATA PUBLIC 'VCT';EXTMEM;/**** Trap Number 00, Vector Location 00H ***/ //--- HW reset, SW reset, Watchdog TimerOverflowDB 0FAH , SEG INIT_PROCDW SOF INIT_PROC
[…];/**** Trap Number 18H, Vector Location 60H ***/ //--- External interrupt 0DB 0FAH , SEG TRACK_PROC0DW SOF TRACK_PROC0;/**** Trap Number 19H, Vector Location 64H ***/ //--- External interrupt 1DB 0FAH , SEG TRACK_PROC1DW SOF TRACK_PROC1
[…]VCT_TABLE ENDS
END
APPENDICE B
126
127
BIBLIOGRAFIA
[1] N.Tolot ” REALIZZAZIONE DELL’ INTERFACCIA HARDWARE PER UN
SISTEMA DI COMPENSAZIONE DELLE VIBRAZIONEI NEGLI HARD
DISK” . Tesi di laurea, DEI. Università di Padova A.A. 2000-2001.
[2] G.Tomasi ” REALIZZAZIONE DEL SOFTWARE PER UN SISTEMA DI
COMPENSAZIONE DELLE VIBRAZIONEI NEGLI HARD DISK” . Tesi di
laurea, DEI. Università di Padova A.A. 2000-2001.
[3] F.Marcassa “ CONTROLLO DI POSIZIONE DI TESTINE DI HARD DISK
MEDIANTE ST10” . Tesi di laurea, DEI. Università di Padova A.A.1999-
2000.
[4] D.Ciscato ” APPUNTI DI ELETTRONICA INDUSTRIALE, A.A.2001 -
2002” . Libreria Progetto Padova.
[5] R.Oboe ” APPUNTI DELLE LEZIONI INGEGNERIA E TECNOLOGIA
DEI SISTEMI DI CONTROLLO A.A.1998-1999” . Libreria CUSL Padova.
[6] G.Bortolan, K.Thomaseth “ CONTROLLI AUTOMATICI II, Algoritmi
iterativi di discesa, A.A. 2000-2001” DEI, Università di Padova.
[7] R.Oboe “ USE OF MEMS BASED ACCELEROMETERS IN HARD DISK
DRIVES” . In Proceedings of 2001 IEEE/ASME, pp 1142-1147, luglio 2001
[8] M.T.White ” CONTROL TECHNIQUES FOR INCREASED
DISTURBANCE REJECTION AND TRACKING ACCURACY IN
MAGNETIC DISK DRIVES” .Doctoral Dissertation No. 97-001 presso
Computer Mechanics Laboratory Università di Berkley, giugno 1997.
128
[9] D.Y.Abramovitch “ REJECTING ROTATIONAL DISTURBANCES ON
SMALL DISK DRIVES USING ROTATIONAL ACCELEROMETERS” . In
Proceedings of the 13th World Congress of IFAC, vol. O, pp. 483-488, luglio
1996.
[10] K.J.Astrom, B.Wittenmark ” ADAPTIVE CONTROL” , Addison-Wesley
1995
[11] B.Widrow, S.D.Stearns ” ADAPTIVE SIGNAL PROCESSING” , Prentice
Hall 1985.
[12] S.M.Kuo, D.R.Morgan ” ACTIVE NOISE CONTROL SYSTEM Algorithms
and implementations” John Wiley & Sons Inc. 1996
129
RINGRAZIAMENTI
Quale momento migliore per dire alle persone che mi vogliono bene quanto siano
importanti per me! Il mio primo pensiero è per mio padre, che non ha potuto
vedermi finire gli studi universitari. Questa tesi è dedicata a lui perché le cose più
importanti della mia vita le ho imparate da lui e se ho avuto la possibilità di studiare
e di capire è stato in gran parte merito suo. Grazie papà. Oggi mi mancherà anche
mia nonna Luigia con la quale ho vissuto assieme tutta la mia infanzia e che è
sempre stata tanto affettuosa e tanto tanto paziente con me.
Un grazie immenso a mia madre Rosaria che ha fatto di tutto per permettermi di
studiare e di essere felice. Tante grazie a mia sorella Rosanna che ha creduto in me e
mi ha sostenuto, ti sarò grato per sempre.
Ringrazio di cuore Elisa che con me è sempre stata tenera e dolce e ha saputo
pazientare più di chiunque altro in quest’ ultimo periodo (e non solo), grazie Eli.
Un grosso bacio alle mie sorelle Felicita e Giuseppina che si sono costantemente
informate sui miei progressi ed hanno avuto la pazienza di chiedermi per 28 volte e
più “ Com’ è andato l’ esame” !!, vi ringrazio tanto. Un “ pugno sul naso” (affettuoso)
ai miei splendidi nipotini Eleonora, Giampietro, Andrea e Anna.
Un sentito grazie ai professori Doriano Ciscato e Roberto Oboe che mi hanno dato la
preziosa possibilità di lavorare con loro e che sono sempre stati disponibili e cortesi.
Un grazie agli amici del laboratorio per primo Michele (ogni promessa è debito) che
non si è mai lamentato sebbene ho dovuto usare spesso il suo computer e perché i
suoi tarallucci sono proprio buoni. In bocca al lupo a Manuel e Roberto tra poco
tocca a voi mi raccomando! Ad Alessandro ‘pianista’ un in bocca al lupo per l’ esame
di stato. Grazie naturalmente a Riccardo, con il quale ho trascorso molto tempo in
questi ultimi sei mesi, per avermi dato suggerimenti e per avermi aiutato in momenti
di abbattimento ad abbattermi ancora di più! Sto scherzando ti auguro di realizzarti e
di essere felice. E come non ringraziare gli amici del gruppo ‘G8’ e gli amici di
Caselle con i quali ho passato innumerevoli serate e momenti piacevoli.
Un enorme grazie infine a tutti i miei amici con i quali ho condiviso gli anni
dell’ università. In bocca al lupo per il vostro futuro.
GRAZIE A TUTTI, GRAZIE DI CUORE
130