ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr...

186
ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA "ESTUDIO DEL PÉNDULO INVERTIDO Y SIMULACIÓN DINÁMICA MEDIANTE UN PROGRAMA PARA WINDOWS" TESIS DE GRADO PREVIA A LA OBTENCIÓN DEL TITULO DE INGENIERO EN ELECTRÓNICA Y CONTROL POR GONZALO FABRICIO MONTALVAN AREVALO QUITO, DICIEMBRE DE 1994

Transcript of ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr...

Page 1: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

E S C U E L A P O L I T É C N I C A N A C I O N A L

FACULTAD DE INGENIERÍA ELÉCTRICA

"ESTUDIO DEL PÉNDULO INVERTIDO

Y SIMULACIÓN DINÁMICA

MEDIANTE UN PROGRAMA PARA WINDOWS"

TESIS DE GRADO PREVIA A LA OBTENCIÓN DEL

TITULO DE INGENIERO EN ELECTRÓNICA Y CONTROL

POR

GONZALO FABRICIO MONTALVAN AREVALO

QUITO, DICIEMBRE DE 1994

Page 2: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

CERTIFICO QUE EL PRESENTE TRABAJO

HA SIDO REALIZADO EN SU TOTALIDAD

POR EL SR. GONZALO FABRICIO

MONTALVAN AREVALO.

Ing. Marco "Barragán

DIRECTOR DE TESIS

Page 3: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

AGRADECIMIENTO

Mi más sincero agradecimiento al

Ing. Marco Barragán por su

acertada dirección de esta tesis,

sin cuya ayuda no hubiese sido

posible la culminación de la

misma.

Page 4: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

DEDICATORIA

A mis padres.

Page 5: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

ÍNDICE

CAPITULO I INTRODUCCIÓN

Obj etivos 1

Generalidades.

Elección de la planta e importancia del tema . 3

La simulación dinámica como alternativa de aprendizaje . . 5

Descripción de la tesis 6

CAPITULO II MODELACIÓN MATEMÁTICA

2.1 Obtención de las ecuaciones que describen-

el sistema 8

2.2 Linealización de las ecuaciones 17

2.3 Descripción del sistema a variables de estado ...... 21

CAPITULO III COMPENSACIONES

3. 1 Realimentación de estado 28

Page 6: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

3.2 Compensación lineal 42

3.3 Control de tiempo mínimo 48

3.4 Influencia del modelo utilizado en la forma

de la compensación 57

CAPITULO IV DESARROLLO DEL PROGRAMA

4.1 Simulación dinámica 59

4. 2 Compensaciones 62

4 . 3 Diagramas de f luj o 64

4.4 Funciones utilizadas 70

4.5 Ejercicios 76

CAPITULO V -RESULTADOS Y CONCLUSIONES

5.1 Resultados 90

5 . 2 Conclusiones 92

BIBLIOGRAFÍA 97

ANEXOS

Nomenclatura utilizada 100

Manual del usuario 103

Listado del programa 111

Page 7: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

CAPITULO I

INTRODUCCIÓN

OBJETIVOS.

En la actualidad la computación se ha convertido en

una valiosa herramienta de cálculo en todos los campos de

la ingeniería y ha permitido una mayor versatilidad y un

más rápido desarrollo de la misma. Aquí, nosotros

utilizaremos a la computación para el estudio de los

sistemas de control a fin de facilitar los cálculos

complejos que resultan al aplicar un tipo de control a

determinada planta.

Mediante el presente trabajo se pone a consideración

del estudiante de Control un programa de computación que le

servirá como una herramienta útil con la que pueda aplicar

los conocimientos adquiridos en Control tales como la

realimentación de estado, el control proporcional

derivativo y control de tiempo mínimo u óptimo a un

problema clásico de control: el péndulo invertido.

Page 8: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

2

El programa desarrollado se comporta como si se

dispusiera de la planta real mediante la simulación

dinámica de ésta (animación gráfica del péndulo invertido

en el computador), permitiéndonos observar su

comportamiento ante determinado tipo de control, con un

costo mínimo y con todas las ventajas que ofrece el entorno

gráfico Windows. Para el desarrollo del programa se utilizó

el compilador Turbo C++ para Windows, versión 3.1 y se lo

realiso con la técnica de programación orientada a objetos.

El programa fue implementado en un' computador 486 DX

compatible con I.B.M. con tarjeta de gráficos V.G.A, que es

el más difundido en nuestro medio y que además se dispone

en laboratorio. Para poder utilizar el programa se debe

tener instalado el programa Windows en el computador y debe

tener la suficiente memoria para su ejecución.

El programa desarrollado es versátil y de fácil

comprensión y utilización para el usuario, tiene menús

desplegables para elegir las opciones y cuadros de diálogo

para ingresar los datos. Además tiene opciones para

presentar los resultados, copiar gráficos al portapapeles,

impresión directa desde el menú de cualquier texto o

gráfico de la ventana del programa sin tener que recurrir a

otro programa y una ayuda práctica e ilustrativa que se

selecciona directamente desde el menú del programa para

aprender a utilizarlo.

Page 9: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

3

Se presenta a la simulación dinámica de una planta

como un auxiliar en el aprendizaje de las técnicas de

Control Moderno tales como la realimentación de estado,'lo

que permitirá al estudiante centrarse en el diseño del

controlador sin tener que preocuparse de lo relativo al

ensamblaje y armado, pero al mismo tiempo observar en la

simulación el funcionamiento de la planta con el

controlador diseñado y la respuesta en el tiempo.

El programa funciona bajo el entorno Windows con lo

que se consiguen las ventajas que ofrece este entorno como

son: el poder correr varios programas .al mismo tiempo, la

utilidad del portapapeles para copiar cualquier gráfico de

una aplicación a otra, la selección automática del

controlador de la tarjeta de video por lo tanto el programa

puede ser ejecutado en cualquier computador compatible con

I.B.M. independientemente del hardware, etc.

GENERALIDADES .

ELECCIÓN DE LA PLANTA E IMPORTANCIA DEL TEMA.

Se eligió al péndulo invertido, un problema clásico de

control, por ser una planta de inestabilidad inherente y

porque es un sistema que se puede animar o simular por

medio de un programa de computación.

Page 10: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

4

El péndulo invertido consiste en una varilla sujeta en

un extremo por un pivote que le permite rotar libremente en

un plano vertical paralelo a la trayectoria del carro. De

esta manera el extremo superior de la varilla queda libre3

resultando inestable su posición vertical. El pivote se

encuentra instalado en un carro que puede moverse en

movimiento rectilíneo, tal como se indica en la figura 1.1.

Fig- 1.1 Péndulo Invertido

El objetivo del péndulo invertido, es aplicar una

fuerza externa al carro del tal manera de mantener la

varilla en posición vertical. La fuerza aplicada al carro

dependerá del tipo de controlador implementado.

La solución de un problema de control no sólo debe

quedarse en el diseño de determinado compensador, sino que

el resultado obtenido será más comprensible al tener una

idea de cómo reaccionará la planta frente a éste, lo que se

observará en la simulación dinámica y en los gráficos en el

tiempo de cada estado del sistema.

Page 11: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

5

Los cálculos se facilitan al utilizar un programa

permite obtener los resultados teóricos esperados, tales

como la respuesta en el tiempo, parámetros del controlador,

y realizar un análisis de todos los estados del sistema.

LA SIMULACIÓN DINÁMICA COMO ALTERNATIVA DE APRENDIZAJE.

La simulación dinámica, también llamada animación

cinética, de una planta real mediante un programa de

computación es una alternativa que en la actualidad se está

usando a gran escala para simular el comportamiento de un

sistema físico bajo determinadas condiciones aún a nivel

industrial.

Es útil para el estudio de los sistemas de control,

puesto que se pueden ensayar diferentes alternativas de

control con diferentes especificaciones y observar el

comportamiento del sistema como si se dispusiera de la

planta real en funcionamiento sin tener que preocuparse por

eventuales daños de la planta, la instalación de misma y

los problemas que trae consigo como son los defectos de

construcción, conexión, cambios en la planta por el

envejecimiento de sus elementos, etc.

En el campo industrial también se utiliza la

simulación dinámica, así cuando se adquiere un sistema

nuevo viene con el software de soporte que permite aprender

Page 12: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

6

a utilizar todas las opciones del sistema y simularlo

mediante un programa de computación.

DESCRIPCIÓN DE LA TESIS.

Para una rápida referencia aquí explicaremos como está

desarrollada la tesis:

En el capitulo II se hace la demostración matemática

formal para encontrar las ecuaciones diferenciales que

definen al sistema, se define el sistema de referencia

utilizado, y - se hacen los diagramas de cuerpo libre de la

varilla y del carro. Para posteriormente linealizar las

ecuaciones bajo ciertas suposiciones, se obtiene las

funciones de transferencia y por último se describe el

sistema a variables de estado.

En el capítulo III se hace la implementación de las

alternativas de control propuestas, explicando todo el

desarrollo matemático para encontrar la solución del

problema.

En el capítulo IV se describe de manera general las

principales funciones utilizadas en el programa, si se

ctuiere una mejor referencia de cómo se realizó el programa

fuente se deberá revisar los comentarios existentes en el

listado del mismo. Además se presenta algunos diagramas de

Page 13: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

7

flujo de funciones donde se realizan bifurcaciones de

acuerdo al valor de alguna variable y se aplica el programa

a un ejercicio numérico específico para cada compensación.

En el capitulo V se presentan los resultados

conseguidos, y las conclusiones.

En los anexos se hace una list'a completa de la

nomenclatura utilizada para obtener una rápida referencia o

conseguir información de algún término que se requiera.

Además se presenta al usuario un manual para que pueda

utilizar el programa, aunque se puede acceder directamente

a ayuda desde el menú del mismo,

Por último se presenta el listado del programa que fue

desarrollado en su totalidad con el paquete Turbo C+4-

versión 3.1 de Borland. Mediante este paquete se tienen

todas las herramientas .necesarias para la programación bajo

Windows orientada a objetos.

Page 14: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

CAPITULO II

MODELACIÓN MATEMÁTICA

2.1 OBTENCIÓN DE LAS ECUACIONES QUE DESCRIBEN EL SISTEMA.

Para obtener las ecuaciones diferenciales que

describen el sistema, consideraremos el movimiento del

péndulo invertido en dos dimensiones, es decir, el péndulo

gira en el plano vertical (plano xy) paralelo a la

trayectoria del carro y perpendicular al plano horizontal.

Primero comenzaremos analizando las fuerzas que

actúan tanto en el carro cuanto en la varilla, que

representa al péndulo, mediante los diagramas de cuerpo

libre de cada uno de ellos. Al mismo tiempo iremos

introduciendo la nomenclatura que se utilizará de aquí en

adelante.

El sistema de referencia que utilizaremos para el

problema es el siguiente: el eje x es paralelo a la

dirección del movimiento del carro, el origen de las

Page 15: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

9

abscisas está en el centro de la pista. El eje y es

perpendicular a la pista y el origen de las ordenadas está

sobre la superficie del carro. En la figura 2.1 se muestra

el péndulo invertido junto al sistema de referencia

utilizado para la modelación matemática.

teje y (+]

eje x [+J

fig_ 2.1 Sistema de referencia

En la figura 2.2 se identifican las fuerzas que se

aplican a la varilla y en general las diferentes variables

que utilizaremos para la modelación matemática. La varilla,

de longitud total igual a 2L, es homogénea y delgada de tal

manera que su centro de gravedad está a una distancia L de

cualquiera de sus extremos; en ésta actúan tres fuerzas: el

peso de la varilla mg representado en el centro de gravedad

de la misma, la reacción horizontal H(-t) y la reacción

vertical V(-fc) ambas debidas al pivote que está sujeto al

Page 16: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

10

carro y que permite girar a la varilla.

Fig. 2.2 Diagrama de cuerpo libre de la varilla

El ángulo que forma la varilla con la vertical se

define positivo hacia la derecha y se lo identifica con la

letra griega 4>(t)

La ubicación del centro del carro se encuentra a una

distancia x(t) del origen del sistema de referencia, que

como ya indicamos, está en el centro de la pista.

L es la distancia desde el pivote al centro gravedad

de la varilla que en nuestro caso, como se mencionó

anteriormente, está en el centro de la misma. O sea en otro

Page 17: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

11caso si la masa dé la varilla no está distribuida

uniformemente, L no será la mitad de la longitud total,

sino que será la longitud desde el pivote al centro de

gravedad de ésta. Tomando en cuenta este detalle el modelo

matemático aquí desarrollado será de carácter general .

Aplicando las leyes de la Física Clásica para el

movimiento de los cuerpos tenemos:

- Sumatorio de fuerzas en la varilla en el eje x:

2FX - m a c (2.1)

la componente de la aceleración en el eje x (ase) se obtiene

de la -segunda derivada de la ubicación del centro de

gravedad de la varilla que está dado por la expresión 2.2

x(t) + L sin(fr(t) (2.2)

Reemplazando la expresión 2,2 en la ecuación 2.1 y

considerando las fuerzas que actúan en la varilla en el eje

x representadas en el diagrama de la figura 2.2 se obtiene:

( t) +Lsin(t> ( t) )dt2

resolviendo la segunda derivada del seno:

= d [cos(t)(t)Tdt2 dt T dt

— sin4»(t) ( )'+co8«t>(t)

Page 18: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

12

haciendo el reemplazo correspondiente:

t) = m J + , n ¿ [cos*( t) -sin*( t) ( - - ) 21dt2 dt2 ere

realizando las operaciones indicadas obtenemos:

-ji»L8Ín»(fc) ( - ) 2 (2.3)dt2 dt2

- Sumatorio de fuerzas en la varilla en el eje y:

ZFy = m ay (2.4)

Al igual que en el caso anterior la componente de la

aceleración en el eje y (ay) se obtendrá de la segunda

derivada del espacio. La componente en el eje y de la

ubicación del centro de gravedad del péndulo se obtiene por

una relación trigonométrica:

L cos4»(t) (2.5)

Reemplazando la ecuación 2 . 5 en la ecuación 2 . 4 y

considerando las fuerzas, que actúan en el eje y en la

figura 2.2, se obtiene:

V( t) -mg=m-— (L CO3<{> ( t)dt2

resolviendo la segunda derivada del coseno :

d2cos<{> ( t) =_^ [gin<<) ( fc) cft}) ( fc) jdt2 dt dt

de la varilla sobre el pivote respecto a su centro de

gravedad está dado por el sumatorio de torques que es igual

al momento de inercia de la varilla J por la derivada de la

velocidad angular:

(2.7)

donde <*>= es la velocidad angular con que gira

la varilla.

Los torques que actúan en la varilla respecto A i=m

Page 19: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

13

-cos4><t)

haciendo el reemplazo correspondiente:

V( t) -mg=-mLB±n$ ( t) -mLcos» ( t) ( ) 2 (2.6)dfc* cft

Por otro lado la ecuación del movimiento de rotación

de la varilla sobre el pivote respecto a su centro de

gravedad está dado por el sumatorio de torques que es igual

al momento de inercia de la varilla J por la derivada de la

velocidad angular:

(2.7)

donde 6>»- -£j—- es la velocidad angular con que giradt

la varilla.

Los torques que actúan en la varilla respecto a su

centro de gravedad son debidos a las reacciones H(t) y V(t)

y las distancias a éstas se obtienen por relaciones

trigonométricas, además consideremos el sentido positivo al

movimiento de rotación en sentido horario. Reemplazando

estos torques en la ecuación 2.7 se obtiene la ecuación 2.8

)cos<fr(t) (2,8)dt2

Reemplazando las ecuaciones 2.3 y 2.6 en la ecuación

2.8 se obtiene:

Page 20: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

14

t) -mLcos* ( t) ( -)^] ain*( t)dt2 dt2

)*]cos»(t)dt2 dt2 dt

realizando las operaciones indicadas se obtiene:

dt2 dt2

-/nL2cos<b(t)sin<|)(t) ( - . ) 2-j7iLcosó( t)Tdt T dt2

dt2 dt

eliminando términos semejantes:

-mLdt2 dt2 dt2

sacando como factor común la segunda derivada del ángulo

dt

dividiendo para J+mL2:

t) +jnLcos<{) ( t) =0

d2»(t) , mgrlsin» ( t) + dt2

dt2

Por último, reemplazando £/=±L_5¿~_ en la ecuaciónmL

anterior :

9

dt2 I/ L7

La ecuación 2 . 9 es una de las ecuaciones que define el

movimiento del péndulo invertido. A L' se denomina la

Page 21: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

15

"longitud efectiva del péndulo" puesto que sería igual a la

longitud de un péndulo con toda su masa concentrada en un

punto al extremo superior de la varilla.

En nuestro caso el momento de inercia J respecto al

centro de gravedad es el de una varilla delgada homogénea,

de longitud total 2L y cuyo centro de gravedad está ubicado

a la distancia L de uno de sus extremos. En tablas de

momentos de inercia hallamos que J es igual a

Ahora nos ocuparemos del movimiento del carro, éste

sólo puede moverse en movimiento rectilíneo paralelo al eje

x ya sea en sentido positivo o negativo. En la figura 2.3

se identifican las fuerzas que actúan sobre él. Para este

caso se despreciará todo tipo de rozamientos a fin de no

complicar demasiado a la ecuaciones que gobiernan el

movimiento del péndulo invertido.

oje y

N

Fig_ 2.3 Diagrama de cuerpo libre del carro

Page 22: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

16

En el eje horizontal (eje x) actúa -una fuerza externa

que es la que va a controlar el movimiento del carro y

H(-t) que es la reacción horizontal.

En el eje vertical (eje y) actúan las siguientes

fuerzas: el peso del carro Mg, la normal N debida al

contacto del carro con la pista y la reacción vertical V(t)

que ejerce la varilla sobre el carro.

Aplicando el sumatorio de fuerzas en el carro en el

eje x de acuerdo al diagrama de su cuerpo libre dado en la

figura 2.3

2? = M ac (2.10)

La aceleración del carro es la segunda derivada del

espacio, asi tenemos:

n ( t) -H( t) (2.11)dt2

Por último , el sumatorio de fuerzas en el carro en el

eje y es igual a cero porgue no existe movimiento del carro

en este eje y sólo puede desplazarse en dirección

horizontal .

ZFy - O (2.12)

Las fuerzas que actúan en el eje y son las gue se

Page 23: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

17

grafican en la figura 2.3, por lo tanto

N - Mg - V(t) - O (2.13)

En resiunen, el modelo matemático del péndulo

invertido, considerando que no hay rozamiento en el pivote

ni en el carro, está dado por las siguientes ecuaciones:

coa* <

M

dt2 Lf

d2x(t) = -

dt2 _Q

dt

2.2 LINEALIZACION DE LAS ECUACIONES.

Puesto que en el problema del péndulo invertido

debemos conservar la varilla en posición vertical, para la

linealización debemos suponer que el ángulo entre la

vertical y la varilla es pequeño.

La ecuación 2.9 es una ecuación diferencial no lineal

pero que puede ser linealizada utilizando la expansión en

series de Taylor del seno y del coseno:

2 1 4 1 6 1

Entonces, para pequeñas variaciones del ángulo estas

dos ecuaciones anteriores se pueden aproximar a

Page 24: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

18

cos<f>=l

Reemplazando estas aproximaciones en la ecuación 2.9

obtenemos la ecuación 2.14 que es lineal:

=C (2.14)£' dt'

Por otro lado, si consideramos que la masa del carro M

es mucho mayor a la masa de la varilla podemos de la

ecuación 2.11 despreciar la reacción H(t).

dt

Ahora obtendremos la función de transferencia tomando

como variable de entrada la fuerza u(t ) y como variable de

salida el ángulo entre la vertical y la varilla. Apliquemos

a las ecuaciones 2.14 y 2.15 la transformada de Laplace

Ms2X(t) -ü(a) (2.16)

J * ! = 0 (2.17)

reemplazando X(s) de la ecuación 2.16 en la ecuación 2 . 17 y

despejando la relación entre ángulo y la fuerza se obtiene:

(2.18)

El diagrama de bloques correspondiente a esta función

Page 25: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

19

de transferencia se muestra en la figura 2.4

-1

U M (s2 - J )

fig 2.4 Función de transferencia de lazo abierto entre

el ángulo y la fuerza

El lugar geométrico de las raices de esta función de

transferencia se muestra en la figura 2.5, el sistema es

inestable, pues para cualquier ganancia que se dé a la

planta se obtendrán polos de lazo cerrado en el semiplano

derecho del plano s.

*TO

fig. 2.5 Lugar geométrico de las raices del

péndulo invertido

Page 26: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

20

La función de transferencia tomando como variable de

entrada la fuerza u(t) y como variable de salida la

ubicación del carro x(-t) la obtenemos aplicando la

transformada de Laplace a la ecuación 2.15

X(S)

M9(2.19)

El gráfico correspondiente a esta función de

transferencia se observa en la figura 2.6.

u(s) .f

1

Ms2

x(»)fcf

fig 2.6 Función de transferencia entre la posición

del carro y la fuerza

Luego, como en todo proceso en el cual se hace

cálculos por medio de un computador se necesita de valores

numéricos para obtener los resultados, en este caso se han

tomado valores para los parámetros físicos de una planta

que se pueda construir en un laboratorio. Así para las

demostraciones del programa se han tomado los siguientes

valores:

Masa del carro: M = 1

Page 27: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

21

Masa de la varilla: m - 0.1 Kg

Longitud de la varilla: 2L = 1.26 m

Momento de inercia de la varilla con respecto

a su centro de gravedad

No obstante el programa realisado permite que estos

datos puedan ser cambiados para simular otros péndulos,

pero con las siguientes restricciones:

M >= lOm, y rozamiento despreciable

La longitud de la pista prevista para el movimiento

del carro es de 1 m.

2.3 DESCRIPCIÓN DEL SISTEMA A VARIABHES DE ESTADO.

El estado de un sistema puede describirse por medio de

un conjunto de ecuaciones diferenciales de primer orden

escritas en función de las variables de estado (xi, xa, ...

7xn). Estas ecuaciones son en general de la forma que se

describe a continuación:

XI - ai 1X1 4 a 12X2 4 ... 4 ainXn 4 bll Ul -4- . . .4 blmUm,

X2 — aaiXl 4 a22X2 4 ... 4 aSnXn 4 b21 Ul + . . .4- b

+ án2X2 + . . . 4- annXn 4- bnl Ul 4 . . .4- bramUm,

Page 28: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

donde Xn. = cbtn/dt, y x es el vector de estados

Las variables de estado elegidas para el problema son

las siguientes:

xi(t) = x(t) = la posición del carro respecto al centro de

la pista.

xs(t) ~ 7—-= la velocidad del carro.dt

xs(t) = $ (t) ~ el ángulo entre la vertical y la varilla.

x-i(t) = —9-~—- - la velocidad angular con que gira ladt

varilla.

Con las ecuaciones linealiaadas deducidas y con los

estados elegidos obtendremos la descripción del sistema a

variables de estado.

La primera ecuación la obtenemos de la definición del

estado xa(t):

HY_ mx^(t) (2.20)

dt ^ '

La segunda ecuación la obtenemos de la ecuación 2.15:

CÍX- ( t) 1—2- =J:u(t) (2.21)

dt M

La tercera ecuación viene de la definición del estado

XA('t) que es la derivada del ángulo:

ckc, < t) t ,*±-L=x.(t) (2.22)

Page 29: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

23

Y por último la cuarta ecuación de estado la obtenemos

reemplazando la ecuación de estado 2.21 en la ecuación 2.15

--±-u(t) (2.23)-

En base a estas cuatro ecuaciones obtendremos la

descripción a variables de estado en forma matricial.

La ecuación matricial es la siguiente:

x(t) = A x(t) 4- B -u(t)

en donde:

x(t) es el vector de estados,

x(t) es el vector de las derivadas de los estados,

A es una matriz cuadrada 4x4,

B es un vector de cuatro elementos,_ /

•u( t) es la entrada, que en este caso es la fuerza.

Ya que lo que nos interesa controlar es el ángulo

entonces la ecuación de salida es la siguiente:

y(t) - [O O 1 O] x(t)

Page 30: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

De las ecuaciones 2.20 a la 2.23 se obtiene:

d

dt

x x ( t )

xa ( t )

X3( t )

X 4 ( t )

0 1 0 0

0 0 0 0

0 0 0 1

g0 0 Oi_j V^ V

L'

xi( t )

X 2 ( t )

X3( t )

X 4 ( t )

0

1

M

0

1

L'M

u(t)

donde:

x(t) =d

dt

Xl(t)

X3(t)

A =

O O

o o

o o

o o

L'

X(t) =

Xl(t)

X2(,t)

X4(t)

L'M

Page 31: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

26

está dado por la función de transferencia (ecuación 2.18) y

que fue deducida de las mismas ecuaciones generales del

movimiento del péndulo invertido y su representación a

variables de estado es la siguiente:

d

dt

L'

X3(t )

X-4 ( t )

4

0

1

L'M

Para el sistema reducido , donde la señal de control es

la fuerza, la posición y la velocidad del carro son

funciones integrales de u(t). Lo que se considera aquí son

los estados del ángulo y su derivada. Por eso la ecuación

diferencial vectorial de estado es de la forma arriba

descrita.

Podemos observar que con este modelo la matriz A de la

ecuación de estado es la parte inferior de la matriz A

original que es 4 x 4. Además conserva la raíz que está en

la parte derecha del plano s, pues el polinomio

característico es :

