TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: gera en 26 de Noviembre de 2009, 21:58:30

Título: duda basica sobre PID
Publicado por: gera en 26 de Noviembre de 2009, 21:58:30
Hola amigos!!!
Perdonen si mi pregunta es muy tonta, es q recien estoy empezando con esto de PID y me tiene algo perdido. Ademas como decia un profesor mio "no hay preguntas tontas, sino tontos q no preguntan", cierto? jeje.
El tema es el siguiente. Supongamos un control solamente proporcional para controlar la velocidad de un motor, omitamos la parte integral y derivativa:
(http://upload.wikimedia.org/wikipedia/commons/thumb/2/2d/PID.svg/500px-PID.svg.png)

Entonces la salida y(t) seria la velocidad real del motor, y la referencia u(t) seria un valor proporcional a la velocidad deseada. Supongamos q en la salida tenemos el valor 50, pero nosotros queremos q el motor llegue hasta 80. Entonces la señal de error va a ser:
u(t)-y(t)=80-50=30
La multiplicamos por Kp, pongamos q es 1. Entonces este valor pasa a la planta, lo q supongo serian los actuadores. Y aqui radica mi duda. 30 es un valor inferior al q habia antes, y en lugar de acelerarme el motor, lo va a desacelerar. Entonces asumo q ese 30 se tiene q sumar al valor q tenia antes, pero en ese caso estaria integrando.
Alguien me puede explicar un poco como es el asunto por favor?
Gracias desde ya!!
Título: Re: duda basica sobre PID
Publicado por: darck_khronos en 26 de Noviembre de 2009, 22:10:05
lo que pasa es que aun te falta agregar una ganancia y tambien dependera con que la trabajes yo lo hago con Op-Amps
Título: Re: duda basica sobre PID
Publicado por: gera en 26 de Noviembre de 2009, 22:21:35
Si, pero independientemente de eso. El sistema podria ser discreto o continuo, y las ganancias pueden variar. Pero mi duda es que ocurre con la señal en cada etapa. Una vez obtenido el error, se suma a la salida q ya habia? La verdad q seria mas visual en un sistema discreto para mi jeje.
Título: Re: duda basica sobre PID
Publicado por: darck_khronos en 26 de Noviembre de 2009, 22:38:47
Si tienes instalado Matlab en tu computadora con Simunlik puedes ver que pasa aqui te dejo un pid que hice apenas
Título: Re: duda basica sobre PID
Publicado por: Suky en 26 de Noviembre de 2009, 23:48:17
Haber, primero que nada considerando que K es igual a 1 ya es un error, porque en un sistema de control proporcional para que el error estacionario se aproxime a 0, K debe ser lo mas grande posible. Esto lo vemos analizando el siguiente sistema:

u ---->o---->| K |----->| G |---o----> y
          |___________________|

Donde
y=K(u-y)G=KuG-KyG

despejando:
y=(\frac{KG}{1+KG}).u

Aquí vemos que si K es grande, KG será mucho mayor que 1, entonces quedará solo:
y=(\frac{KG}{KG}).u=u

Pero esto genera problemas, tales como el sobreimpulso que genera un pequeño escalón de error, tiempo de establecimiento, saturación y además el valor de K no puede obtenerse con elementos reales. Por ello se necesita dependiendo del problema en si, agregar control derivativo e integral, más algunos otros "retoques" como el anti-windup.

Ahora en el planteamiento que realizas te olvidas de los valores pasados  :? Empecemos por el sistema apagado, en el cual establecemos un valor u de referencia. Como y es cero, hay un error que pasando por el control proporcional genera una señal de control suficiente para establecer el sistema, hasta que y=u. En este momento el error es 0 y no habría señal de control, pero al variar levemente y sea aumentando o disminuyendo por cualquier factor externo, se genera un error positivo o negativo que actúa sobre el sistema. No se si logre explicarme  :?


Saludos!
Título: Re: duda basica sobre PID
Publicado por: gera en 27 de Noviembre de 2009, 00:39:05
Gracias por tu explicacion suky!!
No es exactamente lo q preguntaba, pero me diste mucha informacion valiosa y nueva para mi :D
Mi duda en realidad es mas simple. Supongo q llamamos señal de control a la obtenida luego de integrar/derivar/amplificar la señal de error y sumarlas, cierto? En ese caso, la señal de control, es la nueva salida de nuestro sistema? O se suma a la salida q ya teniamos?
Digamos q si quisiera hacer un programita, en pseudocodigo, seria algo asi?
   e(t) = ref(t) - salida(t);

   salida(t) = salida(t-1) + k*e(t);


No se si me explico.. la verdad q tengo un lio en la cabeza.. quizas con un ejemplo lo entienda, pero los q encuentro por internet son muy complicados :(
Título: Re: duda basica sobre PID
Publicado por: Trev en 27 de Noviembre de 2009, 00:55:53
Como bien dice Suky la desventaja que tiene el control P mas alla de lo dificil de implementar ,q no es algo menor, es el error q agrega en estado estacionario  si bien reduce el amortiguamiento y la constante de tiempo de la planta o sea el sistema se acomoda mejor a los cambios pero con mayor error

Tomando por ej.

Dada tu planta M(s)=1/(1+Ts) agregando el factor K tu tienes a lazo cerrado Ar(s)=KM(s)/(1+KM(s))=K/((1+K)+µs+T^2s^2)
 



Título: Re: duda basica sobre PID
Publicado por: Suky en 27 de Noviembre de 2009, 01:07:24
La señal de control es e(t).K, que cuando y=u es 0.

Ahora la salida dependerá de la función de transferencia que asocie y(t) con la señal de control. Si suponemos que G(z) es de primer orden, G(z)=1/1+z tendrías:

y(k)=v(k) - y(k-1)


Saludos!
Título: Re: duda basica sobre PID
Publicado por: Trev en 27 de Noviembre de 2009, 01:20:57
Hola  :) como bien dice Suky la desventaja que tiene el control P mas alla de lo dificil de implementar ,q no es algo menor, es el error q agrega en estado estacionario  si bien reduce el amortiguamiento y la constante de tiempo de la planta o sea el sistema se acomoda mejor a los cambios pero con mayor error

Tomando por ej.

Dada tu planta M(s)=1/(1+Ts) ^2 agregando el factor K tu tienes a lazo cerrado Ar(s)=KM(s)/(1+KM(s))=K/((1+K)+µs+T^2s^2)
q simplificando te da:
Ar(s)=K/(1+K)1/(1+(2Ts/(1+K))+T^2s^2/(1+K)
Esto comparando con una función de transferencia de 2 grado q tu tendrias
1/(1+Ts)^2=1/(1+2Ts+T^2s^2) donde el factor de amortiguamiento sin compensar seria 2Ts=2bts donde t seria tu nueva constante de tiempo despues de compensar,antes seria t=T asique b=1 (amortiguamiento)

Luego de compensar tu logras esto:
t=T/(K+1)^^2  ^^=raiz cuadrada
y ahi se ve claro el efecto de K sobre la constante de tiempo
y el amortiguamiento bnuevo=(K+1)^^2/(K+1) Q VA A SER MENOR Q 1 PERO FIJATE Q CUANDO s=0
o sea
tu funcion te queda Ar(0)=K/(1+K) y si Ar(s)=E(s)/S(s) si E=1 (escalon) S(0)=K/(1+K) y el sobrevalor q resulta en la respuesta q es una sinusoide q va decreciendo te lo paso mañana por q no me acuerdo y ya esta tarde pero es malo
Título: Re: duda basica sobre PID
Publicado por: Suky en 27 de Noviembre de 2009, 01:33:14
Hola  :) como bien dice Suky la desventaja que tiene el control P mas alla de lo dificil de implementar ,q no es algo menor, es el error q agrega en estado estacionario  si bien reduce el amortiguamiento y la constante de tiempo de la planta o sea el sistema se acomoda mejor a los cambios pero con mayor error

El control P no agrega error estacionario, sino que lo mejora, pero no es suficiente para anularlo.

Saludos!
Título: Re: duda basica sobre PID
Publicado por: Trev en 27 de Noviembre de 2009, 01:51:56
Si es verdad pero depende del valor de K si K<1 va a haber error para K grandes no lo habrá si se usa un OP la ganacia obvio q va a ser grande depende de lo que se use asiq corregido pero la respuesta al escalon es una sinusoide amortiguada q decrece hasta 1 osea q desmejora la salida,bue mañana lo vemos mas descansados
Título: Re: duda basica sobre PID
Publicado por: gera en 27 de Noviembre de 2009, 13:46:42
Muchas gracias por sus explicaciones!!! Se nota q la tienen clara jeje.
Suky, cuando pones:
y(k)=v(k) - y(k-1)
que seria v(k)?

Les cuento para q estoy metiendome con esto del PID. Estoy haciendo un robotito, y ya consegui unos motores con encoders de cuadratura. Y quisiera controlar la velocidad del motor por PWM. Asiq por lo pronto voy a escribir las rutinas para leer el encoder y para modular los pulsos. El tema es q me gustaria mantener la velocidad del motor, incluso si el robot va en subida, bajada o se encuentra algun obstaculo.
Encontre un par de ejemplos para controlar un motor por pwm con pid, pero no los entiendo del todo. Ademas no usan encoders como sensor de velocidad, sino q usan un sensor analogico.
Bueno, voy a ver si de a poco voy prograsando jeje. Muchas gracias por sus valiosas explicaciones! :D
Título: Re: duda basica sobre PID
Publicado por: Suky en 27 de Noviembre de 2009, 13:59:25
Suky, cuando pones:
y(k)=v(k) - y(k-1)
que seria v(k)?

Es la entrada al sistema, osea que:

Y(z)=G(z).V(z)

En el caso de colocar un control proporcional, v(k)=Kp.e(k)


Saludos!