Sei sulla pagina 1di 41

Regolatori PID

Regolatori standard con parametri regolabili:

La variabile di controllo la somma di tre contributi (non sempre presenti


contemporaneamente):
C(s) = KP + KI / s + KD s

1
C ( s ) = K 1 +
+ Td s

Ti s
Vantaggi:

controllo soddisfacente di unampia gamma di processi


semplicit di taratura in assenza di un modello del processo
ampia disponibilit commerciale
basso costo

effetto dellazione proporzionale: aumenta il guadagno di anello (destabilizzante)


effetto dellazione integrale: migliora le prestazioni a regime (destabilizzante)
effetto dellazione derivativa (anticipatrice): migliora il transitorio (stabilizzante)

A: errore >0
derivata <0
A
risposta al
gradino di un
sistema con
regolatore
proporzionale

B
B:errore >0
derivata >0
Lazione di controllo
maggiore se lerrore
crescente e minore se
lerrore decrescente

Regolatori P: per processi a.s., quando le prestazioni statiche non richiedono


luso dellazione I
Regolatori I: necessaria lazione integrale per le prestazioni a regime,
ammissibile un restringimento di banda
Regolatori PI: necessaria lazione integrale per le prestazioni a regime, non
ammissibile un restringimento di banda (si introduce uno zero)
Regolatori PD: non necessaria lazione integrale, si vuole aumentare la banda

La f.d. t.:

1
C ( s ) = K 1 +
+ Td s
Ti s

non fisicamente realizzabile, si deve aggiungere un polo

Td s
1

C ( s ) = K 1 +
+
Ti s 1 + Td s

N = 5 20

LIMITAZIONE DELLAZIONE DERIVATIVA

Cambiamento brusco del riferimento

METODI DI TARATURA
EMPIRICI (ZIEGLER-NICHOLS)
ANALITICI
ZIEGLER-NICHOLS A CATENA APERTA
Si rileva sperimentalmente la risposta al gradino del sistema a catena aperta

e Ts
P( s) = k
1 + s
K

R = k /
Ti

1/RT

PI

0.9/RT

T/0.3

PID

1.2/RT

2T

Coeff. smorzamento=0.21:

Td

T/2

ZIEGLER-NICHOLS A CATENA CHIUSA


Si rileva sperimentalmente la risposta la gradino del sistema controllato
a catena chiusa con regolatore proporzionale, al variare del guadagno

Margine di fase = 6db:


k

presente lerrore a regime


perch non c azione integrale

Ti

0.5Kp

PI

0.45Kp

0.8T

PID

0.6Kp

0.5T

Td

T/8

Sintesi con il metodo a catena aperta


>> g=1000/((s+10)*(s+20)*(s+100))
Transfer function:
1000
-----------------------------s^3 + 130 s^2 + 3200 s + 20000
Step Res pons e
0.05

>> step(g)

0.045
0.04
0.035

Amplitude

0.03
0.025
0.02
0.015
0.01
0.005
0

0.1

0.2

0.3
Time (s ec )

0.4

0.5

0.6

Step Response
0.05
0.045
0.04
0.035

Amplitude

0.03
0.025
0.02
0.015
0.01
0.005
0

0.1

0.2

0.3

0.4

0.5

0.6

Time (sec)

0.03 s

e
G ( s ) = 0.05
1 + 0.2 s

>> gappr=0.05/(1+0.2*s)
Step Response
0.05

Transfer function:
0.05
--------0.2 s + 1

Transfer function:
0.05
exp(-0.03*s) * --------0.2 s + 1

gappr

0.04
0.035
0.03
Amplitude

>> gappr.inputdelay=0.03

g
0.045

0.025
0.02
0.015
0.01
0.005

>> step(g,gappr)

0.2

0.4

0.6
Time (sec)

0.8

1.2

Proviamo a migliorare lapprossimazione:


>> gappr=0.05/(1+0.15*s)
0.05
0.045

Transfer function:
0.05
---------0.15 s + 1

0.04
0.035
0.03
Amplitude

>> gappr.inputdelay=0.02

Step Response

0.025
0.02

Transfer function:
0.05
exp(-0.02*s) * ---------0.15 s + 1

0.015
0.01
0.005
0

>> step(g,gappr)

