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

Desconectado dedalo1111

  • Aprendiz
  • *
  • Join Date: Jul 2010
  • Mensajes: 918
  • Ubicación: Madrid
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #60 en: 20 Marzo 2013, 00:14 »
Fresadora Wabeco F1200E CNC, Torno Warco WM-180, Sierra FEMI 780XL, cortadora porex FDC4

borondes2010

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #61 en: 20 Marzo 2013, 10:35 »
SR.DEDALO por favor traduzca usted al cristiano para que los pobres mortales entendamos el asunto...ja ja .brinda .ereselmejor

Desconectado dedalo1111

  • Aprendiz
  • *
  • Join Date: Jul 2010
  • Mensajes: 918
  • Ubicación: Madrid
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #62 en: 20 Marzo 2013, 10:52 »
Pues como el viejo chiste de Arévalo del gangoso en la ferretería...

- ¿que quería el gangoso?
- ¡Anda, pues está claro!!!  una chan-chan-con-un-cipulin-que-chon-chon
  ;D ;D

Es la página de LinuxCNC donde se habla de como configurar un lazo "doble", por ejemplo un encoder en la regla y otro en el motor y como configurar el HAL. Seguro que JBecerra habla el "gangoso" también y le suena lo que dice  ;)

Citar
This example has one high resolution linear scale on the axis table and one rotary encoder on the axis drive motor.
(Este ejemplo tiene una regla de alta resolución en el eje de la mesa y un sensor rotatorio en el eje del motor)

Salu2
« última modificación: 20 Marzo 2013, 10:55 por dedalo1111 »
Fresadora Wabeco F1200E CNC, Torno Warco WM-180, Sierra FEMI 780XL, cortadora porex FDC4

borondes2010

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #63 en: 20 Marzo 2013, 10:55 »
OK como mis servos tienen encoder y además tengo reglas pues ya le dare la vara a JBECERRA...JA JA gracias dédalo por las molestias con este tema TABU CNC... .bien

borondes2010

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #64 en: 20 Marzo 2013, 12:40 »
Después de una conversación telefónica con JBECERRA el tema esta bien claro.en breve nos pondremos con las pruebas pertinentes y ya mostraremos resultados del asunto...ja ja .brinda

Desconectado dedalo1111

  • Aprendiz
  • *
  • Join Date: Jul 2010
  • Mensajes: 918
  • Ubicación: Madrid
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #65 en: 23 Marzo 2013, 23:48 »
Otro enlace de lo más interesante www.linuxcnc.org/docs/html/config/pncconf.html

Ni siquiera hace falta saber "gangoso" (lease HAL)  ;D ;D

Salu2
Fresadora Wabeco F1200E CNC, Torno Warco WM-180, Sierra FEMI 780XL, cortadora porex FDC4

borondes2010

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #66 en: 24 Marzo 2013, 10:57 »
DEDALO1111--- .ereselmejor .ereselmejor .ereselmejor .ereselmejor .ereselmejor LA COSA PINTA BIEN, jbecerra ya tiene en su poder el material de pruebas asi que un plazo razonable sabremos si el lazocerrado es posible...ja ja QUE SIGA el personal con EL MACH3 PATATA,nosotros seguimos con linuxcnc,es una vergüenza que un software gratuito le pegue mil vueltas a muchos de pago .brinda

Desconectado dedalo1111

  • Aprendiz
  • *
  • Join Date: Jul 2010
  • Mensajes: 918
  • Ubicación: Madrid
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #67 en: 24 Marzo 2013, 11:26 »
Son filosofías diferentes, en LinuxCNC son de la opinión que "un PC es barato" y sirve perfectamente para el propósito de "centralizar" los cálculos de los PID (posición --> desviación --> actualizar motores).

Otra estratégia es delegar al hardware que se ocupe de esa gestión y en el PC solo llevar el intérprete de Gcode y la planificación de trayectoria.

Mach3 es del segundo modelo, en LinuxCNC puedes abordar ambos... y como todo, cada uno tiene sus detractores y afines (LinuxCNC tampoco es perfecto).

Salu2
Fresadora Wabeco F1200E CNC, Torno Warco WM-180, Sierra FEMI 780XL, cortadora porex FDC4

borondes2010

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #68 en: 24 Marzo 2013, 11:30 »
LINUX CNC no es perfecto peroooooo.... a los que saben les deja toquetear y modificar muchas cosas ,en cambio en mach3 ay que tragar con lo que ay...ja ja la caña seria un hibrido entre la parte grafica de mach3 y la funcionalidad de ambos,asi tendríamos lo mejor de cada uno,peroooooooo me temo que eso no es posible para los simples mortales... .brinda .bien

Pablito

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #69 en: 09 Mayo 2013, 09:18 »
Hola, esactamente donde teneis el problema para hacer el lazo cerrado? Yo lo tengo hecho con el puerto paralelo y va de maravilla.

Un saludo.

