Autor Tema: Rampa de aceleracion y desaceleracion  (Leído 15365 veces)

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

Desconectado SOLOZENER

  • PIC10
  • *
  • Mensajes: 16
Re: Rampa de aceleracion y desaceleracion
« Respuesta #15 en: 05 de Abril de 2008, 05:53:52 »
Hola manex 1987 gracias por tu respuesta...he estado leyendo algunos documentos sobre pid's pero no logor entender que hace cada señal de control...la proporcional mas o menos
creo que la proporcional es solo la resta del set point-valor actual y conforme a eso multiplicarlo pero en la integral y la diferencial   no logro entender como influyen y pues me cuesta trabajo analizar algunos codigos de asm  :-/


Gracias



Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Rampa de aceleracion y desaceleracion
« Respuesta #16 en: 05 de Abril de 2008, 06:27:59 »
Yo todavia no se demasiado de PIDs, pero a finales de junio espero saber algo(acabamos de empezar a darlo en la universidad). Hasta donde sé, un PID debe ser ajustado, ajustando tres constantes.

Kp: Constante proporcional, correspondiente al termino proporcional.

Ki: Constante integral, para el termino integral.

Kd: Constante derivativa, para el termino derivativo.

El termino integral lo que hace es, coger la señal e integrarla. Y el derivativo deriva la señal. Implementar eso en un PIC implica hacerlo numericamente. Obviamente se precisa del uso de coma flotante... asi que a lo mejor ASM no es la mejor eleccion...

Links que te sacaran de dudas (ingles necesario):

Controladores PID con PIC18

Control de un pendulo invertido usando PID

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Rampa de aceleracion y desaceleracion
« Respuesta #17 en: 05 de Abril de 2008, 10:58:27 »
¿por que razón para derivar e integrar hace falta las librerías en coma flotante? Si estamos en un sistema discreto eso no hace falta.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Rampa de aceleracion y desaceleracion
« Respuesta #18 en: 05 de Abril de 2008, 11:16:22 »
Seria una casualidad impresionante, que la integral y la derivada del error, dadas en un tiempo de muestreo T, fueran a dar numeros enteros sin ningun margen de error. Claro, puedes prescindir de la coma flotante para el calculo, pero el error que realizas en el calculo sera determinante en la estabilidad y el comportamiento en general del sistema de control. Aparte, el ajuste de los parametros Kp, Ki, Kd es mucho mas optimo si tenemos una resolucion digna.

La derivada, pensandolo mejor, si que puede ser entera en todos los casos. Pero la integral (pensando en ella como una superficie) no.
« Última modificación: 05 de Abril de 2008, 11:23:52 por manex_1987 »

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Rampa de aceleracion y desaceleracion
« Respuesta #19 en: 05 de Abril de 2008, 11:28:47 »
La integral en un sistema discreto se implementa como un sumatorio y la derivada como una resta, ¿de donde salen los decimales?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Rampa de aceleracion y desaceleracion
« Respuesta #20 en: 05 de Abril de 2008, 11:48:51 »
Espero que no estemos en un malentendido. Cuando dices sistema discreto, quiero creer que te refieres, a un sistema muestreado, es decir, para este proyecto mismo, seria leer el encoder y de ahi sacar la posicion absoluta. Eso se hace cada X tiempo, luego los calculos se hacen cada X tiempo por lo que la señal de control generada se refresca cada X tiempo, luego el sistema es discreto.

Todo depende del metodo de integracion que elijas. Si te decantas por forward o backward (la integral se hace cogiendo un rectangulo con la muestra en el instante N-1 o en el instante N , respectivamente), te saldran numeros enteros y si que la integral es un sumatorio de todas las sub-areas... pero dado que entre muestra y muestra hay un tiempo T, todo ese sumatorio debera estar multiplicado por ese factor.

En la derivada lo veo mas claro lo de la resta... pero claro, es entera solo si 1/T es entero. Porque la derivada discreta se computa como X(N)-X(N-1) / T

Explicame como lo ves tú...

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Rampa de aceleracion y desaceleracion
« Respuesta #21 en: 05 de Abril de 2008, 11:59:09 »
Efectivamente si tomamos el tiempo de muestreo como unidad mínima de incremento, no es necesario dividir por T ya que este valor es la unidad. En caso contrario si que hay que dividir y se pueden obtener decimales. De todas formas al ser el tiempo de muestreo igual para todo el sistema, no hace falta dividir por el tiempo con lo cual el tiempo de computo se reduce ostensiblemente y con ello aumenta la velocidad de proceso.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Rampa de aceleracion y desaceleracion
« Respuesta #22 en: 05 de Abril de 2008, 12:04:28 »
El problema radica, en que calculando la señal de control cada segundo (T=1), no vas a conseguir nada bueno, dado que la dinamica del motor es (obviamente) mucho mas rapida que eso.