0.1

0.2

0.3

0.4

0.5

Time (sec)

0.6

0.7

0.8

0.9

St ep Response
0.05
g
0.045

>> g1=0.05/(1+1.2*s)

g1

0.04
0.035
0.03
Amplitud e

Transfer function:
0.05
--------1.2 s + 1

0.025
0.02
0.015

>> g1.inputdelay=0.2
Transfer function:
0.05
exp(-0.2*s) * --------1.2 s + 1
>> step(g,g1)

0.01
0.005
0
0

Time (sec)

La stima sufficientemente accurata

K = 0.05
T = 0.02
= 0.15

Regolatore proporzionale:
>> tau=0.15
>> k=0.05
>> T=0.02
>>R=k/tau
>> kp=1/(R*T)
kp =
150.0000

e Ts
P( s) = k
1 + s
K

R = k /
Ti

1/RT

PI

0.9/RT

T/0.3

PID

1.2/RT

2T

Td

T/2

Prestazioni del regolatore P


Step Response
1.4

>> wp=feedback(kp*g,1)

wp
w

>> w=feedback(g,1)
Transfer function:
1000
-----------------------------s^3 + 130 s^2 + 3200 s + 21000

Amplitude

1.2
Transfer function:
1.5e005
1
-------------------------------s^3 + 130 s^2 + 3200 s + 1.7e005 0.8
0.6

0.4

0.2

>> step(wp,w)

0.1

0.2

0.3

0.4
Time (sec)

0.5

0.6

0.7

0.8

Regolatore PI
K

Ti

1/RT

PI

0.9/RT T/0.3

PID

1.2/RT 2T

Td

St ep Response
2
wpi
1. 8

>> ti=T/0.3
ti = 0.0666
>> kpi=0.9/(R*T)

wp

1. 6
1. 4
1. 2
Amplitude

T/2

kpi =
135.0000

1
0. 8

>> cpi=kp*(1+1/(ti*s))

0. 6
0. 4
0. 2
0
0

Time (sec)

Abbiamo annullato lerrore a regime,


la dinamica non va bene

Transfer function:
10 s + 150
---------0.06667 s

>> wpi=feedback(cpi*g,1)
Transfer function:
1e004 s + 1.5e005
----------------------------------------------------------0.06667 s^4 + 8.667 s^3 + 213.3 s^2 + 1.133e004 s + 1.5e005

>> step(wpi,w,wp)

Regolatore PID
wpid
wpi

1.6
1.4
1.2
Amplitude

Ti

1/RT

PI

0.9/RT T/0.3

PID 1.2/RT 2T
>> kpid=1.2/(R*T)
kpid = 180
>> ti=2*T
ti = 0.0400
>> td=0.5*T
td = 0.0100
>> cpid=kpid*(1+1/(ti*s)+td*s)

Step Response
2
1.8

1
0.8

Td

T/2

Transfer function:
0.072 s^2 + 7.2 s + 180
----------------------0.04 s

0.6
0.4
0.2
0
0

Time (sec)

Il transitorio migliorato

>> wpid=feedback(cpid*g,1)
Transfer function:
72 s^2 + 7200 s + 1.8e005
----------------------------------------------0.04 s^4 + 5.2 s^3 + 200 s^2 + 8000 s + 1.8e005

>>

Sintesi con il metodo a catena chiusa


>> g=1000/((s+10)*(s+20)*(s+100))
Transfer function:
1000
-----------------------------s^3 + 130 s^2 + 3200 s + 20000

Step Response
0.05
0.045
0.04

>> w=feedback(g,1)

0.035

Transfer function:
1000
-----------------------------s^3 + 130 s^2 + 3200 s + 21000

Amplitude

0.03
0.025
0.02
0.015
0.01

>> step(w)

0.005
0

0.05

0.1

0.15

0.2

0.25
Time (sec)

0.3

0.35

0.4

0.45

0.5

Aumentiamo il guadagno del regolatore proporzionale


Step Response
1.4

1.2

>> w=feedback(g*100,1)

Amplitude

Transfer function:
0.8
100000
------------------------------0.6
s^3 + 130 s^2 + 3200 s + 120000
0.4

>> step(w)
0.2

0.1

0.2

0.3
Time (sec)

0.4

0.5