det[Xz - = U = o

En el capítulo III se realizarán las alternativas de

control para estabilizar al péndulo invertido en base a las

Page 32: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

ecuaciones que describen ' el movimiento del sistema, y

tomando en consideración el modelo matemático que se

desarrolló en este capítulo.

Page 33: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

CAPITULO III

COMPENSACIONES

3.1 REALIMENTACION DE ESTADO -

El sistema de control gue se diseñará aguí para

estabilizar al sistema es tal forma gue la fuersa u(t), que

es el parámetro de control, es una función de las variables

de estado , de esta manera, la fuersa es

donde: k es el vector de realimentación, k=[kl k2 k3 k4] 3

x(t) es el vector de estados, y

u.(t;) es la fuersa externa gue se aplica al carro.

El sistema de control qxie estabilizará al sistema con

la realimentación deberá medir las variables de estado del

sistema. Asi se supone que se miden las cuatro variables de

estado y se realimentan multiplicándolas por el vector de

realimentación. Como el vector de estado x representa el

Page 34: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

29

estado del sistema, el conocimiento de x(t) y de las

ecuaciones que describen la dinámica del sistema nos da la

información suficiente para el control y la estabilización

del mismo.

Comenzaremos primero por probar que el sistema es

controlable chequeando que el determinante de la matriz de

controlabilidad Me sea distinto de cero o sea que los

vectores columna sean linealmente independientes, para

garantizar que los resultados que se obtendrán sean

válidos .

Aun cuando la mayoría de los sistemas físicos son

controlables, los modelos matemáticos correspondientes

pueden no serlo debido a las suposiciones que se hicieron

para el desarrollo del mismo, de allí que es importante

determinar si el sistema es controlable.

El concepto de controlabilidad permite conocer si

existe una entrada u(t) físicamente factible que permita

llevar el vector de estados de un punto x(0) del espacio de

estados a otro punto x(l) arbitrario en un intervalo de

tiempo finito.

Para nuestro sistema de cuatro variables de estado, se

define la matriz de controlabilidad como:

Me - C B ! AB !

Page 35: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

30

Realizando las operaciones indicadas de las matrices

obtenemos la matriz de coñtrolatailidad Me:

Me =M

L'M

M

L'M

g

Una vez realisados los cálculos correspondientes al

determinante de esta matriz encontramos que éste es

distinto de cero y es el siguiente:

det (Me)L4

por lo tanto el sistema es controlable.

El diagrama de bloques correspondiente a la

implementación de la realimentación de estado es el <3_"ue se

presenta en la figura 3.1.

Page 36: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

31

r=0

i

fig. 3,1 diagrama de bloques para la realimentación de

estado

De este diagrama de bloques obtendremos las ecuaciones

para realizar la realimentación de estado:

La ecuación de estado del sistema es:

x(t) = A x(t) + B u(t)

La ley de control aplicada para realimentar los estados es

de la siguiente forma

u(t) - - k x(t)

reemplazando la fuerza u(t) en la ecuación de estados

x(t) - A x(t) -4- B [-k x(t)]

x(t) - [A - B k] x(t) (3.1)

Page 37: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

32

La matriz de lazo cerrado [ A - B k ] es de la siguiente

forma:

[A - B k ] =

kl

M

k2

M

k3 k4

M

kl

ITM

k2

L'M

gM+k3

L'M

k4

L'M

Para resolver la ecuación de estado de lazo cerrado

dada por la ecuación 3.1 utilizaremos el método de la

transformada de Laplace, asi tenemos:

sX(s) - x(0) = [A - B k] X(s)

donde X(s) es la transformada de Laplace de x(t)

por lo tanto,

[s I - A + B k] X(s) = x(0)

Premultiplicando ambos miembros de esta última ecuación por

[s I — A + B kD"1 se obtiene

X(s) = [s I - A + B k]-i x(0) (3.2)

La ecuación 3,2 es la solución general de la ecuación

de estado en el dominio de Laplace. La transformada inversa

de Laplace de X(s) nos da la solución ü.(t). Y Para

Page 38: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

33

encontrar la transformada inversa de Laplace de una matriz

se debe encontrar las transformadas de Laplace dé cada uno

de siis elementos.

Seguidamente realizaremos las operaciones indicadas:

[s I - A + B k] =

kl

M

- 1

sM+k2

M

k3

M

O

k4

M

kl

L'M

k2

L'M

gM+k3 sL'M-k4

L'M

A esta matris debemos invertirla y multiplicarla por

el vector de condiciones iniciales con lo cual obtenemos el

vector de estados en el dominio de Laplace. Estas

operaciones se indican en la siguiente ecuación matricial:

X(s) =det

donde :

all a!2 a!3 a!4

a21 a22 a23 a24

a31 a32 a33 a34

a41 a42 a43 a44

xl(0)

x2(0)

x3(0)

x4(0)_

L'M 'M

Page 39: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

34

y es igual al polinomio característico de la matris

C A - B k J '

además :

a =11 Af L'M L> L'M I/A

L/Af

a21~ *

• M Lf

Jc4 Jc3

*32

Af

L'íí

'42 « r/Af r/Mju rí Jj n

L'M L'M

Page 40: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

35

.=

L1M

a,á = s3 + s2— -f-s— i44 M M

Realizando las operaciones indicadas de la matriz de

.laso cerrado por el vector de condiciones iniciales

obtenemos cada estado en el dominio de Laplace, los cuales

resultan ser los siguientes:

2L1 L(M

L'M

+x (o)3+g[xl(0)4

Af

L-'Af

3L'M L'M

Para el análisis de la estabilidad utilizaremos el

método de Routh-Hurwitz considerando la .ecuación

Page 41: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

36

característica del sistema, que en términos de la variable

de Laplace se describe como:

q( s) — s4 + aas3 + ass2 4- ais 4- ao — O

Para ver si el sistema es estable o no, se debe

averiguar si alguna de las raices de q(s) está en la parte

derecha del plano &, lo que nos conducirá a decir que el

sistema es inestable. Factorizando q(s) tenemos:

(s-pl)(s-p2)(s-p3Ks-p4) = O

Donde pl, p2, p3 y p4 son los polos deseados de laso

cerrado o sea las raices de la ecuación característica,

también llamados autovalores o valores propios de la matriz

de lazo cerrado [A - B ]£ 3 - Multiplicando los factores

encontramos que

q(s) = s - (pl + p2 +p3 +p4)s3

+ (plp2 + P2p3 + plpS + ... )s2

- (plp2p3 + plp2p4 4- ... )s

+ Plp2p3p4 = O

Analizando esta ecuación observamos que todos los

coeficientes del polinomio deben tener el mismo signo si

todas las raíces están en la parte izquierda del plano s.

Por otro lado, para un sistema estable, todos los

coeficientes deben ser distintos de cero - Estos requisitos

Page 42: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

37

son necesarios pero no suficientes.

En nuestro caso el polinomio característico siempre

tendrá coeficientes positivos , y además el sistema siempre

será estable puesto que ubicaremos directamente las raíces

de la ecuación característica garantizando que estén a la

izquierda del plano s. Las raíces de la ecuación

característica o polos de lazo cerrado deben ser cuatro , y

si son complejos deberán ser conjugados. La ecuación

característica de la matriz [ A - E £ ] resulta

( s-pl) (s-p2) (s-p3) (s~p4) — s4 + aas3 4- aas2 + aiB + ao

L1M LrM

Luego encontraremos el vector de "realimentación k

despejando de la ecuación 3 . 3 kl , k2 , k3 y k4 .

L'Ma,~

LMa,

V 'a

donde as, aa, ai y ao están en función de los polos de lazo

cerrado deseados.

Page 43: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

38

De esta manera una ves obtenidos los elementos del

vector de realimentación k reemplazamos en cada uno de los

estados en el dominio de Laplace para posteriormente

obtener la transformada inversa de Laplace y encontrar cada

estado en el tiempo.

La respuesta en el tiempo de cada estado dependerá de

los polos de laso cerrado que se seleccionen. Kn

realimentación de estado, todos los estados tienen la

siguiente forma en el dominio de Laplace:

3s4 + a3 s3 + a2 a2 + a± s + a0(3-4)

Aplicaremos la transformada inversa de Laplace a la

ecuación 3.4 para hallar cada uno de los estados en el

tiempo, para esto la dividiremos en fracciones parciales y

según sean los polos reales, o complejos conjugados, o

repetidos, o combinados, se pueden obtener nueve casos

diferentes de expansión en fracciones parciales que se

describirán a continuación.

a) Todos los polos reales y distintos.

En este caso siempre se puede expandir Xn.(s) en la

suma de fracciones parciales simples, como sigue:

Page 44: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

39

DXn(3) = -^_+_*-+_L_8-pI 3-p2 3-p3

donde A, B, C y D son constantes.

Para hallar la respuesta en el tiempo se obtiene la

transformada inversa de Laplace de donde resulta:

H * '

b) Dos polos reales repetidos y dos polos reales distintos.

, D8-pl (s-pl)2 3~p2 S~p3

xn( t) = (A+Bt] e£>iC+Cel32C+Dep3C

c) Tres polos reales repetidos y un polo diferente.

•" + ° o. C 2 ! + D3-pl ( £

xn(t)~(A+Bt+Ct2)eplt+DeI}2t

d) Todos los polos reales repetidos.

A B C 2 I D 3 I

xn(t) = (A+Bt+Ct2+Dt3)

Page 45: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

40 •

e) Cuatro polos reales repetidos de dos en dos,

B , C , D-t-

(s-pl)2 3-p2 (S-P2)-2

f) Polos complejos conjugados distintos.

X.ÍS)--

C(s-a2)

.. .+ceff?t

g) Un polo complejo conjugado de multiplicidad 2.

x

C(g-o) +

9-a)2 + p3]2 [ ( s -a ) 2 +P 2 ] 2

Page 46: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

41

t) .

. . . - -2 p

t) -(3 tcos(|3 1)]

-h) un polo complejo conjugado y dos reales distintos

X - A

xn(t) =Aepa+Be^+Ceatcos(p t) +£>e°csin(p t)

i) Un polo complejo conjugado y un polo real de

multiplicidad 2.

x- (s-pl)2

t) +l?eotain(p t)

Con esto hemos analizado todas las posibilidades de

los polos que puedan existir para la realimentación de

estado .

Al fijar los polos de lazo cerrado en el semiplano

izquierdo del plano s estamos garantizando la estabilidad

del sistema, sin embargo si los polos de lazo cerrado hacen

muy lento al sistema, éste necesitará un mayor espacio para

Page 47: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

42

equilibrar al péndulo, lo cual no resulta práctico puesto

que existen limitaciones de la pista.

3.2 COMPENSACIÓN LINEAL.

En base al sistema de referencia definido en el

capitulo II, si ponemos una condición inicial: que la

varilla forme un ángulo positivo respecto a la vertical y

el carro esté en reposo, entonces para controlar la

posición vertical del péndulo se deberá aplicar una fuerza

positiva en dirección del eje x.

Asi, el tipo de control que se aplicará aquí debe ser

tal que al existir un error en el ángulo actúe una fuerza,

entonces, si el ángulo o su derivada crecen entonces la

fuerza también debe crecer. Este tipo de control es el

proporcional derivativo. Para la implementación, se supone

que se miden el ángulo y su derivada continuamente y se

realimentan cada uno con ganancia diferente. La acción

derivativa hará una corrección proporcional a la derivada

del error respecto al tiempo. El control derivativo

responde a la rapidez del cambio del error 7 por eso puede

hacer una corrección significativa antes de que el error

crezca demasiado.

En el control del tipo proporcional derivativo se mide

el error de la variable controlada que es el ángulo, y se

Page 48: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

43

obtiene su derivada. Luego se multiplica por las ganancias

proporcional y derivativa respectivamente para generar la

señal del control que comandará la planta. Tal como se

muestra en el gráfico:

r = 0 -^ error

6^» KpfHKd B) t PLANTA

fig_ 3,2 Control proporcional derivativo

La fuerza que se deberá aplicar al carro para

controlar la posición vertical del péndulo es de la

siguiente forma:

) ] (3.5)

la ecuación diferencial linealisada de la planta es:

(3.6)

Reemplazando la ecuación 3 . 5 en la ecuación 3,6 se obtiene :

fc)dC

t) =_ t)at

(3_7)

Para representar esta realimentación en diagrama de

Page 49: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

44

bloques aplicaremos la transformada de Laplace a. las

ecuaciones 3.5 y 3.6 obteniendo lo siguiente:

U(s) =Kp[i + Kd s] *(e)

*(s) _ 1

I

En base a esto el diagrama de bloques para este tipo

de realimentación es el siguiente:

<J>r(s)=0

fig. 3.3 diagrama de bloques del control proporcional

derivativo aplicado

Dividiendo la ecuación 3.7 para L'M y aplicando la

transformada de Laplace:

L*(s)-c

despejando el ángulo:

(3.8)

Page 50: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

45

donde:

4>(0) es la condición inicial del ángulo.

—5J—L es la condición inicial de la derivada del ángulode

Arreglando la ecuación 3.8 para obtener la

transformada inversa de Laplace de una expresión conocida

.+—*L

reemplazando a, t>, y las condiciones iniciales:

Page 51: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

46 .

obteniendo la transformada de Laplace inversa:

4»<t)—<fr(o)

donde

La ecuación del espacio encontraremos integrando dos

veces la aceleración, la cual sale de la fuerza de la

ecuación 3.5 dividiendo para la masa M del carro. La

integral del ángulo se halla por recurrencia de la ecuación

3.7 de donde resulta:

donde:

at

Page 52: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

47

Para el análisis cíe estabilidad partiremos de la

ecuación 3.8; en primer lugar tanto el valor de a como el

de b deben ser positivos de manera que no existan raices

con parte real positiva. Para las especificaciones de

respuesta transitoria nos interesa conocer el tiempo de

establecimiento y el máximo sobre impulso .

Usando el criterio del 2 %, el tiempo de establecimiento es

el siguiente:

El máximo sobreimpulso porcentual está dado por:

ATp - 100 e-K/Ví1?)*

Lo que requerimos para una respuesta transitoria

aceptable del sistema de segundo orden es una relación de

amortiguamiento -entre 0.4 y 0.8 del tal manera que sistema

no tenga sobreimpulso excesivo ni tampoco que sea muy

lento. Como el valor de la relación de amortiguamiento se

determina por el requerimiento de máximo sobreimpulso

deseado , entonces el tiempo de establecimiento es

determinado principalmente por la frecuencia natural no

amortiguada y para obtener una respuesta rápida, la

frecuencia natural no amortiguada debe ser grande.

Page 53: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

48

3.3 CONTROL DE TIEMPO MÍNIMO.

La teoría de control óptimo utiliza la minimisación de

un índice de funcionamiento como criterio de calidad de un

sistema} en este caso el del tiempo. El tipo de control que

emplearemos aquí será de tiempo mínimo u óptimo.

Nuestro objetivo es transferir al péndulo desde un

ángulo inicial pequeño hasta que el ángulo sea cero en el

mínimo tiempo con restricciones físicas de la fuerza

aplicada.

Para este tipo de control utilizaremos la ecuación de

transferencia del péndulo invertido dado por la ecuación

2.18 para poder realisar el análisis con el plano de fase.

El análisis del plano de fase, es adecuado para

encontrar la curva de conmutación en la cual se cambiará de

signo a la señal de control que en nuestro caso es la

fuerza.

El sistema de segundo orden obtenido de la ecuación

2.18 está representado por la siguiente ecuación

diferencial ordinaria.

fc)-. 0.9)dt2 L2M L*M

Page 54: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

49

Para conseguir el control de tiempo mínimo en un

sistema físico que tiene potencia limitada, se debe

utilizar adecuadamente en cualquier momento toda la

potencia disponible. A esta hipótesis se denomina el

principio "taang bang" y es válido para plantas que tienen

la forma:

"11 + . . . + a^y + any = bu

donde el valor de u(t) está limitado, o

-uo <= u(t) <= uo (ref. [10])

En nuestro sistema aplicaremos la máxima fuerza

disponible que es un dato conocido, ésta debe ser constante

y puede cambiar de signo.

Resolveremos la ecuación 3.9, para una entrada de

fuez za constante u(t) - F de tal manera que la ecuación 3.9

queda de la siguiente forma:

LfM

de donde obtenemos los siguientes resultados:

(3.10)

Page 55: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

dt L*\2M

50

"T/V * c 1T.I y fy , A. (3.11)

donde:

A9

Para el diagrama de fase grafio aremos la derivada del

ángulo en función del ángulo utilizando el tiempo como

parámetro, a esta curva se denomina trayectoria.

Encontraremos una expresión algebraica que relacione

la velocidad angular en función del ángulo, comenzaremos

sumando las ecuaciones del ángulo y su derivada para luego

despejar el tiempo y reemplazarlo en la ecuación de la

derivada:

ecuación 3.10 4- ecuación 3.11:

dt

despejando

Page 56: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

51

reemplazando t en la ecuación 3.8 se obtiene la ecuación

que relaciona el ángulo con su derivada:

-=0 (ec 3.12)

Dependiendo de las condiciones iniciales del ángulo,

su derivada, y si la fuerza es positiva (+F) o negativa

(-F), se forman dos familias de curvas diferentes como se

muestra en las figuras 3.4 y 3.5

fig. 3-4 Trayectorias para u(t) = -hF

Page 57: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

52

fig, 3.5 Trayectorias para u(t) = —F

La curva de conmutación, donde debe cambiar de signo

la fuerza, está formada por dos de estas trayectorias que

pasan por el origen, para u(t) - +F corresponde la

trayectoria AO y para u(t) - -F corresponde la trayectoria

BO.

De acuerdo 'a las condiciones iniciales del ángulo y su

derivada se deberá aplicar una fuerza positiva o negativa

hasta que se interseque a la curva de conmutación y luego

cambiar de signo a la fuerza para alcanzar el origen.

Así, para dos condiciones iniciales de ángulo y su

derivada se traza las trayectorias óptimas que sigue el

sistema en la figura 3.6.

Page 58: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

53

u=+F

fig. 3.6 Gráfico de plano de fase que muestra

trayectorias de tiempo óptimo

De las figuras 3.4 y 3,5 deduciremos las regiones en

donde la fuerza debe ser positiva o negativa.

Primeramente definamos los tiempos:

t es el tiempo que se está analizando.

to es el tiempo inicial donde se dan los estados

iniciales de ángulo y su derivada,

ti es el tiempo donde los estados iniciales de ángulo

y su derivada coinciden con algún punto de la curva

de conmutación.

t* es el tiempo en el cual el ángulo y su derivada

llegan al origen del plano de fase.

Para u(t) - -t-F y para t (= Cto, t*], los estados

iniciales del ángulo y de su derivada deben estar en algún

punto de la trayectoria AO de la figura 3.4,

Page 59: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

54

Para u(t) - -F. y para t e [t0, t*], los estados

iniciales del ángulo y de su derivada deben estar en algún

punto de la trayectoria BO de la figura 3.5.

Si u(t) = +F para t e [to, ti] y u(t) = -F-para t e

[ti, t*] y debido a que en el control óptimo la fuerza es

igual a -F para t e [to, t*), al tiempo ti el ángulo y su

derivada deben estar en algún punto de la trayectoria BO.

Esto puede verse en la figura 3.6.

Con referencia a la figura 3.4 podemos afirmar que

sólo las curvas que están a la derecha y arriba de la curva

AO interceptarán a la curva BO. Además sólo las

trayectorias que se inician sobre BO con u(t) = +F

interceptarán a la curva BO. Por lo tanto concluimos que

para estados iniciales del ángulo y su derivada que estén

sobre, tanto de AO como de BO, el control óptimo será

u(t) = +F hasta llegar a un punto de la curva BO, y luego

conmuta a u(t) = -F, hasta llegar al origen.

Si u(t) - -F para t e [t0, ti] y u(t) = +F para t e

[ti, t*], entonces al tiempo ti el ángulo y su derivada

deben estar en algún punto de la curva AO. De una manera

similar al caso anterior nos lleva a concluir que para

estados iniciales que estén debajo de AO y BO, el control

óptimo será u(t) = -F hasta que los estados alcancen algún

punto de la curva AO y luego conmuta a u(t) = -f-F hasta

llegar al origen.

Page 60: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

55

Una ves que el sistema ha alcanzado el origen, se

puede mantener en esa posición aplicando una fuerza de

control u(t) - O para t > t*, Asimismo en las dos

compensaciones anteriores la fuerza se hace cero al final.

Los estados que nos interesan para este tipo de

control son el ángulo y su derivada definidos como el

vector x.

x(t)

X3(t)

X4(t)

xs(t) = ángulo

X4(t) = derivadadel ángulo

La ley de control óptimo a cualquier tiempo t e's una

función de las variables de estado (ángulo y su derivada).

Para expresar la ley de control óptimo en una forma

conveniente, definiremos- a la función de conmutación

s(x(t))5 que se obtiene de la ecuación 3.12, como:

Nótese que

s(x(t)) > O implica que x.(t) está sobre la curva de

conmutación A-O-B

Page 61: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

56

< O implica que x.(t) está bajo la curva de

conmutac ion A-O-B

s(x.(t)) = O implica que x(t) está justamente en la curva

de conmutación A-O-B

Entonces, en términos de la función de conmutación la

ley de control óptimo es:

u(t) =

F, para x.(t) tal que s(x.(t)) > O

F, para x(t) tal que s(x_(t)) < O

F, para x_(t) tal que s(s(t)) = O y x

F, para x.(t) tal que

03 para x(t) = Q.

(x(t)) = O y

> O

< O

El diagrama de bloques para la implementación de esta

ley de control óptimo se observa en la figura 3.3, Consiste

en un módulo generador de la función de conmutación s(x(t))

en base a las variables de estado, y un relé ideal para

poder cumplir con la ley de control.

El relé ideal reacciona a una entrada de la siguiente

forma:

salida ~+ F si entrada > O

- F si entrada > O

Page 62: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

57

relé Ideal PLANTA

*<0.

generadorde fundón

fig. 3.7 Diagrama de bloques para el control de

•tiempo mínimo.

3.4 INFLUENCIA DEL MODELO UTILIZADO EN LA FORMA DE LA

COMPENSACIÓN.

Comenzando con el caso de la realimentación de estado

se realimentan cuatro variables de estado obteniendo la

información suficiente para equilibrar al sistema, el punto

de equilibrio se consigue cuando todas las variables de

estado alcanzan el valor de cero.

En el control proporcional derivativo y en el control

óptimo se realimentan sólo dos estados como son el ángulo y

su derivada. Al utilizar el modelo matemático del péndulo

Page 63: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

58

invertido sin considerar el rozamiento y al integrar dos

veces aceleración a partir de la ecuación de la fuerza para

obtener el espacio aparece un término que crece con el

tiempo. Idealmente el carro puede quedar con una velocidad

constante con lo que no actúan fuerzas que puedan mover a

la varilla.

Pero en la práctica esto no sucederá, puesto que el

punto de equilibrio del péndulo es inestable debido a que

el punto de suspensión (pivote) está por debajo del centro

de gravedad de la varilla, entonces apenas se separa de esa

posición, ésta tenderá a caer.

El término del espacio que crece en el tiempo se lo

puede eliminar con una adecuada condición inicial de la

velocidad.

En el programa realisado sólo se considera la

simulación hasta que se alcanza el punto de equilibrio,

porque luego no es posible predecir para qué lado caerá el

péndulo.

Page 64: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

CAPITULO IV

DESARROLLO DEL PROGRAMA

4.1 SIMULACIÓN DINÁMICA,

Aprovechando las ventajas que ofrece el programa en el

entorno gráfico Windows, desde del menú principal se elige

correr animación para realizar la simulación dinámica del

péndulo invertido,

Al inicio del programa se hace una prueba para conocer

qué tan rápido es el computador que se está utilizando,

para según eso poner un adecuado retardo en la animación,

ya que si no se hiciera esto, en computadores más veloces

la animación sería más rápida que en otros menos veloces,

esta diferencia de velocidad podría ser bastante

significativa de acuerdo al computador en el que se corra

el programa si es que no se.toma en cuenta la velocidad del

computador. Para esto se toma un tiempo pequeño en el que

se incrementa una variable, entonces como el tiempo es el

mismo para cada computador, el que incremente más a la

Page 65: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

60

variable será más rápido que el que la incremente en menor

grado. Posteriormente el valor almacenado en la variable

servirá para hacer un lazo iterativo de retardo.

Antes de correr la animación, debemos escoger desde el

menú "realisar cálculos", para almacenar los cuatro estados

del sistema (posición y velocidad del carro, ángulo y su

derivada) en arreglos diferentes además de almacenar la

fuerza en otro arreglo, de éstos cinco arreglos nos

interesan dos para la animación: la posición del carro y el

ángulo que forma el péndulo con la vertical. Luego con

estos valores se gráfica en la ventana principal del

programa las diferentes posiciones del carro y la varilla

para conseguir la animación del péndulo.

La simulación dinámica se realiza mediante la función

Animación que primeramente dibuja la pista y luego se

realiza un lazo iterativo para ubicar en la ventana

principal del programa las posiciones la varilla,

calculadas en base al ángulo, y las posiciones del carro

todas escaladas de acuerdo al tamaño de la ventana del

programa. En • cada iteración se chequea si carro ha

sobrepasado el espacio disponible para el movimiento del

carro, si no lo ha hecho entonces se continúa con otra

iteración, pero si el carro ha sobrepasado el limite

izquierdo o el derecho de la pista se simulará el choque

del carro con el limite de la pista sobrepasado y se sale

del laso iterativo finalizándose la simulación dinámica. Si

Page 66: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

61

no existe el sobrepasamiento de los límites de la pista

entonces se podrá ver que el sistema se estabiliza y se

termina la simulación.

La animación se divide en dos partes: la animación del

carro y la animación de la varilla. Cada una se hace por

dos métodos diferentes que se explicarán a continuación:

La animación del péndulo (varilla) se hace copiando en

la pantalla la posición de la varilla luego se dibuja la

misma posición de la varilla con el color de fondo de la

ventana de tal manera que se borra esta posición y por

último se copia la nueva posición de la varilla en la

pantalla. Esto se repite varias veces hasta terminar la

simulación dinámica.

La animación del carro se hace con otra técnica de

animación: en una memoria intermedia llamada página oculta

se copia la nueva posición del carro, para luego copiar

esta página en la ventana del programa, con esto se

consigue evitar el efecto de parpadeo que se produce al

realizar la animación por el método anterior y que es poco

perceptible en la varilla por ser más rápida la

graficación.

Además esta técnica de copiar el carro en esta memoria

intermedia ofrece una mejor visualización de la animación

debido a que la página oculta no se observa en ningún

Page 67: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

62

momento, y en ésta se realiza el borrado del gráfico

anterior y graficación de la nueva posición del carro. Pero

luego de tener el nuevo gráfico en esta página se la copia

en su totalidad a la ventana del programa de tal manera que

se superpone completamente al gráfico anterior de la

ventana del programa. Asi, no se borrarán en ningún momento

los puntos del carro que coinciden con la posición

anterior, sino solamente aquellos gue no coinciden con la

nueva posición.

Se llama página oculta a un segmento de memoria donde

se almacena un rectángulo donde se graficará el carro y

cuyos lados son la longitud de la pista y la altura del

carro.

La razón porque no se hace la animación por un sólo

método es que se ocuparla mucha memoria en el caso de

hacerlo por el método de la página oculta la cual debería

ser de mayor tamaño, en cambio al hacer todo por el método

del copiado y borrado se producirá un efecto de parpadeo.

Así la combinación de estos dos métodos producen una

animación satisfactoria.

4.2 COMPENSACIONES,

Desde el menú principal del programa de la opción

Ingreso de datos podemos elegir el tipo de compensación

Page 68: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

63

requerido.

Los tres tipos de control implementados, están

realisados en base a la parte teórica desarrollada en el

capitulo anterior. Se hacen cálculos para cada una de las

compensaciones en base a las ecuaciones obtenidas.

Para la realimentación de estado se deben ingresar los

polos de lazo cerrado deseados y las condiciones iniciales

del sistema. Al realizar los cálculos, previamente se

verifica el tipo de polos ingresados, ya sean éstos polos

múltiples, polos complejos conjugados, polos distintos,

etc. para posteriormente realizar el cálculo del vector de

realimentación, dividir en fracciones parciales, y obtener

la respuesta en el tiempo de los cuatro estados y la

fuersa. Para la simulación dinámica y para los gráficos de

cada estado y la fuerza se deben almacenar los estados en

cinco arreglos diferentes, tomados cada intervalo de

maestreo adecuado.

Para el control proporcional derivativo se deben

ingresar las condiciones iniciales, además los valores de

la frecuencia natural no amortiguada y el coeficiente de

amortiguamiento deseados, en base a éstos se calcula la

ganancia proporcional y derivativa del controlador, el

tiempo de establecimiento, etc. Luego se obtiene la

respuesta en el tiempo y se almacena los resultados en

varios arreglos.

Page 69: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

64

En el control de tiempo mínimo se debe ingresar la

fuerza máxima que se aplicará al carro. Esta será constante

y sólo podrá cambiar de signo o hacerse cero. El signo de

la fuerza ingresada no tiene importancia ya que de acuerdo

a los estados del ángulo y su derivada el programa elige

que la fuerza sea positiva o negativa. Primeramente se

chequea que la fuerza sea suficiente para que pueda

equilibrar al péndulo, en caso contrario no se podrán

realizar los cálculos. Una vez que se ha verificado que la

fuerza es suficiente para controlar el péndulo, se calcula

la curva de conmutación y se selecciona el signo de la

fuerza de acuerdo a donde estén ubicadas las condiciones

iniciales en el plano de fase. Posteriormente se calcula el

ángulo y su derivada de las ecuaciones del movimiento hasta

que alcancen la curva de conmutación entonces se cambia el

signo de la fuersa y se resuelven las ecuaciones de

movimiento con esas nuevas condiciones iniciales y con la

nueva fuersa. Y por último se verifica si ha llegado al

origen del plano de fase y se terminan los cálculos.

4.3 DIAGRAMAS DE FLOJO.

A continuación realizaremos los diagramas de flujo de

algunas de las funciones principales donde se debe realizar

bifurcaciones y tomar decisiones de acuerdo a algún

parámetro.

Page 70: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

65

Primero, en lo que se refiere a la realimentación de

estado, para saber qué tipo de cálculos se debe realisar de

acuerdo a los polos ingresados, implementamos la función

RealimEstado, que inicia tomando el caso de polos reales,

luego complejos conjugados más reales y por último sólo los

polos complejos, y según el tipo de polos se llamará a la

función respectiva que tratará en forma distinta cada caso.

El diagrama de flujo correspondiente a esta función se

encuentra en la figura 4,1 donde se puede observar que se

hace un chequeo de qué tipos de polos se ingresan, las

abreviaturas utilizadas significan:

PRI polos reales iguales.

PKD polos reales diferentes.

En los rectángulos de la figura 4.1 se encuentra la

función correspondiente que se ejecutará de acuerdo a los

polos de laso cerrado que se ingresaron, luego de lo cual

se termina la función.

En realidad el algoritmo para realisar esta función es

mucho más complejo, puesto que además los datos que se

enviarán a cada función deben ordenarse previamente ya que

los polos ingresados se pueden ingresar en cualquier orden

mediante el cuadro de diálogo previsto.

Page 71: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

66

Inicio j

^ todos los \ ™polos reales?^--'

iodos los^-v^ SIpolos distirrtos

NO

DosPRIyOosPRI

CuatroPRDtícr

c fin

DosPRDyDosPRI

UnPRDyTresPRI

Cuatro PRIgual

= 7

^ 2 poloscomplejos C

NO

DosPCCDIstlnt

DosPCCIcgualea

fig. 4.1 Diagrama de flujo para seleccionar giie cálculos

se realizarán en realimentación de estado

