1. Introducción

La forma preferida de configurar una máquina de pasos estándar es con el Asistente de configuración de pasos. Ver el capítulo Asistente de configuración Stepconf .

Este capítulo describe algunas de las configuraciones más comunes para sistemas basados en pasos. Estos sistemas utilizan motores paso a paso con controladores que aceptan señales de paso y dirección.

Es una de las configuraciones más simples, porque los motores funcionan en bucle abierto (sin retroalimentación que provenga de los motores), pero el sistema debe ser configurado correctamente para que los motores no se detengan o pierdan pasos.

La mayor parte de este capítulo se basa en una configuración de muestra publicada junto con LinuxCNC. La configuración se llama stepper_inch, y se puede encontrar ejecutando el Selector de configuración.

2. Velocidad de paso máxima

Con la generación de pasos por software, la velocidad de paso máxima es un paso por cada dos BASE_PERIODs para salida de paso y dirección. La velocidad de pasos máxima solicitada es el producto de una MAX_VELOCITY del eje y su INPUT_SCALE. Si la velocidad de pasos solicitada no es alcanzable, ocurrirán los siguientes errores, particularmente durante trotes rápidos y movimientos G0.

Si el controlador de pasos puede aceptar entrada en cuadratura, use este modo. Con una señal de cuadratura, es posible un paso para cada BASE_PERIOD, duplicando la velocidad de paso máxima.

Los otros remedios son disminuir uno o más de: BASE_PERIOD (establecerlo demasiado bajo hará que la máquina deje de responder o incluso se bloquee), INPUT_SCALE (si puede seleccionar diferentes tamaños de paso en su controlador de pasos, cambiar las relaciones de poleas o el paso del tornillo de avance), o MAX_VELOCITY y STEPGEN_MAXVEL.

Si no hay una combinación válida de BASE_PERIOD, INPUT_SCALE y MAX_VELOCITY aceptable, entonces considerar usar la generación de pasos por hardware (como con el Controlador de pasos universal compatible con LinuxCNC, las tarjetas Mesa y otros).

3. Asignación de pines

Uno de los principales defectos en EMC fue que no se podía especificar la asignación de pines sin recompilar el código fuente. LinuxCNC es mucho más flexible, y ahora (gracias a la Capa de Abstracción de Hardware o HAL) se puede especificar fácilmente qué señal va a dónde. Ver el Principios básicos de HAL para más información sobre HAL.

Tal como se describe en la Introducción y el tutorial de HAL, dentro del HAL tenemos señales, pines y parámetros.

Nota
Mostramos un solo eje para ser concisos; todos los demás son similares.

Lo relevante para nuestra asignación de pines es:

señales: Xstep, Xdir y Xen
pines: parport.0.pin-XX-out y parport.0.pin-XX-in

Dependiendo de lo que se haya elegido en el archivo INI se utiliza standard_pinout.hal o xylotex_pinout.hal. Estos son dos archivos que le indican a HAL cómo vincular las diferentes señales y pines. Después investigaremos standard_pinout.hal.

3.1. Asignación de pines estándar HAL

Este archivo contiene varios comandos HAL, y generalmente se ve así:

# archivo de configuración de pines estándar para steppers de 3 ejes
# usando un puerto paralelo para E/S
#
# primero carga el controlador parport
loadrt hal_parport cfg = "0x0378"
#
# a continuación, conecta las funciones de parport a hilos
# primero, leer entradas
addf parport.0.read base-thread 1
# al último, escribir salidas
addf parport.0.write base-thread -1
#
# finalmente, conectar los pines físicos a las señales
net Xstep => parport.0.pin-03-out
net Xdir => parport.0.pin-02-out
net Ystep => parport.0.pin-05-out
net Ydir => parport.0.pin-04-out
net Zstep => parport.0.pin-07-out
net Zdir => parport.0.pin-06-out

# crear una señal para el loopback de estop
net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in

# crear señales para el loopback de carga de herramientas
net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepare
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed

# conectar el pin del controlador de movimiento "spindle on" a un pin físico
net spindle-on spindle.0.on => parport.0.pin-09-out

###
### Puede usar algo como esto para habilitar unidades chopper cuando la máquina está ENCENDIDA
### la señal Xen se define en core_stepper.hal
###

# net Xen => parport.0.pin-01-out

###
### Si se desea activo bajo para este pin, invertirlo así:
###

# setp parport.0.pin-01-out-invert 1

###
### Un interruptor de casa de muestra en el eje X (eje 0). Hacer una señal
### y vincular el pin parport entrante a la señal, luego vincular la señal
### al pin de entrada del interruptor de casa del eje 0 de LinuxCNC
###