0.6

Aumentiamo il guadagno del regolatore proporzionale


Step Response
1.5

>> w=feedback(g*200,1)

>> step(w)

Amplitude

Transfer function:
200000
1
------------------------------s^3 + 130 s^2 + 3200 s + 220000

0.5

0.1

0.2

0.3

0.4

0.5
Time (sec)

0.6

0.7

0.8

0.9

Aumentiamo ancora il guadagno


Step Response
1.8

1.6

1.6

1.4

1.4

1.2

1.2

Amplitude

Amplitude

Step Response
1.8

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

0.5

1.5
Time (sec)

k=300

2.5

0.5

1.5

2.5
Time (sec)

k=350

3.5

4.5

Step Response
2

1.8

1.6

1.4

1.2
Amplitude

Amplitude

Step Response
10

0
-2

1
0.8

-4

0.6

-6

0.4

-8
-10

0.2
0

10

15

20

25

0.5

Time (sec)

k=400

Scegliamo k=396

1
Time (sec)

k=396

1.5

Step Response
1.5
w
wp

Amplitude

>> kp=396/2
kp =
198
>> wp=feedback(g*kp,1)
Transfer function:
198000
------------------------------s^3 + 130 s^2 + 3200 s + 218000
>> w=feedback(g,1)
Transfer function:
1000
-----------------------------s^3 + 130 s^2 + 3200 s + 21000
>> step(w,wp)

0.5

0.1

0.2

0.3

0.4

0.5
Time (sec)

0.6

0.7

0.8

0.9

Calcoliamo il periodo:
Step Response

System: w
Time (sec): 0.39
Amplitude: 1.75

2
1.8

T=0.505-0.39=0.11

System: w
Time (sec): 0.505
Amplitude: 1.78

1.6
1.4

Amplitude

1.2
1
0.8
0.6
0.4
0.2
0

0.5

1
Time (sec)

1.5

>> ti=0.8*0.11
ti = 0.0880
>> cpi=kp*(1+1/(ti*s))
Transfer function:
15.68 s + 178.2
--------------0.088 s
>> wpi=feedback(cpi*g,1)
Transfer function:
Step Response
2
1.568e004 s + 1.782e005
1.8
----------------------------------------------------------0.088 s^4 + 11.44 s^3 + 281.6 s^2 +
1.6 1.744e004 s + 1.782e005
>> step(wp,wpi)
1.4

Si deve ancora migliorare la


dinamica, usiamo un PID

Amplitude

1.2
1
0.8
0.6
0.4
0.2
0

0.5

1.5

2.5

Time (sec)

3.5

4.5

>> kpid=0.6*396
kpid =
Step Response
1.4

237.6000

1.2

Amplitude

>> ti=0.5*0.11
ti = 0.0550
1
>> td=1.25*0.11
td = 0.1375
0.8
>> cpid=kpid*(1+1/(ti*s)+td*s)
0.6
Transfer function:
1.797 s^2 + 13.07 s + 237.6
0.4
--------------------------0.055 s
0.2
>> wpid=feedback(cpid*g,1)
Transfer function:
0
0.1
0.2
1797 s^2 + 13068 s + 2376000
-------------------------------------------------0.055 s^4 + 7.15 s^3 + 1973 s^2 + 14168 s + 237600
>> step(wpid)

0.3
Time (sec)

0.4

0.5

0.6

Analisi in frequenza a ciclo aperto


Bode Diagram
100

Magnitude (dB)

50
0
-50
-100
-150
0

Phase (deg)

P*g
PI*g
PID*g

-90

-180

-270
-1

10

10

10

10

Frequency (rad/sec)

10

10

Analisi in frequenza a ciclo chiuso


Bode Diagram
50

Magnitude (dB)

-50

-100

-150
0
wp
Phase (deg)

w pi
-90

w pid

-180

-270
0

10

10

10

Frequency (rad/sec)

10

10

Esercizio proposto
Progettare, utilizzando sia il metodo di
Ziegler e Nichols a catena aperta che
quello a catena chiusa un regolatore P, un
regolatore PI ed un regolatore PID per il
processo: g=5000/((s+1)*(s+2)*(s+5))
Analizzare le prestazioni dei regolatori
progettati nel dominio del tempo e della
frequenza

