Autor Tema: COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?  (Leído 42928 veces)

Pablito

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #75 en: 09 Mayo 2013, 11:24 »
El latency test lo que hace es decirte cuanto tarda tu ordenador el realizar una operacion desde el momento en que es requerida. Este test solo es valido para cuando trabajas con el puerto paralelo. Si trabajas con una tarjeta FPGA ha de ser ella la que haga las operaciones, con lo cual te la pela lo que tarde el ordenador. El tema es que tienes que hacerte unos drivers para que linuxcnc tenga todo esto en cuenta y trabaje correctamente con la tarjeta FPGA.

Es importante que estas tarjetas nunca se conecten via USB al ordenador ya que hace un cuello de botella bestial. El USB no vale para trabajar en tiempo real. Lo bueno es que linuxcnc ya viene con varios drivers de fabricantes de tarjetas FPGA. Yo por lo que he visto la gente trabaja mayormente con MESA o con PICO. Los drivers de los dos estan incluidos en el paquete de linuxcnc.

Un saludo.

borondes2010

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #76 en: 10 Mayo 2013, 18:37 »
ESTAMOS CON ELLO..JA JA Pablito un millón de gracias..en breve JBECERRA pondrá los resultados...esta depurando código..ja ja .brinda

Pablito

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #77 en: 10 Mayo 2013, 19:20 »
Hola,

Nada hombre, pa eso estamos.

La base del codigo que hace el PID es muy simple. Simplemente has de tener en cuenta que:

encoder.0.position => pid.0.feedback
axis.0.position-cmd => pid.0.command
pid.0.output => stepgen.0.velocity-cmd

Para poder hacer esto tienes que tener el stepgen en modo velocidad.

Luego un poco de pelea con el HAL scope ajustando los valores del PID (Pgain, Igain, Dgain, FF0, FF1)

Y retroalimentacion barata y cojonuda funcionando.

Un artista de la talla de JBecerra no tendra ningun problema en implementarlo.

Un saludo.

Desconectado Jbecerra

  • Aprendiz
  • *
  • Join Date: Feb 2011
  • Mensajes: 772
  • Ubicación: Mairena del Alcor, Sevilla.
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #78 en: 10 Mayo 2013, 23:03 »
Hola.

Señor Don Pablo, agradezco mucho su ayuda, gracias al hal que publico he podido poner en funcionamiento el servomotor con re-alimentación de posición por la regla usándola como encoder.

