:lang: es

= Sistemas de coordenadas

[[cha:coordinate-system]]

== Introducción

Este capítulo describe los offsets tal como los utiliza LinuxCNC.
Éstos incluyen:

* Coordenadas de la máquina (G53)
* Nueve offsets del Sistema de Coordenadas (G54-G59.3)
* Offsets globales (G92) y locales (G52)

[[sec.machine-coordinate-system]]

== Sistema de Coordenadas de la Máquina

Cuando se inicia LinuxCNC, las posiciones de cada eje definen el origen de la máquina. Cuando
se hace home de un eje, el origen de la máquina para ese eje se establece en esa posición home.
El origen máquina es el sistema de coordenadas de la máquina en el que se basan todos los demás 
sistemas de coordenadas. El código <<gcode:g53,G53>> puede usarse para moverse en el Sistema de 
Coordenadas Máquina.

== Sistemas de coordenadas

.Ejemplo de sistemas de coordenadas
image::images/offsets_es.png[align="center", alt="Ejemplo de sistemas de coordenadas"]

Desplazamientos del sistema de coordenadas

* G54 - usa el sistema de coordenadas 1
* G55 - usa el sistema de coordenadas 2
* G56 - usa el sistema de coordenadas 3
* G57 - usa el sistema de coordenadas 4
* G58 - usa el sistema de coordenadas 5
* G59 - usa el sistema de coordenadas 6
* G59.1 - usar el sistema de coordenadas 7
* G59.2 - usa el sistema de coordenadas 8
* G59.3 - usa el sistema de coordenadas 9

Los offsets del sistema de coordenadas se utilizan para desplazar cada sistema de coordenadas desde
el Sistema de Coordenadas de la Máquina. Esto permite que el código G se programe para piezas iguales
sin importar la ubicación de la pieza en la máquina. El uso de offsets del sistema de coordenadas 
le permitirán mecanizar piezas en múltiples ubicaciones con el mismo código G.

Los valores de los offsets se almacenan en el archivo VAR solicitado por el
archivo INI durante el inicio de LinuxCNC.

En el esquema de archivo VAR, el primer número de variable almacena el desplazamiento X,
el segundo, el desplazamiento Y, y así sucesivamente para los nueve ejes. Hay juegos numerados
así para cada uno de los offsets de sistema de coordenadas.

Cada una de las interfaces gráficas tiene una forma de establecer valores para estos
offsets. También puede establecer estos valores editando el propio archivo VAR
y reinicializando luego LinuxCNC para que lea los nuevos valores.
Sin embargo, esta no es la forma recomendada. El uso de G10, G52, G92, G28.1,
etc. son mejores formas de establecer las variables.

Ejemplo de parámetros G55.
[width="40%",cols="^,^,^",options="header"]
| ====
| Eje | Variable | Valor
| X | 5241 | 2.000000
| Y | 5242 | 1.000000
| Z | 5243 | -2.000000
| A | 5244 | 0,000000
| B | 5245 | 0.000000
| C | 5246 | 0.000000
| U | 5247 | 0.000000
| V | 5248 | 0.000000
| W | 5249 | 0.000000
| ====

Debería leer esto como mover las posiciones cero de G55 a X = 2
unidades, Y = 1 unidad, y Z = -2 unidades desde la posición de cero absoluto.

Una vez que hay valores asignados, una llamada a G55 en un bloque de programa
desplaza la referencia cero absoluta por los valores almacenados. La siguiente línea sería
mover cada eje a la nueva posición cero. A diferencia de G53, G54 hasta
G59.3 son comandos modales. Actuarán en todos los bloques de código después de que uno
de ellos se ha establecido. El programa que podría ejecutarse usando
offsets de fijaciones requeriría solo una coordenada de
referencia para cada una de las ubicaciones y todo el trabajo se realizaria
allí. El siguiente código se ofrece como un ejemplo de cómo hacer un cuadrado
usando los offsets G55 que configuramos arriba.

----
G55; utilizar el sistema de coordenadas 2
G0 X0 Y0 Z0
G1 F2 Z-0.2000
X1
Y1
X0
Y0
G0 Z0
G54; utilizar el sistema de coordenadas 1
G0 X0 Y0 Z0
M2
----

En este ejemplo, el G54 cerca del final deja el sistema de coordenadas G54 con todos
los offsets a cero para que haya un código modal basado en ejes absolutos de máquina.
Este programa asume que lo hemos hecho y usamos el comando final
como un comando para cero máquina. Hubiera sido posible usar G53
y llegar al mismo lugar pero ese comando no habría sido modal y
cualquier comando emitido después hubiera vuelto a usar los offsets G55
porque ese sistema de coordenadas todavía estaría en vigor.

=== Sistema de Coordenadas Predeterminado