Metodo analitico di taratura


Si vuole modificare, tramite il regolatore PID,
la funzione di risposta armonica (il diagramma
di Nyquist) del processo ad una determinata
pulsazione

OA :
P( j ) exp j (arg( P( j ))
OB :
C ( j ) P( j ) exp j (arg(C ( j ) P( j ))

Si vuole quindi che sia:

OB = C ( j ) P( j )
arg(OB) = arg(C ( j )) + arg( P( j ))
da cui:

C ( j ) =

OB
P ( j )

arg(C ( j )) = arg(OB) arg( P( j ))


scegliendo:

= td
si ha :
arg(OB) = M d
OB = 1

1
C ( j ) =
P ( j )
arg(C ( j )) = M d arg( P ( j ))

1
C ( j ) =
P ( j )
arg(C ( j )) = M d arg( P ( j ))
poich:

C ( j ) = k + jk Td
Ti

k Td
Ti

C ( j )

arg(C ( j ))

Al variare dei parametri la fase introdotta dal PID varia tra -90 e 90
per un PD la variazione introdotta tra 0 e 90
per un PI la variazione introdotta tra -90 e 0

Noti i valori di modulo e fase di C(s) alla pulsazione di attraversamento di


possono quindi ricavare i parametri dalle formule:

k = C ( jtd ) cos(arg(C ( jtd ))


1
td Td
= tan(arg(C ( jtd ))
td Ti
Poich si hanno 3 parametri liberi e due condizioni, si pu imporre il valore
desiderato di errore alla rampa tramite la relazione:

k
k v = P ( 0)
Ti
oppure imporre:

Ti = 4Td

esempio
100
P( s ) =
( s + 2)( s + 5)
specifiche :
e _ step = 0
t = 20rad / sec
M = 30

Serve un
PI o PID tale che:

1 = C ( j 20) P( j 20)
30 180 = C ( j 20) + C ( j 20)

1
C ( j 20) =
=
P( j 20)

C = 30 180 + arctg

202 + 22 202 + 52
= 4,14
100
20
20
+ arctg
= 10,25
2
5

E un anticipo
quindi serve
un PID

1
+ sTd
C ( s ) = k 1 +
sTi

C ( j 20) = k 1

+ 20Td
j
20Ti

k = 4,14 cos(10.25) = 4,077


1
tg (10,25) = 20Td
= 0,18
20Ti
20Td

1
= 0,18
20 * 4Td

20 * 20 * 4Td 1 0,18 * 20 * 4Td = 0


2

1600Td 14,4Td 1 = 0
2

Td = 0.02
Ti = 0.08
1

+ 0.02 s
C ( s ) = k 1 +
0.08s

k Td
Ti

C ( j )

arg(C ( j ))

>> modp=100/(sqrt(20^2+2^2)*sqrt(20^2+5^2))
modp =
0.2413
>> modc=1/modp
modc =
4.1437
>> fasec=30-180+atand(20/2)i+atand(20/5)
fasec =
10.2532
>> k=modc*cosd(fasec)
k=
4.0775
tand(fasec)
ans =
0.1809
20*20*4
ans =
1600
>> 0.18*20*4
ans =
14.4000
>> roots([1600 -14.4 -1])
ans =
0.0299
-0.0209

Magnit ude (dB)

Transfer function:
0.01372 s^2 + 0.473 s +
4.077
----------------------------0.116 s
>>bode(p,p*c)

B ode Diagram
150
100
50
0
-50
-100
0
senz a PID
Phase (deg )

>>
c=k*(1+1/(4*0.029*s)
+0.029*s)

con P ID

-45
-90
-135
-180
-2

10

-1

10

10

10

Frequency (rad/sec)

10

10

St ep Response
1. 5
w

>> w=feedback(p,1)

>> wpid=feedback(p*c,1)

1
A mplitude

Transfer function:
100
--------------s^2 + 7 s + 110

wpid

0. 5

Transfer function:
1.372 s^2 + 47.3 s + 407.7
0
0
--------------------------------------0.116 s^3 + 2.184 s^2 + 48.46 s +
407.7
>> step(w,wpid)

0.2

0.4

0.6

0.8
Time (sec)

1.2

1.4

1.6

Integratore ANTIWINDUP