...
Dynaamiset yhtälöt ja avoimen silmukan siirtofunktiot DC-moottorille ovat:s(Js+b)Theta(s)=KI(s)
Järjestelmän lohkokaavio näyttää seuraavalta:
...
Code Block |
---|
function Moottori() J=0.01; b=0.1; K=0.01; R=1; L=0.5; numjaettava=K; denjakaja=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2)]; motor=tf(numjakaja,denjaettava); |
Muista että, siirtofunktio Siirtofunktio PID säätimelle on:
Suhteellinen säätö (proportional control)
...
Tulevat kaikki vaatimukset täytetyksi.
Sama Scilabilla
Code Block |
---|
function moottoriStepJaBode () s=poly(0,'s'); //määrää s polynomin muuttujaksi U=12; I=10;n=1500;T=2 //moottorin alkuarvot J=0.01;R=1;L=0.5;b=0.1 Kt=T/I Ke= U/(1500/60*2*3.14) //moottorin siirtofunktio //Ω / U =K t / (JL s2 + (JR+Lb) s+(b*R+K t K e)); SiirtofunkNopeus=Kt/(J*L*s^2+ (J*R+L*b)*s+(b*R+Kt*Ke)) //linearisen systeemin maarittely systeemiLin=syslin('c',SiirtofunkNopeus);//muodostetaan systeemi aikajatkuvana ('c') lineaarisena mallina. t=[0:0.05:5]; //aika vektori, jota käytetään simulaatiossa alku:resoluutio:loppuaika y1=csim('step',t,systeemiLin); // Simuloidaan järjestelmää askefunktiolla scf(1);clf; //avataan ja puhditetaan kuva-alue //moottorin askelvaste, ota kommentit pois jos haluat askelfunktion pelkasta moottorista //plot(t,y1) //moottorin bodediagrammi //bode(sys, 0.01, 100); //HUOM! takaisinkykentahaaran asteluvun tulee olla yhtäsuuri tai suurempi kuin takaisinkytkentaLin=syslin('c',[(2+0*s)/(1+0*s)]) //saadin Kd=0.0001 Kp=10 Ki=0.001 saadin= (Kd*s^2+Kp*s+Ki)/s saadinLin=syslin('c',saadin) //muodostetaan takaisinkytkenta operaattorilla /. takaisinkytkettyJarjestelma=saadinLin*systeemiLin/.takaisinkytkentaLin bode(takaisinkytkettyJarjestelma, 0.01, 100); endfunction |