8.1 controllo hardware e controllo softwareclassiperlo.altervista.org/archivio/2019x/2019_5... ·...
TRANSCRIPT
1
11 CONTROLLO A MICROPROCESSORE
11.1 Controllo hardware e controllo software
11.2 Il software di controllo
11.3 Periodo di campionamento e tempo di calcolo
11.4 Temporizzazione del campionamento
11.5 Acquisizione di un campione dall’ADC
11.6 Realizzazione software di un regolatore PID
11.7 Invio di un campione digitale al DAC
11.8 Decodifica degli indirizzi e gestione delle periferiche
11.9 Circuiti di adattamento e filtraggio per la conversione
digitale-analogica e la conversione analogico-digitale
11.9.1 Conversione digitale-analogica
11.9.2 Conversione analogico-digitale
11.1 Controllo hardware e controllo software
Nella scheda di approfondimento 10.1 sono state presentate alcune possibili
realizzazioni circuitali per i diversi tipi di regolatori standard, basate sull’amplificatore
operazionale. In tali circuiti i segnali di ingresso e di uscita sono tensioni di tipo
analogico: l’ingresso del regolatore proviene direttamente dal trasduttore, mentre
l’uscita viene inviata direttamente all’attuatore. Questo tipo di realizzazione viene detta
controllo (o regolazione) hardware 1 (sono anche frequentemente usate le
denominazioni controllo analogico o nel continuo).
Il controllo effettuato per mezzo di circuiti analogici è estremamente veloce: il
ritardo nella risposta del regolatore è infatti dovuto solo alle limitazioni di banda e allo
slew-rate2 dell’operazionale usato. Per contro si tratta di un architettura di progetto
poco flessibile, in quanto ogni modifica dei parametri del regolatore richiede, in linea di
principio, una sostituzione di componenti elettrici. Tale problema, che risulta
particolarmente oneroso nella fase di test e di messa a punto del regolatore, può essere
almeno parzialmente risolto con l’uso di resistori o di condensatori variabili nel circuito
del regolatore: anche in questo modo tuttavia risulta dispendioso cambiare il tipo di
regolatore usato (passando ad esempio da un regolatore proporzionale semplice a un
regolatore PID). Inoltre la regolazione hardware diventa molto complessa se il segnale
di riferimento è variabile nel tempo. In questo caso infatti occorre disporre di un
opportuno generatore di funzioni in grado di produrre l'andamento del segnale di
riferimento desiderato. Infine può risultare anche molto complesso e costoso effettuare
il controllo contemporaneo di molti segnali di regolazione. Il controllo hardware invece
1 Abbreviato spesso nel seguito con HW. 2 Lo slew rate è la massima velocità con cui può variare l'uscita di un operazionale in
risposta a un segnale a gradino in ingresso. I manuali specificano generalmente il valore
tipico dello slew-rate, espresso in V/s, in condizioni di guadagno unitario.
Controllo hardware
Pregi e difetti del controllo
hardware
2
risulta particolarmente semplice e conveniente in caso di sistemi in cui si debba
controllare una sola uscita, agendo su un solo ingresso, e quando il segnale di
riferimento in ingresso è costante nel tempo.
L'attuale diffusione di circuiti integrati digitali a basso costo consente lo
sviluppo di una architettura di progetto alternativa alla precedente. Si tratta del
cosiddetto controllo (o regolazione) software 3 (detto anche controllo digitale, nel
discreto4 o a microprocessore5). Essa consiste nel realizzare le funzioni del regolatore
per mezzo di un programma. Naturalmente l’aggettivo “software” non significa che
questo tipo di regolazione non necessiti di una base hardware specifica. Anzi l’hardware
necessario per realizzare una regolazione software ad anello chiuso è, almeno in linea di
principio, più complesso di quello necessario per una regolazione hardware. Anzitutto
occorre naturalmente un microprocessore6 (P), sul quale il programma di regolazione
viene eseguito. Poi, per ricevere ed inviare segnali, il P deve essere interfacciato con il
resto dell’impianto per mezzo di opportuni convertitori analogico-digitali (analog to
digital converter o ADC) e convertitori digitale-analogici (digital to analog converter
o DAC). Il modello a blocchi completo di un sistema di controllo digitale ad anello
chiuso7 è mostrato in figura 11.1
Figura 11.1 - Modello a blocchi di un sistema di controllo a microprocessore
Nel modello a blocchi precedente sono stati indicati esplicitamente quei segnali che
corrispondono ai segnali presenti in un sistema di controllo hardware (c(t), i(t), u(t),
m(t)): si tratta di segnali di tipo analogico, indicati nello schema con frecce a tratto
sottile. Il segnale di errore ed il segnale di riferimento, presenti nel controllo analogico,
sono qui scomparsi: al loro posto troviamo dei segnali digitali (indicati nello schema
con frecce a tratto spesso). Esaminiamo ora separatamente uno alla volta i principali
sottosistemi che compongono un sistema di controllo digitale.
3 Nel seguito verrà spesso utilizzata l’abbreviazione SW. 4 L’espressione “nel discreto” si riferisce alla natura digitale ovvero “discretizzata” dei segnali di ingresso e di uscita del regolatore. I segnali analogici sono invece continui e per questa ragione la corrispondente regolazione viene anche detta “nel continuo”. 5 Nel seguito microprocessore verrà spesso abbreviato con P. 6 In questo capitolo le problematiche relative alla programmazione di un P e al suo interfacciamento col mondo esterno vengono affrontate solo allo scopo di delineare l’architettura generale di un sistema di controllo SW. Per una trattazione più specifica e maggiormente approfondita rimandiamo lo studente al secondo volume del corso. 7 Per semplicità supponiamo che il sistema controllato abbia una sola uscita da controllare ed un solo ingresso sul quale intervenire.
Controllo software
3
Il microcalcolatore realizza le funzioni del regolatore software. Si tratta di un
sistema a microprocessore (costituito da P, memorie, timer, porte di input/output8
ecc.) e, a seconda delle applicazioni, potrà essere realizzato mediante un personal
computer, una scheda a microprocessore o un microcomputer integrato per applicazioni
di controllo.
Il terminale consente all’operatore di impostare il segnale di riferimento ed i
parametri del regolatore ed eventualmente di visualizzare l’andamento della regolazione
in corso. In alcune realizzazioni può essere anche del tutto assente (regolatore con
parametri e segnale di riferimento prefissati) oppure può trattarsi di un terminale
mobile, collegato al sistema solo nella fase di messa a punto dei valori di regolazione
(questa soluzione consente in particolare di usare un solo terminale portatile per più
sistemi).
Il convertitore digitale-analogico (ADC) ha lo scopo di trasformare il segnale
di regolazione digitale, prodotto dal microcomputer, in un segnale analogico,
utilizzabile dall’attuatore. A seconda dei casi potrà essere necessario adattare e filtrare
opportunamente il segnale analogico in uscita dall’ADC, prima di inviarlo all’attuatore
(discuteremo più approfonditamente di questi aspetti nel paragrafo 11.9). Analogamente
il convertitore analogico-digitale (DAC) serve per intefacciare il microcomputer con i
segnali analogici prodotti dal trasduttore. In alcuni casi il segnale analogico dovrà essere
campionato prima di essere digitalizzato per mezzo di un opportuno blocco di sample
and hold. Talvolta si rende anche necessario filtrare ed adattare preventivamente il
segnale analogico in uscita dal trasduttore, prima della sua digitalizzazione. Anche di
questo si parlerà più diffusamente nel paragrafo 11.9.
I sottosistemi attuatore, sistema controllato e trasduttore sono invece di tipo
analogico e sono in linea di principio identici ai corrispondenti sottosistemi presenti in
uno schema di regolazione hardware.
Rispetto al controllo hardware, il controllo software presenta il vantaggio di una
maggiore flessibilità, in quanto, per modificare i parametri o anche il tipo del regolatore,
è sufficiente in questo caso cambiare semplicemente il programma di regolazione nella
memoria del microcomputer. La flessibilità è massima anche per quanto concerne la
scelta del segnale di riferimento, dal momento che anche quest’ultimo viene generato
mediante programma. In molti casi inoltre la regolazione software può risultare più
economica della regolazione hardware, soprattutto quando il numero di segnali da
trattare è molto elevato. In questo senso vale la pena di sottolineare la possibilità di
sfruttare, nella realizzazione di un controllo software, calcolatori già presenti
sull’impianto per altri scopi (ad esempio per il monitoraggio delle funzioni
dell’impianto stesso). Per quanto riguarda invece gli svantaggi, la regolazione software
può risultare eccessivamente complessa e costosa nel caso di sistemi di controllo
semplici (cioè con pochi segnali o con segnale di riferimento costante). Inoltre essa
risulta generalmente più lenta della regolazione hardware, in quanto il programma, che
realizza le funzioni del regolatore, potrebbe facilmente richiedere l’esecuzione di molte
istruzioni. Un ultimo problema è rappresentato infine dalla sicurezza del software di
controllo, nei confronti di possibili e potenzialmente pericolosi errori logici contenuti
8 Si tratta di dispositivi per l’interfacciamento del microcalcolatore col mondo esterno. Si veda a questo proposito anche il paragrafo 11.8
Microcalcolatore
Terminale
Convertitore analogico-digit
ale e digitale-analog
ico
Pregi e difetti del controllo
software
4
nel programma di controllo (per queste ragioni una regolazione completamente software
non può essere utilizzata per impianti ad alto rischio, come ad esempio le centrali
nucleari).
Se il sistema controllato ha più di un'uscita, occorrono di conseguenza più trasduttori. E' anche
necessario usare più convertitori analogico-digitali (uno per ogni trasduttore)? Spiegare.
E' corretto affermare in generale che il controllo SW è sempre più semplice ed economico del controllo
HW? Spiegare.
11.2 Il software di controllo
Il software di controllo è costituito dal programma che viene eseguito sul
microcalcolatore. Esso ha lo scopo di gestire l'interfaccia con l'operatore e di controllare
il sistema in risposta ai segnali provenienti dal trasduttore. L’algoritmo in figura 11.2,
rappresentato per mezzo di un diagramma di flusso, evidenzia le funzioni principali di
un generico programma di controllo. Occorre sottolineare subito come l'algoritmo qui
presentato sia estremamente generale e generico e pertanto possa richiedere anche
notevoli modifiche per applicazioni particolari (come ad esempio nel caso in cui si
debbano gestire più segnali di controllo e produrre più segnali di regolazione).
Nondimeno esso può costituire una traccia per discutere le diverse tematiche ed i
problemi inerenti al controllo software.
?
5
Modulo di
interfaccia con
l'operatore
FINE
Attesa dello scadere di un
periodo di campionamento
Acquisizione di un
campione dallo ADC
Elaborazione del campione e
calcolo del valore di regolazione
Invio del valore di regolazione
al DAC
SI NO
Figura 11.2 - Programma di controllo (algoritmo generale)
Il modulo di interfaccia con l’operatore è costituito da una serie di subroutine,
le quali consentono lo scambio di dati con l’operatore attraverso il terminale. Si osservi
che il modulo di interfaccia viene eseguito fuori dal ciclo di controllo (off-line) e
dunque non rallenta la regolazione. Come si è già detto, in un caso generale tale
sottoprogramma deve permettere all'operatore di impostare il segnale di riferimento ed i
parametri del regolatore ed eventualmente di visualizzare l’andamento della regolazione
in corso. Nel seguito non ci occuperemo ulteriormente del modulo di interfaccia, la cui
realizzazione è fortemente legata al tipo di hardware utilizzato. Supporremo di
conseguenza che i dati di ingresso al programma di regolazione (parametri del
regolatore e valori del segnale di riferimento) siano memorizzati in opportune locazioni
della memoria RAM del microcalcolatore.
Il programma di regolazione propriamente detto è costituito da un ciclo: tale
ciclo può essere terminato dell’utente (per esempio premendo un apposito tasto) oppure
può interrompersi in seguito a determinati eventi che si possono verificare nell’impianto
(per esempio malfunzionamenti o raggiungimento di valori finali prefissati). Tali
condizioni di terminazione sono rappresentate nel diagramma di flusso di figura 11.2
6
mediante il blocco "FINE". Il ciclo di regolazione viene ripetuto ad intervalli di tempo
pari al periodo di campionamento ( par. 11.3). La prima operazione eseguita nel ciclo
è l’acquisizione di un valore (campione) prodotto dal trasduttore e digitalizzato
dall’ADC. Tale campione viene poi elaborato (confrontandolo col segnale di
riferimento) e viene quindi prodotto un valore di regolazione digitale. Tale valore viene
infine inviato al DAC, per essere trasformato in una tensione analogica con cui pilotare
l’attuatore.
11.3 Periodo di campionamento e tempo di calcolo
Per la conversione di un segnale analogico in un segnale digitale occorre
effettuare anzitutto un campionamento. Per mezzo del campionamento il segnale
analogico viene convertito in un treno di impulsi, ciascuno di ampiezza uguale al valore
analogico del segnale nell'istante corrispondente9 ( fig. 11.3).
Figura 11.3 - Segnale analogico continuo e segnale
analogico campionato
9 E' importante osservare che il segnale campionato è ancora un segnale di tipo
analogico, cioè a valori continui e non discretizzati. Successivamente i campioni
analogici devono essere convertiti in valori numerici digitali. Campionamento e
conversione digitale vengono generalmente effettuate mediante un unico circuito
integrato, il convertitore analogico-digitale. In alcuni casi il campionamento vero e
proprio viene realizzato da un circuito apposito, detto di sample and hold ( par. 11.9).
7
Il parametro più importante per un corretto campionamento è il periodo di
campionamento Tcamp ovvero il suo reciproco, la frequenza di campionamento fcamp. In
base al teorema del campionamento, affinché il campionamento di un segnale
analogico avvenga senza alcuna perdita di informazione10, è necessario che la frequenza
di campionamento sia almeno il doppio della banda del segnale analogico (cioè
dell'intervallo di frequenze contenente tutte le armoniche significative del segnale,
par. 6.3). Questo valore è tuttavia è puramente teorico, in quanto vale solo per i segnali
a banda limitata, cioè che non presentano nessuna armonica fuori banda. Poiché nessun
segnale reale è rigorosamente a banda limitata, in pratica occorre campionare con una
frequenza che sia almeno 4-10 volte la banda del segnale.
In un sistema di controllo ad anello chiuso, il segnale che viene campionato e
quindi digitalizzato è il segnale di misura proveniente dal trasduttore. La banda del
segnale di misura può essere stimata sulla base della banda passante del sistema di
controllo.
Infatti in generale si può supporre che in uscita da un sistema con ampiezza di banda Bw non si possano avere segnali con armoniche significative di frequenza maggiore di Bw.
Il valore di Bw può essere ricavato determinando il valore della prima frequenza di taglio
del sistema alle alte frequenze. A tale scopo, per un sistema di controllo, occorre
prendere in considerazione la funzione di trasferimento ad anello chiuso 11 Fcl:
l'ampiezza di banda di tale f. di t. può essere determinata approssimativamente
attraverso il diagramma di Bode del modulo, tracciato col metodo visto nel paragrafo
9.7. Quindi si sceglie per la frequenza di campionamento del segnale di misura un
valore prudentemente maggiore12 (almeno quattro volte) della banda del sistema così
determinata.
Una volta stabilito, in base alle considerazioni precedenti, il valore del periodo
di campionamento, occorre verificare se esso è sufficientemente lungo per consentire
una regolazione software. Infatti durante un periodo di campionamento devono essere
eseguite le seguenti operazioni (vedi il diagramma di flusso di figura 11.2):
a) conversione della tensione del trasduttore in un valore digitale da parte dell’ADC.
b) elaborazione del precedente valore digitale e calcolo del valore di regolazione.
c) conversione del valore di regolazione digitale in un segnale analogico da parte del
DAC.
Esaminiamo adesso separatamente le tre operazioni precedenti e facciamo qualche
considerazione sul tempo necessario per eseguirle.
10 Il campionamento avviene senza perdita di informazioni se è possibile ricostruire fedelmente il segnale a partire dai suoi campioni. 11 Un metodo alternativo, ma meno preciso, consiste nell'assumere come banda passante del sistema la banda passante del sottosistema con banda più stretta. 12 Si osservi che a causa del campionamento il regolatore “vede” l’uscita del sistema controllato solo ogni Tcamp secondi. Tra due campionamenti successivi il sistema si comporta come se la catena di retroazione fosse interrotta, cioè come se il controllo avvenisse ad anello aperto. Ciò può pregiudicare gravemente l’efficacia della regolazione, fino addirittura a rendere instabile il sistema di controllo. Affinché ciò non si verifichi, è necessario che la frequenza di campionamento venga scelta sufficientemente maggiore della banda del segnale di misura.
Teorema del campionamento
Banda del segnale di
misura
Periodo di campionamento e programma di
controllo
8
Il tempo di conversione da analogico a digitale dipende dall’ADC usato. Tale
tempo dovrà essere sempre convenientemente minore di Tcamp, in modo da lasciare
spazio per le altre operazioni. Nella pratica sono disponibili ADC con un tempo di
conversione che va da alcuni nanosecondi per i convertitori più veloci (convertitori
flash) fino ad alcune decine di millisecondi. Va da sé che i convertitori più veloci sono
anche in generale i più costosi.
Per quanto riguarda la conversione da digitale ad analogico, questa è
generalmente molto veloce ed il suo tempo viene generalmente definito da un
parametro, il settling time o tempo di assestamento del DAC, il quale raramente
supera il s.
Dobbiamo infine tenere conto del tempo impiegato dal P per calcolare il valore
di regolazione digitale. Questo tempo è solitamente più grande dei precedenti e dipende
dal numero e dal tipo di istruzioni contenute nel programma di regolazione, nonché dal
tipo di P usato e dalla frequenza del suo clock 13 . L’unico modo per valutare
esattamente questo tempo consiste nel fare riferimento al programma di regolazione in
linguaggio assembly (cioè nel linguaggio del P) e sommare i tempi di esecuzione di
tutte le istruzioni, prendendo in considerazione il "percorso" più lungo all’interno
dell’algoritmo di calcolo14.
Se la somma dei tre tempi precedenti risulta inferiore alla durata del periodo di
campionamento Tcamp, allora è possibile effettuare la regolazione software. In caso
contrario, è necessario vedere se i tempi possono essere ridotti (cambiando ad esempio
l’ADC o il P o il programma di regolazione) o se oppure risulta indispensabile l’uso di
un regolatore hardware (più veloce). Intuitivamente la regolazione software risulta tanto
più difficile quanto più larghe sono le bande dei sottosistemi che compongono il sistema
di controllo ovvero quanto più piccole sono le loro costanti di tempo. Un metodo
empirico per stabilire in prima approssimazione se la regolazione software è possibile o
no, consiste nel confrontare la più piccola costante di tempo del sistema (o la costante
di tempo del sistema di controllo complessivo, se questa è nota) con il tempo necessario
al P per effettuare una moltiplicazione (l’operazione elementare più onerosa dal punto
di vista del tempo di calcolo). Se la risulta almeno 100 volte maggiore del tempo di
calcolo di una moltiplicazione, allora la regolazione software è generalmente possibile;
in caso contrario è spesso indispensabile ricorrere alla regolazione hardware (oppure a
un P più veloce). Per esempio, se il P prescelto è in grado di eseguire una
moltiplicazione in 100 s, la regola precedente indica che la regolazione software è
possibile se la costante di tempo del sistema è maggiore di 10 ms. Tale valore è di solito
adeguato per sistemi termici, sistemi meccanici ed idraulici (sistemi "lenti"). Più
problematica risulta la regolazione software di sistemi "veloci", come i sistemi elettrici
o elettromeccanici. Occorre tuttavia osservare che la continua evoluzione dei
componenti disponibili ed in particolare dei P, sta ampliando sempre di più la gamma
di possibili applicazioni del controllo software.
13 Il clock è il segnale di temporizzazione interno che scandisce l’esecuzione delle istruzioni del
P. 14 Infatti il tempo di calcolo di un algoritmo in generale non è costante, ma dipende dal
risultato dei "test" in esso presenti. Una stima del tempo di calcolo deve dunque
prendere in considerazione il caso peggiore, quello cioè che comporta il tempo di
esecuzione più lungo.
Regola empirica per
verificare se è possibile la regolazione
software
9
Per quali ragioni il controllo SW risulta generalmente più lento del controllo HW?
Risulta più facile il controllo SW di un forno o di un motore a corrente continua?
11.4 Temporizzazione del campionamento
Il ciclo di regolazione deve essere eseguito una volta per ogni periodo di
campionamento ( fig. 11.2). Tale temporizzazione può essere gestita in modo
software o in modo hardware. Per temporizzazione software si intende l’esecuzione da
parte del P, all’inizio di ogni ciclo di regolazione, di un loop di ritardo di durata pari al
periodo di campionamento (diminuito del tempo necessario per acquisire un campione
dall’ADC, elaborarlo e inviarlo al DAC). In pratica basta eseguire un ciclo15 sul P,
incrementando il contenuto di un registro fintantoché non viene raggiunto il numero di
ripetizioni desiderato. Questo tipo di temporizzazione è poco costosa, in quanto non
richiede hardware aggiuntivo, ma presenta lo svantaggio di essere piuttosto imprecisa,
soprattutto per periodi di campionamento molto lunghi. Inoltre durante il ciclo di ritardo
il P risulta impegnato inutilmente e non può essere usato per altri scopi.
La soluzione alternativa è costituita dalla cosiddetta temporizzazione
hardware. In questo caso è necessario usare un timer esterno, cioè un dispositivo in
grado di inviare al P un segnale di interruzione (interrupt16) allo scadere di ogni
periodo di campionamento. Ogni volta che il P riceve un segnale di interrupt dal timer,
esso esegue una opportuna routine di servizio dell’interrupt, all’interno della quale viene
acquisito, elaborato e prodotto un campione digitale. Con questa soluzione il
programma principale di controllo si riduce a un semplice ciclo di attesa del segnale di
interrupt: se non si devono eseguire altre operazioni, il P può essere messo in stato di
HALT17. Il controllo vero e proprio, come si è detto, viene invece realizzato nella
routine di servizio dell’interrupt. Ciò comporta pertanto la necessità di ristrutturare
l'algoritmo di figura 11.2, nel modo illustrato nella figura 11.4. Si osservi come il
diagramma di flusso della routine di gestione dell’interrupt non sia connesso con il
diagramma di flusso del programma principale: l’interrupt è infatti un evento asincrono
e la sua occorrenza non può essere in alcun modo prevista deterministicamente in un
programma (non si tratta infatti di una chiamata18 a funzione!).
15 In caso di loop di ritardo di lunga durata, può essere necessario usare più cicli nidificati (uno dentro l'altro), ciascuno con un registro utilizzato come contatore. 16 Quando viene attivato il segnale di interrupt, il P cessa di eseguire il programma
corrente ed il controllo viene trasferito a una routine di servizio dell'interrupt. Al
termine dell'esecuzione di tale routine, il P torna ad eseguire il programma precedente,
dal punto in cui era stato interrotto. 17 In stato di HALT un P esegue automaticamente una serie di istruzioni nulle (Null Operation o NOP), fintantoché non riceve una interruzione. 18 La differenza fra una routine di servizio di interrupt ed una normale subroutine di programma è che quest'ultima viene chiamata dal programma stesso, mentre l'attivazione dell'interrupt è legata ad eventi esterni e risulta del tutto indipendente dall'esecuzione del programma.
?
Temporizzazione software
Temporizzazione hardware
10
Modulo di
interfaccia con
l'operatore
FINE
Acquisizione di un
campione dallo ADC
Elaborazione del campione e
calcolo del valore di regolazione
Invio del valore di regolazione
al DAC
SI NO
Programmazione
TIMER
HALT
Routine servizio
interrupt
Return da
interrupt
Figura 11.4 - Diagramma di flusso per la temporizzazione della acquisizione
Si noti che, prima dell'inizio del ciclo di attesa dell'interrupt nel programma
principale, occorre programmare il timer. La programmazione del timer consiste
nell’inviare al dispositivo di temporizzazione tutte le informazioni necessarie alla
generazione dell’interrupt. Tali informazioni comprendono certamente la durata del
periodo di campionamento e, se l’interrupt viene gestito in modo vettorizzato 19 ,
l’indirizzo della routine di servizio dell’interrupt. Tale indirizzo verrà quindi inviato dal
timer al P unitamente al segnale di interrupt.
11.5 Acquisizione di un campione dall’ADC
Allo scadere di ogni periodo di campionamento, il P avvia la conversione
inviando all’ADC un segnale impulsivo20, detto di start of conversion (SOC). Ciò
avviene eseguendo sul P una istruzione di invio dati a periferica21 (OUT) all'indirizzo
19 In un interrupt vettorizzato, ogni dispositivo esterno che può inviare un interrupt è
caratterizzato da un byte, detto vettore di interrupt. Quando il dispositivo segnala al P
una richiesta di interrupt, esso invia contemporaneamente sul bus dati il suo vettore di
interrupt. Per mezzo del vettore di interrupt il P è in grado di eseguire una diversa
routine di servizio dell'interrupt per ogni dispositivo esterno ad esso collegato. 20 Il tipo di segnali (livelli logici, durata, funzione, etc.) dipende ovviamente dal particolare ADC considerato. La trattazione seguente fa pertanto riferimento a un ADC tipico, senza entrare nel merito dei diversi componenti disponibili commercialmente. 21 Nel corso della trattazione seguente si farà sempre riferimento al set di istruzioni del P Z80 della Zilog. Tale scelta è motivata da ragioni di comodità e di semplicità. L'utilizzo di un differente microprocessore non comporterebbe tuttavia sostanziali differenze nella trattazione.
11
del convertitore (il valore inviato con tale istruzione non ha nessuna importanza, dal
momento che l’istruzione serve solo per attivare l’indirizzo dell’ADC). Tale indirizzo
viene decodificato da un opportuno circuito di decodifica (decoder di indirizzo, par.
11.8), il quale seleziona il convertitore. Lo schema circuitale è mostrato in figura 11.5
Figura 11.5 - Circuito per l'avvio della conversione analogico-digitale
Nello schema in figura il segnale di start of conversion è attivo a livello basso.
Per avviare la conversione, il P genera un segnale di scrittura su periferica (attivo
anch'esso a livello basso); supponiamo invece che il decoder di indirizzo produca un
segnale a livello alto, il quale viene inviato all’ADC. La porta OR pertanto produce un
impulso di SOC a livello basso quando il P effettua un’operazione di scrittura
all’indirizzo del convertitore. Naturalmente occorre verificare che tale impulso di SOC
abbia una durata sufficiente per dare inizio alla conversione. Se così non fosse, sarebbe
necessario inserire cicli di attesa (WAIT) nel programma oppure usare un latch per
prolungare la durata dell’impulso.
Una volta avviata la conversione, l’ADC segnala la fine della conversione,
portando a livello alto una opportuna linea di uscita detta di end of conversion (EOC).
La lettura del dato convertito non può avvenire dunque immediatamente dopo l’impulso
di SOC, ma occorre prima attendere che l’ADC abbia completato la conversione.
Il modo più semplice per risolvere il problema consiste nel non testare il valore
della linea di end of conversion. In pratica basta far eseguire al P un ciclo di ritardo di
durata opportuna fra l’avvio della conversione (istruzione OUT all’indirizzo dell’ADC)
e la lettura del dato convertito. Lo svantaggio è che, per assicurare una corretta
conversione in tutti i casi, occorre sovradimensionare la durata del ciclo di ritardo ed in
tale modo la gestione del tempo non viene ottimizzata.
Un’altra possibilità consiste nell’interrogare ciclicamente in polling22 la linea
EOC del convertitore. In questo caso sarà necessario collegare tale segnale con un bit
del bus dati ed usare un buffer tristate 23 per abilitare la connessione sul bus.
22 Il polling è in generale una operazione sequenziale di test dello stato di più
periferiche, effettuata dal P per stabilire quale periferica ha richiesto un certo servizio. 23 In un buffer tristate l’uscita può assumere oltre ai due normali livelli logici alto (H) e
basso (L), anche un terzo stato, detto ad alta impedenza (HI-Z). Quando si trova nello
stato HI-Z, l’uscita è elettricamente “scollegata” dal resto del circuito.
Avvio della conversione
Fine della conversione
12
L’interrogazione ciclica avviene eseguendo sul P una istruzione di lettura da periferica
(IN) all’indirizzo assegnato alla linea EOC. Lo schema hardware è mostrato in figura
11.6 (per semplicità non è stato riportata la parte relativa alla gestione del SOC):
Figura 11.6 - Circuito per la gestione del segnale EOC
L’alternativa più complicata per la gestione dell’EOC (e anche quella che
ottimizza la gestione dei tempi) consiste nel generare un segnale di interrupt al P
ogni volta che è terminata una acquisizione. Su alcuni ADC la gestione ad interrupt
dell’end of conversion è suggerita dal nome stesso del segnale usato per segnalare la
fine della conversione: INTR . In tali ADC il segnale INTR va a livello basso quando è
terminata la conversione e torna a livello alto non appena viene attivato l’ingresso RD
dell’ADC, cioè non appena il P legge il dato convertito. In questo modo la gestione ad
interrupt della fine conversione è molto comoda, poiché risulta possibile collegare
direttamente l’uscita INTR dell’ADC con l’ingresso di interrupt del P (se non vi sono
altri segnali di interrupt da gestire 24). La lettura del dato da parte del P termina
automaticamente la richiesta di interrupt.
Negli ADC con segnale EOC attivo a livello alto25, di solito il segnale EOC
rimane basso per tutta la durata della conversione e diventa alto al termine della
conversione. Esso dunque torna a livello basso solo quando viene attivata la
conversione successiva. Ciò può creare qualche problema nella gestione ad interrupt
dell’end of conversion, in quanto, al termine della routine di servizio dell’interrupt, cioè
dopo che il P ha letto il campione digitalizzato, il segnale di interrupt generato
dall’ADC rimane attivo. Ciò verrebbe interpretato dal P come una nuova richiesta di
interrupt. Questo problema può essere risolto usando un latch o un flip-flop sul segnale
EOC e azzerandolo quando il P legge il campione digitalizzato.
In qualunque modo venga gestito l’end of conversion, la lettura del campione
digitalizzato viene effettuata mediante una istruzione di lettura da periferica. Gli ADC
sono solitamente dotati di un ingresso di lettura RD attivo a livello basso: esso serve
per abilitare il trasferimento del valore convertito sui pin di dato in uscita, collegati col
24 Decisamente più complessa risulta la gestione di un interrupt vettorizzato da parte dell’ADC. In questo caso bisogna prevedere un opportuno registro da inizializzare col vettore di interrupt:
tale registro viene letto dal P al momento del riconoscimento dell’interrupt. 25 In questi casi il segnale di end of conversion viene spesso denominato BUSY.
Lettura del campione
digitale
13
bus dati del P (normalmente tali pin si trovano in uno stato di alta impedenza, in modo
da non impegnare inutilmente il bus). Tale segnale RD può essere generato mediante
una opportuna decodifica dei segnali prodotti dal P e dal decoder degli indirizzi,
eseguendo una istruzione di lettura da periferica (IN).
Quanti indirizzi sono necessari per poter gestire un ADC?
In che modo un latch sul segnale EOC potrebbe consentire la gestione dell'interrupt da parte del P?
Spiegare dettagliatamente il funzionamento del dispositivo in funzione dei valori assunti da EOC.
11.6 Realizzazione software di un regolatore PID
Consideriamo ora il problema di realizzare per mezzo di un programma le
funzioni di un regolatore proporzionale-integrativo-derivativo ( par. 10.6). E’ questo
infatti il tipo di regolatore comunemente usato in un sistema di regolazione software26.
L’equazione ingresso uscita è la seguente:
c t K e t Kde
dtK e t dtP D I
o
t
( ) ( ) ( ' ) '
Per rendere tale formula calcolabile da un microprocessore, è necessario
approssimare, discretizzandoli, il calcolo della derivata e dell'integrale. Per quanto
riguarda la derivata, essa può essere approssimata per mezzo del rapporto incrementale,
nel seguente modo:
de
dt
e t e t t
t
( ) ( )
Abbiamo utilizzato in questo caso il cosiddetto rapporto incrementale all’indietro, il
quale fa uso del valore del segnale e all’istante corrente t e all’istante precedente t-t.
Questa scelta è motivata dal fatto che, al momento di calcolare il segnale di regolazione
all’istante t, il valore dell’errore all’istante precedente t-t è noto, mentre non si
conosce ancora il valore dell’errore all’istante successivo t+t. Se, come è ragionevole
supporre, il limite per t0- è uguale al limite per t0+, l’approssimazione della
derivata con il rapporto incrementale in avanti e con il rapporto incrementale all'indietro
fornisce gli stessi risultati. Indicando con ei il valore dell’errore all’istante corrente e
con ei-1 il valore dell’errore all’istante precedente, la discretizzazione della derivata può
essere scritta così:
de
dt
e e
t
i i 1
Per quanto riguarda l’integrale, esso può essere approssimato da una
sommatoria su tutti gli istanti di tempo, nel seguente modo:
26 In ogni caso gli altri regolatori standard lineari possono essere ottenuti a partire dalla formula del PID
annullando i parametri opportuni (per esempio, se si pone KD = 0 e KI = 0 si ottiene un regolatore
proporzionale semplice; ponendo KI = 0 si ottiene un regolatore proporzionale-derivativo; ponendo KD =
0 si ottiene un regolatore proporzionale-integrativo).
?
Discretizzazione della derivata
Discretizzazione dell'integrale
14
e t dt e t
t
n
n
i
( ' ) '0 0
Utilizzando le approssimazioni precedenti, il modello matematico del regolatore
PID può essere discretizzato così:
c K eK
te e K t ei p i
d
i i i n
n
i
1
0
Nella formula precedente ci è un valore (digitale) del segnale di regolazione. t
rappresenta l’intervallo di tempo che separa due successivi valori del segnale di errore.
Poiché l’errore viene calcolato in base al segnale di misura campionato, il valore di t
coincide in pratica con il periodo di campionamento Tcamp. La formula può essere
semplificata introducendo due nuove costanti:
KK
tK tD
D
I
'
e K I
'
per cui abbiamo infine:
c K e K e e K ei P i D i i I n
n
i
' '
1
0
Si noti come, per il calcolo di ci, sia necessaria la conoscenza del valore
dell’errore in tutti gli istanti precedenti, da zero fino all’istante corrente i. Non è tuttavia
necessario memorizzare tutti i valori dell’errore, poiché ad ogni istante basta
semplicemente tenere in memoria la somma di tutti gli errori fino all’istante corrente. La
somma viene quindi incrementata ogni volta con un nuovo valore dell’errore. Questa
soluzione presenta però il problema che, al crescere del tempo, è possibile che la
variabile in cui viene memorizzata la somma raggiunga valori molto elevati e pertanto
possa dare luogo a overflow 27 . Sono in particolare molto critici i primi istanti di
funzionamento del sistema di controllo, istanti in cui il segnale di errore raggiunge
facilmente valori elevati (infatti il regolatore non è ancora potuto intervenire per
controllare il sistema).
Per evitare il rischio di overflow si può usare una formula modificata. Per prima
cosa riscriviamo l'equazione discretizzata del regolatore PID, sostituendo al posto di i il
valore i-1 (ciò equivale a considerare l'istante di calcolo precedente). Abbiamo dunque:
c K e K e e K ei P i D i i I n
n
i
1 1 1 2
0
1' '
Sottraiamo adesso membro a membro le due equazioni, quella calcolata all’istante i e
quella calcolata all’istante i-1. Abbiamo dunque:
c c K e e K e e e e K e ei i P i i D i i i i I n
n
i
n
n
i
1 1 1 1 2
0 0
1' '
27 Una variabile va in overflow, quando il valore memorizzato nella variabile supera il
massimo numero che la corrispondente locazione di memoria (o registro) può contenere.
Discretizzazione del modello
matematico del regolatore PID
Rischio di overflow e
formula modificata
15
Osserviamo ora che le due sommatorie sono identiche, tranne per il fatto che la prima
contiene anche il valore ei, che non è contenuto nella seconda. Dunque:
e e en
n
i
n
n
i
i
0 0
1
Introducendo questa semplificazione e riordinando i termini, la formula per il calcolo
del valore di regolazione all’istante i può infine essere così riscritta:
c c K e e K e e e K ei i P i i D i i i I i 1 1 1 22' '
Il calcolo della formula precedente richiede la memorizzazione, ad ogni istante
di tempo, del valore di regolazione all’istante precedente (ci-1) e del valore del segnale
di errore nei due istanti precedenti (ei-1 e ei-2) . In tale modo però viene evitato
l’accumulo dei valori dell’errore, scongiurando così il rischio di overflow. Un
implementazione in linguaggio C 28 del ciclo di controllo SW con regolatore PID
potrebbe essere la seguente (si confronti il seguente spezzone di programma con il
diagramma di flusso in figura 11.2):
c=0 ; e1=0 ; e2=0 ; for (i=0 ; ; i++) { wait() ; e = ref[i] - getdata() ; c = c + Kp * (e - e1) + Kd * (e - 2*e1+e2) + Kd*e ; putdata(c) ; e2=e1 ; e1=e ; }
Nel programma precedente la funzione wait() ha lo scopo di temporizzare il
funzionamento del regolatore, attendendo lo scadere del periodo di campionamento (
par. 11.4). La funzione getdata() serve a prelevare un valore digitalizzato dall’ADC (
par. 11.5). Il vettore ref contiene i valori del segnale di riferimento digitalizzato (se il
segnale di riferimento è costante, basta usare una semplice variabile). Infine la funzione
putdata() invia il nuovo valore di regolazione al DAC ( par. 11.7). Tali funzioni
potranno essere scritte in linguaggio C o, più probabilmente, nel linguaggio macchina
del microprocessore29 usato.
28 Sebbene sia stato qui usato, a titolo esemplificativo, il linguaggio di programmazione C, è molto più probabile che il programma di regolazione venga scritto nel linguaggio assembly del
P, poiché in tale modo si riesce ad ottimizzare la velocità di calcolo (infatti, come abbiamo visto, la velocità costituisce un fattore critico per il progetto di un sistema di controllo software). 29 All'interno di un sorgente C è possibile chiamare funzioni scritte in assembly e viceversa. Per il programma linker, che effettua il collegamento fra i diversi moduli, risulta infatti del tutto indifferente il linguaggio con cui sono stati scritti i sottoprogrammi.
16
11.7 Invio di un campione digitale al DAC
Per interfacciare un DAC col P, occorre gestire il segnale di latch enable ( LE ),
mediante il quale si comanda la memorizzazione del nuovo dato binario sui latch di
ingresso interni al DAC. Tale operazione attiva anche automaticamente la conversione.
Nello schema in figura 11.7 il DAC viene attivato mediante una operazione di scrittura
su periferica all’indirizzo del convertitore (OUT). In questo caso il dato inviato dalla
OUT sul bus dati rappresenta il valore digitale che il DAC deve convertire.
Figura 11.7 - Circuito per il controllo del convertitore DA
Quanti indirizzi occorrono per poter gestire correttamente un DAC?
Ogni quanto tempo il DAC aggiorna il valore della propria tensione analogica di uscita?
11.8 Decodifica degli indirizzi e gestione delle periferiche
Per decodifica degli indirizzi si intende il riconoscimento dell’indirizzo inviato
sul bus indirizzi dal P e l’attivazione della periferica associata all’indirizzo stesso.
Occorre intanto osservare che alla stessa periferica può anche essere necessario
associare più di un indirizzo, dal momento che lo stesso indirizzo può essere utilizzato
solo per due operazioni diverse: una operazione di scrittura ed una operazione di lettura.
Ad esempio, nel caso di un convertitore ADC potrebbe essere necessario usare un
massimo di due indirizzi (scegliendo di gestire l'EOC a polling, par. 11.5): uno per
l’avvio della conversione (istruzione OUT) e per la lettura del valore di EOC (istruzione
IN) e l’altro per la lettura di un campione digitalizzato (istruzione IN). Per il
convertitore DAC è invece sufficiente un solo indirizzo. Altri indirizzi dovranno essere
assegnati al timer e a tutte le altre periferiche presenti eventualmente nel sistema.
La decodifica degli indirizzi può essere effettuata in modo non ambiguo o in
modo ambiguo.
Usando una decodifica non ambigua, ogni indirizzo utilizza tutti i bit
del bus indirizzi del P. In questo modo il numero delle periferiche indirizzabili è massimo, ma la circuiteria di decodifica risulta
?
Decodifica ambigua e non
ambigua
17
abbastanza complessa. Usando invece una decodifica ambigua, solo una parte dei bit del bus indirizzi viene usata per la decodifica. Questo è possibile quando il numero di indirizzi da usare è minore
del massimo numero di dispositivi indirizzabili dal P.
Per esempio se il bus indirizzi del P è a 8 bit, il numero degli indirizzi diversi è 28 =
256. Se però gli indirizzi da usare sono solo 16, allora è sufficiente usare solo 4 bit del
bus indirizzi per la decodifica (infatti 24 = 16). In questo modo la circuiteria di
decodifica risulta notevolmente semplificata.
Un modo particolarmente sofisticato di gestire le periferiche consiste nell’usare
una porta parallela di ingresso-uscita (PIO), cioè un circuito integrato programmabile
destinato appunto alla gestione di periferiche. Con un tale dispositivo la decodifica degli
indirizzi, come anche la generazione degli interrupt da parte delle periferiche, vengono
gestiti dalla PIO, minimizzando ogni altra circuiteria aggiuntiva. Occorre tuttavia
osservare che le PIO sono integrati abbastanza costosi ed inoltre è necessario
programmarli preventivamente per poterli usare (la programmazione dovrebbe essere
effettuata dal P prima dell’inizio del ciclo di regolazione). Inoltre risulta comunque
necessario gestire la decodifica degli indirizzi della PIO stessa. Pertanto l’uso di tali
integrati è giustificabile solo per applicazioni di complessità medio/alta (come ad
esempio se si vuole gestire un interrupt vettorizzato da parte di periferiche che non sono
in grado di produrre vettori di interrupt).
Usando una decodifica ambigua le operazione del P diventano più veloci? Si risparmia spazio in
memoria?
Quali sono i vantaggi e gli svantaggi delle PIO? In quali casi conviene usarle?
11.9 Circuiti di adattamento e filtraggio per la conversione
digitale-analogica e la conversione analogico-digitale
Affinché le prestazioni di un controllo SW siano equivalenti a quelle di un
controllo HW, non basta che il tempo di campionamento sia abbastanza lungo per
consentire l’elaborazione del campione ( par. 11.4).
Possiamo intuitivamente affermare che i risultati del controllo SW sono identici a quelli di un controllo HW, se il segnale di regolazione c(t) prodotto dal regolatore SW risulta identico a quello prodotto da un corrispondente regolatore HW (a parità di segnale di riferimento, sistema controllato, attuatore e trasduttore).
Per comprendere quali altri problemi possa comportare il controllo SW, facciamo
riferimento al modello a blocchi generale di un sistema di controllo digitale ad anello
chiuso di figura 11.1. Come si può osservare in tale schema sono indicati due blocchi di
adattamento e filtraggio, uno collegato in uscita al DAC e l’altro collegato in ingresso
all’ADC. Lo scopo di tali sottosistemi è quello di migliorare la qualità dell’interfaccia
fra la parte analogica e la parte digitale del sistema di controllo.
Indirizzamento con porta
parallela di I/O
?
18
11.9.1 Conversione digitale-analogica
La parte digitale si interfaccia con la parte analogica per mezzo del convertitore
digitale-analogico (attraverso il quale il P invia all'attuatore il segnale di regolazione) e
del convertitore analogico-digitale (attraverso il quale il P acquisisce dal trasduttore i
campioni di misura). Consideriamo dunque per prima cosa il convertitore
digitale-analogico. Possiamo anzitutto osservare che il segnale di regolazione c(t)
generato dal regolatore software è in generale un segnale non continuo, essendo
costituito da una serie di piccoli incrementi di tensione (gradini). Ciò è dovuto al fatto
che, come detto, si tratta di un segnale analogico prodotto da un DAC. Tale segnale
deriva dunque da un segnale digitale, nel quale non sono rappresentati tutti i possibili
valori, ma solo quei valori che sono multipli interi del quanto di conversione 30 ,
definito come l’incremento di tensione necessario per produrre un incremento unitario
in uscita all’ADC. Questo andamento discontinuo potrebbe in alcuni casi influire
negativamente sul sistema controllato, poiché i gradini presenti in tale segnale
potrebbero provocare risposte libere indesiderate 31 nel sistema. Tale problema può
essere risolto interponendo un filtro passa-basso con opportuna frequenza di taglio tra il
DAC ed il sottosistema attuatore: in tale modo l’andamento discontinuo del segnale
viene opportunamente “smussato”, eliminando le frequenze superiori dovute al
campionamento ( fig. 11.8).
Figura 11.8 - Effetto del filtraggio sul segnale di regolazione
Un altro fenomeno che può intervenire ad alterare la forma del segnale prodotto
dal DAC è rappresentato dai glitch, impulsi di breve durata ma di considerevole
ampiezza, che possono comparire a causa della commutazione non simultanea dei bit di
ingresso al DAC. Considerando per esempio un ipotetico DAC a solo 4 bit (cioè in cui il
valore di ingresso è rappresentato da un numero binario a 4 cifre), nella commutazione
fra le configurazioni di ingresso 0111 e 1000 tutti i bit cambiano valore (passando da 0 a
1 o da 1 a 0). Siccome la commutazione dei bit non è mai simultanea, potrebbero
prodursi delle configurazioni binarie "indesiderate". Tali combinazioni verrebbero
decodificate dal DAC, producendo impulsi di glitch sulla tensione di uscita. Per
30 Il quanto di conversione dipende dal numero di bit e dalla tensione di fondo scala del
convertitore ( par. 11.9.2). 31 Infatti la risposta libera viene innescata dalla presenza di discontinuità nel segnale di
ingresso ( par. 11.4 vol. 1).
Quanto di conversione e
discontinuità nel segnale di
regolazione
Glitch
19
esempio, nel passaggio da 0111 a 1000 potrebbero verificarsi le seguenti configurazioni
intermedie:
0111 0011 0001 0000 1000
L’ultima commutazione produce un glitch di considerevole ampiezza ( fig. 11.9). Si
ha infatti una commutazione indesiderata di ampiezza 8 (da 0000 a 1000), nonostante il
passaggio dalla configurazione iniziale 0111 a quella finale 1000 comporti soltanto un
aumento unitario (da 7 a 8).
Figura 11.9 - Impulso di glitch nella commutazione fra le
combinazioni binarie 0111 e 1000
Esattamente come i gradini di quantizzazione, anche i glitch possono provocare risposte
indesiderate nel sistema controllato. Tuttavia per eliminare i glitch l’uso di un filtro
passa-basso non è di alcuna utilità, poiché questi impulsi hanno ampiezze non uniformi
e si presentano ad intervalli di tempo non regolari. Si possono invece usare circuiti di
sample and hold32 molto veloci (detti anche deglitcher), con lo scopo di mantenere
costante la tensione in uscita durante la commutazione dei bit di ingresso al DAC.
Sempre per quanto riguarda il segnale di controllo c(t), spesso risulta necessario
interporre un amplificatore fra l’uscita del DAC e l’attuatore, per rendere compatibili i
livelli di segnale ed eventualmente adattare le impedenze. L'insieme di filtro (per
eliminare i gradini di quantizzazione), di circuito deglitcher e di amplificatore
costituiscono il sottosistema di "adattamento e filtraggio", indicato in uscita al DAC
nello schema di figura 11.1.
11.9.2 Conversione analogico-digitale
32 I dispositivi di campionamento e mantenimento (sample and hold, S/H) sono circuiti integrati in grado di compiere un campionamento veloce di un segnale analogico, mantenendo stabile per il tempo richiesto il valore di tensione acquisito. Il loro scopo principale è quello di mantenere costante la tensione da convertire in ingresso a un ADC (vedi più avanti in questo paragrafo).
20
Consideriamo adesso la digitalizzazione del segnale analogico di misura
effettuata dall’ADC. Nel controllo SW il regolatore genera il segnale di regolazione in
base a un segnale di errore discretizzato, il quale risulta pertanto differente dal
corrispondente segnale di errore continuo. Abbiamo già visto come, per garantire che il
campionamento non provochi una perdita di informazione, è necessario campionare con
una frequenza sufficientemente elevata. Un altro problema molto importante, del quale
bisogna tenere conto nella scelta e nel dimensionamento del convertitore
analogico-digitale, è costituito dalla precisione relativa % del convertitore, definita
comunemente come il massimo errore introdotto dal convertitore diviso il massimo
valore di tensione convertibile:
% max errore ADC
max valore convertibile100 2 100
q
VFSR
dove VFSR è il voltage full-scale range33 dell’ADC, ovvero la massima ampiezza
dell’intervallo di tensioni analogiche che il convertitore è in grado di convertire; q è il
quanto di conversione. Poiché, se n è il numero di bit dell’ADC, si ha che
qVFSR
n
2
sostituendo tale espressione nella precedente abbiamo
%
q
VFSR
VFSR
VFSR
n
n
2 100 2 2 100100
2 1
La precisione relativa del convertitore dipende dunque dal numero di bit del
convertitore: tanto maggiore è tale numero, tanto minore sarà e% e dunque tanto più
preciso sarà il convertitore. Affinché il processo di conversione non influisca
negativamente sulle prestazioni del controllo, la precisione dell’ADC dovrebbe essere
scelta con un valore convenientemente inferiore alla precisione del trasduttore, in modo
tale che l’errore introdotto dal convertitore possa essere ritenuto trascurabile. In pratica
però il numero di bit del convertitore ADC è spesso limitato dai convertitori disponibili
sul mercato o dal numero di bit del sistema a P usato, per cui in molti casi tale scelta
risulta praticamente obbligata.
Si osservi che la precisione relativa del convertitore calcolata con la formula
precedente si riferisce alla conversione di una tensione di ampiezza pari al fondo scala
del convertitore: se la tensione da convertire risulta inferiore al fondo scala dell’ADC,
l’errore assoluto introdotto dal convertitore rimane invariato, ma aumenta
corrispondentemente l’errore relativo. Pertanto la precisione relativa di un convertitore è
sempre in pratica peggiore di quella da noi calcolata. Conviene dunque fare in modo che
il segnale da digitalizzare abbia ampiezze vicine ai valori di fondo scala del
convertitore, interponendo eventualmente un amplificatore fra trasduttore e ADC (ed
eventualmente traslando anche, per mezzo di un offset, i valori della tensione da
convertire, in modo da adattarli al campo di funzionamento del convertitore). Oltre
all’amplificatore può inoltre essere utile un filtro, per eliminare le frequenze di segnali
33 Generalmente il VFSR di un ADC non è fisso, ma può essere variato entro certi limiti per mezzo di due tensioni di riferimento che vengono fornite all'integrato.
Precisione dell’ADC
Amplificazione e filtraggio del
segnale di ingresso all’ADC
21
superiori alla banda campionata dal convertitore: tali frequenze non sarebbero
comunque convertite correttamente e potrebbero causare disturbi sul segnale
campionato (fenomeno detto di aliasing). Amplificatore e filtro costituiscono il "blocco
di adattamento e filtraggio" indicato in figura 11.1 in uscita al trasduttore.
Infine, se il segnale campionato varia troppo rapidamente (rispetto al tempo di
conversione dell’ADC), può risultare necessario campionarlo preventivamente per
mezzo di un opportuno circuito di sample and hold, in modo tale da mantenere
costante il segnale da convertire in ingresso all’ADC per tutta la durata della
conversione. Si potrebbe dimostrare che in generale il circuito di sample and hold risulta
necessario, se vale la seguente relazione fra la banda del segnale campionato Bs, il
tempo di conversione Tc ed il numero di bit n del convertitore:
BT
s n
c
1
2 2
Se si interfaccia direttamente un ADC con un DAC (con lo stesso numero di bit) e si fornisce in
ingresso all'ADC un segnale analogico, come risulterà il segnale in uscita dal DAC?
Che differenze ci sono fra l'uso di un sample and hold in uscita al DAC oppure in ingresso all'ADC? Lo
scopo e il funzionamento del dispositivo sono gli stessi?
Sample and hold
?
22
PAROLE CHIAVE
Campionamento: Conversione di un segnale analogico continuo in un treno di impulsi, aventi ciascuno
ampiezza pari all'ampiezza del segnale nell'istante corrispondente.
Controllo hardware: Sistema di controllo ad anello chiuso in cui il regolatore è un circuito analogico.
Controllo software: Sistema di controllo ad anello chiuso in cui il regolatore è un circuito digitale.
Convertitore analogico-digitale (ADC): Dispositivo integrato in grado di convertire una tensione
analogica in un valore digitale.
Convertitore digitale-analogico (DAC): Dispositivo integrato in grado di convertire un valore digitale
in una tensione analogica.
Decodifica ambigua: Decodifica degli indirizzi in cui solo una parte dei bit del bus indirizzi viene usata
per la decodifica.
Decodifica degli indirizzi: Riconoscimento dell’indirizzo inviato sul bus indirizzi dal P e attivazione
della periferica associata all’indirizzo stesso.
Decodifica non ambigua: Decodifica degli indirizzi in cui ogni indirizzo utilizza tutti i bit del bus
indirizzi del P.
End of conversion (EOC): Segnale che indica la fine della conversione da parte di un ADC.
Glitch: Impulsi di breve durata ma di considerevole ampiezza, che possono comparire a causa della
commutazione non simultanea dei bit di ingresso a un DAC.
Interrupt: Segnale di ingresso di un P che, quando viene attivato da una periferica, causa l'esecuzione
di una routine di servizio opportunamente definita, interrompendo l'esecuzione del programma corrente.
Microcalcolatore: Sistema a microprocessore (costituito da P, memorie, timer, porte di input/output
ecc.).
Porta parallela di ingresso-uscita (PIO): Circuito integrato programmabile destinato appositamente alla
gestione di periferiche.
Sample and hold (S/H): Circuiti integrati in grado di compiere un campionamento veloce di un segnale
analogico, mantenendo stabile per il tempo richiesto il valore di tensione acquisito.
Software di controllo: Programma eseguito sul P che realizza le funzioni di controllo.
Start of conversion (SOC): Segnale impulsivo utilizzato per avviare la conversione di un ADC.
Timer: Dispositivo integrato in grado di produrre segnali in uscita temporizzati con intervalli di tempo
programmabili.
23
MAPPA DEGLI ARGOMENTI
Controllo
software
Microprocessore
Convertitore
A/D
Convertitore
D/A
Periodo di
campionamento
Segnale di
misura m(t)
Segnale di
controllo c(t)
Temporizzazione
Acquisizione InvioElaborazione
Programma
di controllo
24
ESERCIZI DI RIEPILOGO
1) Sia dato un sistema di controllo ad anello chiuso descritto dalle seguenti f. di t. generalizzate:
G SS
SS
( ) ( ),
100
1020
0 5
11000
H
Determinare se è possibile effettuare il controllo software del sistema, usando la regola empirica del
paragrafo 11.3
2) Con riferimento al sistema dell'esercizio 1, stimare la banda del segnale di misura in uscita dal
trasduttore e il periodo di campionamento da utilizzare (supponendo di campionare con una frequenza 4
volte maggiore della banda del segnale). Usando un ADC a 8 bit, è necessario un circuito di sample and
hold?