Newsgroup: it.hobby.elettronica.digitale
Titolo: Sui sistemi di controllo

Ciao,
c'è una cosa che non mi è chiara riguardo gli anelli di controllo, cioè, 
forse l'ho capita ma non ne sono sicuro.
Esempio: controllo di posizione.
L'ingresso del sistema è un sensore di posizione, supponiamo angolare 
per semplicità. L'uscita è il comando motore (velocità e direzione). Il 
setpoint è la posizione angolare dell'albero del motore su cui è 
calettato il sensore.
Fin qui tutto ok. Il regolatore (supponiamo PID, o almeno PI) farà in 
modo che l'albero si porti nella posizione voluta e ci ritorni in 
presenza di disturbi.
Concordiamo tutti che in assenza di disturbi l'uscita sarà {0, 0} una 
volta raggiunta la posizione desiderata. (Si assume che l'albero è 
libero di ruotare se il comando motore è nullo).
Ora immaginiamo di applicare una molla a una squadretta calettata 
sull'albero. In pratica stiamo applicando una forza - costante per 
semplicità - che tende a fare ruotare l'albero, spostandolo dal set point.
Ecco, qui arriva il punto che non mi è del tutto chiaro.
Intuitivamente si giunge alla conclusione che per mantenere fermo 
l'albero il motore deve esercitare una coppia tale da neutralizzare 
quella imposta dalla molla. In altre parole a "regime" l'uscita avrà un 
valore diverso da zero.
Questa azione è determinata dall'integrale. Il proporzionale più ci si 
avvicina al setpoint più si annulla, permettendo alla molla di tirare 
l'albero dalla sua parte, ma non annullandosi l'errore, l'integrale 
aumenta il comando riuscendo così nell'obiettivo.
Domanda: questo presuppone però un integrale "vero" cioè con un tempo di 
integrazione infinito. E ciò fa a botte con l'anti wind-up necessario 
per evitare di far esplodere l'uscita a seguito del rumore (di ingresso, 
di quantizzazione, di elaborazione numerica, ecc...).
Come si fa a far convivere le due cose?
Buona domenica :)
Marco / iw2nzm

 di quantizzazione, di elaborazione numerica, ecc...).
Non capisco perché dovrebbe servire un tempo di integrazione infinito, dato
che la tua forza antagonista č finita e ben misurabile. E' sufficiente che
la parte integrativa saturi a un valore piů alto di quello necessario per
contrastare la coppia antagonista che puoi misurare sul tuo punto di set
point (oppure a un valore un po' piů grande nel caso che anche in
condizioni "dinamiche" sia necessario che la parte integrativa dia una mano
alla parte proporzionale).
-- 
emboliaschizoide.splinder.com

 alla parte proporzionale).
Quello che intendevo dire č che se periodicamente azzero l'integrale - 
per evitare che con errore nullo e in assenza di disturbi costanti abbia 
un'uscita diversa da zero - ottengo viceversa una variazione del comando 
in presenza della forza costante.
Marco / iw2nzm

> Non capisco perché dovrebbe servire un tempo di integrazione infinito, dato

La parte integrale *deve* essere diversa da zero al set point, altrimenti
non servirebbe a niente. La sua efficacia deriva proprio dal fatto che
introduce un effetto diverso da zero anche sul set point, annullando
l'inevitabile errore di offset peculiare dei controlli puramente
proporzionali. Nel tuo caso specifico č evidente: hai una coppia
antagonista che deve essere contrastata *anche* al set point, con una
coppia uguale e contraria, e questo lavoro č svolto appunto dalla parte
integrativa. La stessa identica cosa capita praticamente con tutti i
sistemi di controllo; pensa al controllo di temperatura con una Peltier,
che deve costantemente contrastare il flusso di calore continuo da o verso
l'esterno; al set point la Peltier non si deve mica spegnere!
L'unica cosa che puoi fare sull'integrale č al limite applicarvi una
*saturazione*, ossia quando arriva a un determinato limite superiore o
inferiore non devi piů ulteriormente incrementarlo o decrementarlo.
-- 
emboliaschizoide.splinder.com

 inferiore non devi più ulteriormente incrementarlo o decrementarlo.