Otra variable en el archivo VAR se vuelve importante cuando pensamos
sobre offsets. Esta variable es la 5220. En los archivos predeterminados,
su valor se establece en 1.00000. Esto significa que cuando LinuxCNC se inicia,
debería usar el primer sistema de coordenadas como el predeterminado. Si configura esto
a 9.00000 usaría el noveno sistema de compensación como predeterminado al
iniciar o reiniciar. Cualquier valor que no sea un entero (decimal realmente)
entre 1 y 9, o si la variable 5220 falta, hará que LinuxCNC
vuelva al valor predeterminado de 1.00000.

=== Configuración de Offsets del Sistema de Coordenadas

El comando G10 L2x se puede usar para establecer los offsets del sistema de coordenadas:

* 'G10 L2 P (1-9)' - Establece los offsets a un valor. La posición actual es irrelevante.
                         (vea <<gcode:g10-l2,G10 L2>> para más detalles)

* 'G10 L20 P (1-9)' - Establece los offsets de modo que la posición actual se convierte en un valor.
                         (vea <<gcode:g10-l20,G10 L20>> para más detalles)

== Offsets Locales y Globales [[sec:g52-and-g92-offsets]]

=== El comando G52 [[sec:g52]]

'G52' se usa en un programa de pieza como un "Offset temporal del sistema de coordenadas local"
dentro del sistema de coordenadas de la pieza de trabajo. Un ejemplo de uso
es el caso cuando se mecanizan varias características idénticas en diferentes
ubicaciones del material. Para cada una, 'G52' programa un
punto de referencia local dentro de las coordenadas de pieza, y un subprograma es
llamado para maquinar la característica relativa a ese punto.

Los offsets de ejes 'G52' se programan relativos a la coordenada de offset de la pieza de trabajo
'G54' a 'G59.3'. Como compensación local, 'G52' se aplica
después del offset de la pieza de trabajo, incluida la rotación. Por lo tanto, una característica parcial
será mecanizada de forma idéntica en cada parte, independientemente de la orientación de la parte
en el palet.

[CAUTION]

En otros intérpretes de código g 'G52', como offset temporal, al establecer y salir del alcance localizado de una
parte del programa, no persiste después del reinicio de la máquina, 'M02' o 'M30'. 
En LinuxCNC, 'G52' comparte parámetros con 'G92' que, por razones históricas, hace *persistir*
a estos parámetros. Ver <<sec:g92-persistence-cautions,G92 Precauciones con Persistencia>> a continuación.

La programación de 'G52 X1 Y2' da offsets al sistema de coordenada actual de la pieza de trabajo,
1 para X y 2 para Y. Por consiguiente, en el DRO,
las coordenadas X e Y de la posición actual de la herramienta se reducirán en 1 y
2, respectivamente. Los ejes sin establecer en el comando, como Z en el anterior
ejemplo, no se verán afectados; cualquier offset Z 'G52' anterior permanecerá
en efecto o, si no lo habia, el offset Z será cero.

El desplazamiento local temporal puede cancelarse con 'G52 X0 Y0'. Cualquier eje
no puesto a cero explícitamente retendrá el offset anterior.

'G52' comparte los mismos registros que 'G92' y, por lo tanto,
'G52' es visible en el DRO y vista previa etiquetado como 'G92'.

=== Los Comandos G92[[sec:g92-commands]]

'G92' se usa típicamente de dos maneras conceptualmente diferentes; como un
"offset del sistema de coordenadas global" o como un "offset del sistema de coordenadas local". 
El conjunto de comandos 'G92' incluye:

* 'G92': este comando, cuando se usa con nombres de eje, establece valores para las
    variables de offset

* 'G92.1': este comando establece valores cero para las variables G92.

* 'G92.2': este comando suspende G92, pero no pone a cero las
    variables

* 'G92.3': este comando aplica los valores de offset que se suspendieron.

Como offset global, 'G92' se usa para cambiar todas los sistemas de coordenadas de la pieza de trabajo,
'G54' a 'G59.3'. Un ejemplo de uso es cuando se mecanizan
varias piezas idénticas en fijaciones con ubicaciones conocidas en un palet,
pero la ubicación del palet puede cambiar entre lotes o entre máquinas.
Cada offset de ubicación de la fijacion, relativo a un punto de referencia en el
palet, está preestablecido en uno de los sistemas de coordenadas de pieza, de 'G54'
hasta 'G59.3', y 'G92' se usa para "touch off" del punto de referencia en el palet.
Luego, para cada parte, se selecciona el sistema de coordenadas de la pieza de trabajo correspondiente
y se ejecuta el programa de pieza.