# net Xhome parport.0.pin-10-in => joint.0.home-sw-in

###
### ¿todos los interruptores de casa compartidos en un pin del puerto paralelo?
### de acuerdo, conectar la misma señal a todos los ejes, pero asegurando
### establecer HOME_IS_SHARED y HOME_SEQUENCE en el archivo INI.
###

# net homeswitches <= parport.0.pin-10-in
# net homeswitches => joint.0.home-sw-in
# net homeswitches => joint.1.home-sw-in
# net homeswitches => joint.2.home-sw-in

###
### Muestra de interruptores de límite separados en el eje X (eje 0)
###

# net X-neg-limit parport.0.pin-11-in => joint.0.neg-lim-sw-in
# net X-pos-limit parport.0.pin-12-in => joint.0.pos-lim-sw-in

###
### Al igual que en el ejemplo de los interruptores de casa compartidos, se pueden conectar juntos
### interruptores de límite.  Tener cuidado si se activa uno, LinuxCNC se detendrá pero no puede saber
### qué interruptor/eje se ha disparado.  Hay que tener precaución en la recuperación de esta
### posición extrema para evitar una parada dura.
###

# net Xlimits parport.0.pin-13-in => joint.0.neg-lim-sw-in joint.0.pos-lim-sw-in

Las líneas que comienzan con # son comentarios, y su único propósito es guiar al lector a través del archivo.

3.2. Descripción general

Hay un par de operaciones que se ejecutan cuando se ejecuta/interpreta standard_pinout.hal:

  • El controlador Parport se carga (ver el capítulo Controlador de puerto paralelo para más detalles).

  • Las funciones de lectura y escritura del controlador parport se asignan al hilo base
    [El subproceso más rápido en la configuración de LinuxCNC, generalmente su código se ejecuta cada pocas decenas de microsegundos.]
    .

  • Las señales de paso y dirección para los ejes X, Y, Z se vinculan a los pines en el parport.

  • Se conectan más señales de E /S (loopback de estop, loopback del cambiador de herramientas).

  • Se define una señal de husillo y se vincula a un pin parport.

3.3. Cambiar standard_pinout.hal

Si se desea cambiar el archivo standard_pinout.hal, todo lo que se necesita es un editor de texto. Abrir el archivo y localizar las partes que se desean cambiar.

Si se quiere, por ejemplo, cambiar los pines de señales de paso y dirección para el eje X , todo lo que se necesita hacer es cambiar el número en el nombre parport.0.pin-XX-out:

net Xstep parport.0.pin-03-out
net Xdir parport.0.pin-02-out

se puede cambiar a:

net Xstep parport.0.pin-02-out
net Xdir parport.0.pin-03-out

o básicamente cualquier otro pin out que guste.

Sugerencia: asegurarse de no tener más de una señal conectada al mismo pin.

3.4. Cambio de polaridad de una señal

Si el hardware externo espera una señal de "activo bajo", configurar el parámetro -invert correspondiente. Por ejemplo, para invertir la señal de control del husillo:

setp parport.0.pin-09-invert TRUE

3.5. Agregar control de velocidad PWM al husillo

Si el husillo puede ser controlado por una señal PWM, usar el componente pwmgen para crear la señal:

loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses base-thread
net spindle-speed-cmd spindle.0.speed-out => pwmgen.0.value
net spindle-on spindle.0.on => pwmgen.0.enable
net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out
setp pwmgen.0.scale 1800 # Change to your spindle's top speed in RPM

Esto supone que la respuesta del controlador del husillo a PWM es simple: 0% PWM da 0 RPM, 10% PWM da 180 RPM, etc. Si hay un mínimo PWM que se requiere para que el husillo gire, siga el ejemplo en configuración de muestra nist-lathe para usar un componente scale.

3.6. Agregar una señal de habilitación

Algunos amplificadores (controladores) requieren una señal de habilitación antes de aceptar ordenes de movimiento de los motores. Por esta razón ya hay señales definidas llamadas Xen, Yen, Zen.

Para conectarlas usar el siguiente ejemplo:

net Xen parport.0.pin-08-out

Puede tener un solo pin que habilite todas los controladores o varios, dependiendo de la configuración que tenga. Tener en cuenta, sin embargo, que generalmente cuando falla un eje, todas los demás controladores también se desactivarán, por lo que tener una sola señal/pin de habilitación para todas las unidades es una práctica común.

3.7. Botón externo ESTOP

El archivo standard_pinout.hal supone que no hay un botón ESTOP externo. Para más información sobre un E-Stop externo, ver la página del manual de estop_latch.