You are on page 1of 56

A digitlis PID

szablyoz
ttekint elads az rsos segdanyaghoz

Szcs Zoltn | szucs@eet.bme.hu | www.eet.bme.hu/~szucs

Mi a szablyoz?
Amikor olyan alkalmazst fejlesztnk, melyben egy
rendszer kimenett a bemenetre adott referencia
jel szerint szeretnnk szablyozni, szablyozra s
szablyozalgoritmusra van szksgnk.
Ilyen alkalmazs lehet pl.: motorszablyozs,
hmrsklet, nyoms, ramlsi sebessg,
sebessg, er vagy egyb vltoz szablyozsa.

A PID szablyoz
PID szablyozt minden olyan mennyisg
szablyozsra kszthetnk, amely mrhet
s melynek rtkt a rendszer valamely
bemeneti mennyisgvel befolysolni lehet.
A PID az a szablyoztpus, amely
egyszersge s j teljestkpessge miatt
mintegy ipari szabvnyknt a legjobban
elterjedt.

A PID szablyoz felptse


Zrt szablyozsi sma PID szablyozval:

y szablyozott jellemz
y0 alapjel vagy referenciajel
e hibajel
u vezrljel

Digitlis PID szablyozsi sma


A digitlis szablyozt s a szablyoz algoritmust egy mikrokontroller, illetve
az azon fut program realizlja!

Vizsgljuk meg, hogy milyen algoritmus szerint hatrozzk meg a PID


szablyoz egyes tagjai az u beavatkoz jelet a hibajel fggvnyben.

Az arnyos tag (P)


Az arnyos, vagy P-tag (P = proportional =
arnyos) a mindenkori hibajellel (e) arnyos
vezrljelet (u) szolgltat.
tviteli fggvnye:
u
H ( s) = ( s) = K P
e

Diszkrt idben:
u ( n ) = K P e( n )

Az arnyos tag ugrsvlasza


A szablyozott jel bizonyos nagysg hibval ri el az
llandsult llapotot.
Ez az llandsult hiba
az arnyos tag erstsnek nvelsvel
cskkenthetelvileg
tetszleges mrtkben,
de a valsgban a tl
nagy Kp-j P-tag
instabil rendszert
eredmnyezhet.
Krds: Mirt nem ri el a szablyozott jel
rtke a referenciajelet?

Az arnyos tag ugrsvlasza


Vlasz: A referencia jel s a kimen jel
llandsult llapotbeli klnbsge (a hiba) mr
olyan kicsi, hogy az ltala okozott beavatkoz
jel nagysga nem elg a hiba eltntetshez,
hanem csak a rendszer vesztesgeit fedezi.
Olyan jrulkos tag bevezetsre lenne
szksg, amiben a nagyon kis hibajel az id
folyamn mintegy felhalmozdik s ily mdon
vlik detektlhatv.

Az integrl tag
Az integrl tag olyan jrulkos vezrljelet
szolgltat, amely a hibk elz idbeli
sszegtl (pontosabban integrljtl) fgg.
Ez a tag veszi figyelembe a kimen jel
trtnett!
Krds: Hogyan tnteti el az llandsult hibt?

Az integrl tag
Vlasz: A kis hibk integrlja mindaddig nulltl
klnbz rtket ad eredmnyl, amg az
llandsult hiba rtke zrus nem lesz. Csak
ebben az egy esetben nem vltozik mr tovbb
a hibaintegrl.
tviteli fggvnye:

u
1
H (s) = (s) =
e
Ti s

Az integrl tag
Diszkrt idben:
az integrls sszegzst jelent (nem
tlagolst!)
Ezzel kzeltjk az integrlst mikrokontroller
alkalmazsa esetn:
t

k =0

e( )d T e(k )

Az integrl tag
Az integrl tag hozzjrulsa a P-tag vezrl
jelhez teht:
n

u ( n ) = K i e( k )
k =0

ahol Ki az integrl tag egytthatjaez,


mint konstans paramter szerepel majd a
mikrokontroller programjban.

Az I s a PI-tag ugrsvlasza