[NOTE]
La rotación del sistema de coordenadas de la pieza 'G10 R-' es específica del
intérprete 'rs274ngc', y el desplazamiento 'G92' se aplica 'después' de la
rotación. Cuando se usa 'G92' como offset global, las rotaciones del sistema de coordenadas
de pieza pueden tener resultados inesperados.

Como sistema de coordenadas local, 'G92' se usa como offset temporal
dentro del sistema de coordenadas de la pieza de trabajo. Un ejemplo de uso es al
mecanizar una pieza con varias características idénticas en diferentes
ubicaciones. Para cada función, 'G92' se usa para establecer un punto de referencia 
local, y se llama a un subprograma para mecanizar la característica a partir de
ese punto.

[NOTE]
Se desaconseja el uso de 'G92' para programar con sistemas de coordenadas locales
en un programa de pieza. En su lugar, vea <<sec:g52,'G52'>>, un offset local
del sistema de coordenadas es más intuitivo cuando se conoce el offset deseado relativo
a la pieza de trabajo, pero es posible que no se conozca la ubicación actual de la herramienta.

La programación 'G92 X0 Y0 Z0' establece la ubicación actual de la herramienta en
coordina X0, Y0 y Z0, sin movimiento. G92 *no* funciona desde
coordenadas absolutas de la máquina. Funciona desde *ubicación actual*.

'G92' también funciona desde la ubicación actual modificada por cualquier otro
offset que esté vigente cuando se invoca 'G92'. Mientras se
testeaban las diferencias entre los offsets de trabajo y los actuales se
encontró que un offset 'G54' podría cancelar un 'G92' y, por lo tanto,
parecia que no habia offsets en vigor. Sin embargo, 'G92' estaba
todavía vigente para todas las coordenadas y produjo los offsets de trabajo esperados
para los otros sistemas de coordenadas.

Por defecto, los offsets 'G92' se restauran después de que se inicia la máquina.
Los programadores que deseen un comportamiento tipo Fanuc, donde los offsets 'G92' se
borran al inicio de la máquina y después de un reinicio o finalización del programa, puede deshabilitar
la persistencia 'G92' configurando 'DISABLE_G92_PERSISTENCE = 1' en el
Sección '[RS274NGC]' del archivo '.ini'.

[NOTE]

Es una buena práctica eliminar los offsets 'G92' al final de su uso.
con 'G92.1' o 'G92.2'. Al iniciar LinuxCNC con persistencia 'G92'
habilitada (el valor predeterminado), se aplicará cualquier offset en las variables 'G92'
cuando un eje tenga home. Ver <<sec:g92-persistence-cautions,G92 Precauciones con Persistencia>> a continuación.

=== Configuración de valores G92

Los comandos G92 funcionan desde la ubicación actual del eje y suman y restan
correctamente para dar a la posición actual del eje el valor asignado por el
comando G92. Los efectos funcionan a pesar de que haya offsets anteriores.

Por tanto, si el eje X muestra actualmente 2.0000 como su posición, un 'G92 X0'
establecerá un offset de -2.0000 para que la ubicación actual de X se convierta
cero. Un 'G92 X2' establecerá un offset de 0.0000 y la posición mostrada
no cambiará. Un 'G92 X5.0000' establecerá un offset de 3.0000 para que
la posición actual visualizada se convierte en 5.0000.

=== Precauciones de Persistencia G92 [[sec:g92-persistence-cautions]]

Por defecto, los valores de un desplazamiento 'G92' se guardarán en el archivo VAR
y se restaurará después de un inicio o reinicio de la máquina.

Los parámetros G92 son:

* 5210 - Activar/desactivar bandera (1.0 / 0.0)
* 5211 - Offset eje X
* 5212 - Offset eje Y
* 5213 - Offset eje Z
* 5214 - Offset eje A
* 5215 - Offset eje B
* 5216 - Offset eje C
* 5217 - Offset eje U
* 5218 - Offset eje V
* 5219 - Offset eje W

donde 5210 es la bandera de habilitación 'G92' (1 para habilitado, 0 para deshabilitado)
y 5211 a 5219 son los offsets de eje. Si se ven posiciones inesperadas
como resultado de un movimiento ordenado, resultado de almacenar un
offset en un programa anterior y no borrarlos al final, entonces
emita un G92.1 en la ventana MDI para borrar los offsets almacenados.

Si existen valores G92 en el archivo VAR cuando se inicia LinuxCNC,
los valores en el archivo var se aplicarán a los valores de la ubicación actual
de cada eje. Si esta es la posición home y la posición home esta
establecida como cero máquina, todo será correcto. Una vez que home ha sido
establecido usando interruptores de máquina reales, o moviendo cada eje a una
posición inicial conocida y emitiendo un comando de home del eje, cualquier desplazamiento G92 será
aplicado. Si tiene un G92 X1 en efecto cuando da home al eje X, el
DRO leerá 'X: 1.000' en lugar del esperado 'X: 0.000' porque el
G92 se aplicó al origen de máquina. Si emite un G92.1 y el DRO
ahora lee todos los ceros, entonces tuvo un desplazamiento G92 vigente la última vez
corrió LinuxCNC.

