Autor Tema: PID Digital (paso a paso)  (Leído 84324 veces)

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

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3216
Re: PID Digital (paso a paso)
« Respuesta #30 en: 20 de Septiembre de 2009, 19:01:37 »
Y ¿Como se implementa una ecuacion de un controlador en C?

Un saludo.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: PID Digital (paso a paso)
« Respuesta #31 en: 22 de Septiembre de 2009, 09:25:27 »
Y ¿Como se implementa una ecuacion de un controlador en C?

Un saludo.
Aquí hay uno implementado en C.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: PID Digital (paso a paso)
« Respuesta #32 en: 01 de Marzo de 2010, 03:53:10 »
Blackcat, estoy intentando seguir tus pasos con el IDENT tal y como lo describiste unos mensajes atrás, pero me he quedado atascado en el paso "Ahora arrastramos el cuadro que dice ARX111 de la columna derecha sobre el cuadro TO WORKSPACE ... eso hara que los datos del modelo lo tengamos en la linea de comando."

Te dejo una imagen de lo que veo en pantalla, y con una flecha roja te indico lo que hago con el ratón, pero no consigo arrastrar nada. ¿Será que no he entendido bien lo que tengo que hacer?


Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: PID Digital (paso a paso)
« Respuesta #33 en: 01 de Marzo de 2010, 09:19:11 »
Y seleccionando el modelo y clickeando en To Workspace?
No contesto mensajes privados, las consultas en el foro

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: PID Digital (paso a paso)
« Respuesta #34 en: 02 de Marzo de 2010, 02:20:07 »
Pues no lo consigo, ni dándole al label "To workspace", ni sin darle. Es como si el Workspace no estuviera diseñado para recibir drags & drops  :(

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: PID Digital (paso a paso)
« Respuesta #35 en: 02 de Marzo de 2010, 04:03:59 »
hola nocturno, To Workspace esta en la misma ventana de System Identification en la parte centrarl ahi arrástralo. Luego
en el Comand Windows arma tu función de la forma como blackat comenta.

saludos.
control de movimiento

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: PID Digital (paso a paso)
« Respuesta #36 en: 06 de Marzo de 2010, 04:15:42 »
Perfecto, así sí funciona.
Voy a preparar un log de los datos para meterlos en la coctelera a ver qué sale.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: PID Digital (paso a paso)
« Respuesta #37 en: 06 de Marzo de 2010, 08:19:35 »
Llevo un rato jugando con MATLAB y no me acaban de convencer los resultados que he obtenido, porque seguramente la habré cagado en alguna parte.
 
Os cuento lo que he hecho.
En primer lugar he preparado un programa en el PIC que captura cada 10ms. la velocidad del motor almacenando un total de 470 muestras (4.7s) que es lo máximo que me permitía la RAM.
He excitado el motor en secuencias que duraban 500ms de tres maneras distintas:
  • Secuencia1: 500ms con duty=127, 500ms con duty=0, 500ms con duty=127, 500ms con duty=0, ...
  • Secuencia2: 500ms con duty=127, 500ms con duty=50, 500ms con duty=127, 500ms con duty=50, ...
  • Secuencia3: 500ms con duty=115, 500ms con duty=90, 500ms con duty=115, 500ms con duty=90, ...

Estas son las respuestas que he obtenido del motor:
CAPTURA 1


CAPTURA 2


CAPTURA 3


Tras ejecutar IDENT he decidido utilizar orden 2 en la primera y tercera captura, y de orden 1 en la segunda, porque a mi juicio es el que mejor relación presenta entre complejidad y aproximación a la función real. Estos son los modelos obtenidos:
MODELO 1


MODELO 2


MODELO 3



Estas son las funciones de transferencia obtenidas:
FUNCION 1
Transfer function from input "u1" to output "y1":
   0.5152 z - 0.3286
-----------------------
z^2 - 0.7035 z - 0.2006
 
Transfer function from input "v@y1" to output "y1":
       18.23 z^2
-----------------------
z^2 - 0.7035 z - 0.2006
 
Input groups:          
      Name      Channels
    Measured       1    
     Noise         2    
                        
Sampling time: 0.01

FUNCIÓN 2
Transfer function from input "u1" to output "y1":
   1.361 z - 1.208
----------------------
z^2 - 0.702 z - 0.2102
 
Transfer function from input "v@y1" to output "y1":
      15.24 z^2
----------------------
z^2 - 0.702 z - 0.2102
 
Input groups:          
      Name      Channels
    Measured       1    
     Noise         2    

FUNCIÓN 3
Transfer function from input "u1" to output "y1":
    -2.32 z + 2.313
-----------------------
z^2 - 0.6377 z - 0.3697
 
Transfer function from input "v@y1" to output "y1":
       9.735 z^2
-----------------------
z^2 - 0.6377 z - 0.3697
 
Input groups:          
      Name      Channels
    Measured       1    
     Noise         2    
                        
Sampling time: 0.01


Pues bien, como podéis comprobar cualquier parecido entre una función y otra es pura coincidencia, lo que me ha dejado desconcertado.
¿No se supone que deberían parecerse?
¿Me recomendáis que siga adelante calculando el PID o debo hacerlo de otra manera?

Gracias y perdonad por el tostón.
 

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: PID Digital (paso a paso)
« Respuesta #38 en: 06 de Marzo de 2010, 10:26:06 »
Para obtener una mejor respuesta lo que te conviene hacer es que el periodo de las secuencias sean algo mayor. para que la velocidad llegue al estacionario. El problema que veo es que no vas  a tener suficiente memoria para guardar los datos. Como ves en las gráficas, en ningún momento la velocidad llega al valor estacionario, por lo tanto solo tomas el transitorio de la respuesta y eso hace que tu modelo obtenido no sea muy bueno. Prueba con un período de al menos 2 segundos.
Otra cosa que veo es que en la secuencia 1 y 2, estás utilizando un duty de 0 para el calor mínimo del mismo y esto hace que la velocidad haga cosas raras, Te conviene utilizar secuencias como la tercera, pero siempre procura que llegue al estacionario. Si hay partes de la respuesta en los extremos que hace cosas raras recorta esos puntos y no los consideres.
No se con que obtienes la velocidad, pero si es con una matriz taquimétrica filtra con un capacitor un poco la señal.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: PID Digital (paso a paso)
« Respuesta #39 en: 06 de Marzo de 2010, 13:41:34 »
Probaré entonces ampliando el periodo de 500ms a uno mayor, pero dejé eso porque creí que ya estaba en el estacionario. Realmente si miras las curvas 1 y 2 verás que cuando el escalón cae es cuando la curva está plana.
La velocidad la mido con un encoder que llevan los motores, midiendo la duración de cada pulso tengo T y de ahí obtengo la frecuencia.

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: PID Digital (paso a paso)
« Respuesta #40 en: 06 de Marzo de 2010, 13:44:46 »
Una manera más simple de sacar la función de tu planta es hacerla al ojo :?, la respuesta de velocidad de un motor dc tiene la forma de una funcion de primer orden es decir sin sobreimpulso. Entonces tendrías una función:

Gs=A/(tau*s+1);

donde A=w(rad/seg)/V(voltios)
y tau=Ts/5;   donde T es el tiempo de establecimiento que en tu gráfica parece ser 0.6seg. Debes estar usando un motor grandecito o conectado a carga para que te de este valor alto seguramente.

luego lo discretizad con c2d:

Gz=c2d(Gs,0.01,'zoh')

saludos.
control de movimiento

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: PID Digital (paso a paso)
« Respuesta #41 en: 06 de Marzo de 2010, 13:48:33 »
Es mejor que midas la cantidad de pulsos que entran cada 10 mseg vas a obtener una mejor medida.
control de movimiento

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: PID Digital (paso a paso)
« Respuesta #42 en: 06 de Marzo de 2010, 13:58:44 »
Con el motor a toda velocidad, leo unos 350 pulsos por segundo, por lo que en 10 ms. sólo leería 3.5 pulsos. Pero a poca velocidad se cae a 12 pulsos por segundo (0.12 pulsos por periodo).
Me temo que no puedo contar pulsos porque me quedo sin resolución.

Lo de conseguir la función a mano me ha despistado un poco. Veré si soy capaz de digerirlo e implementarlo.

Gracias

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: PID Digital (paso a paso)
« Respuesta #43 en: 06 de Marzo de 2010, 14:34:13 »
A mano si es fácil  porque es un modelo sencillo, y solo es un polo, el tema es aprender a usar la herramienta que trae el matlab para sistemas más complejos empezando por algo que ya es muy conocido como el modelo de un motor de DC

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: PID Digital (paso a paso)
« Respuesta #44 en: 06 de Marzo de 2010, 14:38:59 »
Nocturno, mirando las gráficas si se ve que está comenzando el estacionario, pero al ser la señal tan ruidosa es conveniente alargar un poco más el período. Como no tienes manera de filtrar cuando capturas los datos, te convendría filtrar los datos con matlab. Tal vez haciendo un promediador de algunas muestras le elimines algunos picos. Luego pruebas el modelo que te da sin filtrar y filtrado y a mano y verificas si se asemejan.
« Última modificación: 06 de Marzo de 2010, 14:54:45 por pablomanieri »


 

anything