Page 72: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

67

En segundo lugar, respecto a la simulación dinámica la

función se inicia dibujando la pista para luego hacer un

laso iterativo donde borra el gráfico anterior y se dibuja

en actual., de acuerdo al ángulo y al espacio almacenados en

arreglos, con las técnicas de animación descritas

anteriormente. Luego se produce un retardo que es un lazo

FOR cuya máxima iteración depende de la velocidad del

computador que se utilice. Además se chequea si el espacio

recorrido por el carro ha sobrepasado uno de los extremos

de la pista para luego simular el choque, posteriormente se

sale del lazo iterativo y se termina la función de

animación. En caso de no haber sobrepasado los limites del

movimiento del carro continuará la simulación hasta que se

termine el laso iterativo. El diagrama de flujo

correspondiente se muestra en la figura 4.2.

En tercer lugar, para el control de tiempo mínimo se

debe hacer la ' selección de la fuerza sea positiva o

negativa dependiendo de la región del plano de fase donde

se encuentren los estados del ángulo y velocidad angular.

Luego se chequea si se ha llegado a algún punto de la curva

de conmutación y se cambia la dirección de la fuerza, tal

como se indicó en la sección de Compensaciones.

En la figura 4.3 se muestra el diagrama de fluj o

correspondiente.

Page 73: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

68

Inicio ")

Dibujar la

Pista

ir

1=1,1 max

borrar gráficoanterior y ponerel gráfico actual

retardo

simular choquecan el lado izq.I = Imax

fin

simular choquecon el lado der.I = Imax

fig. 4.2 Diagrama de flujo para la simulación dinámica

Page 74: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

69

la fuerzaes suficiente para

el control7

calcular Sngulo, velo-cidad angular, espacioy velocidad

alcanzócurva de

conmutación?.

cambiar de signo lafuerza, y tomar comocondiciones inicialcalos valores actualesde ángulo y su deriv.

, IMax

calcular ángulo, velo-cidad angular, espacioy velocidad

es ceroel ángulo y su

derivada?

fig. 4.3 Diagrama de flujo para el control de tiempo mínimo

Page 75: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

70

4.4 FUNCIONES UTILIZADAS.

Ahora explicaremos otras funciones utilizadas en el

programa y que todavía no se han mencionado.

- Al iniciarse el programa se ejecutan varias funciones,

una de ellas es la función WMSize que además 'se ejecuta

cada vez que se redimensiona la ventana del programa. En

esta función se consiguen las dimensiones de la ventana,

para en base a éstas escalar gráficos y mapas de bits de

manera que el programa funcione normalmente con cualquier

tamaño de la ventana. Además se hace un chequeo si ya se

han creado las celdas para la animación (mapa de bits del

carro y página oculta), si la respuesta es afirmativa se

deben destruir el mapa de bits y la página oculta

existentes, y construirlos de nuevo escalados

proporcionalmente a las nuevas dimensiones de la pantalla

mediante la función ConstrCeldas; si la respuesta es

negativa entonces no se debe destruir.nada, sino que el

mapa de bits y la página oculta se construirán por primera

vez. Siempre es necesario destruir el mapa de bits y la

página oculta utilizados para la animación cuando se

redimensiona la pantalla porque en caso contrario se

tendrán problemas de memoria y el programa puede

"colgarse".

- La función ConstrCeldas crea el mapa de bits que

representa al carro y la página oculta, para la animación

Page 76: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

71

de acuerdo a las dimensiones de la ventana del programa.

Pero no las utiliza, sino que es "una función que sólo

prepara el mapa de bits y la página oculta. Primero crea la

página oculta y luego crea el mapa de bits donde se dibuja

el carro con un rectángulo y dos circuios.

- La función* CtíDatosPendulo consigue los datos del

péndulo gue se ingresan desde el cuadro de diálogo

correspondiente y los copia en una cadena de caracteres

añadiendo las unidades de masa, longitud, momento de

inercia y gravedad, para luego mostrar en otro cuadro de

diálogo los valores ingresados y que son aceptados por el

programa, estos valores son almacenados en constantes

globales para su posterior utilización.

- Se pueden utilizar datos preestablecidos en el

programa mediante la selección del menú de Por defecto, que

pondrá en cada estructura de datos y en cada variable los

valores referenciales que se han puesto en el programa,

esto se hace mediante la función CMdatosDefecto, al

ejecutarse ésta primero se pregunta al usuario si quiere

colocar los datos por defecto de tal manera que se puede

confirmar o cancelar esta opción.

- Cualquier gráfico o texto que se encuentre el la

ventana principal del programa se puede imprimir, gracias a

la función CMimprimirPant, que inicializa una estructura

PR1NTDLG3 para luego mostrar el cuadro del diálogo para

Page 77: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

72

seleccionar las preferencias cíe la impresión, Al aceptar la

opción de impresión se crea un mapa de bits compatible con

la ventana donde se la copia, para luego copiar el mapa de

bits a la impresora. Las dimensiones de la impresión

dependen de las dimensiones de la ventana.

- También se puede copiar cualquier gráfico o texto al

portapapeles de Windows mediante la selección de Copiar del

menú. La función que realiza éste trabajo es

CMcopyClipboard. Primero se crea un mapa de bits compatible

con la ventana principal donde se la copia. Luego se borra

el contenido del portapapeles, para posteriormente copiar

el mapa del bits en éste.

Las funciones CMdatosRealEst, CMdatosPropDer,

CMdatosTiemMin y CMdatosCondlni consiguen los datos

ingresados de los cuadros de diálogo correspondientes y los

copian en una cadena de caractere-s agregando las unidades

de .cada parámetro para luego mostrarlos en otro cuadro de

diálogo con los valores que aceptó el programa. Además

consiguen poner los datos en variables globales que se

utilizarán posteriormente en la ejecución del programa.

- La función CalculosMenu selecciona qué cálculos hacer,

ya sean éstos de realimentación de estado, control

proporcional derivativo o control de tiempo mínimo, de

acuerdo al último tipo de control que se ingresó.

Page 78: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

73

La función ClearMenu. simplemente pesetea todas las

banderas de gráficos que se utilizan en el programa y

limpia la pantalla con las instrucciones InvalidateWindow y

Update Window.

- Las funciones que llaman a otras funciones que

realizan gráficos son: GrafEspMemí, GrafVelMenu,

GrafAngMenu., GrafVanMemí, GrafTodoMenu, GrafDvAMemí y

GrafFueMemi. Para hacerlo, primero resetean todas las

banderas de gráficos activos del programa y setean la

bandera del gráfico que se seleccionó del menú principal,

luego llaman a la función para limpiar la pantalla y esto

ocasiona el mensaje WM_PAINT que llama a la función Paint

donde de acuerdo a la bandera gráfica activa llamará a la

función de gráfico correspondiente que puede ser cualquiera

de las siguientes: GrafEspacio, GrafVelocidad, GrafÁngulo,

GrafV angular, GrafAngvsDang y GraficaFuerza. Estas

funciones grafican el espacio, la velocidad, el ángulo, la

derivada del ángulo versus el tiempo, la derivada del

ángulo versus el ángulo y la fuerza versus el tiempo

respectivamente, para lo cual escalan adecuadamente el

gráfico dependiendo del máximo valor de la curva y del

tamaño de la ventana principal.

- La función GrafTodMenu ejecuta un cuadro de diálogo

donde se pueden escoger varios gráficos que se pueden

presentar al mismo tiempo, el cuadro de diálogo setea y

resetea las banderas gráficas de acuerdo a lo que el

Page 79: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

74

usuario escoge. y posteriormente llama a la función Paint

para que realice los gráficos correspondientes.

La función Paint se ejecuta cada vez que ocurre un

mensage WM_PAINT y -que puede ser debido a causas como al

cerrarse una ventana de otra aplicación activa que estaba

tapando el programa o al cerrarse un cuadro de diálogo o al

redimensionar una ventana. Aprovechamos esta función para

llamar desde aquí a todas las funciones de gráficos y

presentación de resultados para que se ejecuten cuando

éstas estén activas y de esta manera se redibujen. Porque

de lo contrario por ejemplo al realizar un gráfico en el

programa y luego abrimos otra aplicación tapando la ventana

de nuestro programa, al volver al mismo el gráfico se habrá

borrado.

- Desde el menú se accede directamente a programas de

Windows tales como el reloj, la calculadora y el

administrador de archivos, que pueden ser útiles en algún

momento, mediante las funciones CMReloj, CMCalculadora,

CMArchivos respectivamente las cuales llaman a la función

WinExec que ejecuta el programa correspondiente.

- Existen también funciones para realisar cálculos de

realimentación de estado para cada caso de polos que se

ingresen que calculan el vector de realimentación, realizan

la expansión en fracciones parciales y obtienen la

transformada inversa de Laplace. Además se utilizan otros

Page 80: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

tipos de funciones auxiliares para cálculos.

- La función WMRaton obtiene las coordenadas de la-

ventana principal del programa, la esquina superior

izquierda tiene como coordenadas (O, O) y la esquina

inferior derecha tiene las máximas coordenadas. Esta

función se ejecuta con el movimiento del ratón, este evento

produce un mensaje WM_MOUSEMOVE que envía Windows a nuestro

programa y produce la llamada de la función. Ahora con las

coordenadas obtenidas y si algún gráfico está presente en

la ventana, se hace un reconocimiento de qué gráfico es

mediante el chequeo de la bandera gráfica que esté activa.

Entonces de acuerdo a esto se llamará a la función

correspondiente que obtendrá las coordenadas de la curva.

- Las funciones que obtienen las coordenadas de los

gráficos de estados son: CoorEspacio, CooirVelocidad,

CoorAngulo y CoorVangular. Las coordenadas se calculan en

base a las coordenadas del ratón, las dimensiones de la

ventana del programa, el intervalo de tiempo de muestreo, y

las amplitudes máximas de los estados de tal manera que a

cada coordenada de la ventana donde esté ubicado el cursor

en forma de cruz le corresponde una coordenada del plano

donde está dibujada la curva.

- La función CMUHelp índex, se ejecuta al escoger desde

el menú el contenido de la ayuda, y llama a la ayuda de

Windows para abrir el archivo de ayuda (péndulo,hlp) que

Page 81: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

76

fue realizado mediante un proyecto aparte utilizando el

compilador de ayuda.

De manera similar a la función anterior la función

CMUHelpHelp es llamada al escoger del menú CJsar ayuda, pero

el archivo que se abre aguí es el de cómo utilizar la ayuda

y gue es propio de Windows.

Existen además varias funciones que son propias de la

programación en Windows, también existen funciones para ver

si está instalado el archivo de librería que necesita el

programa, si no existe se comunica al, usuario, puesto que

sin éste archivo es imposible abrir los cuadros de diálogo

para ingreso de datos. Otras funciones también se hicieron

para el coordinamiento de las funciones que utiliza el

programa.

4.5 EJERCICIOS.

Con los datos previstos en el programa, tanto para el

péndulo invertido como para las compensaciones y las

condiciones iniciales, realizaremos algunos ejercicios con

la ayuda del mismo.

Comenzaremos con realimentación de estado. El sistema

sin compensar tiene la siguiente descripción a variables de

estado:

Page 82: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

77

d

dt

xl( t )

x2( t )

x3(t)

x4(t)

0 1 0 0

0 0 0 0

0 0 0 1

0 0 10.9 0

xl( t )

x2(t)

x3(t)

x4( t )

0

1

0

-1.1

La realimentación de estado nos permite fijar los

polos de lazo cerrado para estabilizar el sistema.

Teóricamente si todos los polos de lazo cerrado son

negativos se conseguirá que el sistema se estabilice, sin

embargo tenemos otras restricciones como son el espacio de

la pista y que el ángulo no debe crecer demasiado porque el

modelo matemático utilizado para el problema ya no seria

válido y todos los resultados serian erróneos.

Deseamos que el sistema realimentado tenga

siguientes polos.reales diferentes:

pl - -2

p2 = -2.5

p3 - -3

p4 = -4

y con una condición inicial de ángulo de 10 grados.

los

A continuación hallaremos el polinomio característico

de la matriz de lazo cerrado multiplicando los polos

ingresados:

(s-pl)(s-p2)(s-p3)(s-p4) - (s+2)(s+2.5)(s+3)(s+4) =

- £r4 + 11,5 S3 + 48.5 S2 + 89 3 + 60 » O

Page 83: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

78

Como era de esperarse todos los coeficientes de la

ecuación característica son positivos. Luego de realizar

los cálculos respectivos, obtenemos el vector de

realimentación y la matriz de lazo cerrado:

K - [-5.15 -7.64 -54.98 -16.11]

[A - B K] -

0

5.15

0

-6.11

1

7.64

0

-9.07

0

54.98

0

-53.64

0

16.11

1

-19.13

Y con la ayuda del programa obtenemos la respuesta en

el tiempo de cada uno de los estados:

x= {0.379 seg/d¡v|

y= {0.0371946 m/dív)

4.4 Posición del carro vs_ tiempo

El espacio recorrido por el carro es en la dirección

prevista y regresa al origen del sistema de referencia, con

Page 84: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

79

los polos de lazo cerrado propuestos el sistema es lo

suficientemente rápido para no chocar con la pista

x= (0.379 seg/div)

y= (0.0827952 [m/s]/div]

fig. 4.5 Velocidad vs_ tiempo

x= (0.379 scg/dlvj

y=

fig. 4.6 Ángulo vs_ tiempo

El ángulo se lleva a su posición de referencia cero,

con lo que se consigue poner al péndulo en la posición

vertical.

Page 85: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

80

(0.379 seg/drv)(3.80761 (g/sj/dlvj

fig. 4.7 Velocidad angular vs tiempo

Asi vemos que mediante la realimentación de estado

todos los estados llegan a cero.

x= (0.379 seg/div)y= (0.959637 newfdlv)

u ( t j

fig_ 4.8 Fuerza vs, tiempo

La fuerza al final se hace cero al equilibrar al

péndulo.

Page 86: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

81

En el diagrama de fase se observa que tanto el ángulo

como la derivada llegan al origen.

x= fl g/divj

y= (3.8Ü7B1 (g/s)/dlv)

fig 4.9 Diagrama de fase

De' esta manera se observa que el sistema se estabiliza

completamente.

- Ahora probaremos con el control proporcional

derivativo, nos pondremos unas especificaciones requeridas

de frecuencia no amortiguada de 7 rad/seg, de coeficiente

de amortiguamiento igual a 0.6 y de ángulo inicial de 10

grados.

De allí obtendremos las constantes del controlador que

on:

Kp = 51.068

Kd - 0.1385

Page 87: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

82

En este tipo de control las varibles de interés son el

ángulo y su derivada. El máximo sobreimpulso se puede

entender agui como la parte más negativa del ángulo

comparada con su condición inicial.

x= (0.169048 seg/div)

y= (1 g/dh/j

fig. 4.10 Ángulo vs. tiempo

x= (0.169040y= (3.49178 (

fig_ 4.11 Velocidad angular vs_ tiempo

Page 88: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

83

x= (0.180476 seg/dlv)

y= (0.891305 new/div)

u( t ]

fig. 4.12 Fuerza vs. tiempo

x= (1 g/div)y= (3.49178 |g/s]/dlv]

fig. 4.13 Diagrama de fase

- Para el control de tiempo mínimo elegiremos una fuerza

de 5 newtons que será constante y gue sólo puede cambiar de

signo. Con una condición inicial de ángulo de 10 grados.

Page 89: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

84

x= (0.063 seg/dK/J

y= (1 g/div]

fig 4-14 Ángulo ve. tiempo

Es este gráfico observamos que el ángulo no cambia de

signo, pues la respuesta decrece desde el valor inicial

hasta cero.

x= (0.063 seg/drv)

y= (5.37151 (g/sj/dtv)

fig 4-15 Velocidad angular ve. tiempo

Page 90: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

86

Aguí podemos ver en el plano de fase que las dos

variables de estado convergen hacia el origen, y la

trayectoria es similar a la deducida en la parte teórica.

El tiempo de estabilización es menor que en los otros»

casos y la fuerza es menor que los máximos de fuerza de los

otros dos casos, lo cual confirma que aplicar la máxima

fuerza y manteniéndola constante se consigue- el control de

tiempo minimo .

Mediante el cambio de las condiciones iniciales y los

parámetros de control podemos ver como reacciona el

sistema.

Asi, ensayemos con un sistema oscilatorio utilizando

el control proporcional derivativo con el coeficiente de

amortiguamiento pequeño

( - o.i ^B = 7 4>(o) = 10 *2<°) = °-05

Con estas especificaciones el sistema se estabiliza

para una posición distinta de cero, se ve claramente que el

sistema es muy oscilatorio debido al coeficiente de

amortiguamiento utilizado, y el sistema es lento, con un

tiempo de estabilización de 5.7 segundos.

Mediante el programa se obtienen lo gráficos

correspondientes para las especificaciones dadas :

Page 91: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

87

x= (1.08286 seg/dív)

y= (0.0311734 m/dtvjx ( t ]

fig. 4.18 Posición del carro vs-

x= (1.08286 seg/drv)

y= (0.108940 (m/stfdM

fig. 4_19 Velocidad del carro VB_ t

Page 92: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

88

x= (1.08286 seg/divj

y= n 9/dM

4.20 Ángulo vs. t;

x= [1.08286 scg/div)

y= (6.03675 (g/s)/dlv)

fig. 4.21 Velocidad angular vs. t

Page 93: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

89

x= (1-15143 seg/dlv]y= (0.891305 new/div)

u ( t j

fig. 4.22 Fuerza vs. t

x= (1 9/drv)

y= (6.03675 (g/s)/dlvj

fig, 4-23 Diagrama de fase

Page 94: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

CAPITULO V

RESULTADOS Y CONCLUSIONES

En este capítulo analizaremos los resultados y las

conclusiones en base a la teoría desarrollada y a los

ejercicios que se realizaron.

5.1 RESULTADOS.

El programa desarrollado permite ensayar varios tipos

de control para el péndulo invertido de una manera fácil

para el usuario presentando resultados, gráficos y la

simulación dinámica del péndulo invertido.

Al inicio del programa se cargan datos que ya han sido

preestablecidos en el programa y que se pueden utilizar en

la ejecución del mismo, pero si se desea se pueden cambiar

los datos del péndulo.

Se presentan los resultados del control implementado

Page 95: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

91

para cada una de las alternativas de control. Y en todos

los casos se presenta los datos del péndulo ingresado. Para

asi poder analizar los resultados de cada una y ver cómo

influye el cambio de un parámetro en el sistema.

Asi} en realimentación de estado se presentan los

polos de lazo cerrado deseados, el polinomio

característico, el vector de realimentación K, y la

transformada de Laplace inversa de cada estado,

Al realizar el control proporcional derivativo, se

presentan los datos que se han ingresado, tales como: la

frecuencia natural no amortiguada y el coeficiente de

amortiguamiento deseados. Además datos de salida como son:

el tiempo de establecimiento, máximo sobreimpulso y la

respuesta en el tiempo.

En el control de tiempo óptimo se obtiene información

de la fuerza ingresada, el tiempo en el cual se realiza la

conmutación.

En todos los casos se obtiene los gráficos de cada uno

de los estados versus el tiempo y el diagrama de fase.

Los gráficos y la simulación se realizan para cada

tipo de compensación y se escala automáticamente de acuerdo

a las dimensiones de la ventana del programa.

Page 96: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

92

Mediante el programa se puede imprimir directamente el

contenido de la ventana principal del programa, ya sean

textos o gráficos. En el caso de los gráficos, se puede

cambiar el tamaño de la impresión, mediante la ampliación o

reducción de la ventana del programa.

También se puede copiar al portapapeles cualquier

gráfico de la ventana del programa y de cualquier dimensión

dependiendo de su tamaño. Lo que permitirá obtener gráficos

del programa desde otras aplicaciones.

Se accede directamente desde el menú del programa a la

ayuda que enseña a cómo utilizar el programa.

5.2 CONCLUSIONES-

El programa desarrollado utiliza la técnica de

programación orientada a objetos en el compilador Turbo C++

versión 3.1 para Windows lo que permite hacer más modular

al programa fuente y de fácil mantenimiento. Permite

acceder directamente a funciones de Windows pero en el caso

de la redimensión de la ventana del programa se debe

programar el escalamiento de los gráficos.

El paquete Turbo C+4- versión 3.1 posee todas las

herramientas necesarias para la realización del programa,

asi podemos mencionar un editor del programa fuente que

Page 97: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

93

pone diferentes tipos y colores de letra a las palabras

clave del lenguaje, a los comentarios, a los archivos de

inclusión, etc., lo cual hace más fácil la programación. Se

utilizó el taller de recursos (Resourse Workshop) para

realisar mapas de bits, cuadros de diálogo, teclas

aceleradoras, iconos, etc. Además este paquete trae un

compilador de ayuda (HC) en el cual se realizó el archivo

de ayuda del programa.

Mediante este programa y el empleo de Windows se

facilita la obtención de la información. Puesto gue desde

cualquier otra aplicación se puede importar gráficos del

programa realizado, Y las entradas y salidas son de fácil

utilización para el usuario.

Con la 'realimentación de estado es posible conseguir

un mejor control, se toma una mayor información del

sistema, pues se hace la realimentación de las cuatro

variables de estado. Pero la implementación práctica seria

complicada.

En el control proporcional derivativo sólo se

realimenta el ángulo y su derivada por lo tanto la fuerza

sólo responderá a un cambio de los mismos. No se toma en

consideración el espacio y la velocidad, y al obtenerlos a

partir de la integración de la fuerza el sistema

teóricamente puede quedar con una velocidad constante, pero

que podría ser anulada con las condiciones iniciales.

Page 98: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

94

En el control de tiempo óptimo, la curva de

conmutación es difícil conseguirla con elementos analógicos

por lo tanto se debería emplear un control por computador

en la práctica. También puede haber conflictos en las

conmutaciones cuando el ángulo es pequeño, sin embargo en

otros trabajos con redes neurales se ha aplicado fuerzas

constantes al péndulo invertido que sólo pueden cambiar de

dirección a fin de controlarlo.

Mediante la simulación dinámica del péndulo invertido

se confirman los resultados analíticos. Además permite

darnos cuenta si algún tipo de control es demasiado lento y

necesita más espacio para conseguir el equilibrio. En el

cálculo de las compensaciones no se toma en cuenta el

límite de la pista y los gráficos que se obtienen no tienen

el limitante del espacio, luego en la simulación dinámica

se puede verificar si existe o no el choque del carro con

la pista.

El programa desarrollado es de fácil uso, pues cuenta

con una ayuda a la que puede acceder el usuario desde el

menú del mismo.

Las limitaciones del programa están en cuanto al

modelo utilizado se refiere y en la forma de control

implementado, que debería ser igual al desarrollado en la

parte teórica, para poder simular algún péndulo invertido.

Page 99: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

95

La simulación dinámica ha permitido observar las

limitaciones que pueden existir en un sistema en la

práctica y los rangos permisibles para realizar el control. •

Finalmente con esta tesis se ha cumplido las metas y

objetivos propuestos, entregando al estudiante una programa

que le servilla como ayuda didáctica para la compresión dei

los Sistemas de Control.

Page 100: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

BIBLIOGRAFÍA

Page 101: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

BIBLIOGRAFÍA

[1] ADAMS L,, "Programación avanzada de gráficos en C para

Windows", Ed. Windcrest/McGraw Hill, Madrid, 1993.

[2] BANDA H, , FOLKES D. , STEWART B. ,. "Programming in C" ,

üniversity of Dundee, 1991

[3] DISTEFANO J., STÜBBERUD A., WILLIAMS I.,

"Hetroalimentación v Sistemas de Control", Segunda

Edición, Santafé de Bogotá, julio 1992, McGRAW-HILL

INTERAMERICANA, S.A.

[4] DONALD E. KIRK, "Qptimal Control Theorv". New Jersey,

1970, PRENTICE-HALL, INC.

[5] DORF Richard, "Sistemas Automáticos de Control".

Tlacopac San Ángel, Fondo Educativo Interamericano,

1977.

[6] KWAKERNAAK Huibert, "Linear Qptimal Control Svstems".

1972

Page 102: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

98

[7 ] MICROSOFT CORPORATION 3 "üiorosoft Windows 3_J^_

Herramientas dR Programación", Madrid, 1994,

McGRAW__HILL/INTERAMERICANA DE ESPASA, S. A.

[8] MURRAY W., PAPPAS Ch. , "Programación en Windows 3 JL" ,

Ed. Osborne/McGraw Hill, Madrid, 1993.

[9] OGATA K., "Dinámica de Sistemas", Ed. Prentice Hall,

México, 1987.

[10] OGATA K., "Ingeniería de Control Moderna", Ed.

Prentice Hall, México, 1985.

[11] PAPPAS Ch./ MURRAY W., "Manual de Borland C++", Ed.

Osborne/McGraw Hill, Madrid, 1993.

[12] PASMAY F. , "Diseño Y comprobaciónde un mód-ulo para

.control óptimo de poeioion de un motor D.G. " ,Tesis

E.P.N, 1983.

[13] PORTER A., "Programación en C++ para Windows", Ed.

Osborne/McGraw Hill, Madrid, 1994.

[14] SHELDON T., "Windows 3.1 Manual de Referencia", Ed

Osborne/McGraw Hill, Madrid, 1993.

[15] STARKEY B. J. , "La-place transforma for electrical

engineers", Philosophical Library, New York^ 1958.

Page 103: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

s o

Page 104: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

NOMENCLATURA UTILIZADA

F fuerza máxima aplicada en el control óptimo.

g Gravedad.

H(t) Reacción horizontal debida al pivote.

J Momento de inercia de la varilla respecto a su

centro de gravedad.

L Longitud desde el pivote al centro de gravedad de

la varilla.

L" Longitud efectiva del péndulo.

M Masa del carro,

m Masa de la varilla.

N Normal debida al contacto del carro con la pista

pl, p23 p3 y p4 Son los polos de lazo cerrado que se desean

en la realimentación de estado.

u(t) Fuerza externa que se .aplica al carro.

V(t) Reacción vertical debida al pivote.

x(t) Ubicación del carro respecto al centro de la

pista.

xx Variable de estado que representa el espacio o

ubicación del carro respecto al centro del sistema

de referencia que es el centro de la pista.

Page 105: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

101

Variable de estado que representa la velocidad del

carro .

xa Variable de estado que representa el ángulo que

forma el péndulo con la vertical.

XA Variable de estado que representa a la velocidad

angular con que gira la varilla.

a Parte real del polo complejo conjugado de laso

cerrado .

P Parte imaginaria del polo complejo de lazo

cerrado .

a± Parte real del primer polo complejo conjugado de

lazo cerrado .

PÍ Parte imaginaria del primer polo complejo

conjugado de laso cerrado .

a2 Parte real del segundo polo complejo conjugado de

lazo cerrado.

(3 2 Parte imaginaria del segundo polo complejo

conjugado de laso cerrado.

$(t) Ángulo que forma la varilla con la vertical.

Velocidad angular de la varilla.d t

<f>(0) Condición inicial del ángulo que forma la

varilla con la vertical.

: — v^ Condición inicial de la velocidad angular de lad tvarilla.

Transformada de Laplace del ángulo

Page 106: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

102

ü(s) Transformada de Laplace de la fuerza aplicada al

carro.

XI(B) Transformada de Laplace del espacio o ubicación

del carro.

X2(s) Transformada de Laplace de la velocidad del carro

J£j(s) Transformada de Laplace del ángulo ue forma la

varilla con la vertical.

X¿(B) Transformada de Laplace de la velocidad angular

con que gira la varilla.

6>n Frecuencia natural no amortiguada.

o> Velocidad angular de la varilla.

C Coeficiente de amortiguamiento

Page 107: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

MANUAL DEL USÜAEIO

Para la realización del programa PENDULO.EXE se

utilizó los siguientes archivos:

PÉNDULO.PRJ Que es el archivo de proyecto donde se

realizó el programa.

Es el programa fuente donde está todo el

listado del mismo.

Archivo de definición de constantes

Archivo de definición de módulo.

Es el archivo de recursos donde se definen

cuadros de diálogo, mapas de bits, teclas

aceleradoras, iconos y el menú del programa.

PÉNDULO.ICO Es el icono diseñado para el programa.

PÉNDULO.CPP

PÉNDULO.H

OWL.DEF

PÉNDULO.RC

Archivos para crear la Ayuda:

PÉNDULO.HPJ

PERDULO.RTF

PENDULOM.H

Es el archivo de proyecto para crear el

archivo ayuda.

Es la edición del programa de ayuda en un

formato de texto enriquecido.

Es un archivo donde se definen constantes

Page 108: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

104

PENDULOM.H Es un archivo donde se definen constantes

para el proyecto de ayuda.

PÉNDULO.HLP Es el archivo de ayuda compilado, que debe

existir en el directorio donde se copia al

programa ejecutable para poder acceder a la

misma,

Antes de nada se debe copiar el archivo BWCC.DLL en el

directorio C:\WINDOWS\SYSTEM, que utiliza en programa para

presentar los cuadros de diálogo, en caso contrario no se

podrá acceder a ellos. Este archivo se copia al instalar el

compilador de lenguaje C-M-, pero se .lo puede copiar sin

ningún problema.

El programa realizado es de fácil uso. Primeramente

inicialice Windows y elija desde en menú File del Program

Manager la opción JRun y escriba el path y el nombre del

programa (PENDULO.EXE). El programa se inicia mostrando un

cuadro de diálogo "Acerca de ...", presione ENTER o

seleccione OK con el ratón para continuar, y acceder al

menú principal que tiene las siguientes opciones: fichero,

Edición, ingreso de datos, Simulación, (gráficos Ütil y

Ayuda.

Se accede a cada elemento del menú o submenú mediante

la selección con el ratón o mediante el teclado con ALT más

la letra subrayada de cada ítem.

Page 109: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

105

Cada uno de los elementos del menú principal tienen

submenús que se explicarán a continuación:

Eicliero

Dentro de este . ítem se encuentran las siguientes

opciones:

£)tro Péndulo. Que permite acceder a un cuadro de

diálogo donde se deben ingresar los datos del péndulo que

se desea simular.

Por defecto. Al seleccionar esta opción el programa

pregunta al usuario si está seguro de querer esta acción,

ante una respuesta positiva se colocan datos que han sido

tomados como referencia y se perderán los datos ingresados

anteriormente en el caso de haberlo hecho. Si la respuesta

es negativa, no se cambiarán los datos. Al inicio del

programa se colocan estos datos por defecto, que permiten

obtener resultados correctos con el fin de hacer una rápida

demostración del programa.

Imprimir. Esta opción permite imprimir lo que existe

en la ventana del programa ya sean gráficos o textos.

Primero se abre un cuadro de diálogo de donde se escoge las

preferencias para la impresión.

Las dimensiones de la impresión dependen del tamaño de

la ventana del programa, al maximizar ésta, se consigue el

Page 110: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

106

mayor tamaño de impresión que es el de una hoja de tamaño

A4. Si la ventana es pequeña entonces la impresión también

será pequeña.

Salir. Mediante esta opción se termina el programa.

Pero antes se pregunta al usuario si está realmente seguro

de salir con el fin de evitar salirse del programa

accidentalmente.

Edición

Mediante la elección de este ítem se despliega un

submenú en el que existe la opción Copiar, Al elegir ésta,

se borra el contenido del portapapeles y se copia en éste

lo que exista en la ventana principal del programa y con

las dimensiones de ésta. Al final de esta operación sale un

cuadro de mensajes que indica que se realizó esta

operación.

ingreso de datos

Mediante esta opción se puede acceder a un submenú

para ingresar datos de cada tipo de control implementado. Y

consta de cuatro itemes que se explicarán a continuación:

Eealimen. Estado. Permite el ingreso de los polos de

lazo cerrado que se desean, éstos pueden ser reales,

complejos conjugados, múltiples o cualquier combinación de

éstos. Si se ingresa un polo complejo entonces ya no se

necesitará poner su conjugado y la casilla prevista para el

Page 111: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

107

siguiente polo ya no sirve para ingresar otro polo porque

se supone que allí debe ir el conjugado; luego para poner

más polos se deberá poner en las demás casillas de ingreso

de polos. Si los polos son reales entonces se debe dejar en

blanco o poner un cero en la parte imaginaria. Para

ingresar polos múltiples se debe poner en las casillas el

polo varias veces de acuerdo a la multiplicidad de éste.

Eroporcional Deriv. Al elegir esta opción aparece un

cuadro de diálogo donde se deben ingresar los valores

deseados de la frecuencia natural no amortiguada y del

coeficiente de amortiguamiento.

Tiempo Minimo. Mediante esta opción aparece un cuadro

de diálogo donde se debe ingresar la fuerza constante que

se aplicará al carro, no importa el signo.

A su vez, en el ingreso de datos se confirma los datos

que acepta el programa mediante un cuadro de mensajes que

se presenta al usuario con los valores ingresados y se hace

un chequeo de que éstos sean consistentes. Al ingresar

correctamente los datos se está seleccionando el

controlador utilizado. El último OK en el cuadro de diálogo

de algún tipo de control lo selecciona automáticamente

cuando se realicen los cálculos.

.Condiciones Iniciales. Cuando se elige esta opción,

aparecerá un cuadro de diálogo que permite ingresar las

Page 112: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

IOS

condiciones iniciales de velocidad del carro, ángulo y

velocidad angular del péndulo. La condición inicial del

espacio por defecto es cero con el fin de observar la

simetría que existe. Es importante el ingreso de las

condiciones iniciales, ya que si éstas son nulas no se

realizará ningún tipo de cálculo y no se simulará nada.

Simulación

Presenta un submenú con las opciones que se describen

a continuación:

Hacer Cálculos, Mediante esta opción se realizan los

cálculos con los datos ingresados y con el último tipo de

controlador que se ingresó. En el caso de que no se hayan

ingresado los datos del controlador o que los ingresados

sean inconsistentes o que las condiciones iniciales sean

nulas, se presentará un mensaje indicando esta situación.

Información. Permite poner en la ventana principal del

programa los datos ingresados y los resultados obtenidos de

cada control.

.Correr Animación. Inicia la simulación dinámica del

péndulo Invertido.

Limpiar pantalla. Limpia la ventana principal del

programa.

Page 113: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

109

Gráficos

Presenta los gráficos de cada estado dependiendo de

qué se seleccione de su submenú. Los gráficos que se pueden

obtener son los siguientes:

Espacio vs. t

Velocidad vs. t

Ángulo vs. t

VeJL- ang. vs. t

Varios- Permite seleccionar varios gráficos que se

presentarán en forma simultánea.

Vel. ang vs. ang.

Además al realizar el movimiento del ratón se conocerá

las coordenadas del punto donde está situado el mismo.

lítil

Mediante esta opción se pueden correr, directamente

del submenú, programas de Windows, asi tenemos:

Eeloj

.Calculadora

Administrador de Archivos

Ayuda

Existen tres opciones:

.Contenido Fl. Permite abrir el archivo de ayuda del

programa mediante la Ayuda de Windows. Lo mismo se puede

Page 114: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

110

hacer pulsando la tecla Fl.

Usar Ayuda. Abre el archivo de Windows sobre cómo

utilizar la ayuda.

Acerca de ... Muestra el cuadro de diálogo del

programa realizado, para continuar presione la tecla ENTKR

o seleccione OK con el ratón.

Page 115: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

111

LISTADO DEL PROGRAMA

ARCHIVO: péndulo.

// Programa para la simulación dinámica del Péndulo Invertido// Rsslizado por Sonzalo Hontalván

de <owl.h>Sinciude <radiobut.h>lincíude <bchkbox.h>Sinclude <edit.h>íinclude <string.h>líinclude <stdlib.h>Sinclude <áath.h>üinclude <errno.h>lincíuda <bios,h»

üincluds <print.h>iinclude <cDsisdlg,h>

ííinclude "psndulo.h*iincliide "péndulos.h"

idefins Pí 3.141592654

doublB ac[43[^]í b[4), x[43;daublB kl, k2, k3j k4, pi, p2,tíüuble Pr[43, Pi[43;int CTH}

int ian, ÍBB, Haxl,r8tardo=0}doubia TespjTdBspjTangjTdanint pxsaXj incX;int jncX;doublE HnJSi,ü_o,-fid__oJvo=0JBQ=O.OjdEltaT;doublE íueriaTHjdoublB Lp=0.842, g=9,81, M=1.0, si, ^3Í longit;doublB an[iOOO],anJEÍ0003iBS[i0003íe5j[10003)fUB[í0003idoublB HaxE5p=0,0, MasDesp^.O, HaxAng=0,0, MaxDang^O.O, MaxFuB=0,0;doubls T=j // tiempo de BSchar OeTieís!([253íDeE5paY[25]JOelTtploYC25];char OBftnguYE25]JDBVangYC253JDaFuerY[253j

HCÜRSOR hPravCursor; // guardará si cursor antariorHCURSQR hHourGlass; // gestor del cursor reloj de arsnaHCÜRSOR hCrossHairi // gestor del cursor de cruz

II variables para el control de la anidación en pantallaHDC hMapaDC; // contexto visual, en aesoria para sapas bits actores

Page 116: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

113

struct TPenduloStructchar HStringCiO];char 3iStringÜQ3;char LStringüGljchar JStringC10]jcbargString[IQ3j

struct TRealEstStruct íchar píStringüOljchar pilSiring[IO];char p2String[iQ3jchar p3String[I03ichar pi3String[103jchar p4String[IO]j}J

síruct TPropDerStruct {char HnStringüO];chsr SitaStringíIO];

struct TTisflHinStruct íchar Fusrza[10]j

struct TCondlniStruct {char desStringCiO];char fiString[103¡char dfiScring[i03¡

struct TVariosGrafStructíBDOL GEsp;BOOL BDesp;BOOL 6ñngjBOOL SOang;BOOL GFuerza;

ciass TPenduloftpp ; püblic TApplication ípublic:

TPsnduloAppíLPSTR ANasie, HINSTftNCE'hlnstance, HINSTANCE hPrevInstance,LPSTñ IpCíidLins, int nCaidShoH); TAppíicaiiontANaffie, hlnstance, hPrevInstance, IpCídLine, nCadShoHj {};

virtual void ínitínstancsí);virtual void

class TPsndulolíindQM ; public

Page 117: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

114

p u b l i c :

TPenduloStruct PenduloStructjTRealEstStruct RaalEstStruct;

TPropDerStruct PropOerStructjTTieísMinStruct TiesHinStruct;

TCündlniStruct CondíniStructjTVariQsBraíStruct VariosGrafStruct j

7PenduloHindoH(PTHindowsübject AParent, LPSTR ATitleJ;virtual void GeiSíindowClassí HNDCLASSi HndClass);

virtual LPSTR SEtClassNameOj

virtual void SetupWindoHÍ);virtual void Paintl HDC hdc, PñINTSTRÜCH Paínt lnfo);virtual void 'riHEnterldlsí RTHessage J = [HHJIRST * HH_ENTERIDLE]¡virtual void CHExítí RTMessags } = [CKJIRST + CWJXITl j

virtual void CHÜHeipIndsxí RTfiessage ] = [CMJIRST t CHJiJELPINDEX];virtual void CHUHelpHeipí RTHesaage J = [CHJIRST + CHJJJELPHELPljvirtual void CHÜHe!pAbout( RT.lBSsage ) = [CHJIRST + CHJJJELPABQUT3;

virtual void CBdatosPendulotTMessageÍE Hsg) = [CMJIRST * CHJ_Pandulo]jvirtual void CHdatosDeíectoíRTHessage) = [CMJIRST i CHJJJatosDeíec];virtual void CHifitprifflirPanttRTÍÍBssagB) = [CHJIRST + CHJJnprinir];virtual void CHcopyClipboard(8TMes5sgB) = [CHJIRST + CH_UJopy]j

virtual void CHdatosRaalEst(THsssageít Hsg) = [CHJIRST + CHJJnputRestl;virtual void CMdatQsPropOer(THE5sagB& Msg) = [CMJIRST + CMJJnputPderlivirtual void CHdatosTifiafíiníTHBBsage* Hsg) = [CHJIRST * CHJJnputTidnljvirtual void CHdato5CondIni(THe5sage& Hsg) = [CHJIRST + CMJJondlnici];

virtual void CalculosMsnuIñTHessagB) = [CHJIRST i CHJJuildCels];virtual void AnisadonMBnuíRTMessage) = [CHJIRST ^ CMJJJnisate];virtual void ClearHsnu(RTHessage) = [CMJIRST + CH_U_CÍEar];virtual void InforsiaHenuíRTHessage) = [CHJIRST -f CMJJardware];

virtual void GrafEspHenufRTMessags} = [CílJIRST f CHJJJspacioJ;virtual void BraíVelHenutRThessage) = [CHJIRST i CM_UJeloddad]jvirtual void SraíAngHenuíRTHassage} = [CHJIRST + CM_Ü_AnguloJ;virtual void SraíVanHenuíRTHessage) = [CMJIRST + CHJJAngular];virtual void SrafFusMenufRTHsssage) = [CMJIRST + CMJJusrzajjvirtual void 6rafTod«enu(RT«Bssage] = [CMJIRST + CHJJraíVarios];virtual void GrafDvftMenuíRTMessaga) = [CHJIRST t CHJJJngvsDang]¡

virtual void CfíRelojfñTHessage Msg) = [CHJÍRST + CMJ_RBloj]jvirtual void CHCalcuiadoraíRTfisssage Hsg) = [CHJIRST i CM_U_CaIculadora3jvirtual void CHArchivasíRTMessage Hsg) = [CHJIRST + CH_U_Archivos];

virtual void «KSizetTKessage* «essageJ=[iiMJIRST + HHJIIE];virtual void WHRaton'íTHessagE?; Hessage)=[HHJÍRST -f- «MJIOUSEHOVEli

void RaalisiEstadO;void Bstadoi íJ j

void es tado2 ( ) jvoid estado3(í i

Page 118: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

115

void 2stado4()jvoid Naxifflosdi

void CuatroPRDiíerdívoid DosPROyDosPRIdivoid UnPRDyTrBsPRIUj•/oíd CuatroPRIgualOjvoid DosPSIyDosPRKJivoid OosPRIyUnPCCoO;-/oíd DosPRDyünPCCoOjvoid DasPCCDistintUivoid DasPCCIguaJesUj

void InfoCREUjvoid InfoCPD()¡

void InfoCTHU;

void NoCalculosUj

void SisEcuacionesO;Yoid ProporDeriví);void TisjipoMinisioí);void ConstrCeldasíí;voití Anisacioní);void LiiipiarPantallaOj

void GraficaEjssO)void BrafEspacioOivoid SrafVelocidadí);void SrafAnguloí);void BraíVAngularíJjvoid 6raficaFuena()¡void GrafAngvsDangOj

void CoorEspacioí);void CoorVelocidadí);void CoorAnguloí);void CoorVangularO;void CoordeFueriaílivoid CoorVangvsAnglíj

void DeíecioO;

BOQL

TPandulofíindoví:;TPBnduloHindow(PTHindow50bJBct AParent, LP5TR ATitle)THindoHÍAParsnt, ATitle)

ílong sndTifi)B,de]ayTick5=5;