Krds: Mire kell vigyzni ha egy processzorral


sok rtket sszegznk?

Az I s a PI-tag ugrsvlasza
Vlasz: TLCSORDULS!
Kvetkezmny: az integrl
tag vltozjnak rtkt
limitlni kell!
Fontos: az rtk nagy negatv
szm is lehet!
Vagyis: az abszolt rtkt
kell korltozni!

A derivl tag
A derivl tag jrulkos vezrljelet szolgltat a
hibajel vltozsi sebessgtl fggen.
A hibajelben bekvetkez gyors vltozs
nagymrtkben megnveli a vezrljelet gy a
D-tag az alapjelben, vagy a rendszer
llapotban bekvetkez gyors vltozsok
esetn javtja a kvetsi tulajdonsgokat.
A D-tagot tipikusan a P s a PI-tagokkal egytt
hasznljuk PD vagy PID szablyozknt.

A derivl tag ugrsvlasza

A D-tag a hibajel magasabb frekvencij


komponenseire rzkeny; ennek
kvetkezmnye az, hogy knnyen instabilitst
visz a rendszerbe, rzkenny tve azt a
zajokra, zavar jelekre is!

A derivl tag
A D-tag viselkedst idtartomnyban s
komplex frekvenciatartomnyban a kvetkez
kt kplet rja le:
de(t )
u (t ) = Td
dt

u
H ( s ) = ( s ) = Td s
e

A derivl tag
Mivel egzakt derivlst megvalstani
mikrokontrollerrel nem tudunk, ezrt a
kvetkez kzeltst vezetjk be:
de(t ) e(n) e(n 1)

dt
T

ahol e(n) az n-edik, e(n-1) pedig az n-1-edik


tembeli hiba, s T pedig az tem hossza,
vagyis a kt mintavtelezs kztt eltelt id.

A derivl tag
A hibajel derivltjt teht egyszeren a hiba
elz tembeli megvltozsval helyettestettk.
Ez annl jobban kzelti a valdi derivltat,
minl kisebb a diszkrt idlptk, azaz minl
nagyobb frekvencij a mintavtelezs.
fclk =?

A derivl tag
A mikrokontrollerbe berand kplet a D-tag
esetben:
u (n) = K d (e(n) e(n 1))

A digitlis PID szablyoz


Az elz hrom tag lersa alapjn nagyon
knnyen fel lehet rni a PID szablyoz digitlis
megvalstshoz szksges kpletet:
n

u (n) = K p e(n) + K i e(k ) + K d (e(n) e(n 1))


k =0

Ezt az sszefggst problma nlkl


be lehet programozni egy mikrokontrollerbe.

A folytonos idej P, PI s PID szablyozk

Plda PID szablyoz alkalmazsra


A kvetkezkben egy valdi pldn
prbljuk meg rzkeltetni a PID
szablyoz mkdst.
Egy egyszerstett modell alapjn
lerjuk a rendszernket, majd ezt a
lerst hasznlva szmtgp
segtsgvel szimulljuk a
szablyozott rendszer mkdst.
Vgl kiprbljuk a megptett
modellt.

A szablyozott rendszer modellezse

Egy zrt tartlyban lv m tmeg vz


hmrsklett szeretnnk szablyozni.
A tartly fala hszigetelt s a szigetels
tkletlensge miatt hvesztesg keletkezik.
Az egyszersg kedvrt csupn egy Rth
termikus ellenllst vesznk figyelembe s
minden ms vesztesget okoz hatst
elhanyagolunk.

A beavatkozszerv s a mrramkr modellje

A vizet egy Pmax teljestmny ftszllal


melegtjk s termoelemes mrramkrrel
mrjk a hmrskletet.
Ahhoz, hogy ne kelljen holtidvel szmolnunk,
tegyk fel, hogy a vizet a tartlyban
folyamatosan keringetjk s ily mdon a fts
bekapcsolsakor a mrramkr azonnal
szleli a vz melegedst.

A rendszerler egyenletek

Q = c m T

TH TC
P=
Rth

