8.1 controllo hardware e controllo softwareclassiperlo.altervista.org/archivio/2019x/2019_5... ·...

24
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-rate 2 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

Upload: others

Post on 05-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 2: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 3: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 4: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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.

?

Page 5: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 6: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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).

Page 7: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 8: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 9: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 10: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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.

Page 11: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 12: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 13: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 14: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 15: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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.

Page 16: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 17: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

?

Page 18: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 19: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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).

Page 20: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 21: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

?

Page 22: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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.

Page 23: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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

Page 24: 8.1 Controllo hardware e controllo softwareclassiperlo.altervista.org/Archivio/2019x/2019_5... · 11.1 Controllo hardware e controllo software 11.2 Il software di controllo 11.3 Periodo

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?