Page 119: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

116

AssignHenuíIDJENUJjaefisetdíPendiiloStruct, 0x0, BÍZEDÍ PenduloStruct) ;aefiSsttítRealEstStrucfc, O x O j sizeof RealEstSfcructí iflsasettlíPropDBrStruct, 0x0, sizeof PropDerStructJ jffiestsatUíTieíiíUnStructj 0x0, sizeof TiefflHinSfcructliñe?iS5tt«íCofídlniSíructl O x O j sizeof CondiniStructJ jaBüsstíítyariosSrafStrucfcjOxOjSizeoi VariosBraíStruct);V3rÍQs6r3TStruct.GEsp=FALSE;VariosBrafStruct.6Qesp=FALSE¡Vario56rafStruct.SAng=TñUEiVario5GrafStruct.GDang=TRÜEjVarios6raíStruct.BFuer2a=FALSEj

5trcpyíPsnduIoStruci.M5tring,"iu)jBtrcpyíPendyloStrüct.fsString/O.!");5trcpyíPendu!DStruct,LStringJll0.842");5Írcpy{PsnduioSíructJString,uO,Oi2uí;strcpy{PEndiílQStruct.gString,"9-SiM.;

5trcpy(RB3Ít5tStruct,p!StringJn-211}jstrcpytRealEstStruct.piíStríng,"");5trcpy(Rea!E5tStruct.p2Stringíu-2,51!};

5trcpytRea!EstStruct.p3StringJ l t -3Bí¡BtrcpyíñealEstStruct.piJStrlng/1');5 t r c p y ( R e 3 l E 5 t S t r u c t . p 4 S t r i n g J * ~ 4 f l ] j

strcpyíPropDErStruct.WnString/'?11)}5trcpy(PropDerStruct.SIiaString,1'0.¿H]i

B i r c p y í T i e f t M i n S t r u c t . Fuerza, "2 .5" ) ;

5trcpy(CondíniStruct.dasString,E"!)jBtrcpyíCQndlniStruci.fiString/iO'1);BtrcpytCQndlniStruct.dfiString,"");Deísciol J¡

endlise = biostiíBEÍO, OL)' -f- delayTicksjwhile (bio5tiae(0; OL) < endTias)rEtardo-H j

void TPenduíoWindow::Defecto{)ííi=l; Lp=0.842; g=9.ei|Pr[0)=-2; PiEOHi Pr[i]=-2.5¡ Pr[2]=-3; Pi[i]=0;

fuErzaííl=2.5jfi_o=iOfPI/180j

Calculo5Rsst= TRUEjCalculosPdBr= FñLSE;CalculosTfflin= FALSE;Condicione5Í= TRUE;

Page 120: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

117

void TPenduIüñpp;;InitInst=ncsU{

TApplication::!niHnstanceUiHAccTable = LoadAccalsratorsI hlnstance, HAKElNTRESOURCEf PEH0ULOAPACCEL

' hHourSlass^ LoadCursor{NULL,IDCJAIT]i

class TDialogPBndulo : public TDialog {public;

TDialogPBudulQ{PT8indü«sÜbjsct AParent, int Resourceld);

void

char ftLabEl[2551ilong i t j

if [ SetHodulE()->EsecDialGqínBW TDialogPendulofthis, ID_PENDULOJ)==IDOKí

M = a t o f ( P B n d u l o S t r u c t , f l S t r i n g J iB=atof (PenduloStruct . astr ingí jJ=a to i (P3nduloSt ruc t . JS t r ing) ;l ong i t=a to f (Pendu loS t ruc t .LS t r i ng ) jg=atof [ P f i n d u l o S t r u c t . g S t r i n g l j

strcpylALabsl, "Pftidulo !nvertída:\n\nu);strcatlALabel, "sasa dsl carro = L'J;strcai(ALabEl, PEnduloStruct.MString);strcattALabfil, a Kg\n«asa dsl péndulo = a í jstrcatfALabelj PenduloStruct.aStrinq) ¡strcaííALsbBl, " Kg\nlongitud = "};sfcrcat(ALabeI, PsnduloStruct.LStrinq);strcatíALabeí j H ffi\n¡30inBnto de inercia = 3j;

lj PsndulaStruct.JStrinq);" Kg m2\ngravadad = ");

5trcat(ALabeíj PenduloStract-gStríng);strc3t(ALabBlf " í8/52\n"};

j ALabslj "datos ingrEsados", HBJ3K);

TDialogPendulo::TDialogPendulo(PTWindoií50bject AParsnt, int Resourceld): TDialogíñParBntj Resourceld)

{ns« TEdit(this, ID_Hj

5Í2fio-f([ÍTPBnduloHindo« t)Parent)->P2ndulo5truct,í1Stríng))jnen TEdit(tfiis, ID_rij

siseoííí(TPBndulc-NindoH í)ParBnt)-)?BnduloStruct,ísStringl)iitflhiSj ÍDJ_j

Page 121: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

118

5 Í z e a f ( [ ( T P e n d u l o H i n d a w í )Pa ren t ) ->Psndu lQSt ruc t .LS t r ing ) í ¡ÍÍE« TEdi t í th is , IDJ,

5 Ízeo í [ ( (TPsndu loHindoH í )Pa ren t ) ->Pendu loS t ruc t . JS t r ing )} inBH TEdi t í th í s , ID_g,

s i zeo f tKTPendu loWindow í ) P a r s n t ) - > P e n d u i o S t r u c í . g S t r i n g ) ) jT r a n s í e r B u f f e r = (void f a r U $ ( í ( T P e n d u l o B i n d o w Í J P a r e n t ) - > P e n d u l o S t r u c t ) i

class T D i a l o g R e a l E s ; p u b l i c TDialog {pub l ic ;

T D i a l D g R e a l E B Í P T K i n d o í í s O b J B C t ñParent , int R e s o u r c e l d j j)¡

yoid TPendulo ' r f indoH; ¡CHdatosRealEsttTHessageí;)

char A!

double PaimO,PaiaíJfJaxia,PrBal[4];int sig = 8; // dígitos significativasint i;char plinE]="pí = a;char p2inC3=Hp2 = ";char p3in[J="p3 = "jchar p4inE3="p4 = "jchar pR_iEi23 J pR_2[123 ) pR_3Ei2] ,pRJEi2] ;char

if ( 6 e t H o d u l e í ) - > E x B c D i a l o g í n e w TDia logReaiEs í th i s , IDJEALJST)) ==f

Pr[0]=atof (Res lEs tS t ruc t .p lS t r ing l jP r E i 3 = a t o f ( R e a l E 5 t S t r ü c t , p 2 S t r i n g ) ;P r E 2 3 = a t o f ( R e a l E s t S t r u c t , p 3 S t r i n g ) jPr [33=a tQf{RB3lEs tS t ruc t .p4St r inq) jPi[03=atoí{R6alE5tStri ict ,piiString};Pi£í3=atofiRealE5tStruct,pi35tring);

PaiflO=-Pi[03iPaiífil=-PÍ[I];g c v t í P r C O ] , sig, pRJJ ;g c v t t P r C i ] , 5ig, p R _ 2 ) jgcv t íP r [23 , sig, pR_3);gcvt íPr[33; 5Í9í p R J J jgcvUPiíO] , sig, p I J J jQcvtíPaiflOj sigj p l _ 2 ) jgcvt(Pi[i] , sig, p l j l igcvt tPaial , sig, pMíi

s t r c p y t A L a b B l , "Real i sentac iGn de B s t a d o : \ n \ n " ) ji f ( i f abs íP i [ f l ] í>0) í ( f abs (P iC l ] )>0 ) í

Page 122: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

119

strcafcfALabel, "parte real parte isag.\nMiSise

strcat íALabel , "polos reales\nMjstrcaUALabslj piinljstrcatíALabel, pRJU;Pr3al{fl]=Pr[0];if(íab5(Pi[OJ)>Q)ístrtatíALabelj " MistrcatiALabel, pl_i)jsírcatíALabeij " j\n"}jstrcatíflUbelj p2ín)_;sírcatí ALabel, pRJ);strcatíALabelj " ")}sírcatíALabei, pi_2);strcatíALsbel, ' j\n"):strcpytRealEstStruct.pZStringjpRJJjPreal[l]=PrEO]i}else(strcatíALabel, H\nu}i5trcat[ALabelj p2in);strcstíALabel, pR_2);strcat(ALabel, "\nBJ;

strcatíALabel, p3in);strcatíALabel, pR_3)j?rea][2]=Pr[2]j

ifífabs(Pi[13)>0){strcatíALabel, ü MÍstrcatíALabel, pl_3);strcatíALabel, u j\nMj5trcat(ALabeI3 p3in);strcatíALabel, pñj);strcatíALabel, " MistrcatíALabeij pIJÍ;strcatíALabsl, " J M istrcpy(RealE5tStruct.p4String,pRJ};Preal[33=PrE2]¡}else{strcatíñLabel, "\nMjstrcatfALsbeij p4inj;strcatíALabel, pR__4):Preaim=Pr[3]ji

HesBageBojííHHindow, ALabel, "datos ingresados", HBJ3KJ}

f íaxis=PrealCO];

Page 123: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

120

íor(i=iji(=3;i+-í-)

haxiaF Praalíi};i.¡

t M a x = i G / f a b 5 l f í a x Í B ) i // staxiao va lo r de tieapo de s iaulaci in

CalculosRest= TRUE;oer^ FALSE;ifi= FALSE;

]-0) &* (Pi[i3™0)ííifííPr[03>=OJ!(Pr[i]>=OÍ¡(PrC2]>=OÍ!(Pr[33>=0}¡

íñessageBoxíHtíindoví,"Los polos de lazo cerrada realss\n*ano deben ser csros o positivos","Mal ubicados los polos",MBJCOMEXCLAHATIOH ! HB_OK);

QsRa5t= FALSE;

í

if((fabs(?iCO])>0) Jt(if(ÍPrC03>=OÍ!iPr[23>=Oi!ÍPrE3]>=Oi)

"Los polos de lazo cerrado realesXn""no deben ser ceros o positivos","Mal ubicados los palos",MBJCOHEXCLAMflTION ! HBJKJíCalculosRest= FALSE;

if((Pi[Q]==0) H ífabs(Pi[I3í>OJ)íiíí(Pr[0]>=0)!ÍPr[i]>=0);CPr[23>=0)}

í

"Los polos de lazo cerrado reaiss\njano deben ser ceros o positivos","Mal ubicadas los polos",«BJCONEXCLfthflTIQN ! HB_OK)jCalculosRsst= FfiLSE;

i í í ( f a b s ( P i [ 0 ] ) > 0 ) f c i Í Í 3 b s ( P i í i 3 í > O J ]/

i1UPr lO]>=0) ¡ tP r [2 ]>=0)J

Page 124: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

122

, sig, lr!n_ago/USi, sig., Si_acep);

s t rcp ' / ÍHLabel , "Proporcional de r ivaUvo; \n \ r , " ) js t r c a t í ñ L a o e l j Ingr l ín ) ;

strcatíALabsl, UnidHn);strcatíAUbel, "\n")istrcaUALabel, IngrSi);

lj Sí_acsp);indoKj ALabelj "datos ingresados", HBJJK))

if í(Hn<=0)MSi<=OJJ

"Los datos ingrssadosVn11

"NO son los correctos","error da datos",MBJCOHEXCLAMATION í H 8 _ O K ) ;CalculosPder= FflLSEj

TPrDpDerDialog!;TPropDerDialog(PTMindowsObject APsrent, int Resourceld}i T D i a i o g t ñ P a r e n t , Rssource idJ

{new TEditíthis, IDJN,

5Ízeo í ( ( (TPendu loá í i ndow t ) P a r B n t l - ) P r o p D e r S t r u c t . W n S t r i n g ) ) }new T E d i t f t h i s , ID_S1TA,

5Í2eo í ( ({TPendu loHindoM í )Pa ren t ) ">PropDerS t ruc t ,S i t aS t r ing)} ;Trans f s rBu í fe r = (void f a r t í i ( ( ( T P e n d u l o W i n d o w MParent) - )PropDerStruct ) ;

class T D i a l o g T f a i n : p u b l i c T D i a l o g (publ ic ;

TDialogTfsin(PTHindowsObJBct AParsnt, int RssourceJd);

void TPenduloiJindoHüCHdatosTiBfBÍl iníTflessagBlc){

char A L a b E l [ 2 5 5 ] jint 5ig=8;char F_scep[i2]j

if i 6 B t H o d u l E ( J - > E x s c D i a l o g ( n 8 M T D Í 3 l o g T f f l i n ( t h Í 5 , IDJ1EMPJIN1J == IDDK(

CslculQsRe$t= FALSEjCa lcu losPdsr= FALSE;

Page 125: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

123

iíF TRUE;fuerzaTÍ1=atof(T.is3iHinSí:ruct. Fuerza);

gcv t ( fusrzaTMj sigj F_acep);

strcpyiftLabel, "Control opt ino: \n\n") jstrcatíALabel, F_acep)j

KessageBoslHlíindDHj ALabei, "datos ingrssadoB", HB_QK);

TDialogTiin::TDialogTain[PTHindowsObJBct AParent, int Resourcsld); TDislogtAParentj Resourcsld]

{new TEditíthis, 1DJUER1A,

sizfiof(((TPenduloWindüíi í)ParentJ-}Tief5HinStnict,Fueria}í;T.-ansferBuífer = (void faríí^íí(TPsnduioWindow t)ParEntJ->Tie»HinStruct)j

cía55 TCondlnicBialog : public TDialog {public;

TCondlnicDialogtPTMindoMsübject AParent j int Resourceld)¡

void TPenduloHindoH! íCHdstQsCondlniíTHessagelí)(char ALabel[2551iint 5ig=8;.char Ingrvo[3=!lv8locidad = *jchar Onidvü[]=" ¡n/58g";char Ingrfi_p[]=H9ngulo = ";char ünidfi_pC3=" grados";char !ngrfidjj[]="velocidad angular = " jchar Unidfid_o[]=M grados/ssg";char vo_acep[12], an_acep[!2]j 3d_acep[i2];

if ( 6etí lodulE(J->ExscDialogínEW TCcndlnkOialogfthis, ID_CflNDJNICJÍ ~ IDOK

íYo=atof(CondlniStruct.desStrifig)i•fijj=atof(CondIniStruct.fiString)jfid_o=atofíCondIniStruct,díiSíring};

gcvtívo, sig, vo_acsp);gcvt(i i_0j sig, an_3CBp);gcvt(fid_o, sig, sd_acep);

Condicionesl=T8UEifi__o=fi_otPI/180; // transformación a radianes•íÍd_o=fid_oíPI/i80; // transformación a radianes

Page 126: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

124

strcpyfALabEl, "Condiciones Inidales;\n\n") ¡strcatfALabelj IngrvojjstrcatfALabelj vo_acap)jstrcatíALabelj UnidvoJ;strcatíflUbel, "VJ;scrcaííALabelj Ingrfiji}¡strcatfALabelj an_acep]¿strcatíALabeí, Unidfi_o);strcafc l f tLabel j "\n"!i

belj Ingr1id_oí;lj ad_acsp)j

ünidíid^o);strcatlALabeJ, JI\nM); "

