Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

PID-säätimen suunnittelu DC-moottorin nopeussäätimeen

Dynaamiset yhtälöt ja avoimen silmukan siirtofunktiot DC-moottorille ovat:

...

  • Asettumisaika alle 2 sekunttia
  • Ylitys on alle 5%
  • Paikallaan ollessa virhe on alle 1% (vakaa tila)

Seuraavaksi suunnitellaan PID-säädin ja lisätään se järjestelmään. Luo ensin uusi m-tiedosto ja syötä seuraavat komennot (katso DC-moottorin mallia käskyjen yksityiskohdista made by Jukka "nättitukka"Tamminen)

Code Block

J=0.01;
b=0.1;
K=0.01;
R=1;
L=0.5;
num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];
motor=tf(num,den);

Siirtofunktioo Muista että, siirtofunktioo PID säätimelle on:

Suhteellinen säätö (proportional control)

Kokeillaan ensin käyttää suhteellisen säädön vahvituksena (gain) arvoa 100. Suljetun kierron siirtofunktion määrittämiseen käytämme palauta komentoa (feedback). Lisää seuraava koodi m-tiedostosi loppuun:

Code Block

Kp=100;
contr=Kp;
sys_cl=feedback(contr*motor,1);

Seuraavaksi katsotaan miltä askelvaste näyttää. Lisää seuraavat arvot arvot m-tiedoston loppuun ja suorita ohjelma komentoikkunassa.

Code Block

t=0:0.01:5;
step(sys_cl,t)
title('Step response with Proportional Control')

Sinun pitäis saada seuraavanlainen kuvaaja:

matlab kuva

PID-säädin

Yläpuolella olevasta kuvaajasta näämme, että sekä vakaan tilan että ylityksen virhe on liians uuri. Aijemmista esimerkeistä tiedämme että PID-säätimen integraali kertoimen (Ki) lisääminen poistaa vakaan tilan virheen ja derivointi kerroin (Kd) alentaa ylitystä. Testataan PID-säädintä pienillä Ki ja Kd arvoilla. Muuta m-tiedostoa seuraavanlaiseksi:

Code Block

 J=0.01;
b=0.1;
K=0.01;
R=1;
L=0.5;
num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)];
motor=tf(num,den);

Kp=100;
Ki=1;
Kd=1;
contr=tf([Kd Kp Ki],[1 0]);
sys_cl=feedback(contr*motor,1);
step(sys_cl)
title('PID Control with small Ki and Kd')

Suorittamalla muutetun m-tiedoston saat seuraavanlaisen kuvaajan

matlab kuvaaja

Code Block