You are on page 1of 10

´Indice

1. Introducci´
on.

2

2. Objetivos.
2.1. Objetivo general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Objetivo particular. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3
3

3. Planteamiento del problema.

3

4. Consideraciones te´
oricas.
4.1. Modelo Din´
amico de un p´endulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3
3

5. Propuesta de soluci´
on.

5

6. Resultados.

8

7. Conclusiones.

10

programado en un computador. Rose Tremain escribi´o que “la vida no es un ensayo general”. mejores que los complicados. no sustituye experiencias reales. − No es real en s´ı mismo. Tambi´en es cierto que un ensayo general no es la vida. Un simulador se usa para practicar algo. Introducci´ on. normalmente. Sin este auto esfuerzo el simulador se convertir´ a en un simple juego.1. la necesidad de entender la motivaci´on es particularmente importante. En el peor de los casos. puede conseguir que el pueblo sea pr´ ospero y la gente feliz o hundirlo en la bancarrota mediante sus decisiones y acciones. Haciendo uso de un modelo matem´atico. En este trabajo la simulaci´ on es un proceso que tiene como objetivo generar las trayectorias que ilustran el comportamiento de un sistema din´ amico. elegir la estrategia. otros en el juego de los Sims (juego de ordenador) y otros en juego de negocio a trav´es de la web. El profesor de psicolog´ıa Salvatore Soraci ha demostrado que la gente recuerda mejor las cosas que ha aprendido despu´es de un esfuerzo mental. Mucha gente podr´ıa pensar en un millonario simulador de vuelo. que es el alcalde de un pueblo. Por ejemplo el juego SimCity es un simulador y un juego porque el usuario. Los simuladores complejos pueden hacer que el usuario se pierda en los detalles y no pueda extraer el aprendizaje o las lecciones valiosas del simulador. con el fin de llegar a conclusiones aplicables al mundo real. − Puede ser cambiado por sus usuarios. hay bastante confusi´on sobre qu´e es y qu´e no es un simulador. solo repites la escena hasta que salga bien. La imitaci´ on de la realidad es lo que distingue un simulador de un juego. Con simuladores. Seg´ un Will Glass-Husain. Un usuario que se sienta delante de un ordenador y comienza a conducir una simulaci´ on ir´ a a trav´es de un c´ırculo de aprendizaje: reflexionar sobre el caso. . Las simulaciones son activas. Seg´ un Glass-Husain Todo simulador debe tener tres atributos: − Imita la realidad. se convierte en un ejercicio frustrante. tomar decisiones y observar las consecuencias de esas decisiones. El aprendizaje a trav´es de las simulaciones es auto conducido. Un simulador es una simplificaci´ on de la vida real. fuerzan a los estudiantes pasivos hacia un aprendizaje activo. Los simuladores sencillos son. Si cometes un error durante un ensayo general no hay coste.

Las ecuaciones de movimiento de Euler-Lagrange vienen dadas por: Cinem´ atica directa     x `sen (q) = . y −`cos (q) Cinem´ atica diferencial  x˙ y˙   = `cos (q) q˙ −`sen (q) q˙  . bajo la acci´on de la gravedad. 2. Objetivo particular. − Obtener el modelo din´ amico del p´endulo. Planteamiento del problema. C) Visual C++ [Runge Kutta]. 3. Modelo Din´ amico de un p´ endulo.2. Objetivo general. Matlab y Visual C++.1. Consideraciones te´ oricas. 4. .1. 4. Consid´erese el p´endulo mostrado en la figura 1. que consiste en un motor de corriente continua acoplado a un brazo pendular movi´endose en un plano vertical. Simular el p´endulo en: A) Simnon. Figura 1: Pendulo. − Realizar la comparaci´ on de los resultados obtenidos de las simulaciones. B) Matlab.2. 2. Objetivos. − Simular un p´endulo en Simnon.