Ok, questo mi è chiaro!
Marco / iw2nzm

 Ma non riesco a spiegarmelo intuitivamente.
E' più semplice spiegarselo analiticamente. Praticamente tutti i sistemi
reali hanno almeno un polo, per cui un controllo PI collegato a un sistema
reale costituisce di fatto un sistema con funzione di trasferimento ad
anello aperto del secondo ordine con poli complessi e coniugati, quindi
esso causa inevitabilmente una risposta oscillatoria (la cui stabilità o
meno può essere determinata osservando i poli sul piano di Gauss, oppure
con il criterio di stabilità di Nyquist, oppure con il metodo del luogo
delle radici, in ordine di complessità crescente :-)).
Più è grande il Ki più in genere queste oscillazioni sono grandi e durano a
lungo o al limite rendono il sistema instabile. Quindi i modi per ridurle
sono tre: ridurre il Ki, aumentare il Kp oppure introdurre una parte
derivativa, che poi è in sostanza l'analogo per i sistemi di controllo
della tecnica di cancellazione polo-zero (quindi è influenzata da vari
fattori e non è semplice da tarare).
Una tecnica empirica per ricavare i giusti Kp, Ki e Kd, che ho usato
diverse volte ma che comunque è sub-ottima e richiede una taratura, è il
criterio di Ziegler-Nichols (tutto l'articolo di Wikipedia è altamente
informativo, fra l'altro):
http://en.wikipedia.org/wiki/PID_controller#Loop_tuning
In ogni caso, il risultato finale di tutto ciò (ammesso che il sistema sia
stabile) è sempre quello che il contributo integrale converga a un valore
costante che controbilancia gli effetti esterni (nel tuo caso la coppia
resistente della molla). Per cui capisci anche tu che ammazzando
periodicamente la parte integrale, vanificheresti il senso dell'intera
cosa...
P.S. I miei ricordi di sistemi di controllo sono un po' arrugginiti, per
cui spero di non aver scritto molte cavolate... ma nel mentre che arriva
Franco o qualche altro probiviro, magari la mia risposta può risultarti
comunque utile. :)
-- 
emboliaschizoide.splinder.com

 comunque utile. :)
Molto utile grazie. Quando in azienda comincio a parlare di integrali mi 
guardano tutti male... discutere con chi ne sa di più è sempre utilissimo!
Marco / iw2nzm

 cosa...
Ho un ultimo dubbio, scusate...
L'integrale non va nemmeno azzerato quando si modifica il set point?
Spiego anche qui con un esempio: ho un veicolo con a bordo un 
giroscopio. Il set point è dato da un joystick che permette di impostare 
una velocità angolare. In presenza di un regolatore PI mantenendo 
l'integrazione continuamente avviene questo: tenendo fermo il veicolo 
(es. prova al banco) e dando un comando ho un certo errore che viene 
integrato (fino alla saturazione impostata...).
Tutto giusto, in pratica il veicolo cerca di muoversi ma noi lo teniamo 
fermo. Se adesso però porto a zero il joystick (prova motori terminata) 
avrò ancora un comando perché l'integrale non si è annullato. Però 
d'altro canto il set point ora mi dice che devo avere velocità angolare 
zero e in effetti ce l'ho (veicolo fermo) per cui mi aspetto motori fermi...
Viceversa però se azzerassi sempre l'integrale quando modifico il set 
point questo non avrà mai il suo effetto perché il joystick varia 
continuamente... Forse conviene azzerarlo solo quando il set point è zero?
Grazie.... come sempre
Marco / iw2nzm

 L'integrale non va nemmeno azzerato quando si modifica il set point?
Questo č un problema annoso. Per me la soluzione migliore (escludendo di
passare a controlli ancora piů complessi del PID, con feedforward oltre che
feedback) č quella di impostare le soglie di saturazione per l'integrale al
valore strettamente necessario per la tua applicazione, in modo che
comunque la parte proporzionale continui ad essere preponderante nel caso
che il sistema si trovi improvvisamente molto lontano dal set point.
-- 
emboliaschizoide.splinder.com