A c fajhj s m tmeg anyag


hmrskletnek T fokkal trtn
megvltoztatshoz szksges
hmennyisg (energia, J)

Adott Rth termikus ellenllson idegysg


alatt traml energia (teljestmny, J/s) a
melegebb pont (TH) fell a hidegebb pont
(TC) fel.
(Ez az Ohm-trvny termikus megfelelje.)

A rendszerler egyenletek
Az els sszefggst t-vel elosztva (ez lesz
majd a diszkrt idlptk) ott is teljestmnyre
jutunk:

Q
T
= P = cm
t
t

A rendszerler egyenletek
A rendszerbe a ftszl segtsgvel bevitt Pfuto
teljestmny kt dologra fordtdik:
a vz hmrskletnek nvelsre
a tartly faln keresztl elszivrg h utnptlsra

Ezt a kvetkez kplettel lehet matematikailag


megfogalmazni:

Pfuto

T Takt Ta
+
= cm
Rth
t

A rendszerler egyenlet
Pfuto

T Takt Ta
+
= cm
Rth
t

ahol t lesz a kt mintavtelezs kztt eltelt id, c a


fajlagos hkapacits, m a tmeg, T a t id alatt
bekvetkez hmrskletvltozs, Takt az aktulis hmrsklet,
Ta a krnyezeti hmrsklet, Rth pedig a mr emltett termikus
ellenlls.
Ahhoz, hogy a rendszer mkdst szmtgppel szimullni
tudjuk, szksg lenne az Rth termikus ellenlls ismeretre.

Ksrlet Rth mrsre


Tegynk egy bgrbe
2 dl vizet (m=0.2 kg) s
mikrohullm stben
melegtsk fel legalbb
55 C-ra. Melegts
utn alaposan keverjk
meg s tegynk bele egy
pontos hmrt

Ksrlet Rth mrsre


Figyeljk a magrahagyott rendszer idbeli
viselkedst:
Exponencilis hlsi grbre szmtunk,
melynek egyenlete kt pontjnak ismeretben
knnyen felrhat.

Eredmny
2 dl vz hlse (Ta=26.5 C mellett)
53,00
51,00
T [C]

49,00
47,00
45,00
43,00
41,00
39,00
0

500

1000
t [s]

1500

Eredmny
A vz hmrsklete t1=78 s-nl rte el a
T(t1)=50 C-ot s t2=1511 s-nl a
T(t2)=40 C-ot.
A krnyezeti hmrsklet kzben Ta=26.5 C
volt.
t = t2 t1 id ismeretben mr ki lehet
szmolni Rth rtkt a kvetkez
gondolatmenettel:

1.
T (t ) = Ta + (T0 Ta ) e

Ez a fv. rja le a hls


grbjt. A grbe kt
pontja ismeretben
szeretnnk
meghatrozni az
idllandt.

rjuk fel az
t

sszefggst a grbe T (t1 ) = Ta + (T0 Ta ) e


kt klnbz pontjra
t

s fejezzk ki
T (t 2 ) = Ta + (T0 Ta ) e
mindkettbl az
exponencilis tnyezt:

2.
T (t1 ) Ta
=e
T (t2 ) Ta

t1 t 2
+

Elosztottuk az els
egyenletet a msodikkal.

Lthatjuk, hogy az ismeretlen T0 ezzel ki is esett.


Most vegyk mindkt oldal termszetes
logaritmust (s cserljk meg az oldalakat)!

T (t1 ) Ta
t t2 t1
= ln
=

T (t2 ) Ta

3.
t2-t1-et t-vel
helyettestjk s
kifejezzk a
idllandt

t
=
T (t2 ) Ta
ln
T (t1 ) Ta

A jobb oldal kirtkelhet, hiszen lemrtk, hogy:


T(t1) = 50 C;
T(t2) = 40 C;
Ta = 26.5 C s
t = 1433 s.
rtkre ekkor 2585.2 s-ot kapunk.

4.
A C = c m hkapacits ismeretben Rth mr
szmthat. A vz tmege m = 0.2 kg s pl. a
fggvnytblzat alapjn tudjuk, hogy a vz
fajhje c = 4183 J/(kg C)