A menos que su intención sea usar los mismas offsets G92 en el próximo
programa, la mejor práctica es emitir un G92.1 al final de cualquier
archivos de código G donde utiliza offsets G92.

Cuando un programa se aborta durante el procesamiento y tiene offsets 'G92' en
efecto, el inicio hará que se activen nuevamente. Como salvaguarda, tenga 
siempre su preámbulo estableciendo el entorno como usted
espera. Además, la persistencia 'G92' puede deshabilitarse configurando
'DISABLE_G92_PERSISTENCE = 1' en la sección '[RS274NGC]' del
archivo '.ini'.

=== Precauciones de Interacción G92 y G52 [[sec:g92-g52-animation-cautions]]

'G52' y 'G92' comparten los mismos registros de desplazamiento. A menos que 
la persistencia 'G92' está deshabilitada en el archivo '.ini' (vea <<sec:g92-commands,Comandos G92>>), 
los offsets 'G52' también persistirán después del reinicio de la máquina, 'M02' o 'M30'.
Tenga en cuenta que un offset 'G52' en efecto durante un programa
abortado puede dar lugar a desplazamientos no deseados cuando se ejecuta el siguiente programa.
Ver <<sec:g92-persistence-cautions,G92 Precauciones con Persistence>> más arriba.

== Programas de Muestra usando Offsets

=== Programa de Muestra utilizando Offsets de Coordenadas de Pieza

Este proyecto de grabado de muestra moldea un conjunto de cuatro círculos de radio .1 en
una forma aproximadamente de estrella alrededor de un círculo central. Podemos configurar el
patrón de círculo individual como este.

-------------------------------------------------- -------------------
G10 L2 P1 X0 Y0 Z0 (asegúrese de que G54 esté configurado en la máquina cero)
G0 X-0.1 Y0 Z0
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G0 Z0
M2
-------------------------------------------------- -------------------

Podemos emitir un conjunto de comandos para crear offsets para los otros cuatro
círculos, como esto:

-------------------------------------------------- ---------
G10 L2 P2 X0.5 (compensa el valor de G55 X en 0,5 pulgadas)
G10 L2 P3 X-0.5 (compensa el valor de G56 X en -0.5 pulgadas)
G10 L2 P4 Y0.5 (compensa el valor G57 Y en 0.5 pulgadas)
G10 L2 P5 Y-0.5 (compensa el valor G58 Y en -0.5 pulgadas)
-------------------------------------------------- ---------

Los reunimos en el siguiente programa:

-------------------------------------------------- -------------------
(un programa para fresar cinco círculos pequeños en forma de diamante)

G10 L2 P1 X0 Y0 Z0 (asegúrese de que G54 sea la máquina cero)
G10 L2 P2 X0.5 (compensa el valor de G55 X en 0,5 pulgadas)
G10 L2 P3 X-0.5 (compensa el valor de G56 X en -0.5 pulgadas)
G10 L2 P4 Y0.5 (compensa el valor G57 Y en 0.5 pulgadas)
G10 L2 P5 Y-0.5 (compensa el valor G58 Y en -0.5 pulgadas)

G54 G0 X-0.1 Y0 Z0 (círculo central)
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G0 Z0

G55 G0 X-0.1 Y0 Z0 (offset primer círculo)
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G0 Z0

G56 G0 X-0.1 Y0 Z0 (offset segundo círculo)
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G0 Z0

G57 G0 X-0.1 Y0 Z0 (offset tercer círculo)
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G0 Z0

G58 G0 X-0.1 Y0 Z0 (offset cuarto círculo)
G1 F1 Z-0.25
G3 X-0.1 Y0 I0.1 J0
G54 G0 X0 Y0 Z0

M2
-------------------------------------------------- -------------------

Ahora llega el momento en que podríamos aplicar un conjunto de offsets G92 a este
programa. Verá que se está ejecutando en cada caso en Z0. Si la fresa
estaban en la posición cero, un G92 Z1.0000 emitido al inicio del
programa cambiaría todo una pulgada. También puede cambiar
todo el patrón en el plano XY agregando algunos desplazamientos X e Y
con G92. Si hace esto, debe agregar un comando G92.1 justo antes de
M2 que finaliza el programa. Si no lo hace, otros programas que podría
ejecutar después de este también usará ese desplazamiento G92. Además, lo harían
en un nuevo inicio ya que se guardan los valores de G92 cuando se cierra LinuxCNC y serán
recargados cuando se inicia de nuevo.

=== Programa de muestra usando offsets G52

(Para ser escrito)