borondes2010

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #70 en: 09 Mayo 2013, 09:22 »
Pablito  .ereselmejor .ereselmejor .ereselmejor .ereselmejor .ereselmejor podrias detallar como lo tienes echo..etccc DATOS DATOS..JA JA

Pablito

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #71 en: 09 Mayo 2013, 09:48 »
Es muy sencillo, en cuatro lineas de HAL code lo tienes.

Te paso mi archivo HAL y si no entiendes algo me lo dices.


# Generated by Pablo Enguita. Grupo Volund S.A
# http://grupovolund.com/es


# loadrt threads name1=pablo period1=40000

loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES

loadrt probe_parport
loadrt hal_parport cfg="0x378 out  "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0 ctrl_type=p,v,p
loadrt encoder num_chan=1
loadrt pid num_chan=1


addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
addf encoder.update-counters base-thread


addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf encoder.capture-position servo-thread
addf pid.0.do-pid-calcs servo-thread

# loadrt threads name1=pablo period1=100000
# net spindle-cmd <= motion.spindle-speed-out
# net din-00 => motion.digital-in-00
# net din-01 => motion.digital-in-01

net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net ystep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
net ydir => parport.0.pin-04-out
net zstep => parport.0.pin-05-out
setp parport.0.pin-05-out-reset 1
net xdir => parport.0.pin-06-out
net zdir => parport.0.pin-07-out


# net din-01 <= parport.0.pin-10-in
# net din-00 <= parport.0.pin-11-in


setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 50000
setp stepgen.0.dirsetup 50000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 50000
setp stepgen.1.dirsetup 50000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
# net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
# net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable => pid.0.enable

# Parafernaria made in volund

net ypos-fb axis.1.motor-pos-fb <= encoder.0.position => pid.0.feedback
net ypos-cmd  axis.1.motor-pos-cmd => pid.0.command
net ypos-out pid.0.output => stepgen.1.velocity-cmd

# Parametros del PID

setp pid.0.Pgain 15
setp pid.0.Igain 0
setp pid.0.Dgain 0
setp pid.0.bias 0.0
setp pid.0.FF0 0.0
setp pid.0.FF1 0
setp pid.0.FF2 0
setp pid.0.deadband 0.01
setp pid.0.maxoutput 140

#Visualizar encoder en mm

setp encoder.0.position-scale 200
net faseA encoder.0.phase-A
net faseB encoder.0.phase-B
net faseA <= parport.0.pin-11-in
net faseB <= parport.0.pin-10-in


setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 50000
setp stepgen.2.dirsetup 50000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable

net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in

loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared



---------------------------------------------------------

Este sistema solo tiene hecho el lazo cerrado en el eje Y. Los demas actuan en pulso direccion sin retroalimentacion de posicion.

Un saludo.
« última modificación: 09 Mayo 2013, 09:52 por Pablito »

carlinos

  • Visitante
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #72 en: 09 Mayo 2013, 10:14 »
¿Como implementas eso? Necesitas un montón de entradas para los encoders de 4 ejes y eso son varios puertos paralelos. Tampoco veo claro que el Mach acepte eso, pero son suposiciones mías.

Pablito

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

Necesitas dos entradas para cada encoder lineal, en el puerto paralelo tienes 5 o 4 entradas digitales, no me acuerdo bien. Es decir, si para leer 4 encoders lineales necesitarias 8 entradas al puerto paralelo, con dos tienes suficiente. No tengo ni idea de como funciona match, este codigo es para linuxcnc.

Si lees el final del mensaje, he puesto q este codigo solo tiene realimentacion en un eje.

De todas formas por lo que he leido, lo mejor es olvidarse del puerto paralelo y comprar una tarjeta FPGA, por 200 pabos las tienes y van muy bien. Tambien te digo que la realimentacion de posicion el puerto paralelo la hace perfecta. El problema lo tienes en la limitacion de Mhz , en la limitacion de salidas/entrada y en la latencia propia del ordenador.

Un saludo.

Desconectado tio_gil

  • Global Moderator
  • Oficial 1ª
  • ****
  • Join Date: Sep 2009
  • Mensajes: 3099
  • Ubicación: Madrid - España
Re:COMO CREAR LAZO CERRADO EN LINUX CNC O MACH3?
« Respuesta #74 en: 09 Mayo 2013, 11:13 »
Carlinos, del Mach olvídate que no puede hacerlo.
Pablito: de ahí que lo primero que te hace el linux es hacerte una medida de como va la cpu, para "reajustarse" y proceder adecudamente en su core de tiempo real.
ale, para que babeis un poco con tarjetas no PC donde es posible que un LinuxCNC pueda funcionar (no lo se).
http://www.ti.com/tool/beaglebk
http://www.silica.com/product/silica-pengwyn-board.html
Torno Optimun D240x500 modificado, Fresa BF20L Vario modificada, mucha otra herramienta... y pocas ganas de trabajar !!