Hes5BQe8ox(Hyjindow, ALabsl, "datos ingresados", MBJ

TCondlnicDíalogüTCondJnicDialogíPTilindoHBObJBct AParent, int RESourceld); TDialogíAParsnt, Resourceld)

/

ne* TEditíthis, IDJELINIC,5Ízeoi(((TPsnduloiíindow í)Parent)-)Cond]niStruct.de5String)í¡

ne« TEditfthis, IDJH6INIC,sizeoííííTPenduioHindovf í)Parent)->CoRdIniStruct.-fiString))i

new TEditíthis, ID_VfiNINIC,sizsof(((TPBndulolíindo« ÍÍParent)->Cond!niStrtict.dTÍString3);

TransíarBuffer = (void fa r t j& í ((TPBndulaWindoií MParentHCondíniStruct);

class TVariosGrafDialog ; pubÜc ÍDialog {public:

TVariosGrafDialüg(PTiíindoH50bject AParent, int Resourceld);)¡

void TPenduloHindow::6raíTodfíenu(RTNesBagB)

í

if ( GetModule()-)ExecDialog(n9H TVarios6rafDialog(this, VARIOSJRAFJ) == 1DOK/

Íf(CaIculosHech==FALSE)

íNoCalculosí í jreturnj

if(Varias6rafStruct.GEsp==TRU£íGrafiE=pacio=TRUEjelseGrafiE5pacio=FALSE;

Page 127: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

125

H(VariosGrafStruct,6De5p==TRUE)GrafiVelGcid=TSUEjBl5B

6rafiVelocid=FALSEi

if{VariosGrafStruct.GAng==TRUE)6rafi_AngulG=TRUE¡el seGrafi_Anguio=FALSE;

iftVariosGrafStruct.GDang==TRUE)6raüDeriAng=TRUE¡el seGraüDeriAng=FAlSE;

if(Varios6rafStnict.6Fuerza==TRUE)GraficFuerza=TRUE;elseBj-a1icFuerza=FALSE;

BraficVarios= TRÜEj6rafiAfiiraaci= FALSEjGraficarAvsD= FALSE;

LiaipisrPBntallaU;

TVariosGraffl ialogiiTVariosGrafDialQgíPTHindowsübject AParent, ini Sesourceld): TDialagíAParsnt, Resourceld)

new TBCheckBoxíthis, IDJEsp, 0);neH TBCheckBüxíthÍ5, IDJDesp, 0 ) 5nes TBCheckBoxtthis, IDJAng, 0);nesí TBChedBoxíthis, IDJDang, 0);nsw TBCheckBoxtthis, IDJFuerza, 0);

TransferBufíer = (void farUMÍlTPenduloHindow UParentJ->VariosGrafStruct)i

void TPBnduloHindo«::Paint[ HDC hdc, PA1NTSTRÜCT JAR ftj

í

ii(Coffiienzo)

(Coínien2o=FALSE;GstAppiicationtí->ExBcDialog[ne« TDislogfthis/ñBQUT"]);

if( GraíiEspscio ¡ GraíiVeJocid

Page 128: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

126

JSrafiJtogulo \gÍBraficFuarza)

Graf icaEjesí j ;

ifíGraüEspacio)BrafEspacioíJ;

ifíGrafiVslQcid)SrafVsloc idadí) ;

ifíGrafiJtatjuloíGrafAngulaU;

if(GrafiDariAng)GrafVAnguísrí);

ifíGraíicarAvsO]BraíAngvsDangí )¡

if (SraficFuerza)GraficaFijenafí;

if(lnfor»ac6ra-f ítít CalculosHech)íi f tCalculosRest)infoCREOjií(CalculosPder)InfoCPD[)¡

InfoCTMDi

voíd TPenduioHindo«:!6etHindoHCl35s(«NDCLASSA WndClass ]

{THindo«;;GetHindQwClas5ÍHndClass);HndCla55.hCursor=LoadCursoríNULL,IDC_CRQSS)j^ndClas5,hIcon=Loadkon{6BtApplication(}->hIn5t3ncs,

LP3TR TPenduloi i indQ»: :6etCla5sNaaeUí

return "TPendulo?Íindow";

void T P e n d u l o H i n d o H : : S e t u p H i n d o w ( J{

tfFiPr555ed = FALSE;

J

Page 129: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

void TPendulQflindoBüHHEnfcerldleí RTHsssage Hsg }í

ifí (Ksg.HParan == HSSF HENO i &ft ((SetKeyState( VK Fi í fc 0x8000) != 0)í

tfFIPresssd = TRUE;PostMessagel HHindo*, BHJEYDQHN, VKJETURN, OL )j

void TPEnduloWindoN'.sChEntí RThessage Hsg )

THindoHüCHExitl Hsg );i

void TPenduioyindox;;CfíUHBlpIndBX{ RTMessage )ei

HinHslpí HWindow, "PÉNDULO.HLP', HELPJHDEX, OL );

void TPBnduloWindow::CKUHelpHBlp( RTHessage )

iHinHelpt HKindon, "HINHELP.HLP", HELPJELPONHELP, OL );

void TPenduloHintíow:;CHÜHelpAboutí RThessage J

G2tftpplication(J->ExecDiaiog(new TDialog(this í l lABOÜT"}) i

void TPenduloAppülnitMainHindoHÍ)í

= neH TPenduloWindoHÍNULL, "Pfridulo Invertido");

// Prograaa Principalint PASCAL HinMainíHINSTANCE hlnstancs, HINBTANCE hPrevInstancB,LPSTR IpCadLine, int nCffldShow)

{HINSTANCE hBorLibrary;hBorLibrary=LoadLibraryf-''bwcc.dnü);ií(íint) hBorLibrary<=32)

MessageBoslHULL,M No hay coao abrir la librfiria\n"8 Asagúrass que si archivo BWCC,DLL\nu"esté en si directorio C:\WIHDGHS\\SYSTEir,1error",MBJK)i

IPenduloApp PsnduloApp(MTran3ferTe5t", hlnstance, hPrevInstance,IpCadLins,

Page 130: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

128

Pendulüftpp.Rundíreturn PendulcApp,Status;

// LLasadas a funciones desde el

void TPeíidulo&lindQH; ¡CHcopyClipboardíRTMessage}{

HDC hDC, hrieraDCjHBITHAP hBitaapj nPrevSitsap;int xNidthj ydepth;

xwidth= anchoVenti;;*dspth= al toVsntyjhBC= SetDCíH'riindowí; / t establecer el contexto de visualización t/hHeaDC= CreateCoap3tibleDC(nDC)¡ /í crear contexto visual, en ¡fieísoria í/hBitaap= /í crear sapa de bits í/

CreateCoiipatiblsBitsapthDCj swidth, ydepth);if (hBitsap) /í si el sapa de bits se crBÓ bien... í/

{hPrevBitísap= (HBITftóPJSelectübjectthíiEiiDC, hBitaap); / t selBccionar ¡sapa bits í/B i tB l t thHeBDCjOjO^wid th j ' /dep th jhOC.OjOjSRCCOPY) ; /? cargarlo }/OpenClipboaro'ÍHHindowJi /í abrir el portapapeles t/EraptyClipbaardí); /í liapiar B! portapapeles í/SetClipboardDataíCFJIThñP, hBi tmapJ; /í pasarle el gestor í/CloseClipboardd; l\r el portapapeles í/SelectObject(híief¡DCj hPrEvBitfflap); /í deseleccionar el aapa dB bits (/KessageBoxíHWindow,

"La pantalla actual fUB\n""copiada al portapapslas","Copiado" jHBJK))

} /I ÍIGTft; No libere B! gestor del sapa de bits después de pasarlo, í/ElS5

{ / t si existe algún Errorj mostrar un stensaje. . . í/Í1e55age8eep(0j;

HBSsagBBoxíHWindow/Ho hubo coso copiar al portapapeles VBrror'jHBJlK) í}

DeleteDC(hHeBDC); /í borrar si contexto de visualización en íSBaoria í/RBleasBDC(HHindow, hDC}; /í liberar el contexto de visualización i/

void iPEnduloNindowi'.CHiínprifiiirPantíRTHessagE]

HDC hOisplayDC;HDC hHeííioryDC; /i contexto de dispositivo en ¿BEinoria para sapa bits í/HBÍTHfiP hBitsiapj hPrevBitfaap; /í gestares de los aapas de bits í/

PRiNTDLS pd;

hDÍ5playDC=6EtDC{HWindoK]j

Page 131: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

129

hHeeoryDO /t establecer contexto disp. en asnería para siapa de bits í/CreatBCQflpaLibleBCihDísplay'DOi

hBitaap^ CreateCoopatibleBitsapí /í crsar ¡napa de bits... t/hDisplsyOC, /í compatible con la pantalla í/anchoVenh, /í anchura í/altoVenty); /i alturs í/

HPrevBiUap= ÍHBITflAPíSelBctObjectíhHeaoryDCjheitaapli /t ...y seleccionarlo t/

Bit31t(hH5fñoryDC, /í copiar imagen de la pantalla al mapa de bits í/0,0j /í coords de ía esq, superior izquierda del destino í/anchoVentx, tt anchura í/altoVenty, /í altura t/hDisplayOC, /t raapa ds bits origen í/0,0, /í coords de la asq, superior izquierda del origen í/SRCCGPY); /t operación gráfica : copiar í;

/t Set all structure aissbers to zero. í/, O, sizeofíPRiNTDLS));

¡\e the necessary PRÍNTDL6 structure nesbers. t/

pd.lStructSize = sizpd.hvindO'.ínpr = HKindow;pd.Fiags = POJETURNDC;

/? Print a test page if successful í/li (PrintDlgííípd} != 0) (

Escapefpd.hDC, STARTDQC, 3, "Test-Doc", NUIL);

/i — copiar ¡sapa bits al contesto disp, en ¡seaoria para iapres, — í/StretchBitipd.hOC, /i destino M

0,0, /i esq. superior izquierda del rectángulo de destino í/anchoVentx, /í anchura del destino U.altoVenty, /í altura del destino í/hHeaoryDC,0,0, /í esq, superior izquierda del rectángulo ds origen ManchoVenh, /í anchura del origen ValtoVenty, /í altura del origen í/SRCCGPY}; /í operación gráfica = copiar í/

EscBpE(pd.hDC, HEHFRAHE, O, NUIL, NULL]jEscspsípd.hQC, ENQDQC, O, NUIL, NULL);DeleteDCÍpd.hQCl;if (pd.hDsvMode != NULL)

BlobalFreeípd.hDevílode};if (pd.hOevNanes ¡= NÜLLJ

BlobalFrBfi(pd.hDevNa»Bs)j}Bise

ErrorHandlerOj

Page 132: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

130

Selec tGbjecUhHesoryDCjhPrevBi taap) ; tt deseleccionar el mapa de bits í/B e l e t e Q b J B c U h B i t n a p ) ; i\r si (sapa de bits ?/Q e l e t e D C Í h h e f f l o r y Q C ) ; /í borrar contexto disp, en síes, para sapa bits t/R e l e a s e Q C Í H W i n d o W j h D i s p l g y D C } ;

yoid TPendulo^indoK; ;CHRelaj(RJrlessage}

void TPsnduloWindow; ¡CHCalculadoraíRTHeEsage)

5

void TPenduloíí indoíí : ¡CMArchivostRTHssBsge)í

» i n E x e c ( " H Í n i i l e . B X E " , S H _ S H O H N O R H A L J i

void TPenduloHindoM: :CHdatosDeíecto(8THes5age}íiíit Re=pue5ta= 0; // resultado del cuadro de mensajes

"Quiere poner los datos prevÍ5tos?\n11"Sa perderán todos los datos ingresados","datos por delecto^

i-f (Respuesta ~ Í0ÍIO) // si el usuario pulsa Cancel,returnj

if (Respuesta == IDYES) // si el usuario pulsa Yes ({s t r c p y t P e n d u l o S t r u c t . H S t r i n g / i " } ;s t rcpy íPenduloSt ruc t .nS t r ing /O. i " ) ;strcpy(PenduloBtruct.LString,"0.842"};strcpyíPenduloStruct.JString., "0,012");

s t r c p y í P e n d u l o S t r u c t . g S t r i n g / V . S ' l i

s t r cpy(Rea iEs tS t ruc t .p iS t r ing , 1 1 -0 ,5 n ) js t r cpy íRea lEs tS t ruc t .p i iS t r ing ,^" ) ;s t r cpy(Rea lEs tS t ruc t .p2S t r ing í " -0 .5 ' t } jstrcpy{RealEstStruct,p3String,l l-0,4H).;5t-rcp l / (RaalEstStruct .pi3Str ingJ l '31 I ) is t r cpy íRe5 lEs tS t ruc t , p4S t r ing , " -0 ,4 u ) ;

s t rcpy(PropDErSt ruc t .? ínSt r ing j 1 '7" ) ;s t rcpyiPropOerStruct .S i taSt r ing/O.ü ' 1 ) ;

5 t r c p y ( T i B f l M í n S t r u c t , F u e r z a , l l 2 . 5 I f J i

Page 133: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

131

EtrcpytCondlniStruct.dEsString,911);strcpytCondlniStruct.fiStririg/iO'')5trcpy(CandíniStrtict.díiString5atl);Defacto! );

void TPendulaHindoHí:CalculQsHenu(RTHB5sage}

{6ra-fiAniflaci= FALSE;6rafiEspacio= FALSE;BrafiVelocidr FALSE;8raíi_Angulo= FALSE;6rafiDeriAng= FALSE;GraficVario5= FALSE;6raficarftv5D= FALSE;6raficFuerza= FALSE;Inforfflac6raT= FALSE;Li»piarPantalIa[);if(CondidonesI==FftLSE)

"Las condicione

"NO pueden ser

"error de datos" ,

HBJCOHSTOP ! HB_QK);

return;

}if(CalculosRBst== TRUE)

RealisiEatadí J;

iiíCalculosPder- TRÜE)ProporDerivO;iííC3lculo=Tíin== TRUE)TisispohinisaEJ;

void TPBnduloHindoHi:Ani»acionMfinu(RTMe55ageJ(Brafiftniiaci= TRÜE;8rafiE5pacio= FALSE;6rafiVeIocid= FALSE;8rafi_Angulo= FALSE;SrafiDeriAng= FALSE;GraficVario5= FALSE;BraficarñV5D= FALSE;GraficFuerza= FALSE;Ííiíor!ft5c6raf= FALSE;LiapiarPantallaOjAniísacionO;

void TPenduloWindoM: ¡{BrafíAninaci= FALSE;6rafiE5pacio= FALSE;

Page 134: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

132

GraüVelocid= FALSE;Grafi_ftngulo= FALSE;GraíiDeriAnq= FALSE;GraficVarios= FALSE;GraücarAvsQ= FALSE;6raficFuerz3= FALSE;InforaacGraf= FALSEjLiapiarPantallaUi

voití íPenduloSindaHüInforBafíenuIRTfiessage)

Grafifinis3ci= FñLSE;SrafiEspacio= FAL5E;6raíiVelDcid= FALSE;Grafijtagulo= FALSEjBrsfiDeriAng= FALSEjGraíicVario5= FALSE;SraficarftV5D= FALSE;GraficFuBrza= FALSEjínfonfi3cSraf= TRUE;ListpiarPantallaí J;

void TPenduÍQÍlindow: ¡GraíEspHfinuIRTHessagE)íiííCalculosHBch==FALSE){NoCalculosdjrsturn;

GrafiAninaci= FALSE;GrafiEspacio= TRUE;SraíiVelocid= FALSE;6rafi_Angulo= FALSE;SrafiDeriAng= FALSE;6raficVarios= FALSE;6ra-íicarAvsD= FALSE;GraficFuerza= FALSE;IníorsacGraf= FALSE;LiiapiarPantallaí);ívoid TPendulofeündow: ¡íií(Calcuio5Hech==FALSE]{NoCalculosOjrsturn;^

GrafiAniaaci= FALSE;GrafiEspacio= FALSE;5rafiVelocid= TRUE;Grafi_ftngulo= FALSE;6r3fiDeriftng= FñLSE;

o5= FALSE;

Page 135: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

133

SraficarAvsü= FALBE;6raficFuerza= FALSE;InfornacGraf= FALSE;LiapiarPantallaOj5

void TPBndulo'íiindQw; ¡GrafAngHBnuíRTílEssagfi)

íii(CaiculüsHech==FALSE)/

N o C a k u l o s U jrelurn;}

6rafiAninad= FALSE;Eraf íEspacitp FALSE jBrsfiVelodd= FALSE;Srafi_Angulo= TRUE;6rafiDBriAng= FALSE;6rafkVarios= FALSE;GraíicarAvsi}= FALSE;6raficFuerza= FALSE;IniQrniacBraf= FALSE;LiíRpiarPantallat);

void TPenduloWindow;¡BraíVanMenuIRTMessageí{ifíCalculosHech==FALSE)(NoCalculosO;rsturn;í

SrafiAninaci= FALSE;GrafiE=pada= FALSE;6raíiVeiodd= FALSE;Sraíijngulo= FALSE;6ra-fiDeriAng= TRUEj6raficVarios= FALSE;6raficarAV5D= FALSE;SraficFuena= FALSE;InforaacSraf= FALSE;LiflipiarPantaliaO;

void ÍPenduloHindon: ¡GrsfFuaheniiíRTMeBsage){iítCalculosHech-FALSEÍ

tN o C a k u l o s í J jreturnj\= FALSE;

Page 136: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

134

GrafiEspacio= FALSE;GrafiVelocid* FALSE;Graü_Angulo= FALSE;BraíiDeriAng= FALSE;Graíif:V3rio5= FALSE;SraficarAYsD= FALSE;6raficFuerza= TRUE;InforsacGraT^ FALSE;LiapiarPantallalJi

void TRenduloHindow; ¡Sraf DvfiMenuíRTfiessage)

{if(CalculDsKsch==FALSE)íNüCakulosííjrsturn

BraíiAnÍ3iaci= FALSE;Sr3fiE5pacio= FALSEjBrafiVelodd= FALSE;Brafi_Angulo= FALSEjSraíiDeriAng= FALSE;6raficVarios= FALSE;6raficarAY5D= IRUE;GraíicFtJBr2a= FALSE;Inforfiac6raf= FALSE;LiapiarPantaliaO1,i

V'QIO

I

anchoVBnfcx=MesssgB.LP.LojaltoVanty^tíessage.LP.HijUbicEjf iX=(altoVfinty-50)/2*4GjifíbCaldaaListas == TRÜE)

SBlectQbjfict(hPaginaOcuKaDC,hPrfiyBitaap2)jDBlBteObjf ictíhPaginaOcultaíiDeleteDC(hPaginaGcultaDC);SelectObJBct[hHapaDCJhPrsvBits3pi3;DeleteObject(hHapa);

D3lBtsDC(hHapaDC)i

ConstrCeldasO jX

void TPBnduloHindow!:WHRaÍDR(TMfi55age& HBSsagE

coordBnadaX=iÍBS&agB.LP.Lo;

if(6ra-ficVario5==TRUE),-Bturn;

Page 137: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

135

if(GrafíEspacio== TRÜEJCoorEspaciüO;iflGrafiVeiocid- TRÜEiCGorVeiocidadUiif(6rafijngulo== TflUElCoorAnguioU;ifiGrafiDeriñng== TRÜ£)CoücVangularUiif(Grafic3rftv5D==TRÜ£)CcorVangYsftngí);if(GraficFi!Ens==TRÜEJCoordeFuerzaí);1

< / „.__ __________ _.„ __ _— __. ________ —_.,___

// código ds Í35 funciones utilizadas

void TPendulD'íJindoH; ;MoCalculo5(void)í

"Todavía no =B han hecho\n"

"Advertencia" ,MBJCOHSTOP í H B J K J j

^

voití T?BnduloÍM'indow; ; R B a I i{in t i , j j k , P r u e b a H ;in t H C S l ^ O j O j O ) ;int Flag[4]=ÍO,OiOJ0};

deltaT=tMax/1000i

i f ( (P i [0 ]==01 vU- í P i [ l ] = = o ) Jí

for( i=0; i<3; i44)

Í f { F l 3 Q [ Í 3 = = O J

íiííPr[i]==Pr[j]}

r

F!ag[J3=i i

Page 138: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

136

PrusbaM=100tKCO]HOfH[i3*KC23i

5Hi tch[PruebahJi

C35B Oí

pi=Pr íG3ip2=Pr[!3;p3=Pr[23¡p4=Pr[3]¡CuatroPRDiferOjbreak ;

case ÍOO;pi=PrCO]¡

íif(Pr[lí3==PrCO]í

if(p2==0)p2=PrCk3jelssp3=Pr[k]j

DosPRDyDosPRlíiibreak;

case ÍO:p2=Pr[0};pí=Pr[13;

p3=Pr[33;elsep3=Pr[2]j'

DosPRDyDasPRIOibreak;

case í;pl=Pr[2Jjp2=Pr[0]¡

DosPRDyDosPRK);break j

case 200;pl=Pr[03;

if(Prífc3==Pr[0])k=kjel sep2=Pr[k]¡

Page 139: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

CO

--

—i

O

I—

II O

_ 01

ai

u 11

iri

tu1(

1

—i

C-l

O

V

-ra

a

. m

. en -a

ra

o.

ex

r-i

o-

o

a_

a_

o_ a.

n n

il in

CX

C

L. d.

o_

a_

o_

o_u

u u

ii

íft

Page 140: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

138

p2=Pr[2]jp3=Pi[13jDosPRiyünPCCoí);

pl=Pr[03;p2=Pr[I]sp3=?r[23jp4=Pi[!3;DasPRDyUnPCCof);

i f ( í f a b 5 ( P i [ 0 3 ) > 0 ) Jf& ( í ab5 (P i [ I3 )>0 ) )í

if( (Pr[0]==Pr[23) ft& tPiCO]==Pi[13) íípí=Pr[03;p2=Pi[03;DosPCCIgualesf);

ift (fab5(Pr[03-Pr[2])>G) ¡ (íabsíPi[0]-Pi[13)>OJí

pí=Pr[03;p2=Pi[0]¡

p4=Pi[13;DosPCCDistintííj

CalculosHech=TRÜEi}

void TPenduloHindoí í : ¡ e s t ado l íva id ){//para el espacieb£3]=-eo?g*k2/(LpíKJ - vot(g+k3/MJ/Lp - (fijiík«g/Lp í fid_otk3)/M¡bE23a-eoííg+k3/HJ/Lp - voífc4/(LpíH) - ííbCi3=eoí(k2-k4/Lpí/K+voib[03=eo;

void TPenduloHindQw: ;Estado2(void){/ /para t a velocidadb E 3 ] = B o í k l í g / ( L p í l i ) i

Í f i _ o í k 4 t g / L p f f i d _ o t k 3 ) / « ) ;

Page 141: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

139*

b[i3=-(eoíki * voík4/Lp i f i j j f k S * í id_DÍk4) /H;

void TPenduloHindos: ¡estadoStvoidií// para e! ángu lo£3[33=(vom/Lp + f id j3 Ík í í /H ;b[23=UeQÍU * VQU2) /Lp + fi_oíki t Íidjjík2}/Hib[i]=ü_oíík2-k4/Lp]/h-f- í id_o;

void T{// para la derivada del ángulob[3]= fijjtkltg/ÍLpíHijb[23=íívoiki r fi_oígík2)/Lp + íid_oíki)/H;b [ í ) = í e o í k H - v o t k 2 ) / Í L p í H )b[0]=fid_o;

void TPendu lo t í indüH; :Haxiao5(vo idJ{

Te5p=fab5(es[ies]J;if (f iaxEspUespí11axE5p=TB5p; / / obtener el naxi io v a l o r del espacio

Tdesp=fab5[ss_d[ ie5]) jif ( H a x D e s p < T d e s p )1llaxDesp=Tdesp; // obtener el aiaxiso valor de l a velocidad

Tang=íabs(anües3)jií (íÍ3xñng<Tang)Hsxñng=Tang; / / obtener el eaxiao v a l o r del á n g u l o

T d a n g = f a b s ( a n j l C Í B s 3 J jií (HaxDang<Tdang)HaxDang=Tdang; // obtener el maxiíso valor de la vel angular

Tfue=fabs(fue[ies])jH íHa)!Fue<Tfue}HaxFue=ífuej // obtener el naxiao valor de la fuerza

)

l!\\n para realizar polos reales diferentes9

void TPenduloHindoí*; :Cuat roPRDiíer (void ííHDC hDC; /í gestor del contexto de visuslización í/HBRUSH hBrDchaCele, hPrsvBrochai; // brocha para 1a barraHBRÜSH hBrochaAzulj hPrevBrocha2; // brocha para la barraKPEN hCeles, hPrevij // pluaa para la barraHPEN hAzul, hPrev2; // piusa para la barra

•float porcentj

Page 142: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

140

BQQL SiBarra= FALSE;char stringo[10],ístrptrQ;double aOjal ,a2,a3, t j

doubla aJijbMfijCMfi,d_fi,a_dfjbjíjcjf,d_df;int j=0j n=0, centraüj centraY, x iz^ j xder, yarr, ybaj, longitud;

hDC= BetOC(HHindo»)i l\r el contexto ds visualhación í/SetCapturBíHUindow); ft bloqUBO del ratón í/hPrevCur5or= SetCursorthHourGlaEs) j /? caabiar al cursor de espera í/centra)¡=anchoV6ntx/2-4tBicsntraY=3ltoVenty/3;

Í1(anchol/Bntx>=í50 kk altoVsnty>=i50)

CSiBarra=TRUE;TextOutlhDCjCentra^CBntraY, "esperar" ,7);

hfirochaCele=CrBatBSoIidBrush(R6B(0, 127,255)) ¡hCBlB5=CreatBPfiníPSJOL3DJiJR6B(0JI27J255});hPrsvBrochai=(HBRUSH)SBlfictObJBct(hDC,hBrochaCele)ihPrBví^HPENJSelectObjectíhDCjhCEles);

xizq=anchQVentx/4;

yarr=2UUoVfinfcy/3-10jybaj=2taltoVenty/3+lQi

TextQut(hDCJ(anchQVBnh/2íJyarr-17J"Or,2) iTBxiQutíf)DCJxder-i5Iysrr- i7J"IOOrJ4Jj

SelectQbJBrtíhOCjhPrevBrochai);DBÍBiBÜbjectíhBrGchaCeleJ;'

DslBteQbject(nCsles}j

// los p deben ser nsgativos

aO=pUp2tp3íp4¡

k2=-LpíMíai/g;

k3=-LpíH*ÍLpt30/g-í-g/Lp*a2Í¡k4=-LpíHMLptal/g+a3)i

ac[0][0]=ijac[03C13=liac[0]C23=l¡

Page 143: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

a,

'o.

-ti u >e C

*Ji_

j

ce — 1>

-+,

II 11

>e

>e

co

•— -

ir" ir

J

c —». ti

!f< "O ' —

'

CO

lO

Ul

r~f

O

d.

c

oB

J -t".

n

• —t-í" ~~"

- DJ

— 1

BJ

*~ '

0- '-, M

">J

1 1

n

cr

l_^

1*-

- i-.

ii

U>c

a<

f-O

t—i —

i i_

j

n^ l_^ ^—

-U •O 1 —

1

co t_-

rn n cu Q

m

^-U

l *^

UJ -d

O-

cuo -i

'>•)

nj

, —

.—

ru

is,

'o.

m u s< OJ

i — i

n

O-

B

'«, 'a

. 'c

ID

id

rII

11>e

a

I-J

t—

í

" ^T

T1 Í

U!

f-1"

"Orn

cu

a<

u

ri

a-

-i'm

, '«

ii

n

a.

-i

-i

-i

nn

ri

nn

nn

nr

in

nr

i

n

u

u

uII

II

II

II

t_

i—.

i—,

ij

.rf.

"CJ

"O

"O

~O

1 —

(_

„(-_

"O

"O

"O

•es

-13

inO

-l

Ui-

J=-

Page 144: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

142

hBrachañzul=CrB3taSGÍidBru5hfRSB{OíOJ129j};hAzuI=CreatBP8níPSJOLIDJl IRGB(0J0Jí29)JihPrevBrocha2=(HfiRUSH)SelectObjecfcthDCJhBrochaAzul)ihPrsv2=(HPEH)SelsctObjPct(hDC}hAzul);

* b_estexp( p2í t)-í- c_eslexp(p3U) + d_ssÍBXp(p4í t ) ¡

esJ[ÍBs3=ajBl:fixp(plU) + b_deíexp( p2ít )+ d_da fBxp {p4 í t } }

i cjiíexp(p3ít) + dJiÍEXpíp4ít);an_d[is5j=a_df?BXp(piH) + bJfíexp(p2H)

-f- cJffBXp(p3U) * dJf ÍBXpíp4t tJ i

// barra de porcBntaJEi1(SiBarra~TRUE)

j = 0 j // contador 100n=n+ljporcBnt=anchoVBntxt(0.25+0.05tn)j

5trptro=itoa(ntiOj stringo, 10);i ongitud=5 trlanl siringo)}TpxtOut(hDC)£anchoyBntx/2-16) íyarr-17J u ' , 4 ) }TextQut(hQC)íanchQVBntx/2+3-8ÍÍongitud),yarr-17,5trptro, longitud] ;xizq=(int)porcBntj

SelBctQbject(hDC,hPrBvBrocha2);DBlBtBabJBct(hBrochaAzul);SBlBctObjfictíhDCIhPrfiv2];DBletsObjsctíhñzulj j

SalCursorlhPrsvCursor); /í restablecer el cursor por ds-fecto í/RaÍBasaCapturBÍ); l\r eí ratón í/

TaxtQutíhBCjrentra^csntrsY, ' " ,14)5TEXtOut íhOCjCsntraXHOjCBntraY/L lSTÜ' jSJ iHassageBsepíO);RsleaseDC(HHindow,hDC)i /í libarar E! contexto de visualización í/

Page 145: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

143

// Dos polos Reales iguales y los otros dos diferentesvoid TPenduloMindowíiDosPRDyBQsPRKvQid)

HDC hDC; /? gestor del contexto de visualización IIH8RUSH hBrochaCele, hPrBvBrocnai; // brocha para la barraHBRUSH hBrochaAzul, hPrsvBrocha2¡ // brocha para la barraHPEN hueles, hPrevI; // píusia para la barraKPEH hftzul, hPrsv2j // pluisa para la barra

íloat porcsnt;BOOL SiBarra= FALSE;char stringoüOjjístrptrojdouble 30,31,32,33,1;daab 1 e a_es, o_es, C_BS , d_es, a_de, b_de, c_de ¡ d Je jdouble a_í i,b_í i jc_í i ,d_f i,a Jf, b_df, c_df,d_dí;int j=0, n=0, centraX, centraY, xizq, xdsr, yarr, ybaj, longitud;

h0C= G e t D C ( H H i n d o v í J j tt establecer el contexto ds visualización í/SstCapturstHHindow); /í bloqueo dsl ratón í/hPrevCur=or= SetCursoríhHourSíass); / í caabiar al cursor de espera i/csntraj£=anchQl í íentx/2-4íSjcen t r aY=a l toVen ty /3 i

iftanchoVsntx)=150 && altoVenty>=i50]/

Si6arra=TííUEjTextOutíhDC, centrad jCentraY, "esperar", 7);

hCe lES=Crea t eP8n íPS_SOUD, i l RBB(0 J i 27 l 255J J ¡h P r e Y B r o c h a l = ( H B R U S H ) S e l e c t O b J B c t { h D C , h B r Q c h a C e l e ) ;h P r = v i = í H P E N 1 ) S E l e c t O b j e c t í h D C , h C e l B s 3 ;

x Í2q=anchoVsn tx /4 ;íder : :anchoVBntxí3/4)y3r r=2ta l tQVanty /3- iO¡ybaj=2íaltoVenty/3+10j

TextOutíhDCJ(anchoVentx/2)Jyarr-i7J uOr

Selec tObJ3ct (hDC,hPrev8rochal ) ;OeleisObJBctínSrochaCele);S e l e c t O b j e c t ( h D C , h P r B V Í ) ;D e l e t e Q b j e c t í h C e i e s j j

aO=piípiíp2tp3;ai=-plíplííp2-f-p3í-2tplíp2íp3;

Page 146: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

«tj

cu

co

ro

—.

o.

n

—*,

u '-+.

*—*,

ui

ro

ro

m

ru

mII

n

cu -i

i—

-O

n

ui

ui

ui

*••>.

DJ

airo

10

iu

ro

tn

ti

u

n

o-

Ul

"O

"O

KJ

t~

* 1—

-O

i—

u—

-o

^~~

€^i

Í2-

o

<I>

f*rl

h-O

I—

C

>

CnJ

t-O

Í I

CN

II

II

II

U

II

II

II

II

K3

I—

O

- »J

1-0

II

II

II

II

II1

l—

I NJ

-t-

TD •>

•(

t~ <Íi

I—

.—-

.—

oj

oír~

i—

••—

•=>

T3

"O

•— --,

Page 147: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

145

HaxE5p=Q,0; // inicializar a csro para que no se hagaMaxDesp=O.QjHaxAng=Q.Q¡ // tose costo siaxism sí valor anteriorr1axOang=0.0; // y no 58 escalan bisn los gráficosMniiCiis-fl ("| .MQAI UE-V • V J

95x1=1000; // hallar aaxino valor d» simulación

n8rochdñzui=Cr23t£SQÍidBriishífiGB(0J0)í29))jhñzul=CrsatePentPSJOL!DJiJR6B(0,Oíi29))iíiPravBrocha2=íHBRÜ£H)SslsctObJ2ct(hOCJhBrDrhaAzul);hPrev2=(KPENÍS3lectObJBct(hDC,hAzul)i

foríiBS=0¡ie5<=999¡ies*+í

+ c_esíexp(p2ít) -i- d_S5_d[is5]=ía_de + b_deít)ÍBXp(pnt)

* cJs¡sxp(p2U) + dJsÍBXp(p3H);anCi=5]=(a_fi + bJiít)texp(piH)

t c_fiíexp(p2U) i d_fi ísxp(p3ít);anJ[ÍBs]=(aJf -t bjíttjíespípiít)

i c_dTÍsxpíp2U) -f- djfíexp(p3ít);"