Pero bueno, una opcion razonable puede ser usar multiplos como 1/10, 1/100, 1/1000, y "escalar" todos los calculos, haciendo x10, x100, x1000. Pero me temo que luego a la hora de de-escalar, surgiria algun que otro error de redondeo. Claro, ese error sera menor a la unidad, y puede que el sistema funcione bien a pesar de ello... pero solo aviso.


Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: Rampa de aceleracion y desaceleracion
« Respuesta #23 en: 05 de Abril de 2008, 13:06:48 »
Hola manex_1987, cuando jfh900 te dice que el tiempo de muestreo como unidad mínima de incremento no se refiere a que T=1segundo sino mas por el contrario se trata de que T=1 significa que T=1mS o T=100mS o T=10uS es decir es una unidad minima en la que se muestrea la señal y lo puedes hacer tan rapido como quieras.

Por ejemplo el control derivativo seria algo asi:

Accion_Derivativa = D * [(Xt) - (Xt-1)] / [1]

[1] : es la unidad minima de tiempo de muestreo que puede ser 10mS, 100mS, 1mS, 10uS, ... lo que mejor te convenga.

Ten en cuenta que D<0, esto parte del siguiente hecho:

La accion de control derivativa hablando con un poco mas de rigor seria:

Accion_Derivativa = Kd * dError/dt =  Kd * d(Set_Point - Valor actual)/dt, pero sabemos que la derivada de una constante como lo es el Set_Point es cero, es decir d(Set_Point)/dt = 0, entonces la ecuación queda:

Accion_Derivativa = Kd * d( - Valor actual)/dt = - Kd * d(Valor actual)/dt

El termino " d(Valor actual)/dt " expresa la razón de cambio de la velocidad respecto del tiempo, entonces podemos escribir:

Accion_Derivativa = - Kd * [(Xt) - (Xt-1)]/[(t) - (t-1)] , pero (t) - (t-1) = " 1 " porque es nuestra minima unidad de tiempo, por lo tanto:

Accion_Derivativa = - Kd * [(Xt) - (Xt-1)]/[1]

La ecuación presenta el signo negativo porque tiene que contrarestar el hecho de que vaya llegando muy rapido al SetPoint.
Bueno, espero se haya entendido algo.

Javicho.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Rampa de aceleracion y desaceleracion
« Respuesta #24 en: 05 de Abril de 2008, 13:26:30 »
Esta perfectamente explicado.

El paso de un sistema continuo a uno discreto lo tienes expresado en:

Accion_Derivativa = Kd * d( - Valor actual)/dt = - Kd * d(Valor actual)/dt

Accion_Derivativa = - Kd * [(Xt) - (Xt-1)]/[(t) - (t-1)] , pero (t) - (t-1) = " 1 " porque es nuestra minima unidad de tiempo, por lo tanto:

Donde pasamos de funciones continuas y por tanto derivativas a valores muestreados y por lo tanto necesitamos tomar incrementos.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Rampa de aceleracion y desaceleracion
« Respuesta #25 en: 06 de Abril de 2008, 09:17:30 »
Sip, completamente de acuerdo, lo entiendo. Lo que me avispa es que en un sistema con sobreimpulso en su respuesta, eso vaya a funcionar bien, dado que habeis supuesto ValorActual<SetPoint siempre. Pero bueno, usado junto con la accion proporcional no deberia ser problema.

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: Rampa de aceleracion y desaceleracion
« Respuesta #26 en: 06 de Abril de 2008, 23:58:39 »
Hola como estan, por ejm en un motor de corriente continua controlado por un dspic no es necesario complicarse tanto con esas conversiones, de enteros, punto fijo, escalado aqui, escalado a ya. Tengo implementado un pid con un T=1mseg el pid solo dura menos de 200useg. un T=1mseg es un buen tiempo de muestreo para un motor dc, se consiguen buenos resultados, por ejm si se diseña para que el set point se establesca en 200mseg, 200 puntos de control esta bien.

A medida que Microchip vaya sacando micros más potentes como los dspic32, que no falta mucho para que lleguen, todos esas conversiones dejaran de usarse incluso para un control vectorial.

saludos.
control de movimiento


 

anything