= RthC 2585.2s

2585.2
C
=
3.09
Rth = =
C cvz m 4183 0.2
W

Eredmny
A vesztesget teht egy 3 C/W rtk
termikus ellenllssal modellezzk.
Mi az eredeti fggvny s milyen pontosan
illeszkedik ez a hmrvel mrt rtkeinkre?
(mennyire lett j a kzeltsnk?)
Ehhez fejezzk ki T0-t, majd
visszahelyettestssel hatrozzuk meg rtkt!

1.
T0 =

T (t1 ) Ta
e

T0 =

t1

50 26.5
e

78

2585.2

+ Ta

t1 = 78 s
T(t1) = 50 C;
Ta = 26.5 C s
= 2585.2 s

+ 26.5 = 50.72

Teht az exponencilis grbe az y


tengelyt a T0= 50.72 C-nl
metszi.

A keresett fggvny
T0 s ismeretben immr fel tudjuk rni a
grbe egyenlett:
T (t ) = 26.5 + (50.72 26.5) e

t
2585.2

brzoljuk ezt a grbt a mrt adatainkkal


egytt, kzs koordintarendszerben!

sszehasonlts
53,00
51,00

47,00
45,00
43,00
41,00
0,05
39,00
0,00
-0,05
dT [C]

T [C]

49,00

200

400

500

600

800

t [s]

-0,10
-0,15
-0,20
-0,25
t [s]

1000
1000

1200

1400

1500

Mit csinltunk eddig?


Kiszmtottuk Rth rtkt, gy mr le tudjuk rni
a rendszernk viselkedst matematikailag.
Trjnk vissza most a szablyozstechnikai
vizsglathoz:
Kiegsztjk a lerst a PID szablyoz matematikai
lersval.
Megadjuk a kezdeti s egyb feltteleket.
A mkdst egy C-programmal szimulljuk.

//PID_SIM - PID szablyoz szimultor program


//Szcs Zoltn - 2008. szeptember 20.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
//A RENDSZER PARAMTEREI:
double cviz=4183.2; //A vz fajlagos hkapacitsa:
J/(kg*C)
double m=0.2;
//A vz tmege: kg
double Ta=25;
//Krnyezeti hmrsklet: C
double T0=25;
//A vz kezdeti hmrsklete: C
double Rth=3.09;
//A vz s a krnyezet kztti
hellenlls: C/W
//A BEAVATKOZ SZERV PARAMTERE(I):
double Pmax=400;
//A maximlis ftteljestmny: W

//A SZABLYOZ PARAMTEREI:


double Kp=100;
//Az arnyos tag egytthatja
double Ki=10;
//Az integrl tag egytthatja
double Kd=60;
//A derivl tag egytthatja
double MaxP=1000;
//A P-tag maximlis
ABSZOLUTRTKE!!!
double MaxI=1000;
//Az I-tag maximlis
ABSZOLUTRTKE!!!
double MaxD=1000;
//A D-tag maximlis
ABSZOLUTRTKE!!!
double MaxU=1000;
//A vezrljel maximlis rtke

//SZIMULCIS PARAMTER(EK):
double dt=1e-3;
//A diszkrt idlptk: s
int StopTime=200;//A szimulci futsi ideje: s
double Tref=40;
//A referencia hmrsklet: C

//EGYB VLTOZK:
int k=0;
//A diszkrt temszm vltozja
double t;
//Az aktulis id msodpercben
double P=0;
//Az arnyos tag rtke
double I=0;
//A hibaintegrl rtke
double D=0;
//A jelvltozsi sebessg rtke
double Takt, Tdig; //Az aktulis vzhmrsklet
double eelozo=0;
//Az elz hiba rtke
double e;
//Az aktulis hiba rtke
double Pfuto;
//Az aktulis ftteljestmny
double deltaT;
//A hmrsklet nvekmnye
double U;
//A vezrljel vltozja
//PARAMTERLISTA VGE
FILE * pFile;
pFile = fopen ("pid_sim.csv","w"); //Az eredmnyt
tartalmaz szveges file