// barra ds porcBntajsifíSiBarra==TRÜE)

íj=0¡ // contador ÍOOn=n^i¡porcent=anchoVBntxU0.25+0,05ín)iRsctangleíhDCjXizqjyarrjíintJporcentjybaj);strptro=itoa(ntiO, siringo, 10);longitud=5trlBnístringoí;TextOutthDCjtanchoVBntx/Z-UIjyarr-iy," a,4J¡TextOut(hDCJ(anchoVBntx/2+8-8Hongitud)íyarr-17J5trptroJ longitud )jxizq=£intJporcBntj

SBlectObJBctíhDC,hPrsvBrocha2)¡DalEtsQbJ3ct(h3rochañzul)jSelBctOfajsciíhDCJhPrfiv2)iDslBteObjsctíhfizull i

DBiCursoríhPrevCursorí j /í rastabiecBr si cursor por defecto í/ííslasseCaptureO; /í desbloquear si ratón í/

Page 148: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

ai

ja.

CU

d-

n

o-

cu

1:0

nj

~-.

li

li

>-.

ui

--,

-ti

*.

—1.

*.

Ul

i-*-

p—•

»-••

i— -

i— •

rn

a,

-ou

u

u

u

n

o.

o.

n

o-

li

li

o.

o.

o.

ra

ra

ro

ro

mu

n

o-

-ix

C

O

tu

I -

I I

ra

u)

ru

IDu

it

u

il

i—

o-

o

--

o

o

n n n

ut

ai

O)

DJ

tw

OJn

n

n

n

ri n

II

11

II

II

II

II

ni

ru

UL>

cun

n

n

n

II

U

II

II

Jí-

O

'J

I-O

t—

II

U

II

IIl

il

ir~

r~

i—

i—

-o

-o

-o

nnZK

rz

; ra

: za

r

W

DJ

O>

DJ

••.'J

K

3

"—

•=>

II II

II

II

Page 149: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

148

bjH=x(l ] jc j f=x[23jd_df=x[3];

HaxEsp=0,Oj // inicializar a cero para qus no =e hagaHaxD2Sp=G,0;H£üAng=0,Q; // tose coso (saxiso el valor anteriorHaxDang=0.0; // y no se sscaíen bisn los gráficasHaxFue=0,Oiítaxí=1000¡ // h a l l a r ffiaximo valor de sismlacion

h ñ i u l = C r e a t E P e r í ( P S _ S O L I D í l J R G B í O J 0 ) 1 2 9 ! ) ;h P r 2 v B r o c h a 2 = ( H B R U S H J S e l s c t O b j B c t ( h D C I h B r o c h a f t z u l ] jh P r B v 2 = : H P E N Í S e l e c t O b j e c t í h D C , h ñ z u l ) ;

íoríie5=Q;iss<=999;iss-H-)

=la^B5 + t i íb_es f t í c_e5 /2 J í í exp{pHt )

esJEÍB5]=(a_de + t í tbje * t t c je /2}} íexp(p l t t )+ d _ d E Í B X p ( p 2 í t ) ;

an[ÍB5]=(aJi + t t (b_ i i + t í c j i / 2 ) ) í e x p ( p l í t )f dJ i í sxp(p2U) ;

anJCÍB5]=(a_df * t í (bjf + t í c _ d í / 2 ) ) Í 6 X p í p l í t )i- d _ d í Í B X p ( p 2 U ) i

t=t*delta.T¡

// barra de porcentaJBi1ÍBiBarra==TRUE]{3=3+1;if(j==100]íj = 0 j // contador 100n=n-f-l jporcent=anchoVentxí (0 . 25+0. 0 5 í n í jR B c t a n g l e ( h O C j X i i q , y a r r } í i n t ] p o r c e n t j y b a j í ;s t rp t ro= i toa (nnO J s t r i ngo j 10);iong i tud=s t r l en(5 t r ingo j jTextOi í t (hDC i íanchoyentx /2-16í J yar r -17 J ! l ' , 4 ) ;Tsx tOut (hOCj(ancnQVBntx /2 i8-8 í longitud J j y a r r - l J j S t r p t r O j l o n g i t u d ) ;x i z q = ( i n t ) p o r c B n t ;

SelsctObJBctíhDCíhPrevBroch32) ;DsleteQbjectíhBrochaAzulí;

Page 150: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

149

SelectGbject(bOC,hPrev2);DelfiteübjectfhflzuDí

SetCursoríhPreYCursor); /t restablecer el cursor por defecto í/BeleaseCaptureOi /i desbloquear el ratón í/

TextOut(hDC,cen traX(centraY¡B ", 14) jTBxtOutíhOCjcantraX+IOjCentraY/LISTQ'^JiMessageBeep(0)jReleaseDC(HHindoWjhDC); /( liberar el conisxto de visualización t/

void TPenduJQfeíindoví; iCuatroPRIgusl {YDÍ

{

HDC hOCj /í gestor del contexto de visualizado!! íHBRUSH hBrochaCeís, hPrevBrochai; // brocha para la barraHBRUSH hBrochaAzulj hPrevBrocha2; // brocha para la barraHPEN hCsleSj hPravij // piusa para la barraHPEN bAzul, hPrev2; // pluisa para la barra

float porcent;BOQL SiBarra= FñLBE;char 5tringo[iO]jÍ5trptrojdouble aOjai,a2,a3,t;doubls a_es,b_esJc_e5,d_BSJa_deíb_deícjleJdjlB;doubíe 3_íijbji,c_fijd_fija_dfjb_df,c_df,d_ofjint j=0, n=0, centraX, centraY, xizq, xdsr, yarr, ybaj, longitud}

hDC= 6etDC(HHindQB)i /í Bstablecer el contexto de visualización t/SetCapturelHrlindoK}; /í bloqueo del ratón t/h,PrevCursor= SetCursoríhHourSlassíi /i casbiar al cursor de espera t/centraX=anchoyentx/2"4í8;centraY=3ltoyenty/3;ifísnchoVentxMSO Si altoVanty)=i50){SiBarra=TRUE¡TEXtOutíhDCjCentra.^cEntraYj" esperar",/);

ñBrochaCele=CreateSolidBrush(R6B(0Ji27J255Í3;hCele5=Cre3tePeníPS_SOLIDJiIí?S8(0J}27J255));hPrevBrocha^tHBRUSHJSelectGbJEctíhOCjhBrochaCsls);hPrev^tHPEfíjSelectObjectíhDCjhCEles);

xizq=anchoVentx/4;xder=anchoVentxí3/4;yarr=2íaltoVsnty/3-IO¡ybaj=2íaltoVenty/3+10i

TextOut(hDCIxizq)yarr-i7}"Orí2J;TB«tOut(hDCJ(anchoVsntx/2íJyarr-i7,HOrJ2í;

SelfictObjfictíhDC, hPrevBrochai í jDeleteObjectífiBrochaCBleíj

Page 151: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

*»•;'

i—

-o

n_

.

ODJ

>>J

a,

d.

a,

o.

ui

.-*•

m

m

ro

IB

rn

cu[l

ii 11

u ri

a.

o-

n

trr

co

ru

-—

li

li

i—

m

-•»

10

ro

ro

ru

ui

rr

^p

ui

ui

ui

ui

m

tu

PJil

11

11

it

n

ex.

-i

OJ

QJ

EU

tt

i U

Jn

n n n n

-• -• —

•—

o

i—

i -a

n n n

i—•

i—

-C>

C>

JO

(~

- O

»4

r-

J

l— O

tl

M

hJ

I—

[1

II M

II

II

It

II II

II

II>

J O

«O

H—

I

-O

-O

-C?

tu

UJ

UJ

DJ

I C

r-

I -O

-o

i— -

o

UJ

•-•

ai o

Page 152: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

151

c_fi=xE2]¡d_fi=x[3];

// para la derivada del ánguloestada4f}jSisEcuacionesí);ají=x[0]¡b_dí=x[i};c_df=x[23¡

ítaxEsp=0.0; // inicializar a caro para que no se hagaHaxDesp=0.0;í!axAng=Q.O; // tose COÍSQ aaxiso e! valor anteriorMaxDang=0.0; // y no se escalen bien los gráficosr1axFue=0,0;Haxl=1000¡ // hallar (Baxiao vaior de sismladon

hBrochafizul=CreatsSoIid8rush(RBB(0, 0,129) l jhAzubCreatePeníPSJOLID, 1^68(0,0,12911 jhPrfivBrocha2=tHBRÜSHlSelectObject(hDCíhBrochaAzull j

hPrev2={HPEN)SelBctObJEctíhDCIhA2uU;

foríis5=0jie5<=999;iss-ff]

e5[ÍBS] = (3_S5 "f- t í (b_65

+ tMc_es/2 + tídB5_d[ies3=(aje + tííbje

i- t?(*c_de/2 + t td_de/é) ) ) íexp(p i í t ) jan[ies]=(aji + títbji

+ ttícJi/2 ^ t¥d_f i /6)) ) t8xpíp l í t ) ;anJCÍBs3=(a_df + tí(b_df

+ t* (c_df /2 + t td j f /ó)))?expípl í t )¡íue[ÍB5]=-(kUBs[ies]-H;2ÍBS_d[ie5]H3tanCies]-Ki4íanJ[ies]í;

t=t+deltaTj

// barra de porcentajBii(5iBarra==TRUEí

if(j==1001íj=0j // contador ÍOOn=n-f-i;porcEnt=anchoyentxí(0,25+0.05tn);RsctangleíhDCjXizqjyarrj (intjporcentjybajj j5trptro=itoa(nílO, siringo, 10);longitud=5trlBn(5trlngoJiTe>!tOut[hDCí(anchoysntx/2-i¿)J)'arr-17J11 a , 4 ) jTsxtCut(hDC,(anchoyBntx/2+8-8ílongitud)Jyarr-17;5trptroJ longitud);

Page 153: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

SElectflbject(hDC,hPrevSrocha2)¡DeJBÍBGbjectlhBrüchaftzuDjSeiectGbjsct(hDC,hPrev2);DsletEÜbjectíhAsul);

SetCursoríhPrBvCursor); /í restablecer el cursor por dsfscto t/RslBassCapturEf}; /i dEsbloqusar si ratón í/

TBxtOutíbDCjCentraXjCentraY,1 "^íiTsxtOutíhDCjCsntraUiOjCBntraY, "LISTO" j5);MessageBeepfO);

/í libsrar E! contBxto de visuaíiíación t/

void TPenduloSindoHüDQBPRIyDosPRHvbidJ{HDC hDCj /í gBstor del contexto dB visualización t/H8RÜSH hBrochaCBlB, hPrEvBrochaij // brocha para la barraHBRÜSH hBrochaAzulj hPrevBrocha2¡ // brocha para la barraHPEN hCslBSj hPrevij // pluaa para la barraHPEN hAzulj hPrEv2; // pluaa para la barra

íloat porcsnt;BOOL 5iBarra= FALSE;char 5tringoEiO]fístrptro¡dQUblB 30,31,32,33,1]

doubls a_E5,b_B5Jc_esJd_E5,ajiejb_dEjC_dB,d_dE;double a-íijb_fijc>_fi,d_fi,3_di ,b_df ,cjif ,djJí¡int j=0j n=0j centraX, csntraYj xizq, xdsr, yarr, ybaj, longitud}

hDC= 6etDC(HHindoH)¡ /í Bstablecsr el contsxto de visualización í/SBtCapturBÍHHindoH)) ' /I bloqueo ds! ratón í/hPrevCursor= SetCursor(hHour61ass); /í castbiar al cursor dB espera i/CBntraX=anchoVentx/2-4tS;centraY=altoVenty/3;if[anchoVentx>=i5G && altoVenty>=150J/

SiBarra=TRUE;TextQutfhDC,centra*,centraY,"esperar",7)j

hBrochaCele=CreatBSolidBrush(R6B(0,127,255))jhC3le5=CreateP6n(PS_SOLIOJl,R6B(0J127J255)hhPrevBrochal=(HBRUSHJSelectObjectíhDC,hBrQchaCBle]¡hPrBVl=(HPENJSfilectObJBct(hDC,hCeles)i

xizq=anchoVEntx/4jxder=anchoVBntx?3/4;yarr=2taltüVenty/3-iO;ybaj=2talfcoVBnty/3+10j

Page 154: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

-153

Rec tangís

ÍBxtOut (hDC 3 (anchoyen tx /2 ! J ya r r - i7 /0 / : ' 1 J 2 ] ;Tsx tGut (hDC J xder - í5 J ya r r - i7 ! H iOO) : • ' ,<!} j

S B U c t Q b j e c t t h O C j h P r s v B r Q c h a i ) ;De í s i sObJBc t (hSrochaCBÍe ) ;S e l e c t O b J E c t i h D C j h P r e v i J iD e l e t e O b j B c t i h C e l e s J j

// los p deben ser negativos

aQ=pUpltp2íp2¡a i = ~ 2 í p i í ( p 2 í p 2 + p U p 2 ) ;

ki=-Lpt«íaO/g;

ac[0][0]=l;ac[0][13=0¡ac[0][2]=ija c C O ] C 3 ] = O j

3CÜ3ÜH;ac[i][23=-2tpi-p2;

•ac[i][3]=í;ac[2][0]=p2í(p2+2ípi);3c[2][Í]=-2íp2;acE2J[2]=pi !{p i+2tp2) ¡ac[2J[3]=-2tpi;ac[3][0]=-plíp2lp2;3C[3]Ei]=p2tp2;3c[3][2]=-pitpiíp2;3c[3][3]=pltpij

/ /para el espaciaestadolOiSÍ5EcuacionBs( J ;a_es=x[03;

d_BS=x[3];

/ / pa ra la VEloc idadfi3tado2()jSisEcuacionesOjajE=x[0]j

Page 155: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

155

j=0j // contador 100n=nU;porcent=anchoVentxí(0.25*0.05ín);RectangleíhDCJxÍ2qJyarrJ(int)porcent,ybaj)i5trptro=itoa{nUOj siringo, 10);longitud=s trien (siringo);

TBXtQut(hOC,EanchoVBntx/2i-8-8ílongitijd)Jyarr-17J5trptrOj longitud);xizq=(intjporcentj

3electGbJEcUhDC,hPrevBrDcha2);DeleteObjectí hBrochaAzul);SelectGbjectíhDC,hPrev2);DelsteQbjsctíhAzui);

SBtCursor(hPrevCur5or); /í restablecer el cursor por defecto \ReleaseCaptureUj /í desbloquear el ratón t/

TextQutfhDCjCentraXjCentraY,' ",14);TextOutíhDCIcentr3.UIOJcentraY(HLiSTOB,5)jMessageBeeplOJjReleassDCÍHWíndoWjhDC); /í liberar el contexto de visuaiización t/

void TPenduloWindoH: ¡DasPRIyUnPCCo(void)(HDC hOC; /í gestar de! contexto de visuaüración i/HBRUSH hBrochaCslej hPrevBrochai; // brocha para la barraHBRUSH hBrochaAzul, hPrevBrocha2j // brocha para la barraHPEN hCeleSj hPrevl; // pluna para la barraHPEN hñzul, hPrev2; // pluaa para la barra

float porcent;SOOL SiBarra= FñLSE;char stringoCiOljtstrptro;doublB aO}al,a2,a3jt;double a_es,b_es,c_B5íd_fiSJa_de,b_dBJc_dp)d_de;double ajijbjijcjijdjijajfjbjdf jC_df ,d_df;int j=0, n=0, centraX, centraY, xizq, xder, yarr, ybaj, longitud;

hDC= SetDC(HHindQw); /í establecer el contexto de visualizadón (/SetCaptureíKHindowíj /í bloqueo del ratón í/hPrevCursor= SetCursoríhHourBlass); /í cafsbiar al cursor dB Bspera í/CBntraX=anchoVsntx/2-4í8;centraY=altüVenty/3iif(anchoVBntx>=150 *t altoVenty>=150)íSiBarra=TRUE;TBxtOut{hDCJcentraj(ícBntraYj"B5pBrar!'j7);

herQchaGBlE=CrBataSolidBrush(RSBÍOJ127}255)íjhCeÍ65=CrBatBPeníPSJGLIDJl)R6B(0!127J255));

Page 156: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

«r.

cr

iw1

I

i—

•=>

•—

o

iii

cu

cu

uj

ni

in

n n

n

n

II

II

II

II

H

|| u

U

II

II-

-O

| t—

NJ

f-

O

C-J

N

J

QJ

QJ

JJj

<=•

<=•

o

•=>

<>j

r-o

i—

•o

— -

- w

. ._

.

.TS-

:re

- 3-r

a-

t--*

- O

-J

KJ

1—II

II

II

[]II

II

II

U

CI

CTJ

C

3

LD

(O

IH

lU

(D

ro

ra

ID

IDil

n

n

n

-U

i>J

—-

PJ

^-

—=3

1-J

>e

n ja

t-

.Z

J-

t-J

O

•*<

J3

•<:

oj f

ID -i

*-;

n -i

cu

i-*-

l -i

>e

t— -i

^~.

~~j -

hJ -

S

<•

u

Q,

CD

rD

f-O

O

J C

U

o

o

-e:

•<:

ül

Oi

Page 157: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

157

cj!s=x[2]¡dj?s=x[33;

//para la velocidad

estado2[)}

SisEcuacionesOj

bje=x[13;c_de=x[2j;

d_de=x[33;

// para el ángulo

25Íado3{) ;SisEcuadonest);aJi=xEO];b_fi=x[I3;cji=x[2]¡dJi=xE31;

// para la derivada del ángulo

estado4();SisEcuacionesO;ají=x[0]jb_df=x [ I3 ic_df=x[23;dj f=x[3] j

MaxEsp=O.Oj // inicializar a cero para que no se haga

Maxñng=0,0¡ // tose coso saxiao el valor anteriorHaxD3ng=0,0; // y no =e escalen bien los gráficosHaxFue=0.0;Haxl=1000¡ // hallar saxifao valor de sisulacion

hBrochañiui=CrsateSoIidBriish(R6BÍOJ0JI2?));hAzul=CreatePen(PS_SOLlD, i ,RGBÍOJ0J i29)í ihPrev8rocha2={HBRÜSH}SelectQbject(hDC!hBrochafizul)jhPrev2={HPEN)Selectübject(hDCJhñzul);

a_es + b_est t ) íexp(pi t t ) + (c_esícos(p3ít)+ d_e5Í5Íníp3U)]íexp(p2ít);

e5_d[ies3=ía_de t b_oeít}fexp(pi i t) -i- {cjeícos(p3tt)-f d_deís in(p3t t ) ) íexp(p2í t ) ;

anEÍB53s(aJi t bJiít)ÍExp(piUí * (cJiícosIpStt)-í- djií5in(p3lt]]?exp(p2tt)i

an_dües3=ía_df t b_df í i ) fexp(p i t t ) + (cjfkosípoít)-í- d j7ts in£p3í t ) ) íexp(p2í t ) j''

t=t-f-dBlíaT;

Page 158: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

158

H a x i f l r o s [ ) j

/ / barra dB p o r c a n f c a J Bi f{SiBar ra==TRUE)

j=0; // contador 100n=n+i;porcenbanchoVentx i iO .25m.05 in ] ;R e c t a n g l a í h D C j X i z q j y a r r j í i n t J p o r c e n t j y b a j ] ;s t rp t ro=i toa{nUQ } stringo, Í 0 ) jl o n g i t u d = s t r l B n { = t r i n g o ) jT e x t Q ü t ( h D C J í a n c h D V 2 n t x / 2 - i ¿ ) 3 y a r r - 1 7 J " " , 4 ) ;TextOut(hDC,íanchoVBntJ!/2í8-8í longitud | jyarr-iyjStrptro, longi tud);x i zq=( in t )po rcen t ;

SelectObJEct(hDC,hPrevBrocha2)jDeleteGbJBctíhBrochaAzul};SeiectQbject{hDCjhPrev2);DBlEteGbjectíhñzul);

SetCursoríhPrsvCursorlj /í restablBcer e! cursor por defecto \RslBaseCapturBÍ); /? desbloqUBar el ratón í/

ÍEXtQutíhDCjCentraX+iQjCsntraY/USTQVM;

/i liberar el contexto de visualización Í7

void T P e n d u l o N i n d o w ü D o s P R D y U n P C C o í v o i d J{

HDC hDCj /( gestor 'del contexto de yisualización í/HBRUSH hBrochaCBlgj hPrevBrochal; // brocha para la barraH8RUSH hBrochañzul, hPrevBrocha2j // brocha para la barraHPEN hCeles, hPrevi; // pluma para la barraHPEN hAzul, hPrev2; // pluma para la barra

iloat porcent;BOOL SiBarra= FñlSE;char stringoCKOjfstrptro;double 30,31,32,33^;double a_as í b_es j c_es j d_e5 j a j le j b_de j c j le j d_dejdouble a_ í i J b_ f i ,C M f i J d_ f i J a_df ,b_df , c_d í } d M d í ;int j=0j n=0, centraX, centraY, xiiq, xder, yarr, ybaj, longitud;

hDC= 6etDC(HHindoiíJ; /í establecer el contexto de visualiíadón t/SetCaptureíHkindoH); /t bloqueo del ratón UhPrBvCursor= SetCursoríhKourSlassJj /I cambiar al cursor de espera í/centraX=3nchoVentx/2-4t8¡

Page 159: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

159

centraY=altoVenty/3|if(anchoVentx>=150 filt altoVenty>=15.0)íSiBarra=TRÜEjTextQut(hDC, centra* ¡centraY, "esperar", 7) ;

hCeles^CreatePeníPSJQLlDjí 68(0,127, 255)];hPrevBrochai^HBRUSHJSeiEctGbjectíhDCjhBrochaCele);hPrevHHPENJSelectÜbjectíhQCjhCeles);

xirq=anchoVentx/4;xder=anchoVentxf3/4;yarr=2íaltoVenty/3-iOjybaj=2íaltoVenty/3HO;

