Advertisement
Guest User

Untitled

a guest
Nov 13th, 2018
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 1.80 KB | None | 0 0
  1. paso=0.5;
  2. tiempo=0:paso:250;
  3. function dhdt=dhdt(h,t)
  4.     if t<=30
  5.         f=3;
  6.     else
  7.         f=3+0.01*t;
  8.         if f>=5;
  9.               f=5;
  10.         end
  11.     end
  12.     global x
  13.     dhdt=f-x*h;
  14. endfunction %%las funciones unicamente pueden ver las varibales que están definidas adentro de ellas. En la función se toma un valor de x, sin embargo se define fuera de la funcion y no la puede reconocer. Por lo tanto, se tiene que poner como variable global. Se tiene que definir adentro y afuera de la función.
  15. %%la ecuación del controlador derivativo/integral es la siguiente: pv=bias+kc(er+ti*int(Edt)+td*dE/dt)
  16. ho=1.5;
  17. h=h0;
  18. sp=6; %%set point: el valor que alcanza el estado estable sin perturbación%%
  19. kc=-0.3;
  20. ti=0;
  21. td=0;
  22. inter=0;
  23. global x
  24. for i=1:length(tiempo)-1 %%se mueve a lo largo del vector y a lo largo de este, se establecen los puntos en el tiempo en los que se resuelven las ecuaciones diferenciales hasta completar el intervalo a analizar. En cada intervalo de tiempo se puede calcular como varía el error con respecto al tiempo%%
  25.     if tiempo(i)<=30;
  26.     er(i)=0;
  27.     dedt(i)=0;
  28.     x=0.5;   %%durante los primeros 30 segundos se establece un valor del error de 0 porque en ese intérvalo no hay perturbaciones
  29.     else;
  30.         er(i)=sp-h(i);
  31.         dedt(i)=(er(i)-er(i-1))/paso; %%se calcula el error con respecto al tiempo en un intervalo dado
  32.         x=0.5+kc*(er(i-1)+ti*inter+td*dedt(i));%%en este paso empiezan a funcionar los controladores
  33.     end
  34.     inter=inter+er(i)*paso;
  35.     h(i+1)=lsode("dhdt",ho,[tiempo(i),tiempo(i+1)])(2); %%se generarían los siguientes valores de "h"
  36.     %%la ecuación diferencial da dos valores: el valor inicial y el valor final...en este comando se le pide al programa que tome el   segundo valor del vector  
  37.     h0=h(i+1);
  38. end
  39. plot(tiempo,h)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement