PID regulator (Læst 14084x)

Offline janengelbrecht

  • Op-amp
  • ***
  • Indlæg: 211
  • Antal brugbare Indlæg: 23
    • Vis profil
    • Personlig hjemmeside
PID regulator
« Dato: Januar 04, 2014, 00:06:04 »
PID - regulering

Video:
https://www.youtube.com/watch?v=wbmEUi2p-nA
http://www.youtube.com/watch?v=R08M_7uxEaw


Blokdiagram:

http://www.ineer.org/Events/ICEE1997/Proceedings/fig2335.gif

Wikipedia:
http://en.wikipedia.org/wiki/PID_controller
http://en.wikibooks.org/wiki/Control_Systems/Controllers_and_Compensators#PID_Transfer_Function


En proportionel-integral-differential controller (PID controller) er en generisk kontrol loop feedback mekanisme
(controller) som er meget udbredt i industriens kontrol systemer - En PID-regulator kendes også som en feedback-controller.
En PID-regulator udregner en fejl værdi som forskellen imellem en målt værdi og en reference.
Controlleren forsøger at minimere fejlen ved at justere proces controllerens indgange.

PID kontrollere findes alle vejne i industrien og de kontrollerer alle mulige ting:
temperatur, niveau, flow, lysmængde, strålingsmængde, lydtryk osv.
Årsagen til , at de anvendes så meget er fordi de er simple og effektive.

PID navnet kommer fra 3 termer i ligningen der bruges for at beregne udgangssignalet:
P - Proportionel delen kigger på den nuværende tilstand i processen. Værdien er proportionel til den nuværende fejl.
I - Integrations delen kigger på historikken i processen. Dens værdi er integralet af foregående fejl.
D - Differential delen forsøger at forudse fremtiden i processen. Dens værdi er differentialet af ændringshastigheden i fejlen.
Disse 3 termer tildeles hver deres vægt i tunings parametrene: Kp, Ki og Kd. Disse 3 summeres for at producere kontrol udgangssignalet.

Regulatoren reagerer:
•  Proportionalt på en fejl, dvs forstærker fejlen. 
•  Differentierer fejlen. Dvs reagerer kraftigt på hurtige ændringer i fejlen
•  Integrerer fejlen. Dvs. reagerer også på en lille varig fejl.
Der tales om 3 typer regulerings-måder:
PID-regulator, med Differentierende virkning, Proportional virkning, og Integrerende virkning.
En differentiator ser på det indkomne fejl-signal, og differentierer det. Dvs. ser på hældningen på
signalet. Altså er udgangen afhængig af ændringen på indgangens signal. En hurtig ændring fx ved
en setpunktsændring eller en pludselig forstyrrelse, vil bidrage til en kraftig , - kortvarig –
påvirkning videre i forløbet.
P-forstærkeren er en simpel forstærker. Dvs. et indgangssignal, en spænding, forstærkes et antal
gange.  Derfor indses også, at der ikke kan være et indgangssignal, der er 0. Dvs. at 0 gange fx 10
gange, er stadig nul. Så for at få processen til at køre, skal der være en fejl.  Ellers tilføres systemet
ikke energi. Fx ville en rumtemperatur så falde.
En integrator integrerer et signal. I et system med store belastningsvariationer pendler den faktiske værdi meget fremog tilbage, hvilket indebærer, at den ændrer sig med stor hastighed. D-delen i regulatoren modvirker disse bevægelser og forsøger at holde hastigheden så lav sommuligt, hvilket giver mindre pendlinger.
D-funktionen har altså en stabiliserende virkning. Derimod påvirker den ikke systemet, når den
faktiske værdi ligger stille, da dens hastighed så er nul.
Regulatorens udgangssignal bliver summen af P-, I- og D-delens bidrag
Uo(S) / Ue(S) = Kp + (Ki / S) + Kd*S = Kp*(1 + (1/(Ti*S)) + Td*S) ; Ti = (Kp / Ki) og Td = (Kd / Kp)

Hvorfor skriver jeg S ? Fordi man laplace transformerer fejl signalet.
S = j * 2 * pi * f , j=kvardratroden af -1 . (Ved et rent sinus signal. Ved andre signaler skal hver eneste frekvens komposant så beregnes hver for sig og afslutningsvis summeres: FFT!)
Det er en metode vi ikke vil komme nærmere ind på nu. Vi betragter det bare som en nem måde at notere på  8)

Proportional kontrol:

Uo(t) = Kp * e(t) + startværdi

Integral kontrol:

Uo(t)= (1/Ti) * Integralet af (e*dt)

Differential kontrol:

Uo(t) = Td * (de/dt)

PID:

Uo(t) = Kp * ( e(t) + (1/Ti)*integralet af (e*dt) + Td*(de/dt) )

Blokdiagram:


Implementering analogt:

I ovenstående diagram er P delen opslittet i to. Det gøres fordi både I og D del har brug for ren ohmsk feedback/modkobling. Faktisk mangler der en modstand over kondensatoren i I delen for at opnå stabilitet!

Lad os sige vi ønsker at opvarme en beholder med vand til 150 grader. Vi checker temperatur sensoren
lad os sige den siger 100 grader, så vil vi skrue helt op for varmen. Vi checker igen nu siger temperaturen: 160 grader.
Så skruer vi helt ned for varmen. Men nu er vandet afkølet til 140 grader.....det er vist tid til at bruge en hurtigere
enhed til styringen end os selv :)
At holde en 10 graders spredning (+/- 5 grader) er ikke svært manuelt men mindre spredning kræver enten en analog eller
digital regulator!

Der er mange anvendelser for PID regulatorer her er et eksempel på en implementeret med en simpel AVR (Arduino Uno R3)
http://fermentationriot.com/arduinopid.php

Arduino bibliotek: http://playground.arduino.cc/Code/PIDLibrary

Det svære ved en PID regulator er at bestemme værdierne Kp, Ki og Kd.
Det foretages delvist ved trial-and-error (enten manuelt eller automatisk).
Man kan komme et vist stykke vej ved at regne på hele ens kredsløb, men
tit udelukker man visse fysiske parametre, eller de kendes ikke og man er lige vidt.
Så tuning skal der til.
Autotuning er således en mulighed: processoren måler på kredsløbet og indstiller Kp, Ki og Kd værdierne.

http://playground.arduino.cc/Code/PIDAutotuneLibrary

Teori:
http://brettbeauregard.com/blog/2012/01/arduino-pid-autotune-library/

Vi opsummerer:
Proportional reguleringsdelen reagerer på fejlen der er lige nu : Kp (Kp faktor bestemmes)
Integraldelen reagerer på akkumulering af tidligere fejl : Ki (Ti faktor bestemmes)
Differentialdelen reagerer på ændringer i fejlen : Kd (Td faktor bestemmes)
« Senest Redigeret: Januar 04, 2014, 02:02:36 af janengelbrecht »