T e x t Q u t [ h D C J í a n c h o V e n t x / 2 } , y a r r - i 7 / f l O r , 2 ) ;T e x t Q u t í h D C í x d e M 5 ) y a r r - i 7 ) i I O O r í 4 ) ;

SelectObjectthDCjhPrevBrochaiJiOeleteObjectíhBrochaCele);SBlBctObject(hDC,hPrBVÍ);DeleteQbject(hCeles)j

// los p deben ser negativos

aO=piip2í(p.3íp3+p4*p4);ai=-2ípiíp2íp3-íp3tp3+p4tp4)í(pitp2

a3=-(pi-tp2+2tp3};

ki=-LpíhtaO/g;

k3=-Lp»HI(LptaO/g+g/Lp+a2Jik4=-LplHI(Lp»ai/g+a3}¡

ac[0]CO]=i;ac[03ClMi

ac[03C3]=0;ac[i][0]=-p2-2íp3;3c[l][i]=-pi-2íp3;ac[13C2]=-pi-p2-p3iac[13[3]=p4;ac[2][03=2íp2íp3+p3tp3+p4tp4;ac[23[i3=2ípiíp3-f-p3íp3ip4íp4;acE2][2]=piíp2+pÍíp3-frp2íp3;ac[23[3]=-pi-p2j

Page 160: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

160

ac[33[23=-pltp2tp3;ac[3]m=plíp2tp4;

//para el espacioestadoií);SisEcuacionesO;

a_es=x[03jb_es=xü3;c_es=xC23id_es=x[33;

/ /para la velocidadestsdo2();SisEcuacionesO;a_de=s[0];

bJe=x[Í3;c_de=x[2] j

djÍ2=x[33}

// para el ánguloestado3U;SisEcuaciones[)j

aji=x[0]i

c_fi=s[23idji=x[33j

// para la derivada del ángulo

estadoMJjSisEcuacionesOj

cjf=x[23¡

t--0

HaxEsp=0.0; // inicializar a cero para que no se hagaHaxDesp=Q.Q;MaxAng=0.0; // toie CDÍJO ataxiao el valor anteriorHaxDang=0.0¡ // y no se escalen bien los gráficosHaxFue=0,0;Haxí=iOOO; // hallar aaxiío valor de siaulacion

hBrochañiul=CreateSolid8rU5híRSB{OjO(i29)} jhAzul=CreatePen(PSJOLlD,l lRBB(0J0,í29))ihPrevBrocha2=(H8RÜSH)SeísctObject(hOCJh8rochaAzul);hPrBv2=(HPEN)SBlectObject(hDC,hft:ul) ;

for(iss=0jie5<=999;iesif)

í

es[ies3=a_e5ÍexpípUt) i b_esíexp(p2ít)+ (cj25tcos{p4ít) i dMe5Ísin(p4H))íexp(p3H);

esj[ie5]=a_detexp(piít) + bjeíexp(p2tt)

Page 161: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

161

* (cJe*cos(p4U) * dJeísin(p4H)}íexpíp3H)jan[ies]=aJiisxpípiH} + bjiíexp(p2it)

t Ícjiíco5ip4ít) + d_fií=iníp4Umexp(p3H)jan_d[ies]=a_dílBXp(plÍt) * b_dftexp(p2Uí

+ (c_dttcos(p4ít) + dJÜ5Íníp4ít)} Í2Xp(p3tt) j

t=t+deltaTjílaxisosí);

// barra de porcentajeií(SiBarra==TRUE)íj-jtl;if(j"iOOJíj=0¡ // contador 100n=n+i;porcsnt=aíichoVBntxí(0,25+0.05ín);RsctanglBÍhOC,xÍLq,yarr , ( int)porcent,ybajJ istrptro=UDa(nflO, stringoj 10);longitud^strlEnlstringo);TBXtOut(hDCJ(anchoyentx/2- i¿)Jyarr- i7J M B } 4 J ;TextOut(hDC,(anchoVentx/2+8-8Uongitud)Jyarr-17í5trptro, longitud) jxizq=(int)porcent;

SfilBctObJEct(hDC,hPrevBrocha2íiDeleteObJECtíhBrochaAzuDjSBlectObjectíhDCjhPrevSJ;DsistsQbjEctfhñzul);

SeiCursorfhPrevCursor); /í rastablBcer el cursor por defecto t/ReleaseCaptureí); !\r el ratón í/

TEXtGutthDCjCBntraXjCEntraY,' V4);TextOutlhDCjCentraX+iOjCEntraY/LiSTO'jSJj

RelEaseDC(HHindoHjhDC); /í liberar B! contexto de visualización í/

void TPenduloWindow::DosPCCDistint(void){

HDC hDC; /í gestor del contexto de visualizaciónHBRUSH hBrochaCeíSj hPrevBrochaij // brocha para la barra

HBRUSH hBrochaAiul, hPrBvBrocha2; // brocha para la barra

HPEN hCslsBj hPrevl; // pluma para la barra

HPEN hAzu l j hPrev2; // pluna para la barra

float porcentj

BOOL SiBarra= FALSEj

char stringoCiOjjístrptro;

double a O j 3 Í j 3 2 , a 3 , t ;

Page 162: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

162

double a_B5,b_es J c_es J d_Es I a_de ( b_de J c_de J d_deidoub l s a j i j b j i j c j i j d j i j a j f j b j j f j c j i f j d j f jin t j=0, ÍFQ, cfi í i t raX, cent raY, x i z q j x d e r j yarr , y b a j , l ong i tud ;

hOC= B e t D C I H H i n d o s l i l\r el contaxto da visualiíación t/SetCapture(Ht í indoK): /í b loqueo d e l ratón t /hPrBYCursor= Sa tCursor lhHourBlass ) ; /í caabiar al cursor de espara t/cen t raX=anchoVentx /2-4 íB;csntray=3UoVenty/3¡

i f ( a n c h D V e n t x > = i 5 0 f t& a l toVenty>=150}{SiBsrra=TRUE;TextQutfhDCjCBntraXjCentraY, "esperar" j7)j

hBrochaCelB=CraateSolidBrush(RBB(Oíi27J255J)¡hCBlB5=CraatePen(PS_SOL!DíiíñSBÍÓJi27J255));hPrsvBrochaíMHBRUSHJSelactQbjectthDCjhBrorhaCele);hPrBvi=íHPENíSelectObJBct(hDC,hCBle5Íi

xiiq=anchoVfintx/4¡

yarr=2íaHoVenty/3- iO;y b a j = 2 f a l t o V e n t y / 3 - f i O ;

R a c t a n g l 3 Í h D C , x Í 2 q , y a r r , x d a r j y b 3 J ) ;T B X t O u t ( h D C I x i z q J y a r r - 1 7 , " O X " J 2 ) i

Tex tOu t ihDC J xde r - i5 J ya r r " i7 I 1 1 iOOr í 4 ) ;

5e lec tObjec t (hDC,hPrev8roch5Í ) ;D e l e t e O b j e c t í h B r o c h a C e l e ) ;S e l E c t O b j e c t í h D C j h P r B Y l ) ;D B l e t E O b j e c t í h C e l s s ) }

// los p deben ser negativos

a Ü = ( p U p H p 2 t p 2 ) t ( p 3 í p 3 + p 4 J p 4 ) ;a l = - 2 t ( p U ( p 3 t p 3 i p 4 í p 4 } i p 3 M p i í p i + p 2 t p 2 ) ) j

Ri=-LpíHíaO/g;

3c[0j[0]=i;ac[0][i]=0jacfO][2]=ijac[0][3]=0;ac[l3[0]=-pi-2tp3;

Page 163: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

164

hPrevBrocha2=(HBRUSHJSElectObjectíhDC,hBrochaftzul)jhPrev2=(HPEHJSElectObjectíhOClhftzul)j

B5[ies3=íaj is tcQs[p2t t í + b _ e 5 Í 5 Í n ( p 2 í t ) l í e x p ( p l H )+ (c_estcos(p4nj + d _ E s t B Í n ( p 4 i t ] } Í E X p { p 3 U ) ;

E5_d[ ÍE5j=[a j Je ÍcQs íp2 í tS + bJeUin{p2t t )HexplpUt)-i- (c_deícGs[p4Ui i d j s í s in (p4 í tn texp(p3 í t ) ;

an[ies3=íajiko5(p2tt) + b J i t s i n í p 2 U ) í > e x p í p i n }i (c_fi ícQ5(p4ít í + d_f i í s in (p4H)) texp(p3U) j

anJCÍBs3=taJ f t cos (p2UJ + b J í Í 5 Í n ( p 2 í t ) J t e x p ( p H t )+ ( c_df i ros [p4 i t ) 4 d J f t s i n ( p 4 H ) ) t e x p ( p 3 í t ) i

t= t+de l t aT ;

// barra ds porcantaJEif(SiBarra==TRUE)

íj=0; // contador 100n=n-fi;porcent=anchoVentxt (0.25+0. 05ín);

s t rp t ro=i toa(n t lO, siringo, 10);iongHud=s t r lEn(s t r ingo) ;TBÚOut (hDC J (anchoyEntx /2 - iM J ya r r -17 J 1 ' , 41 ; •TextQut(hDC,(anchol /sntx/2-í-8-8t longi tud ),yarr-17, strptro, longi tud };x i zq=( in t )po rcBn t ;

SE lec tObJEc t (hDC,hPrBV8rocha2 ) ;D e l E t B O b j e c t t h B r o c h a f t z u l l iS e l B c t O b J B c t ( h D C , h P r e v 2 J ¡D E l e t B O b J E c t f h f l z u l J ;

SEtCursor thPrevCursor ) ; /t res tablECEr E! cursor por defec to í/RslsaseCaptursO; ' l\r E! ratón í/

T E X t Q u t t h D C , centra*, c en t r aY , 1 " , 14 ) ;T e x t Q u t f h D C j C e n t r a X + i O j C a n t r a Y j ' L I S T Q 1 1 ^ ) ;f l s s s a g e B E E p í O ) ;R B . l E a s E D C ( H H i n d o H , h D C } ; /t l ibsrar E! contexto de v isua l izac ión t/

void TPenduloWindo»;¡DosPCCIgualesívoid)

Page 164: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

165

HDC hDC; /í gestar dsí contexto de visualización í/HBRUSH hBrocháCeíe, hPrsvBrochaij // brocba para la barraHBRUSH hBrochaftzul, hPrevBrocha2¡ // brocha para la barraHPEN hCeles, liPrevij // plusia para la barraHPEN hAiul, HPrev2j // piusa para la barra

fioat porcent;BQQL SiBarrs= FALSEjchar stringo[10],ístrptro;double aO,al,a2,33,cjdouble a_B5,b-e5Jc_B5Jd_B5,a_dBJbjÍE,cjle,djIejdoubíe a-fi,b_fi,c_fi,d_fi,a_d-f,bjf,c_df jdjf;int j=0j n=0, centra)!, centraY, xizq, xder» yarr, ybaj, longitud;

hDC= SetDC(H^indow); /í sstablscer el contexto de visualización í/SetCapture(HWindow); /> bloqueo del ratón í/nPrevCursor= SstCursor(hHourSlass); /í casbiar al cursor de espera í/centraX=anchoVentx/2-4*8jCBnfcraY=altoVenty/3¡ií(anchoVentx>=150 && altoVenty>=150){SiBarra=TRUE¡Tex tOut (hDC,cen t ra ! ( j cen t r3Yj"espBra r 1 ' , 7 ! ;

hBrachaCs!e=CreateSolid8ru5h{fíBB(0Ji27,255)};hCBles=CrBatePeníPS_SOL10, 1^68(0,127,255)1;h P r B v 8 r o c h a l = ( H B R U S H í S e í e c t O b j e c t í h D C , h B r o c h a C e l e ) jhPrevlsíHPEHÍSelectObjectthDC^CelesJj

x i z q = a n c h o V s n t x / 4 jxdsr=anchoVent) ! Í3 /4 jya r r=2 ta l toVenty /3 - iOjybaj=2íaHoyenty/3+iO;

R B c t a n g l e í h D C , x izq , ya r r , xder , y b a j ) jTBxtOutíhDCjXizq/yarr-n/Or^);T e x t O u t í h D C , [ a n c h o V B n t x / 2 ) J y a r r - 1 7 , n O r j 2 ) ;

SelsctGbject(hDC,hPrevBroch3lljOeleteObject(hBrochaCele);3electübjBct(hDC,hPrevl)jDeleteObjectfhCelesJ;

// los p deben ser negativos

aO={pUpi+p2íp2)t(pltpi+p2íp2)ja l = H t p I Í ( p l í p i * p 2 t p Z ) }

k i = - L p t H í a O / g j

Page 165: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

166

k2=-LpíHíal/gjk3=-LpíHt[LpíaO/g+g/Lp+a2);

ac[0][0]=i;acEQ3U3=-3tpi iac[0][2]=3tpUpi+p2tp2jac[03[3]=-p i*(p l*p í*p2íp2) iac[13E03=Ojac[l}[i3=p2;3c[13E23=-2tpiíp2¡a c [ 1 3 [ 3 3 = p 2 t ( p U p i + p 2 t p 2 ) iac[23C03=0¡

acC2j[2]=íj

ac[3]C03=0;ac[33[13=0¡ac[3][23=0i

//para el aspadoestadoi í ) ;SisEcuacionesílj

/ /para la Velocidadsshdc2UíSisEcuacionesO;a_dE=x[0]jbje=x[13ic_de=.xC23id_de=.x[33;

// para el ánguloB5tado3{ ) }SisEcuacionesf) ja_fi=x[03;

cji=x[23¡dji-x[33;

// para la derivada del ánguloS5tado4();SisEcuacionesOja_df=x[03¡

d_df=x{33 j

Page 166: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

167

HaxEsp=0.0} // inicializar a cero para que no se hagaMaxDesp=0.0;HaxAng=0.0; // tose cono aaxiao el valor anteriorMaxüang=0.0j // y no ss escalen bien los gráficosHaxFue=O.OjMaxI=10QOi // hallar saxirao valor de sinulacion

h8rQchaAzul=Cr5atsSoüdBrU5híRSB(0J0Ji2?J);hAzul=CreatsPen(PS_SQLlDíi,RBB{0J0Ji29}JjhPrEvSrocha2=íHBR!JSH)SeÍEctQbjectíhDCJhBrochaAzulJ;h?rBv2=ÍHPEH)Se]ectübJBCÍÍhDC,hftzul};

í

es[ies]=l3j?síco5Íp2U) í- b_esísin(p2n) ++ d_esí[s in[p2n}-p2ít ícosíp2ft íJÍO,5/(p2?p2íp2]} tHxpípin)}

BsJ[ies3=Í3je*cos(p2tt) + b_deisin{p2ít) t c_deítÍ5Ín{p2ít)ÍO,5/p2+ d_dsíísin[p2U)-p2Utcas(p2tt))t0.5/(p2íp2tp2))íexp(pUt)í

an[ie5]=(a_íiíco5Íp2tt} + b_fiÍ5Ín(p2tt) -í- c_íiUísin(p2ít)í0.5/p2+ dJit[sin(p2n)-p2H*cos(p2tt))t0.5/(p2lp2tp2})texp(pinji

anj[ie53=(a_díícos(p2it) 4 bJ1tsin(p2H) 4 cjí»*sinlp2ftjt0.5/p2+ d_dfí{s inip2ttJ-p2mcosíp2(: tJ}t0.57(p2tp2tp2l ]*exp(plUJi

t=t4dEltaTjMaxiaosOj

// barra de porcentajeif(SiBarra==TRÜEJ{J=J4i;i f ( j== iOOIíj=0; // contador 100n=n4i;porcent=anchoVentxt{0,2540,05?n)í

5trptro=itoa(ntiO) stringoj 10);longitud=strlen(stringo)j

TextOut(hDCj(anchoVent>!/248-8í longitud J,yarr-Í7,strptro, longitud);xizq=íint)porcent;

SfilBctübJEct{hDC,hPrBvBrocha2)iDeleteObjectíhSrochafizul);SelectQbject(hDCíhPrev2);DslsteObject(hñzul);

SetCursorfhPrevCursor}; /í restablecer el cursor por defecto í/RsleaseCaptureOj /í desbloquear el ratón (/

Page 167: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

169

íor{j=iH;j<njj-H-J{[ í 3=a [n ro* [ j33 [ i3 / a [n roN[ i ]3 [i];

k < = n j k - H - ]a [n row[J33[k ]=a [n raw[333[k3- f f l [n roH[ j ] ] [ i3 í a [n row[ i33 [ í ' . 3 ;

x tn - i 3=aEnrQH[n - i33Cn3 /a [n ro» i [n - i 33 [n -13 iíor(i=n-2;i>=0¡i--){

sima = 0;f o r í J = i - H j j < n ; j - H }

x [ i 3 = ( a E n r o w C i 3 3 [ n 3 ~ 5 i i a a ) / a [ n r o w [ i ] 3 [ i 3 ;i

//I Función para realizar cálculos del control proporcional derivativo |

void TPenduloHíndow::ProporDeriv{void)íHPEN PlusaBarra;HBRUSH BrochaBarra;

char 5tringo[10],ístrptro;int j=0, fi=0, xizq, .xder, yarr, ybaj, centraX, centraY, longitud;double KpjKdjajb.Bjf,tjSiq,r,rinvJari,ar2)ai!x,coIjdouble ci,c2jfloat porcent;BOOL SiBarra= FALSE;

HDC hDC= 6etDC[HWindow); /( establecer el contexto de visualhación í/SetCapture(HHindow}i /t bloqueo del ratón í/hPrevCur5or= SetCursoríhHourBlass) ; /( cambiar al cursor de espera t/centraX=anchaVentx/2-4t8;centraY=altoVenty/3;ií(anchoVentx>=150 U- altoVenty>=I50JíSiBarra=TRUEjTextQutíhDCjCentraX, centraY, "esperar",?);

BrochaBarra = (HBRUSHJSslectObjectíhDCj CrBateSolirfBrush(R6B(0, 127,255))] ;PluiaaBarra = (HPENJSelectobjectthDC, CreatePen(PS_SOLID, 1^68(0,127,25511)5

xizq=anchoVentx/4¡

.yarr=2taltoVenty/3-iO¡ybaj=2íaltoVenty/3HO;

Page 168: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

170

T e x t Q u t ( h 0 C J x d e r - i 5 J y a r r - 1 7 J f l i G Q r j 4 ) j

DeleteObjectíSelectQbjectíhDC, BrochaBarra));Deie taGbjec t [Sa!ec í :üb jac t (hQC f P l u s a B a r r a ) ) }

//I4n, Si, iij], f id j3j son datosKp=HMHn*HníLp+gí¡K d = [ 2 t S i H i n l L p « l ) / K p ia = ( K p * K d ) / i L p í « ) ¡b=(Kp-g t«J / (Lp t« ) jSiq=SiíSijr=sqrt í i -Siq);í=atan(r/Si))r i n v = i / r j

c e s i = K p M a M a / b - K d ) - l ) / ( b í M Í ¡c s 5 2 = K p í t K d - a / b í / í b t H ] ices3=KpMKd-a/b)/H;

Max I =1000 iÍ5=10/(SiíWn)j // tieipo de Bstableciaiantot=0¡de3taT=Ts/1000;

HsxE5p=0,0; // inicializar a csro para que no se hagaMaxDesp=Ü..O¡MaxAng=0.0| // toas cono maxiao el valor aníeriorMaxDang=0.0; // y no 5B escalen bien ios gráficosHaxFue=0,0;

BrochaBar ra = (HBRUSHJSe lBc tObjsc t í t iDC, Crea t f iSoHdBni sh (R6BÍO J 0 J 129} ) ) ;PIus taBarra = ( H P E N J S e l e c t Q b j e c t í h Q C , CreatePBníPSJOLÍD, 1^56(0,0,129]));

íar i=Si(Hnt t ;e = ( e x p ( - a r í ) ) jaux=wnrít;ar2=aux-f;

anCies ]= r inv íe t ( coUs in [aux) - f i_o í s in (3 r2J ) ianj í [ Í25]=r inyte t t (coUwnrí eos ( a u x J - f i j J Í K n r í cosí ar2) )

-S i íWnt (co i t s in (3UxJ- f i_o í s in (a r2 í )} ifua[ ies]=Kpí{an[ÍBS]- í -} ;d?an_d[ÍBs]) ;

ci=vo-CBs3tan[0]+ces4f an JtO] ;es2ían d[0]j

Page 169: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

171

es[ies]=cfislían[Í2s]-CEs2tan_d[ie53*clH*c2i

HaxinosU;

// barra ds porcentajeif(SiBarra~7RÜ£)

j=0; // contador 100n=nHjporcEnt=anchoVentxtí0.2540,G5Jn);Rectangra!hDC,xiz{ j ,yarr , ( int)pQrcent }ybaj) ;strptro=itoa(nílO, stringo, 10);langitud=5trl en { siringo ljTextOutíhDCjtanchoVentx^-UJ^arr- i?, ' ",41;TfixtOut(hDCJíanchoVBntx/2-f-8-8ílongitud)Jyarr-17J5trptroJ longitud);x i 2 q = ( i n t ) p o r c e n t ;

t=Uds i t aT j

DBleteQbJBctíSBlectQbjectíhDC, BrochaBarra))¡DBletBQbjactíSelactQbject ihDC, PlusaBarra));

SBtCursorihPrfivCursorJj /í restablecer el cur=or por defecto í/ñsleasaCaptureí); l\r el ratón \l

TextOutíhDCícentraU10)CBntraVI f lLíSTQ'( I5);

flfissagaBeepíOJ jReleasBDC[HHindo*)íhDC)i /í liberar el contsxto de visualización tiCalcuIosHech=TRUEj

// funciín para nacEr cflículos del Tifiapo H^niao

vpid TPenduloHindQH! :TiespohiniíBo(void)

double fO=0.07j fdO,F2JauxiJaux2,aux3íA!B,Ai jBl j !J j t ,antBst ,adtea;doubls Tesp jTdssp jTang jTdang;int i j j j iasj

// curva de conautaciínF2=fOÍ(gí-fO/Lp i 2ífuenaTH)/{Lpífí);if[F2<=0)return;

Page 170: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

172

auxl=0.5MfijH-ptfusrzaTH/g);aux2=0.5mdjrtLpMsqrt(H/g])¡A=auxl-aux2;B=auxH-aux2j

AÍ=-aux3iA;

MaxEsp=G.OiMaxBe5p=0.0;Maxftng=0,0iHaxDang=Q.OjHaxFue=O.Oi

deltaT=0,005;

í

u=aux3ttian[i)=Aíexp(-u)-i-BÍBXpiu)-fLpí-fUEr2aTÍ1/gian_d[i]=Aiíexp(-u)iBIíexpíu]j

esJ[i3=2ífuerz3THU/H;

TB5p=iabs{e5Ei]í iif (íiaxEsp<TeEp)

// obtener el staxiio valor del espacioTde5p=fab5(e5_d[ i ] ) jif (HaxDesp<Tdesp)MaxDe5p=Tdssp¡ // obtener el siaxiisQ valor de la velocidadTang=íabs(an[ i ] ] ji1(Haxñng<=Tang)haxAng=Tang;Tdang="fab5(an_d[Í ]) ;i f(MaxDang<=TdangI

F2=anCi]t(gían[i]/Lp + 2í fuenaTH)/ íLptHJjfdO=-sqrt(íabs(F2J)¡

adten=fab5(an_d[ i ] - f dO) ;ias=i;if(adtea<=0.02)

{auxÍ=0,DÍ(an[ia5]-Lpt(~fueriaTf1)/g);3Ux2=0,5íanJ[ias]tLpÍ(sqrt(H/gí}jA=auxi-aux2¡

Page 171: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

173

t=0¡HESsageBeepíQ))

u=aux3í t ;3n[j]=Aíexpí-uJ*BÍBí;p(uHptfuBrzaTíi/g;anJ[j]=Aiíe!ipí-u)t8UEXpíu)jBS[J3=(-fuerzaTMttme5j[ias3ítt+es[ias3ies_dEJ]=-2tfusrzaT«H/H+es_d[ias3i

t = t - t - d e l t a T jantsí i=íabs£an[ j3) ji í íantB»<=Q.04)

Haxl=j;i=1000j

t=Udel taTi

CalculQsHech=TfiLIE;

7/3 Función para crear los sapas de bits para la aniíaaciont

void TPenduloWindow:¡ConstrCBldasívoid)í

HDC hDisplayDC; • /í contaxtü de visualizadón í/HBRUSH hBrochaRojaj hPrsvBrU5h2; /t brochas para la esfera í/HPEN HPluiaRojaj hPrevPen2; /t piusas para la esfera (/

UbicPistaX = ( in t ) [0 .25tanchoVentx) iíinchoPista = ( int ) {Q,5íanchoVentx) ;ÍJblcPistaY = [ in t ) [0 .6>aI taVenty) jAlturaPists = (int)(0,062790697taltoi;efity};AnchoHapa = ünt).(O.Q93¿50793tanchGVentx}jAlturaHapa = AlturaPista;EsqDerX = AnchoHapa-ijEsqDerY = AlturaHapa-ijñíturaCarro = (int)í0.592592572lñlturahapa);xruedal = ( int)(0,06779óéí?AnchoHapa)¡?¡ruedali = (int)í0.4067796óiíñnchoMapa)jxrueda2 = EsqDerX-xruedaüj>!rueda22 = EsqDerX-xruedai;yruetíal = (int)(0.222222222tAlturaHapa)j

Page 172: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

175

HDC hOCj /i contexto de visualizado?! í/KPEN hRed, hPrsv2; /í piusas para el péndulo!/HPEH hühi te , hPrevi; /í piusas t/in t a c t í J a c t 2 = 0 ) j ) l ) P e n d u l ü S u p , n j Y i J X 2 J Y 2 jlong k j ü n R jf ioa t ang=i .3j

char sir[25];int sig = ¿j // dígitos significativosint longitud;

if (bCeldasLisias " FALSE) returnj /í cancelar si celdas no preparadas i/hDC= BetDC(HHindoM); /í establecer eí contexto de visualización í/SetCapture(HHindüw)} II bloqueo del ratón í/hPrsvCursor= SetCursoríhHourGlassJj /i caisbiar al cursor de espera í/acU=(int)(imsin(an[Q]))i

i S p h e r e i X = í i n t ) í a n c h o V e n t x í 0 . 5 ) iPendu loSup = | int) í0.332558i39tal toVentyj i

// D I B U J O DE LA PÍSTfi

«ovBTolhDC^UbicP i s t aX+AnchoPi s t a í jUb icP iB taYl iL i n e T o ( h D C , ( U b i c P i s t a X + A n c h o P i s t a ) j ( U b i c P Í 5 t a Y * A l t u r a P Í 5 t a ) ) ;L i n e T Q t h D C j ü b i c P i s t s M j í ü b i c P i s t a Y + ñ l t u r a P i s t a ) ) ;LineíothDCjübicPistaX-ijUbicPistaY-i);

for ( i an= 0; ian <= " a x l j i a n + - f j( /í cofaisnzo del bucle de aninación í/

/mUBQRRAR EL PÉNDULO* tí U/hHhi te^ rea tePen tO^jOxOOFFFFFFL) ;h P r e v i = ( H P E H ) S e l e c t O b J B c t í h D C , h H h i t e ) ;M o v e T o ( h D C J í i S p h e r e 2 X ) J { U b i c P i s t a ' M ) ) |LineToíhDC,{iSphere2](iact2)JPenduloSup}jS e l e c t O b j e c t f h D C j h P r e v l J ;De ie teObjec t (h fc íh i i e ) ;

DIBUJO DEL PÉNDULO »«/tíRed=CreatePen(0,1,868(255,0,0));h P r E v 2 = ( H P E N ) S e l e c t O f a j e c t ( h D C f h R e d ) ;MoveTo íhDC, ( iSphe re iX) , (üb i cP i s t aY-1 ) ) ¡LineTo ( n D C j f i S p h e r e i X - t - a c t i ) , PenduloSup ] jS e l e c t O b j e c t ( h D C f h P r e v 2 ) } •D e l s t e O t i j s c t ( h R e d ) |

/í . d ibujar la v iñe ta actual • í/P a t B l f c i h P a g i n a O c u U a D C j O j O j ñ n c h o P i s t a j A l t u r a P i s t a ,

W H 1 T E N E S S ) ; /í de ja r en b l a n c o la página ocu l t a ?/Bi tB l t íhPaq inaOcuHaDC. t iSphere iX-UbicP i s t aX-AnchoMapa^) ,

Page 173: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

176

i S p h e r e i Y j f t n c h o M a p a j A l t u r a H a p a , h H a p a D C . O j O j S R C A N D ) ;/ í copiar el carro i en ia página acu i t a i/

B i t B l t t h D C j U h i c P i s t a X j U b i c P i s t a Y j A n c h o P i s t a ^ l t u r a P i s t a ,h P a g i n a O c u l t a D C j O j Q j S R C C Q P Y ) ; / í copiar la página ocul ta a la ventana í/

iSphsre2)í=iSphereiX;act2=actl;

LSphereiX = ( i n t ) ( a n c h o V e n t x M 0 . 5 + ( E s t i a n ] l t 0 . 4 J ) ia c t l = ( i n U ( U 7 í s i n ( a n [ i a n 3 í ) i

gcv t ( e s [ i an ] , 5ig, s t r ) ;l o n g i t u d = B t r l s n í s t r J jíex tQut íhDC^Q," " , 2 5 J jT s x t ü u t t h D C , 0 , 0 j s t r , l o n g i t u d J j

//retardo

íinR=ratardoí2]for{k=Q¡k<finR}k+*)

// choque 3 la derecha del carroif{B5[ian] >= 0,51

Yl=PanduIoSupjX2=intí(UbicPÍ5taY-l-PenduloSup)ícDSÍangí)^iSphere2XjYZ=UbicPÍ5taY-i-int((UbicPistaY-i-PenduloS!ip)Í5ÍníangJ)i

ior

// BORRAR EL PÉNDULOhHbitasCreatePeníOjijOxOOFFFFFFLíihPrevl=(HPEN]SelBctObject(hDC,hWhiteJjfioveTüíhOC, (iSphere2X) , (UbicPistaY-i ) ) ¡

SelectObject(hDC}nPreviJiDeleteObjectfhHhite};

// DIBUJO DEL PÉNDULOhRed=CreatePen{0,i 66(255,0,0)};

HovEÍothDC, (iSphere2X J , (UbicPistaY- ) 1 j

SelectObJBct(hDC,hPrev2};DBlateQbjactthRadJj

// retardo

Page 174: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

177

ang=0,13í{8-j);X2=int[(übicPistaY-i-PenduIoSupjtco3Íangí)tiSphsre'2X¡Y2=UbicPistaY-i-int(tübicPÍ5fcaY-l-PsnduloSupJísiníangí)i

tan =

// choque a la izquierda del carroi f t s s C i a n ] <= -0,5}{

XÍ=iSphere2X+act2;Yi=PenduloSup;

X2=iSphere2Mnt f{UbicP i s t aY- I -Pendu loSup) ícos (ang)} ;Y2=UbicPis taY- l - in t ( (üb icPÍ5 taY- l -Psndu laSupJ t s in (ang)J j

fo r ( j = 0 ; j ü O j j - H }í// BORRAR EL PÉNDULO

h P r s v ^ í H P E N J S e l e c t D b j e c t t h D C . h W h i t e J iM o v e T o t h O C j t i S p h e r e Z X l j í ü b i c P i s t a Y - l J ) ;

S e l s c t O b j e c t l h D C j h P r e v D íD e l E t e O b j e c t í h W h i t E ) ;

/ / D I B U J O DEL PÉNDULOh R e d = C r f i a t B P B n t O , i í R 6 B ( 2 5 5 l O l O n ih P r e v 2 = Í H P E H ) S f i l B c t O b j a c t t h D C , h R B d ) iH Q v e T o ( í i 0 C J í i S p h B r B 2 X } J ( U b i c P Í 5 t a Y - i ) ) iL i n e T o { h D C ; X 2 J Y 2 ) ;S e ] e c t Q b j B c t ( h D C , b P r B v 2 ) iD e l e t s Q b j e c t ( h R e d ) ;

// retardof o r ( k = O j k < f i n R ¡ k + + )fo r{ ]=0 ; l<20 ¡m} ;

X i = X 2 ;Yi=Y2;ang=0 . i3 í (8 - j ) i

X 2 = i S p h e r e 2 ) t - i n t ( ( U b i c P i s t a Y - i - P B n d u l o S u p ) t c o s í a n g ) ) iY2=UbicPis taY-i - in t [ ÍUbicPis taY-i -PenduloSup)*s in(ang)) ¡

ian = f t a x I H j

} !\r al principio del bucle y dibujar la siguiente viñeta,,, í/

SetCursaríhPrevCursorJi /í restablecer el cursor por defecto I/ReleaseCaptureOj /í desbloquear el ratón í/

Page 175: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

178

R e l e a s e D C t H H i n d o K j h O C ) ; / í i ibBrar al contexto de visualizadón i/

void TPendu ioWindow: ; L i í a p i a r P a n t a i l a ( v o i d )

I f t V a l i d a t e R e c t l H W i n d Q W j N U L L J R U E l j

// funciln para dibujar los ejssvoid TPenduloKindQH¡:6raficaEJB5(void){HDC hDC; // contexto de visualizauónHPEH hNegrOj hPrsvíj // pluna para los ejes•float idivXj ÍdivY,inTÍBB!X;int i,j,5ig=6jchar 5tr[25];

pXíaax=anchoVBntx-20 ; // aaxisao valor de puntos en el E J E x

i f ( N a x ! > = p X i f i a x )i n c X = h 3 X Í / p X f f l a í ! i / / va lo r de escaíaaiento del tietpo

eUeinc¡C=l j

i f ( M a x K p X f i a x )• j n c í = p x a ) a x / H a x I ;

eUe

hDC= GetDC(HWindow); // establecer el contexto dE visualización

// dibujo de los ejeshNegro=CreatePeníO,ljOxOOOOOOOOÍjhPrevHBPENJSe lec tQb jecUhDCjhNegro ) ;« o v B T o ( h D C , 1 0 , U b i c E j e x ) iL i n e T o í h D C j t a n c h o V e n t x - l O l j U b i c E J E x ) ;

LinfiToíhOCjlOjUltoVenty-lQ]);5Blectabject(hDCrhPrBVl);DeletsObJBctíhNegro);

