Autor Tema: control PID  (Leído 6039 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
control PID
« en: 10 de Octubre de 2006, 11:49:38 »
Teniendo en cuenta que para un controlador pid:

salida(t)=P+I+D

salida(t)=Kp*e(t)+Ki * e(t) dt+ Kd * de(t)/dt

Ahora analizando cada acción:

P = Kp*e(t)

En esta ecuación si el signo del error es negativo, entonces P es negativo.


I= Ki * e(t) dt

En este caso si la integral toma un valor negativo, entonces I es negativo

D= Kd * de(t)/dt

Si la derivada o pendiente es negativa(hay una disminución en error), entonces
D es negativo

Por último
Salida(t) = P+I+D

Por lo visto en las ecuaciones de cada acción, esta suma es algebraica, ya que
las acciones pueden tomar signo positivo o negativo. Y por lo tanto la salida
pid total puede ser negativa también.


Mi duda es la siguiente:

Si mi salida pid es 0-10volt, físicamente no puedo materializar
un valor negativo de salida, ya que implicaría que la salida
sea +/- 10volt, cosa que no ocurre porque los valores que manejan los
actuadotes son 0-10volt.

Entonces, que hago en la práctca con cada una de las acciones cuando
en la teoría su salida es negativa????????????? Porque en la realidad voy
a manejar solo tensiones 0-10volt(positivas).
Por las dudas aclaro que trabajo los cálculos en porcentajes: 0volt=0%   10volt=100%
 

Deimos

  • Visitante
Re: control PID
« Respuesta #1 en: 11 de Octubre de 2006, 10:26:34 »
Una manera de solucionarlo es haciendo que

10V de salida sean 10v de entrada,
5V de salida sean 0v de entrada,
0V de salida son -10V de entrada,

Espero haberte sido de ayuda

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: control PID
« Respuesta #2 en: 11 de Octubre de 2006, 16:33:24 »
O sea que tu dices que la salida será 50% cuando el error=0 ??? :? :shock:

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: control PID
« Respuesta #3 en: 11 de Octubre de 2006, 16:50:00 »
Qué pasa si hago lo siguiente:

Para el control proporcional

P=Kp*ERROR

Si error  es igual o mayor que 0, no hay problema y salida estará entre 0 y 100%.
Si el error es negativo hago que P=ultimaP- abs error o lo que es lo mismo lo sumo y como tiene signo negativo en realidad lo estoy restando de la ultima salida.
En el caso que esta operación diera un resulatado negativo, recién daría salida 0%.

Aplicando esta idea de restar a la ultima salida, haría lo mismo para la acción I usando la integral del error en lugar del error y lo mismo para la acción D usando la derivada del error en lugar del error.

Está bien mi razonamiento?
Espero opiniones de los foreros que siempre aportan conocimientos y experiencia a los que como yo, recién nos iniciamos en esto.

Deimos

  • Visitante
Re: control PID
« Respuesta #4 en: 16 de Octubre de 2006, 08:58:32 »
Lo primero que has de hacer es decir para que utilizas el PID, porque hablas de actuadores pero no indicas si haces control de posicion, velocidad, aceleracion, caudal, etc, etc..... Los PID's no son iguales, varian dependiendo de la aplicacion donde vayan destinados.

Con respecto a la salida de 10V, por lo que escribes entendi que tu problema era que la consigna puede ser mas menos 10v, mientras que la salida solo puede ir de 0 a mas 10V, por eso te ofrecí esta solucion.

Mientras no expliques a que aplicas el PID, poco se te va a poder ayudar.

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: control PID
« Respuesta #5 en: 16 de Octubre de 2006, 10:15:15 »
El pis es solo para pruebas de laboratorio, didáctico, es decir ver su comportamiento en el tiempo al variar los parámetros en una pantalla.

Lo que debo tener a la entrada son 0-10v de un hopotético sensor, en el controlador introduzco el valor de set point por teclado e internamente saca el error(error=setpoint-sensor) y hace los demás cálculos, para entregar a la salida 0-10v al hipotético actuador.
Es decir, no te puedo decir control de que , pero sí que el sensor entrega 0-10v y la salida del pid entrega 0-10v al hipotético actuador.

La planta es una placa que simula un sistema de primer o segundo orden y sus entradas y salidas son 0-10v. Por lo que si quieres saber exactamente que vas a controlar es esa placa.


Cómo hago entonces con la salida del pid???

Deimos

  • Visitante
Re: control PID
« Respuesta #6 en: 16 de Octubre de 2006, 11:30:42 »
Te voy a poner un ejemplo para que entiendas que tal y como lo quieres hacer no se puede. Supongamos un control de posicion, antes de que el motor llege a la posicion el error es positivo, en la posicion el error es cero, y despues de la posicion el error es negativo. Cuando el sistema recibe un error negativo, lo que hace es darle una respuesta muy brusca al sistema, para corregir el error. Si coges el valor absoluto del error, no sabes si estas por delante o por detras de la posicion.

En los controles de posicion, cuando el motor está muy proximo a la posicion deseada, la corriente cada vez es menor, ya que corriente=error, como la corriente es cada vez mas pequeña, llega el momento en que el motor no tiene suficiente para girar, y se queda antes de la posicion, a esto se le llama entrar en zona muerta, el error es muy pequeño pero no cero.

En los motores inductivos por ejemplo, la parte integrativa casi no se utiliza, ya que son las propias bobinas del motor las que amortiguan la señal, y si tienes que usar parte integrativa, te saldrá de un factor bastante pequeño, en comparacion con motores de imanes.

En fin que podria seguir dando ejemplos, control de caudales con bastante respuesta derivativa, aceleracion con resp. muy derivativa, velocidad proporcional e integrativa, ........

Los PIDs no los puedes coger y aplicarlos en plan talla unica hombre.

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: control PID
« Respuesta #7 en: 16 de Octubre de 2006, 17:41:30 »
Citar
   Te voy a poner un ejemplo para que entiendas que tal y como lo quieres hacer no se puede. Supongamos un control de posicion, antes de que el motor llege a la posicion el error es positivo, en la posicion el error es cero, y despues de la posicion el error es negativo. Cuando el sistema recibe un error negativo, lo que hace es darle una respuesta muy brusca al sistema, para corregir el error. Si coges el valor absoluto del error, no sabes si estas por delante o por detras de la posicion.
                                 

Parece que no me expliqué bien. El ejemplo que quize poner de como calculare es para un proporcional.
Si tengo en cuenta el signo del error , eso es lo primero que hago determinar si es positivo o negativo, luego hago:

Si el error es positivo  P=K*error  y P estará entre 0 y 100%(0 y 10volt)

Si el error es negativo P=Panterior- abs error

La duda que tengo es cuando el error es negativo me entiendes, o sea, si cuando el error es negativo hago:

P=Panterior- abs error    (pongo - abs, osea que en realidad si tengo en cuenta el signo,     
porque  este calculo lo hago así solo si el error es negativo)
 o la otra alternativa es que cuando el error sea negativo haga P=0 %
Esa es la duda, que conviene hacer P=0 directamente o bajar la excitación más suavemente como la primera fórmula.

Gracias por tu ayuda.

PD:Recuerda que no voya controlar motores, ni nada "real", sólo la placa con operacionales que simula un proceso de segundo orden y ver la grafica de respuesta, nada más.

Deimos

  • Visitante
Re: control PID
« Respuesta #8 en: 17 de Octubre de 2006, 13:38:39 »
Vamos a ver, un proporcional nunca puede ser P=0, como poco P=1, mirate ejemplos de circuitos con AO para hacer PID, la ganancia que como poco puedes obtener es 1. Este valor es unitario no porcentual.  Si multiplicas cualquier cosa por P, y P=0, tu resultado es 0, no?

Cuando haces un modelo de PID, tienes un operador, que relaciona la consigna con la lectura (feedback) y el resultado es el error del sistema. Bien, el signo del operador no se puede cambiar, es decir, que estás en el caso normal donde error=consigna-lectura, o lo ke es lo mismo consigna=lectura+error.

Si te pasas de P --> error=consigna-lectura

donde lectura>consigna --> error<0

Pienso que no te hace falta coger el abs del error.

Si lectura<consigna --> lectura+error
Si lectura>consigna --> lectura-error

Pero el cambio de signo no lo haces en el operador, sino en el controlador. La P, si el sistema es lineal, no se ha de tocar mientras está en marcha, otra cosa es que el sistema sea no lineal, o estocástico, estonces sí que tanto la P, la I y la D irán adecuandose dependiendo de la respuesta del sistema. Si tu caso es lineal, no necesitas ver la P anterior.

Espero haberte aclarado la duda.

Salu2