//A SZIMULCI:
Takt=T0;

//A kezdeti vzhmrsklet


belltsa
for (k=0; k<(StopTime/dt); k++)
{
t=k*dt;
//Az aktulis id meghatrozsa
Tdig=Takt;
//"Az A/D vgez egy mrst"
digitalizljuk a hmrskletet
eelozo=e;
//Az elz hiba elmentse
//if (k==30000) Tref=40;
e=Tref-Tdig;
//Az aktulis hiba kiszmtsa

//A P-tag rtknek kiszmtsa:


if ((P=Kp*e)>MaxP) P=MaxP;
else if (P<(-1*MaxP)) P=-1*MaxP;
//A D-tag rtknek kiszmtsa:
if ((D=Kd*(e-eelozo))>MaxD) D=MaxD;
else if (D<(-1*MaxD)) D=-1*MaxD;
//Az I-tag rtknek kiszmtsa:
if ((I+=(Ki*e))>MaxI) I=MaxI;
else if (I<(-1*MaxI)) I=-1*MaxI;

//A beavatkoz jel (k) kiszmtsa:


U=P+I+D;
//A PID szablyoz kplete
if (U>MaxU) U=MaxU;
else if (U<0) U=0; //Itt figyelnk r, hogy a
fttelj. negatv nem lehet:
//vagyis a rendszer csak fteni
tud, hteni nem!
//A ftteljestmny kiszmtsa: [Ez tk. a D/A
rsz!]
//Itt a vezrljelet t kell transzformlni a 0..1
tartomnyba.
Pfuto=(U/MaxU)*Pmax;

//A hmrskletvltozs a k-adik temben:


deltaT=(Pfuto-(Takt-Ta)/Rth)*dt/(cviz*m);
Takt+=deltaT;
if (!(k%40))
//Minden 40. ciklusban
elmentjk az rtkeket
{
fprintf(pFile,"%d;%.3lf;%.3lf;%.3lf;%.3lf;%.3lf\n",k,t,T
akt,P/10,I/10,D/10);
printf("A %d-dik ciklus: %f;P=%.3lf; I=%.3lf; D=%.3lf\n",
k, Takt,P,I,D);
}
}
fclose (pFile);
}

Szimulcis paramterek
mvz = 0.2 kg a melegtett vz tmege
Pfuto = 400 W a ftteljestmny maximlis rtke.
A szablyoz paramterei:
Kp = 100 az arnyos tag erstse
Ki = 10 az integrl tag egytthatja
Kd = 60 a derivl tag egytthatja

A diszkrt idlptk: dt = 1 ms (azaz a mintavteli


frekvencia: 1 kHz)
A szimulci futsi ideje: 200 s
Az elrni kvnt (referencia)hmrsklet:
Tref = 40 C

Szimulcis eredmny
110
90
70
50
30

Takt

10

P/100
I/100

-10
-30
-50
-70
-90
-110

50

100

150

200

D/100

Szimulcis eredmny
Vizsgljuk meg kicsit kzelebbrl is az elz
kpet minsgileg!
Arra vagyunk elssorban kvncsiak, hogy a vz
hmrsklete mennyire pontosan kveti a
referenciajelet.

Szimulcis eredmny
40,25
40,2
40,15
40,1
40,05
40
39,95
39,9
39,85
39,8
39,75
0

50

100

150

200

A szablyoz realizlsa
A szimulci utn kvetkez feladat a
szablyoz ramkr realizlsa, amely mr
nem csak szablyozstechnikai, hanem nmi
ramkrtervezsi jrtassgot is ignyel. Errl
lesz sz a ksbbiekben

Tovbbi krdsek
Eltnteti-e valban a diszkrt-idej PI
szablyoz az llandsult llapotbeli hibt?
Eltntetheti-e valban a digitlis PI szablyoz
az llandsult llapotbeli hibt?
Hasznlhat-e a P-tpus szablyoz arra,
hogy megmrjk Rth rtkt?