í o r ( j = j n c ) ! ; j < p x f f i a x ; j = j í j n c j ( í j

J=J - jncX¡i d i v X = í í l o a t ) j / 1 0 . 0 ji d i v Y = ( f l o a t ] ( a l t o V e n t y - 5 0 ) / 2 0 . 0 ¡

Page 176: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

179

j = ( i n t } [ Í O + i d i v X l i ) iH Q V e T o í h D C J j t U b i c E j e x - i M ;L i n e T o ( M ) C í j l l U b i c E j e ) ! + 2 ) ) i

3

ÍQr{i=0;i<21)i-H)(j=íintJÍ40+idÍYYti)j

H ü v e T o í h D C j S j U b i c E j e x ! ;U n e T o ( h D C , i 2 , U b i c E j s x J ;

}else{

HaveTo(h0C,8, j ) ;

ReleaseDCEHHindoH,hDC); /í liberar el contexto de visualización í/

inTisfflX= deltaTíidivXtincX/jncX:

strcpytDeTiBBX, "í'ljstrcatíDeTiesiX, strjjstrcatíDeTisaX, H seg/div)")}

//J Función para graíicar el Espacio versus el Tieapo

void TPenduloHindow: :6rafEspacio(void)í

HDC hDC; /t contexto de visualización í/HPEN hRojo, HPrev2; /í pluaa para 1a curva í/int ic, jj Iongij5ig=6;double y, escYjinEspaY;char str[25]j

char cadenL20]jístrptro;int longitud, cuent=0;long endTisBjdelayTicks=5i

.sndTise = biostioeíO, OLÍ + delayÜcRs;«hile (biostiae(0, OL) < BndTiae)

5trptro=itoa(ciíent, csden, 10) }longitud=sfcrlen{cadení¡

Page 177: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

180

inEspaY=HaxEsp/10;gcvt(inE5paYjSÍg,str);strcpyfDeEspaY, "(");strcatíDeEspaY, str];strcatíOeEspaY, u a/div)1

BscY=(aUoVBnty-5QÍ?G.5 / í !axEsp i// factor de escala en el eje y

hOC= S e t D C ( H H i n d Q N ) ; // establecer E! contexto de visual izar ían

O/^ s",25í¡

SetTextColorthDC, OxOOOOOOFF);langi=5trleníOeíisaX);TextOut{hDC)i40J0JDBTieaJ(JlongiJ;langi=5trlen(DeEspaY)jTextQutíhDCj 140,20 jDeEspaYjlongi);TsxtOutíhOC^BOjOj'aspacio vs f,!?);

TextOutfhDC, 140. 40 jStrptro, longitud);

// dibujar 1a figurahRDJü=CreatePeníQ,l,0):OÜOOQOFF);hPrBv2=(HPEN)SelectDbjectíhDClhRojo)¡

J=Í5y=(doub]e)UbicEje .x-es[03íe5cY;H o v e T o í h B C j i O j í i n t J y J if o r í i c = i n c X , j = j n c X ; j < p X ( s a x ; i c : : i c + i n c X , j = j - í - j n c ] ( ){

y = ( d o u b l B ] U b i c E j e x - e s [ i c 3 t e s c Y j

Be}ectObJEct(hDC,hPrev2)íDslBtaObjectíhRojo);

ReleaseDCÍHNindoWjhDC); !\r el contexto de visualiíación \

//I Función para graficar la Velocidad versus el Tieapovoid TPenduloHindow;:6rafyelocidad(void)íHDC hDC; // contexto de visualizaciónHPEH hRojo, hPrsv2; // pluma para la curvaint le, j, longi,sig=6jdouble yj sscY,inVsloY;char strt253i

inVEloY=MaxDfisp/iOigcvtíinVeloY,5Íg,5tr);strcpyíDfiValoY, 'í'JistrcatíDeVsloY, str);strcatíDeVeloY, " U/sJ/divJ")i

Page 178: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

181

escY=íaltoVenty-50!í0.5/HaxDs5p;// factor de escala en el eje y

hDC- SetDC{H!ündow}; // astablscer aí contexto de visualización

TextOut(hDCI3J20í"y=SetTextColorlhDC, 860(255,0,255))}longi=stríen(DeTÍEfflX)jTextOutí hDC, 140,0 jDeTieffl

longi=strlBn(DeVeloY)i

TextüutthDCjSSOjO/vel vs t " ,B) j

// dibujar la figurahRojo^reatePenlOjljRBBÍ 255,0,255) )jhPrBv2=(HPENJSBlBctObJBct(hDC,hRojo)i

J=i¡y=ídDUble)UbicEjex-esJ[0]Íe5cY;

KoveToíhDCj iO^int íy i i1oríic=ind,j=jnc3íjj<pxuaxiic=iciincXJj=j+jncX)

SelectflbJBct{hDC,hPrev2)jDaíatBGbjsct(hRQJa)i

/í liberar el contexto de visualización

//j Función para graíicar el Ángulo versus el Tie¡spovoid TPendulüKindo»!:BrafAngulo(void)

íHDC hDC; // contexto de visualiíadónHPEN hAzul, hPrev2; // piusa para la curvaint ic, j, íongijSicpójdoubíe y, escY,inAíiguY;char strt253;

inAnguy=MaxAngti8/PI¡gcvt(inAnguY,5ig,5tr];etrcpyíDeAnguYj "{"JistrcatEDeftnguY, strjjstrcatíDfiflnguY, a g/div)")¡

sscY=(altDVsnty-50)í0.5/haxAngi// factor de escala en el eje y

hDC= BstDC(HHíndoH); // establecer si contexto de YisuaUzacion

Page 179: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

182

Tex tOu t fhOC,5 ,0 , "x= sVSJjTextOiiUbDC^^O/ys g r d s f l í 2 S ) jSe tTextColor íhDC, 868(0 ,0 ,255) )?l o n g i = s t r Í e n ( D e T Í B ! B X ) ;T e x t O u t ( h D C , i 4 0 , 0 J D e T i e a X J ] o n g i ) il o n g i ^ s t r í s n í D a A n g u Y ) ;

TsxtOutíhDCjZaQ^O/ang vs

// dibujar U figurahñzulsCreatePBnlGjijRGBIQjh P r B v 2 = ( H P E N Í S e l e c t Q b J B c t ( h D C , h A z u l ) i

J= i iy = U b i c E j e x - a n E O ] i e s c Y jHavsTo{hDCjiOj(int)y)j• f o r ( i c = i n c ] ( J j : : j n c ) [ ; j < p X B a x j i c = i c - f i n c X í j = j + j n c X ){

y=UbicEjex-an[ ic ) ÍB5Ci ;

SBÍectObJEct{hDCJh?rBv2);OslstaObjectíhAiulJi

HelsaseDCIHHindoWjhDCJj /í libarar el contfixto de visualización M\n para graíicar la Velocidad Angular versus el Tiespo

void TPenduloHindow; :SrafVAngular(void3(HDC hDC; // contfixto de visualizaciónHPEN hVsrdej hPrev2; // pluma para la curvaint ic, j, longijSÍg=¿¡double y, escY,inVangY;char 5tr[25]j

inVangY=MaxDangUB/PI¡

strcpyíDeVangY, "fíi5trcat(DeVangY,

e s c Y = ( a l t o V e n t y - 5 0 ) t 0 . 5 / H a x D a n g ;// factor ds sscala en el ejs y

hDC= G e t D C í H H i n d o w ) ; // establecer si contexto de visual ización

T e x t Q u t ( h D C J 3 I 0 J B x = 5 H , 2 5 ) ;Tex tOut lhDCjS^O/ys gr/s ' ,28);SetTextColor íhDC, O x O O O O F F O O ) ;

l G n g i = s í r Í e n í D e V a n g Y Í ;

Page 180: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

183

T e x t Q u t í h D C j S B O ^ O / v e l - a n g vs t" ,12);

// d ibujar la f igurahVf i rde=CrEa tePen(O , i ,OxOOOOFFOO);h P r e v 2 = ( H P E M J S e l B c t O b j e c t . í h D C I h V B r d B J i

y=UbicEjex-anJ[G]ÍB5cY;H o v e T Q ( h D C , 1 0 , ( i n U y ) jf o r í i c = i n d , j = j n c X ; j < p X f 8 3 X ¡ i c = i c * i n c ] ( , j = j - f r j n c X )íy=UbicEJBX-an_d[ic3ÍB5cY¡LineToíhDCjíiO+jJjdntJy)}

SslBctObJBctlhDC,hPrBv2íiDeleteObjectíhVerdeli

Rele3s.BDC{HNindaw,hDC); /í libBrar el contexto de visuaiización t/

void T P e n d u l o W i n d o M í i B r a f i c a F u e r z a i v o i d )/

HDC hDC; // contexto OB visual izaciónHPEN hCslESj hPrev2j // pluiea para la curvaint i c j j , longijBig^é;doub le l / j BscYj ínFusrY;char str[25]j

gcv t ( i nFue fY ( s ig í s t r J is t rcpy(DaFuerY, " ( M is t r c a t ( D f i F u e r Y , s t r) ;s t r ca t íDeFuerY, u n e K / d i v ) " ) ;

e s c Y = ( a l t o V e n t y - 5 0 ) t 0 . 5 / M a x F u e ¡// factor de Escala en el* eje y

hDC= BetDC(HHindow); // Bstablecsr el contexto de visualización

Tex tQut thDC^O/x- 5 a J 2 5 ) ;TBxtOut(hDC } 3 ( 20 J M y= nB»." ,2B) iSetTextColor íhDC, R S B ( 0 } 2 5 5 J 2 5 5 ) ) jl o n g i = s t r l e n ( D e T i e f B X J }Tex tQu t fhDC,140 ,OjDeTieaXjUng í ) ;l o n g i = s í r l e n ( D e F u e r Y ) ;

za vs tVl);

// dibujar la figura

hPrev2=iH?ENJSelactObject(hDCJhCeles)i

Page 181: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

184

H o v e T o í h D C j i G j í i n U y ) ;

y=UbicE jex - fuE[ i c ] í e scY;U n e T o í h D C j U Q + j J j t i n t í y l i

S B l e c t Q b j e c t ( h D C J h P r e v 2 ) jD e i e c e O b j e c U h C e l e s ) ;

; /í l i bBra r e] contBxto de v i sua l i í ac ión í/

/ /3 función para obtener las coordenadas del espacio ju r 3

void TPf induloHindtw; :CoorEspac io(void){

HDC hDisp l ayDC; /í contexto de v isual izac ión í/HPEH h B l a c f c P e n , hPrevPen; /* pluisas í/double xEspjyEsp;char stringaüOljístrptro;

char str[253iint sig = 6; // nusero de dígitos significativosint longitud;

hDisplayDC= BetDCÍHHindoH); /í establecer el contexto de visualiíación I/hBlackPeiF CreatBPBníPSJOLIDjijRGBÍOjO^)); /» craar piusa I/hPrevPen= (HPENlSelsctObjectthDiBplayDCjhBUcfcPenJi /í seleccionar pluisa í/

//ancho y largo da la ventanastrptro=ítoaíanchoVBntXj siringo, 10);longitud=5trlBn(stringo);íextOutfhDisplayüCjóOOjiiO,11 u,7); //borrar el dato anteriorTextaut[nDisplayDCjíó24~8tlongitud)IiiOJstrptrQ,longitud);

5trptro=itoa(aitoVenty, stringo, 10);longitud=5trlenístringo);TextOutíhDÍBplayDCjóOOjlSO," u,7); //borrar el dato anteriorTextaut(hDisplayDC,(ó24-8tlongitud),130jstrptro,longitud);

xEsp= (coordenadaX-lOídeltaTtincX/jncXjyEsp= (UbicEjex-coordenadaY)ÍHaxEsp/(UbicEjex-40);

//coordenadas x and y del cursor

gcyt(xEsp, sig, str);long i tud=s t r l en (5 t r} ;T e x t O u t ( h D i s p l a y D C J 2 0 , 0 J " %22) ; / /bor ra r e l dato anteriorTextOutthDisplayOC^OjOjStr, longitud);

g c v t t y E s p , 5Íg; s t r j j

Page 182: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

185

longitud=strlen(str);TextOut(hDisplayDCJ20l20,"TextOut(hDÍ5playDCJ20J20Jstr,longitud)j

,22); //borrar el dato anterior

íHDC hDisplayOC;HPEN hBlackPen, hPrsvPen;double

SelectQbjectínDísplayDCjhPrevPsn); l\r piusa í/DeleteGbjectíhBlackPen); /I borrar piusa (/ReleaseQCíHtíindo'rijhDisplayDC}; l\r el contexto de visualización */

// función para obtener las coordenadas de la velocidadid TPenduloWindovf: :CoorVelocidad(void)

/í contexto de visualización í/l\s í/

c'nar 5tr[253;int sig = 6; // nuaero de dígitos significativosínt longitud;

hDisplayDO SetE)C(HHindüw); /t establecer el contexto de visualización í/hBlackPen* CreatsPentPSJOLIDjIjRGBtOjO.O)); /í crear pluisa MhPrevPen= (HPEN)SeiectObjectíhOÍ5playDC,hBlackPen); /í seleccionar piusa \l

xDasp= (coordenadaX-IO)ídeltaTtinc!(/jncX;yDesp= (UbicEjex-coordenadaY)íhaxDesp/(UbicEjex-40);

//coordenadas x and y del cursor

gcvtfxDesp, sig, str);longitud=5trlen(str);TextOut(hDÍ5playDC,20,0,"TextüuUhQisplayDC^QjQ, str, longitud);

gcvttyDesp, sig, str);longitud=strlen(str]jTextOutfhDisplayDC^O^O,'TextOutíhDisplayDC,20,20,str,longitud);

,22); //borrar el dato anterior

',22); //borrar e! dato anterior

SelectOfaject(hDispiayDC,hPrEvPen); /f deseleccionar plu*a MDeleteObjectfhBlackPen); /í borrar piusa t/RBleaseDC(HHindoH,hDisplayDCí; /í liberar el contexto de visualización í/

// función para obtener las coordenadas del Bngulovoid TPenduioHindow: ¡CoorAnQUloívoid)

HDC hDisplayDCjHPEN hBlackPen, hPrevPen;double xAng,yAng;

/í contexto de visualización í//í piusas \

Page 183: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

186

char str[25]jint sig = 6; // nusero da dígitos significativasint longitud;

hDispUyDC= BstDC(HHindaw); ¡\r al contexto de visualización í/hBlackPen= CreatePenfPSJOLlDjijíiSBÍOjGjOJ); /t crear pluaa í/hPrsvPBiF (HPEN}SeÍectObjectíhDisplayDC,heiackPen); /í seleccionar piusa \

yftng= (Ub icE jes -coordenadaY)Wa3( f lng*180 / ( (Ub icE jex -40J tP I ) ¡

//coordenadas x and y del cursor

gcvtíxAng, síg, str);longitud=strien(strí;TextQut[hDisplayDC}20,Oj" Mj22); //borrar el dato anteriorTsxtQutthDispUyOC^OjQj str, longitud);

gcvtíyflng, sig, str);longitud=strlen[str);TBxtOut(hDisplayDC,20J20," H,22); //borrar el dato anteriorTextQutínOispiayDC^Oj20,5^, longitud);

SeJectObjectthDisplayDCjhPrevPen); /( deseleccionar pluia í/DeleteObjectíhBlackPen); /í borrar pluaa MRelesseDCÍHÜindoWjhDisplayOCJ; /t liberar el contexto de visualización i/

// función para obtener las coordenadas de la velocidad angularvoid TPenduloHindow; :CoorVangular(voidJíHDC hDisplayDC; /í contexto de visualización MHPEN hBlackPen, hPrevPen; /* pluinas \double

char str[25]jint sig = 6; // nueero de dígitos significativosint longitud;

hDisplayDC= BetDC(HHindonlj /( establecer el contexto de visualización t/hBlaci;Pen= CreatfiPeníPSJOLIDjljRBBÍOjOjO)) j !\r piusa \bPrevPen= íHPEN)SelectObjectíhOisplayDC,hBlackPen]; /t seleccionar piusa t/

g^ {coordenadaX-iOJÍdeltaTtincX/jncA;yDang= ÍUbicEje)(-coordBnadaYJÍMaxDangU80/[íUbicEJBX-40JtPI)¡

//coordenadas x and y del cursor

Page 184: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

187

gcvtíxDang, sig, str);longitudestrlBn(sfcr)jTBxtQuUhflisplayDCjZQjO/ H,22); //borrar al dato anteriorTExtOut(hDispIayDC,20,Q,5tr,longitud);

gcvtfyDanq, sig, str);longitud=strlen(str);TextQutíhDisplayDC^O^O,' ",22); //borrar el dato anteriorTextÜutíhDispIay00,20,20,str,longitud);

SBlectObJBctlhDisplayDCjhPrfiYPBn); /i deselEccionar piusa í/DeletBQbjectthBlackPenJ; /i borrar pluaa t/RelBasBDC(HHindow,hDisplayDC)j ft liberar el contfixto de visualisación (/

void TPanduloHindow;:CoordfiFufirza{Yoid)iHDC hDisplayDCj /t contexto de visualización t/HPEN hBlackPen, hPrevPen; /í piusas í/double xFue,yFue;

char str[25];int sig = ó; // nusero ds dígitos signiücativosint longitud;

bDisplayDC= BBtDCíHHindoNÍ; /t establEcsr el contexto dE visualización í/hBlackPEn= CrEatEPenEPS_SQUD,l)RG8ÍOJ0JG)); /t crBar pluisa MhPrevPen= (HPEN)SelectObJBct(hDisplayDC,hBlackPBn); /t seíeccionar pluaa í/

yFuB= (UbicEJEX-coordEnadaY)íl1axFuB/(UbicEJEX-40)i

//coordEnadas x and y dsl cursor

gcv t (xFue , sig, str);long i tud=s t r lBn(5 t r ) ;T B X t O u t t h D i s p l a y D C ^ O j O , " " , 2 2 ) ; / /borrar B! dato anteriorT E X t Q u t ( h 0 Í 5 p l a y D C J 2 0 , O l s t r í l o n g i t u d ) ;

g c v t í y F u f i , sig, s t r ) ;longit i id=str len{s-tr) ;T s x t O u t í h D i s p l a y D C ^ O ^ O , " M , 2 2 ) ; / /bor ra r E! dato anter iorT e x t O u t í h D i s p U y Q C , 20,20, str, l o n g i t u d ) ;

SBlBctQbjectíhDisplayQCjhPrevPEn); /í dssBlEccionar piuca t/DeieteObjectíhBlackPen); /í borrar piusa t/

/i liberar si contexto de visualiíación t/

Page 185: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

188

III Función para graficar la velocidad angular versus elvoíd TPenduloWindow:¡SrafflngvsDangívoid)

HDC fiDCj // contexto de visualizaciónHPEN hNsgro, hPrevi; // piusa para los ejesHPEN hAzul, hPrev2; // pluma para la curvaint k,i,j,longi,5Íg=6jdouble x } y, esd, 8scY,inftnguY,inVangYif loat dsHXjdeHYjchar str[25];

inAnguY=HaxAngíl8/PI;

BtrcpylDeftnguY, Tíj5trcat(DeAnguY, str);strcatíDeAnguY, " g/div)")j

inVangY=HaxDangílS/PI;gcvtíinVangYjSigjStrljstrcpyíDeVangY, "(")}5trcat(DeVangr, str]j5trcat(DeVangYj " (g/s)/div)B)i

sscX=íanchQVefitx-20JÍ0.5/MaxAng¡ // factor de escala en ei eje xescY={altoVenty-5GH0.5/MaxDangj // factor de escala en el eje y

delU=ifloaUíanchoVentx-i9)/20.0;deltY=(floatJíaltoVBnty-50)/20.0i

hDC= 6etDC[HWindow); // establecer el contexto de visualización

TextOut(hDCJ3,0JBx= grü,26);TextOut(hDCJ3J20J"y= ' gr/5%28);SetTextColoríhDC, 888(0,0,255)))longi=strlen{DeAnguY);TextOut(hDC,140,0,DeAnguY,longi);longí=5trlen(DeVangY)jTextQut(hDCíi40J20,E)eVangYílongi]}TextQutíhDC^BOjO/vel. ang. vs, ang/,18);

// dibujo de los ejeshHegro=CreatePeníO,1,0x00000000);hPrevi=(HPEN)SelecíObject(hDC,hNegro)iHoveToíhDCjlOjUbicEjexí;LinBToíhDCjíanchoVentx-iOíjUbicEjexJj«oveTo{hDCJ(anchoVentx/2)340J;LineToíhDCJ(anchoVentx/2)/(altoVenty-10})jSalectObject(hDC,hPrevi)iDeleteObject(hNegroJ;

Page 186: ESCUELA POLITÉCNIC NACIONAA L FACULTAD DE INGENIERÍA ... · La ubicación de centrl o del carr seo encuentra a una distancia x(t) de origel n de sisteml a de referencia , que como

189

f a r ( i=0 j i<=20 j i -n - ]íj = ( i n t ) { i O . O t d e l t X t i í ii f ( i = = 1 0 ) ;SÍSE

í

H o v B T o ( h D C j j , ( l i b i c E j e x -2 ) ] jL i n e T a í h D C j j j d l b i c E j B X + 2 J ) ;

íoríi=0;i<=20;iHj/

j = (ini)HO.(HtíeltYíi);ifíi==íO);elssíBoveTo(hDC,íanchoVBntx/2-2),j)¡LineTQÍhDCf{3nchoVentx/2f2)Jj}5

/ / d ibu j a r la - f igurahAzul sCrea tePen íQ, 1 ,868(0 ,0 ,255) ) ;h P r B v 2 = ( H P E H ) S B Í e c t a b j e c t ( h D C í h A z u l ) j

y = ( d o u b l s ) U b i c E j e x - a n _ d E 0 3 t e s c Y jx = ( d o u b l e ) ( a n c h o V B n t x / 2 ) + a n t O ] Í B 5 c X i

H o v e T o ( h O C } i i n t ) x , { i n t ) y ) iíor{ ic=I ; ic<haxI ; ic -<- t -}í

y = í d o u b l s ) l J b i c E J B X - a n _ d [ i c ] t e s c Y jx={doub lE) (anchoVEnt> : /2S+an[ i c ] tEsc3 ( ;

S e l e c t O b j e c t ( h D C , h P r E v 2 ) iD e l e t e O b j e c t í h A z u i ) ;

R e l e a s e D C ( H H i n d D W , h D C ) ; / t l ibsrar el contEXto de visual ización t/

// funciín para obtener las coordenadas del Sngulo vs, vel. angular//void TPsndulot i i r idoM: ;CoorVangvsAng(vo id){

.HDC H D i s p l a y D C j /í contexto de visual izadón \HPEN hBlackPen , hPrevPen j /í p l u n a s t/d o u b í e

charint 5Íg = áj // numero de dígitos significativos