Aunque debo poner en entredicho una de sus afirmaciones, la considerarme un artista de talla, :-[,  Si es de talla mini, quizás, jeje.

Como ya puntualizó es el segundo post, el motor lo puse en modo velocidad. Aunque la segunda linea donde hace referencia al axis.0.position-cmd realmente se estaba refiriendo al axis.0.motor-pos-cmd que si estaba bien puesto en el 1 hal.

Después de haber configurado mi hal, que por cierto es al eje Z, ( con problemas gravitacionales :) he conseguido moverlo correctamente hacia arriba, pero hacia abajo a veces se pasa de medida y a veces no llega ni a pararse. me tengo que dar una buena pelea ahora con el ajuste del PID.

Anecdoticamente comentar que me he pasado un buen rato hasta hacerlo funcionar ya que olvide añadir la función del calculo del PID !! Como todo el mundo sabe, cualquier aparato eléctrico funciona mucho mejor si se conecta a la red eléctrica, ese enchufe !!!

Antes de su ayuda, había llegado a configurar el mismo (parecido) hal, pero no había puesto ninguna función PID (borrico que es uno). Pretendía realimentar directamente con el fb del encoder la posicion del motor.

Para simular el error de posición, la pieza que une el carro del eje al cursor de la regla la he montado sobre unas pequeñas correderas que me permiten mover el cursor unos milímetros y así verificar que es la regla quien manda la posición.
 


« última modificación: 10 Mayo 2013, 23:36 por Jbecerra »
Torno chino 280 -700, Fresadora BF-20. Ceneados.Con Linuxcnc.

Pablito

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #79 en: 11 Mayo 2013, 12:26 »
Buenos dias!

Jbecerra me alegro de que te haya servido de algo el post. A mi tambien me han servido mucho los tuyos en las diversas peleas que he tenido con nuestro viejo amigo "emc2" . Retroalimentacion ForoID se podria llamar jeje.

Lo siento por el error del PIN, estaba liado con otra cosa y te lo dije de cabeza.

La pelea con los valores del PID es dura, y ademas lo que va bien a unas velocidades altas no va bien en bajas. Al final es un compromiso entre velocidades.

Yo ahora estoy hablando con los de MESA a ver si les pillo un pack pq con la entrada digital del puerto paralelo no puedo operar a velocidades altas la lectura del encoder. Por lo que veo tu tienes una tarjeta FPGA no? Que modelo es?

Un saludo.

Desconectado Jbecerra

  • Aprendiz
  • *
  • Join Date: Feb 2011
  • Mensajes: 772
  • Ubicación: Mairena del Alcor, Sevilla.
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #80 en: 11 Mayo 2013, 12:48 »
Hola.

No es una FPGA, es una breakout board, y por ahora todo el proceso va por el puerto paralelo.

Por ahora no contemplamos una tarjeta especifica, queremos probar hasta donde se puede llegar con los puertos paralelos, es factible meterle 3 puertos, y con estos ya veremos que da de si el cacharro, aunque si hay que meterse en tarjetas, pues que remedio, habrá que hacerlo.

Y una pregunta de pasada, jeje.

Piensas que es posible establecer correctamente un PID para un eje Z, teniendo en cuenta que trabajara con un peso de aproximadamente 15 kilos.

Yo creo que es obligatorio el uso de un contrapeso para hacerlo bien, pero es solo por intuición por lo que lo digo.

Retroalimentemos ¡¡¡

« última modificación: 11 Mayo 2013, 12:50 por Jbecerra »
Torno chino 280 -700, Fresadora BF-20. Ceneados.Con Linuxcnc.

Pablito

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #81 en: 11 Mayo 2013, 14:58 »
Hola,

Es que veo FPGA´s por todas partes! jeje

Yo supongo que al final lo unico que te da la FPGA es mayor velocidad, tanto de lectura como de envio de pulsos.

No lo he intentado con un eje donde la gravedad sea paralela a la linea de movimiento, pero si te sirve de algo he visto en maquinas herramienta de calidad oscilar el eje z, osea que facil no debe de ser. Ademas estas maquinas siempre van contrapesadas. Cuando me vengan las tarjetas y pueda meter los encoders lineales en todos los ejes te digo que tal me responde a mi.

Como dato te dire que la holgura que tengo el eje donde tengo la realimentacion es bastante grande (unas 3 decimas) y simplemente cuando cambio el sentido esa inercia inicial que coge el motor antes de empezar a mover ya me hace algo mas inestable la grafica de posicion real en el HAL scope, osea que el peso debe influir y mucho.

Un consejillo sin animo de ofender, en las fotos me parece ver que el paso del husillo es bastante grande. Si le pusieras uno mas pequeño al motor le seria mas facil operar ya que su par seria mucho mas efectivo.

Un saludo!


Desconectado Jbecerra

  • Aprendiz
  • *
  • Join Date: Feb 2011
  • Mensajes: 772
  • Ubicación: Mairena del Alcor, Sevilla.
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #82 en: 11 Mayo 2013, 15:14 »
Hola.

 Según dices. con contrapeso y siendo buenas las hay que oscilan en el Z (jo..rrr..), nos apliquemos la lección.

El husillo es de paso 20, usamos ese porque es el que hay, en teoría puede cumplir con el diseño, y es de calidad. Ademas tiene una ventaja, disminuye el trafico de datos a igualdad de longitud, este eje esta movido por un servomotor que tare un encoder de 2048 pasos, la definición es de 0.01. Y es increíble la precisión, al menos en vació.

En el eje no hay holgura ninguna, al menos con mi comparador centesimal no puedo apreciarlo, pero debe estar por debajo de 0.005. Eso facilitara ajustar el pid.

Pregunta:

¿  como configuras el hal-scope y que datos metes en el para analizar el pid ?




« última modificación: 11 Mayo 2013, 16:16 por Jbecerra »
Torno chino 280 -700, Fresadora BF-20. Ceneados.Con Linuxcnc.

Desconectado Jbecerra

  • Aprendiz
  • *
  • Join Date: Feb 2011
  • Mensajes: 772
  • Ubicación: Mairena del Alcor, Sevilla.
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #83 en: 12 Mayo 2013, 16:23 »
Hola.

 Ya he conseguido poner el gráfico del PID en el hal-scope.



Se muestran 2 movimientos, de 5 mm a 0 mm y viceversa.
La linea blanc es la velocidad. la linea roja la posición ordenada y la azul la posición real, entre lineas verticales hay 5 seg. y entre lineas horizontales 1mm.

Ahora a ver como hacerlo para que se parezcan mas.

He pensado meterle un panel donde variar los valores del PID sin tener que editar el fichero hal.


Torno chino 280 -700, Fresadora BF-20. Ceneados.Con Linuxcnc.

Pablito

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #84 en: 13 Mayo 2013, 08:49 »
Hola,

Al final los pasos de los husillos actuan como el indice de reduccion en un engranaje. A mayor paso de husillo tendremos mayor velocidad y menor par, como si bajaramos el indice de reduccion en un engranaje. A menor paso de husillo conseguimos menor velocidad y mayor par, como si pusieramos una reduccion mayor. Ya depende de las solicitudes mecanicas de la maquina, habria que calcular que par esta solicitando ese eje en su momento mas critico y saber si estas dentro de ese par con la reduccion que tienes. De todas maneras si te funcionaba bien sin hacer lazo cerrado, yo creo que deberia de funcionarte bien tambien con el lazo cerrado.

Con esos valores tienes ya para ver el comportamiento del PID, el pid.0.error tambien puede ser interesante.

Yo abro los valores con el HAL configuration ( watch ) y los cambio al vuelo con una terminal. He leido que si en vez de poner los valores directamente en el archivo HAL, los enlazas al .ini ( como estan enlazados el valor de servo-thread, base-thread, Maxaccel,....) Los puedes cambiar al vuelo tambien con la herramienta HAL calibration pero yo nunca lo he hecho.

Un saludo.

borondes2010

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #85 en: 14 Julio 2013, 11:48 »
Para que no penséis que abandonamos el lazo cerrado,despues de numerosas pruebas y como bien apuntaba DEDALO1111 la velocidad del puerto paralelo es insuficiente para tal transmisión de datos...funcionar si funciona pero tienes que limitar demasiado la velocidad del CNC lo que para nada interesa ya que si no tendríamos un CNC TORTUGA...optamos después de una dura investigacion por una tarjeta especifica para LINUX CNC...EN un par de semanas mas o menos comentaremos los resultados de las pruebas realizadas con ella y si verdaderamente HACE todo lo que su fabricante PROMETE..de momento la cosa pinta bien pero yo aun no canto victoria sin hacer unas buenas baterías de pruebas con la seriedad que caracteriza a mi TEAM RURAL..prometo manteneros informados .brinda .bien

abu

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #86 en: 14 Julio 2013, 19:57 »
Upssssssssss.......perdon. Habia escrito una cosa, pero ya veo que la decision pasa por olvidarse del puerto paralelo.
Disculpas pues.
« última modificación: 14 Julio 2013, 20:08 por abu »

borondes2010

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #87 en: 14 Julio 2013, 21:08 »
LA tarjeta va también conectada al puerto paralelo...pero este ya no lleva la carga de la transmisión de los buses de datos.solo hace digamos de bus de comunicaciones pero la que se encarga del trabajo duro es la tarjeta....y de momento NO revelo mas hasta las pruebas....

abu

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #88 en: 14 Julio 2013, 23:12 »
 ;D ;D ;D ;D ;D

Sin animo de polemizar.......no hace falta que reveles explicitamente nada, Michel. .bien
Que.........¿A por las Mesa................ o a por las Pluto?...................(son las opciones que mas me convencen ;))

borondes2010

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #89 en: 15 Julio 2013, 09:06 »
ABU,sin animo de polemizar...no revelo mas nada porque todavía no se an echo pruebas con la tarjeta y es tontería decir cosas a boleo..aun así decirte que ni es una MESA ni una PLUTO... importa poco la marca lo que importa es que haga bien el trabajo que se le encomienda ni mas ni menos..eso si material CHINO NO ES.. .bien
« última modificación: 15 Julio 2013, 09:09 por MICHEL 100% »