q] ˙ − dt ∂ q˙ ∂q 1 (Ir + m`2c )q˙2 − ν(q) 2 (Ir + m`2c )q˙ (Ir + m`2c )¨ q mglc sen(q). Finalmente el modelo din´ amico es el siguiente: f ricci´ on est´ atica τ = (Ir + m`2c )¨ q+ }| { z ˙ + f c[1− | sgn(q) ˙ |] . • g aceleraci´ on de la gravedad. (1) . mglc sen(q) + bq˙ + f csigno(q) Reasignando variables f ricci´ on est´ atica z }| { τ = I q¨ + mglc sen(q) + bq˙ + f csigno(q) ˙ + f c[1− | sgn(q) ˙ |] donde • m masa de la barra. • τ par aplicado al eje de giro. • ` largo de la barra.Modelo de energ´ıa K(q. q) ˙ = v = 1 2 1 Ir q˙ + mv 2 2 2     d x lc cos (q) q˙ = lc sin (q) q˙ dt y v2   2 = kvk = lc2 cos2 (q) q˙2 + lc2 sin2 (q) q˙2 v2 = lc2 q 2 ν(q) = mgh = −mglc [1 − cos(q)] τ = L = ∂L = ∂ q˙   d ∂L = dt ∂ q˙ − ∂L ∂q =   d ∂L ∂L + ff [Fe . • q posici´ on en grados[1].

g es la constante de aceleraci´ on gravitacional de la tierra. el editor del sistema operativo (EDIT) y el propio editor de SIMNON[3].67958 kg. debe ser descrita mediante archivos de texto. A continuaci´ on se presenta la ecuaci´ on que describe el modelo din´amico del p´endulo para realizar las simulaciones: τ = I q¨ + bq˙ + mglc sen(q) (2) donde: τ es el par de torsi´ on necesario para controlar al sistema en N · m. Propuesta de soluci´ on.17 kg .18 kg·m . I es el momento de inercia del brazo del p´ endulo. La informaci´ on acerca del sistema que se desea simular. WORDPERFECT. lc es la distancia desde el eje de giro hasta el centro de masa del p´ endulo. STATE x1 x2 DER dx1 dx2 TIME t dx1=x2 dx2=1/I*(tau-(b*x2)-(alpha*sin(x1))) b:0.5. procesadores de palabra (WORD.45*sin(x1) y=-. etc). Es necesario mencionar que directamente no resuelve ecuaciones en derivadas parciales.17 alpha:3 alpha=mlcg tau=10*sin(t) x=.18 I:0. 9. A continuaci´ on se muestra el algoritmo implementado en Simnon para realizar la simulaci´on del p´endulo . 0. Pudiendo mencionar entre los m´ as conocidos: los editores de Borland (TURBOPASCAL. TURBOC y TURBOBASIC). CHI-WRITER. Cambiando a variables de estado obtenemos: x1 = q x˙1 = x2 x˙2 = (τ − bx1 − mglc sen(x1 ))/I. m b es el coeficiente de fricci´ on viscosa del sistema. En este paquete se pueden llevar a cabo la simulaci´on de sistemas en tiempo continuo. s m es la masa concentrada en el centro de masa del p´ endulo. A).81 sm2 . . ya que es capaz de resolver ecuaciones diferenciales y en diferencias lineales y no lineales con coeficientes variables o constantes. Los cuales pueden ser escritos utilizando cualquier editor texto o procesador de palabra.45 m.45*cos(x1) END . 0.SIMNON es un paquete de simulaci´ on para sistemas din´amicos pr´acticamente de cualquier tipo. tiempo discreto y de sistemas combinados (tiempo continuo y discreto a la vez). 0.

La secuencia de llamada de ambas rutinas es id´entica y requiere del nombre de la funci´on f. Un ejemplo de un m´etodo RungeKutta de orden cuatro de cuatro evaluaciones es el llamado m´etodo Runge-Kutta cl´asico definido por las f´ ormulas: MATLAB cuenta con dos subrutinas intrinsecas para la soluci´on de problemas de valor inicial: ode23 y ode45. [0.A continuaci´ on se obtiene el algoritmo de Runge-Kutta cl´asico para implementarlo en Visual C++.B). 0]). y=-. I=0.(tau-y(2)*b-a*sin(y(1)))/(I)]. La combinaci´ on de estos m´etodos permite el poder estimar el error en la aproximaci´on num´erica en cada paso y asi la subrutina puede ajustar el largo de paso “h” en forma din´amica para mantener el error global menor de una tolerancia especificada por el usuario. la condici´ on inicial. vel_ang].1)). Este es el caso pero ya para cinco evaluaciones no obtenemos necesariamente m´etodos Runge-Kutta de orden cinco pero si con seis evaluaciones. %a=mlcg tau=10*sin(t).[0: 0. b=0. Para poder resolver este sistema.1)).y) C). a=3. [T. Una vez creada la funci´ on de las ecuaciones de estado.45*cos(Y(:. Para ello se crear´ a el archivo “pendulo. se debe crear la funci´on de las ecuaciones de estado.17. τ = I q¨ + bq˙ + mg`c sin (q) q¨ = [τ − bq˙ − mg`c sin (q)] I1 h i 00 0 y = τ − by − mg`c sin (q) I1 y1 = y 0 0 y1 = yh2 = y i 0 0 y2 = τ − by − mg`c sin (y1 ) I1 k 0 y1 = y2 . dy=[y(2).Un m´etodo Runge-Kutta de dos evaluaciones intermedias genera un m´etodo de orden dos. se puede resolver el sistema usando la funci´on ode45.1: 5].m” con el siguiente contenido: function dy = pendulo (t. x=. Es razonable pensar que tres o cuatro evaluaciones intermedias producen m´etodos Runge-Kutta de ordenes tres y cuatro respectivamente. La subrutina ode45 es similar a ode23 pero utiliza una combinaci´on de m´etodos de ordenes cuatro y cinco de cinco y seis evaluaciones respectivamente. Y]=ode45(’pendulo’. Estos m´etodos se dicen que son adaptativos ´o de largo de paso variable.45*sin(Y(:. la tolerancia para los computos. ode23 utiliza una combinaci´ on de un m´etodo Runge-Kutta de orden dos con otro de orden tres. y un indicador de si la rutina imprime o no los resultados calculados en la ventana de MATLAB[2]. los tiempos inicial y final.18. plot(x. y) % y es el vector de estados [pos_ang.

k2. Programa implementado en Visual C++ para la simulaci´on del p´endulo.h> int main() { int i.// double *t.L3. double *fx1.h> #include<stdlib.k=1.ti.L1. //[(int t)(fin+1)].L4.18.fin=5/dh.k4.i++) { k1=x2.0.Tx2.17. for(i=1. alpha=3. I=0.dh.*fx2.x2. x2=0.0 l y2 = [τ − by2 − mg`c sin (y1 )] I1 k1 = y2i l1 = [τ − by2i − mg`c sin (y1i )] I1 k2 = y2i + h2 l1    l2 = τ − b y2i + h2 l1 − mg`c sin y1i + h2 k1 I1 k3 = y2i + h2 l2    l3 = τ − b y2i + h2 l2 − mg`c sin y1i + h2 k2 I1 k4 = y2i + hl3 l4 = [τ − b (y2i + hl3 ) − mg`c sin (y1i + hk3 )] I1 Y1i +1 = y1i + Y2i +1 = y2i + h 6 h 6 (k1 + 2k2 + 2k3 + k4 ) (l1 + 2l2 + 2l3 + l4 ). fx2[0]=x2. ti=0. fx1= new double[fin+1].h> #include<math.alpha. double x1.fin. FILE *fp. x2=0// double k1.1.k. b=0. double b.k3.L2.i<=fin. fx2= new double[fin+1]. t= new double[fin+1]. #include<conio.0.h> #include<stdio.I. . t[0]=ti. L1=(1/I)*(10*sin(ti)-b*x2-alpha*sin(x1)).Tx1. //Condiciones iniciales x1=0. fx1[0]=x1. dh=0. x1=0.

0*k3+k4)*dh. "%. delete fx2.4lf %. fx2[k]=x2. x1=x1+(1. Resultados.\n"). t[i].i++) { fprintf(fp.0/6. x2=x2+(1.Tx1=x1+(1.0*k2+2. L3=(1/I)*(10*sin(ti)-b*Tx2-alpha*sin(Tx1)). Tx1=x1+k3*dh.fx1[i] . k2=Tx2.0)*L1*dh. delete t. Tx2=x2+(1. Tx2=x2+(1.0/2. return 1.0/2.0)*k1*dh. } 6. L4=(1/I)*(10*sin(ti)-b*Tx2-alpha*sin(Tx1)). k4=Tx2. "w+"))== NULL) { fprintf(stderr. "Cannot open input file. L2=(1/I)*(10*sin(ti)-b*Tx2-alpha*sin(Tx1)). delete fx1. Tx2=x2+L3*dh. k=k+1. } fclose(fp). Tx1=x1+(1. Simnon y Visual C++. t[k]=ti.0*L2+2.0)*(L1+2.0*L3+L4)*dh.0)*(k1+2.0)*L2*dh.0)*k2*dh.0/2.0/6. A continuaci´ on se realiza la comparaci´ on de resultados obtenidos en la simulaci´on del p´endulo en Matlab. .i<=fin.4lf\n".4lf %. k3=Tx2.dat". } for(i=0. ti=ti+dh. return 0.fx2[i]).0/2. } /////////////////////////////////// //Abrir un archivo y guardar datos if ((fp = fopen("kutta. fx1[k]=x1.

8994437 90.709718 59.747604 63.8429 54.3 4.8 4.131 0.93080581 2.0 4.66692763 3.7320296 64.6 3.0987325 81.3 1.3939908 23.1884 89.5503917 76.63841934 1.1428899 89.7926162 84.1450938 84.9980746 80.9747497 86.1551444 79.12503592 0.82843012 7.9444 90.1524 89.8857718 76.8602981 89.2129 81.9637092 89.2726 3.20994612 5.5 1.3927 76.6646149 67.05928187 1.1121145 33.9490006 82.71E-02 0.6305899 70.81722961 9.6 4.7 1.1 2.5 0.8660196 1.9 2.4 0.991 87.0335064 11.3 2.6224788 55.9681 84.1 0.5 2.007 58.1 1.0421868 71.6075092 77.3 0.4 1.0 1.2290254 39.0884 1.3047 5.9703 79.4683 45.32531825 0.5491495 15.9576 10.397142 70.6357504 Cuadro 1: Resultados.9930304 75.3606 79.3443307 47.0 3.465207 21.2 3.0 Matlab 0 0.3742015 80.6 1.6475459 84.0633224 41.1114 62.8 0.00946214 0.5701309 84.3813543 49.2726428 77.2 4.9552 7.9 5.07763501 6.8384239 65.58212691 2.0602367 89.07175966 0.7493326 86.7335 15.1177462 20.4 3.34506894 1.9665 69.8 1.1093 76.3838337 18.49021588 0.287 81.8350732 27.6662 86.0415 25.2 1.5788 18.6194 2.4739935 87.5 4.7261932 57.66384908 5.113 66.1066 65.4772688 51.3725 33. Visual C 0 0 0.1 3.5845 73.8138378 25.3413 41.1864138 45.2 0.4166863 72.6 0.93790744 9.05477676 4.1447464 86.6 2.22446107 3.5593586 53.9 4.5349 .0371378 87.1052235 89.0279 0.6121096 89.9 1.0483389 87.1266182 82.3157496 66.6854 22.6491 49.8362 88.4034879 14.t 0.7 3.0 2.3763001 29.8255853 Simnon 0 2.8 3.1172954 79.0477 84.7656386 73.7160374 69.4317235 64.4 2.7 2.1541582 17.9 3.0783896 87.7 0.3 3.6195 29.5 3.7412709 86.1 4.6596 1.99895526 12.2 2.1569 12.4 4.5994579 89.5002073 31.8661079 68.2926 86.1206 4.3006 37.8 2.8883 89.7726178 89.22565119 0.8503162 61.0435613 37.3302232 82.9728569 74.4456 70.2664067 43.21 87.6527 73.0 0.7 4.3385 0.3063988 35.

MANUAL DESCRIPTIVO DE LOS PROGRAMAS PARA ANALISIS Y SIMULACION DE SISTEMAS DE CONTROL. . Santib´ an ˜ez.046.Figura 2: Gr´ afica de la posici´on para los tres programas.uprh. Control de Movimiento de Robots Manipuladores.8 a 5 segundos la gr´afica que m´as se parece a la generada por Matlab vuelve a ser la generada por Simnon.edu/ pnm/notas4061/rungek/rungek. 1998. 2003.1 segundos la gr´afica que m´as se parece a la generada por Matlab es la generada por Simnon.8 segundos la gr´afica que m´as se parece a la generada por Matlab es la generada por Visual C++ y por u ´ltimo a partir de 3. Referencias [1] Rafael Kelly. se obtuvo el error de cada gr´ afica punto apunto con respecto a la gr´afica generada por Matlab y posteriormente se promedio el error.1 a 3. Prentice Hall.. M´etodo Runge-Kutta [en l´ınea]. Para obtener que gr´ afica tenia menor error con respecto a la generada con Matlab. pero a partir de 2. obteni´endose un error promedio para Simnon de 1. Conclusiones. 7. Carbajal C´esar A.1033 y para Visual C++ de 1.htm [3] Rodr´ıguez Francisco . V. Se puede observar que hasta 2. 1997 [consulta 10 de Junio de 2009] Disponible:http://mate. [2] Universidad de Puerto Rico. Puerto Rico. S e tomo como referencia la simulaci´ on de Matlab para comparar con las restantes cual tiene un desempe˜ no m´ as apegado a la realidad.