Esta documentación describe el módulo python linuxcnc, que proporciona una API Python para LinuxCNC.

1. El módulo linuxcnc Python

Las interfaces de usuario controlan la actividad de LinuxCNC enviando mensajes NML al controlador de tareas LinuxCNC y supervisan los resultados observando la estructura de estado de LinuxCNC, así como el canal de informe de errores.

El acceso programático a NML es a través de una API de C ++; sin embargo, la mayoría partes importantes de la interfaz NML para LinuxCNC también están disponibles para programas de Python a través del módulo linuxcnc.

Más allá de la interfaz NML para los canales de comando, estado y error, el módulo linuxcnc también contiene:

  • soporte para leer valores de archivos ini

2. Patron de uso de la interfaz NML LinuxCNC

El patrón general para el uso de linuxcnc es, en lineas generales, así:

  • importar el módulo linuxcnc

  • establecer conexiones a los canales NML de comandos, estado y errores según sea necesario

  • sondear el canal de estado, ya sea periódicamente o según sea necesario

  • antes de enviar un comando, determinar desde el estado si está en   uno correcto para hacerlo (por ejemplo, no tiene sentido enviar un   comando Ejecutar si la tarea está en el estado ESTOP o el intérprete no está inactivo)

  • envíar el comando utilizando uno de los métodos del canal de comandos linuxcnc

Para recuperar mensajes del canal de errores, sondee el canal de errores periódicamente y procese los mensajes recuperados.

  • sondear el canal de errores, ya sea periódicamente o según sea necesario

  • imprimir cualquier mensaje de error y explore el código de excepción

linuxcnc también define el tipo de excepción Python error para admitir informes de errores.

3. Lectura del Estado de LinuxCNC

Aquí hay un fragmento de Python para explorar el contenido del objeto linuxcnc.stat que contiene más de 80 valores (correr mientras linuxcnc se está ejecutando para valores típicos):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import linuxcnc
try:
    s = linuxcnc.stat() # crea una conexión al canal de estado
    s.poll() # obtener valores actuales
except linuxcnc.error, detail:
    print "error", detail
    sys.exit(1)
for x in dir(s):
    if not x.startswith("_"):
        print x, getattr(s,x)

Linuxcnc usa la ruta de compilacion predeterminada para el archivo de configuración NML a menos que se sobreescriba; vea lectura valores de archivo ini para un ejemplo.

3.1. Atributos en linuxcnc.stat

acceleration

(devuelve float) - aceleración predeterminada, refleja la entrada ini [TRAJ]DEFAULT_ACCELERATION.

active_queue

(devuelve entero) - Número de mezclas en motion.

actual_position

(devuelve tupla de floats) - posición de trayectoria actual, (x y z a b c u v w), en unidades máquina.

adaptive_feed_enabled

(devuelve boolean) - estado de anulación de avance adaptativo (0/1).

ain

(devuelve tupla de floats) - valor actual de los pines de entrada analógica.

angular_units

(devuelve float) - unidades angulares de máquina para grados, refleja el valor ini [TRAJ]ANGULAR_UNITS.

aout

(devuelve tupla de floats) - valor actual de los pines de salida analógica.

axes

(devuelve entero) - número de ejes derivado del valor ini [TRAJ]COORDINATES.

axis

(devuelve tupla de diccionarios) - reflejando los valores actuales del eje. Ver El diccionario del eje.

axis_mask

(devuelve entero) - máscara de eje disponible según lo definido por [TRAJ]COORDINATES en el archivo ini. Devuelve la suma de los ejes X = 1, Y = 2, Z = 4, A = 8, B = 16, C = 32, U = 64, V = 128, W = 256.

block_delete

(devuelve boolean) - el estado actual de eliminar bloque.

command

(devuelve cadena) - comando actualmente en ejecución.

current_line

(devuelve entero) - línea actualmente en ejecución.

current_vel

(devuelve float) - velocidad actual en unidades de usuario por segundo.

cycle_time

(devuelve float) - período de hilo

debug

(devuelve entero) - bandera de depuración desde el archivo ini.

delay_left

(devuelve float) - tiempo restante en el comando dwell (G4), segundos.

din

(devuelve tupla de enteros) - valor actual de los pines de entrada digital.

distance_to_go

(devuelve float) - distancia restante del movimiento actual, según lo informado por el planificador de trayectoria.

dout

(devuelve tupla de enteros) - valor actual de los pines de salida digital.

dtg

(devuelve tupla de floats) - distancia restante del movimiento actual para cada eje, según lo informado por el planificador de trayectoria.

echo_serial_number

(devuelve entero) - El número de serie del último comando completado enviado por una UI a task. Todos los comandos llevan un número de serie. Una vez que el comando ha sido ejecutado, su número de serie se refleja en echo_serial_number.

enabled

(devuelve boolean) - bandera de habilitacion de planificador de trayectoria.

estop

(devuelve entero) - Devuelve STATE_ESTOP o no.

exec_state

(devuelve entero) - estado de ejecución task. Uno de EXEC_ERROR, EXEC_DONE, EXEC_WAITING_FOR_MOTION, EXEC_WAITING_FOR_MOTION_QUEUE, EXEC_WAITING_FOR_IO, EXEC_WAITING_FOR_MOTION_AND_IO, EXEC_WAITING_FOR_DELAY, EXEC_WAITING_FOR_SYSTEM_CMD, EXEC_WAITING_FOR_SPINDLE_ORIENTED.

feed_hold_enabled

(devuelve boolean) - habilitar la bandera para retención de alimentación.

feed_override_enabled

(devuelve boolean) - habilitar bandera para ajuste de alimentación.

feedrate

(devuelve float) - ajuste de avance actual, 1.0 = 100%.

file

(devuelve cadena) - nombre de archivo gcode cargado actualmente, con ruta.

flood

(devuelve entero) - Estado de inundación, FLOOD_OFF o FLOOD_ON.

g5x_index

(devuelve entero) - sistema de coordenadas actualmente activo, G54 = 1, G55 = 2, etc.

g5x_offset

(devuelve tupla de floats) - desplazamiento del sistema de coordenadas actualmente activo.

g92_offset

(devuelve tupla de floats) - pose del offset g92 actual.

gcodes

(devuelve tupla de enteros) - Códigos G activos para cada grupo modal. Constantes de código G G_0, G_1, G_2, G_3, G_4, G_5, G_5_1, G_5_2, G_5_3, G_7, G_8, G_100, G_17, G_17_1, G_18, G_18_1, G_19, G_19_1, G_20, G_21, G_28, G_28_1, G_30, G_30_1, G_33, G_33_1, G_38_2, G_38_3, G_38_4, G_38_5, G_40, G_41, G_41_1, G_42, G_42_1, G_43, G_43_1, G_43_2, G_49, G_50, G_51, G_53, G_54, G_55, G_56, G_57, G_58, G_59, G_59_1, G_59_2, G_59_3, G_61, G_61_1, G_64, G_73, G_76, G_80, G_81, G_82, G_83, G_84, G_85, G_86, G_87, G_88, G_89, G_90, G_90_1, G_91, G_91_1, G_92, G_92_1, G_92_2, G_92_3, G_93, G_94, G_95, G_96, G_97, G_98, G_99

homed

(devuelve tupla de enteros) - articulaciones actualmente con/sin home, 0 = sin home, 1 = con home.

id

(devuelve entero) - ID de movimiento actualmente en ejecución.

inpos

(devuelve boolean) - bandera machine-in-position.

input_timeout

(devuelve boolean) - bandera de temporizador M66 en progreso.

interp_state

(devuelve entero) - estado actual del intérprete RS274NGC. Uno de INTERP_IDLE, INTERP_READING, INTERP_PAUSED, INTERP_WAITING.

interpreter_errcode

(devuelve entero) - código de retorno actual del intérprete RS274NGC. Uno de INTERP_OK, INTERP_EXIT, INTERP_EXECUTE_FINISH, INTERP_ENDFILE, INTERP_FILE_NOT_OPEN, INTERP_ERROR. ver src/emc/nml_intf/interp_return.hh

joint

(devuelve tupla de diccionarios) - refleja los valores de articulación actuales. Ver El diccionario de articulaciones.

joint_actual_position

(devuelve tupla de floats) - Posiciones articulares reales.

joint_position

(devuelve tupla de floats) - Posiciones articulares deseadas.

joints

(devuelve entero) - Número de articulaciones. Refleja [KINS]JOINTS del ini.

kinematics_type

(devuelve entero) - El tipo de cinemática. Uno de:

  • KINEMATICS_IDENTITY

  • KINEMATICS_FORWARD_ONLY

  • KINEMATICS_INVERSE_ONLY

  • KINEMATICS_BOTH

limit

(devuelve tupla de enteros) - Máscaras de límites de eje. minHardLimit = 1, maxHardLimit = 2, minSoftLimit = 4, maxSoftLimit = 8.

linear_units

(devuelve float) - unidades lineales de máquina por mm, refleja valor ini [TRAJ]LINEAR_UNITS.

lube

(devuelve entero) - bandera de "lubricación ON".

lube_level

(devuelve entero) - refleja iocontrol.0.lube_level.

max_acceleration

(devuelve float) - máxima aceleración, refleja [TRAJ]MAX_ACCELERATION.

max_velocity

(devuelve float) - velocidad máxima refleja [TRAJ]MAX_VELOCITY.

mcodes

(devuelve tupla de 10 enteros) - códigos M actualmente activos.

mist

(devuelve entero) - Estado de la niebla, ya sea MIST_OFF o MIST_ON

motion_line

(devuelve entero) - número de línea fuente del movimiento que se está ejecutando actualmente. Relación con id no aclarada.

motion_mode

(devuelve entero) - Este es el modo del controlador de movimiento. Uno de TRAJ_MODE_COORD, TRAJ_MODE_FREE, TRAJ_MODE_TELEOP.

motion_type

(devuelve entero) - El tipo de movimiento que se está ejecutando actualmente. Uno de:     * MOTION_TYPE_TRAVERSE     * MOTION_TYPE_FEED     * MOTION_TYPE_ARC     * MOTION_TYPE_TOOLCHANGE     * MOTION_TYPE_PROBING     * MOTION_TYPE_INDEXROTARY     * 0 si no hay movimiento en este momento.

optional_stop

(devuelve entero) - bandera de stop opcional.

paused

(devuelve boolean) - bandera de movimiento en pausa.

pocket_prepped

(devuelve entero) - comando Tx completado, la ranura está preparada. -1 si la ranura no está preparada.

*poll() *

- (función incorporada) Método para actualizar los atributos del estado actual.

position

(devuelve tupla de floats) - posición en trayectoria

probe_tripped

(devuelve boolean) - bandera, True si la sonda se ha disparado (con latch)

probe_val

(devuelve entero) - refleja el valor del pin motion.probe-input.

probed_position

(devuelve la tupla de floats) - posición donde se disparó la sonda.

sondeo

(devuelve booleano) - bandera, True si hay una operación de sonda en progreso.

program_units

(devuelve entero) - uno de CANON_UNITS_INCHES=1 , CANON_UNITS_MM=2, CANON_UNITS_CM=3

queue

(devuelve entero) - tamaño actual de la cola del planificador de trayectoria.

queue_full

(devuelve boolean) - la cola del planificador de trayectoria está llena.

rapidrate

(devuelve float) - escala de ajustes de rápidos.

read_line

(devuelve entero) - línea que el intérprete RS274NGC está leyendo actualmente.

rotación_xy

(devuelve float) - ángulo de rotación XY actual alrededor del eje Z.

settings

(devuelve tupla de floats) - configuración actual del intérprete. settings[0] = número de secuencia, settings[1] = velocidad de avance, settings[2] = velocidad

spindle

(devuelve tupla de diccionarios) - devuelve el estado actual del husillo ver <sec:the-spindle-dictionary, El diccionario spindle>>

spindles

(devuelve entero) - Número de husillos. Refleja el valor ini [TRAJ]SPINDLES.

state

(devuelve entero) - estado actual de ejecución del comando. Uno de RCS_DONE, RCS_EXEC, RCS_ERROR.

task_mode

(devuelve entero) - modo de tarea actual. uno de MODE_MDI, MODE_AUTO, MODE_MANUAL.

task_paused

(devuelve entero) - bandera Task pausado.

task_state

(devuelve entero) - estado actual de la tarea. uno de STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON, STATE_OFF.

tool_in_spindle

(devuelve entero) - Número de herramienta actual.

tool_offset

(devuelve tupla de floats) - valores de offsets de la herramienta actual.

tool_table

(devuelve tupla de tool_results) - lista de entradas de herramientas. Cada entrada es una secuencia de los siguientes campos: id, xoffset, yoffset, zoffset, aoffset, boffset, coffset, uoffset, voffset, woffset, diameter, frontangle, backangle, orientation. La identificación y orientación son enteros y el resto son floats.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import linuxcnc
s = linuxcnc.stat()
s.poll()
# para encontrar la información de la herramienta cargada en el índice 0 de la tabla de herramientas
if s.tool_table[0].id != 0: # se carga una herramienta
    print s.tool_table[0].zoffset
else:
    print "sin herramienta cargada"
  • velocity*:: (devuelve float) - Esta propiedad está definida, pero no tiene una interpretación útil.

3.2. El diccionario axis

La configuración de ejes y los valores de estado están disponibles a través de una lista de diccionarios por eje. Aquí hay un ejemplo de cómo acceder a un atributo de un eje particular:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import linuxcnc
s = linuxcnc.stat()
s.poll()
print "Joint 1 homed: ", s.joint[1]["homed"]

Tenga en cuenta que muchas propiedades que anteriormente estaban en el diccionario axis están ahora en el diccionario joint, porque en máquinas con cinemáticas no triviales estos elementos (como el backlash) no son propiedades de un eje.

max_position_limit

(devuelve float) - límite máximo (límite soft) para el movimiento del eje, en unidades máquina del parametro units.configuration, refleja [JOINT_n]MAX_LIMIT.

min_position_limit

(devuelve float) - límite mínimo (límite soft) para el movimiento del eje, en unidades máquina del parametro units.configuration, refleja [JOINT_n]MIN_LIMIT.

velocity

(devuelve float) - velocidad actual

3.3. El diccionario joint

Para cada articulación, están disponibles las siguientes claves de diccionario:

backlash

(devuelve float) - backlash en unidades máquina del parametro units.configuration, refleja [JOINT_n]BACKLASH.

enabled

(devuelve entero) - no cero significa habilitado.

fault

(devuelve entero) - no cero significa fallo del amplificador del eje.

ferror_current

(devuelve float) - error de seguimiento actual

ferror_highmark

(devuelve float) - magnitud del error de seguimiento máximo.

homed

(devuelve entero) - distintos de cero han sido homed.

homing

(devuelve entero) - distinto de cero significa homing en progreso.

inpos

(devuelve entero) - no cero significa en posición.

input

(devuelve float) - entrada de posición actual.

jointType

(devuelve entero) - parámetro del tipo de configuración del eje, refleja [JOINT_n]TYPE. LINEAL=1, ANGULAR=2. Ver configuración ini de articulacion para más detalles.

max_ferror

(devuelve float) - Máximo error de seguimiento. parámetro de configuración, refleja [JOINT_n]FERROR.

max_hard_limit

(devuelve entero) - distinto de cero significa que se ha excedido el límite hard máximo.

max_position_limit

(devuelve float) - Límite máximo (límite soft) para el movimiento articular, en unidades de máquina. parámetro de configuración, refleja [JOINT_n]MAX_LIMIT.

*max_soft_limit *

distinto de cero significa que se ha excedido max_position_limit, int

min_ferror

(devuelve float) - parámetro de configuración, refleja [JOINT_n]MIN_FERROR.

min_hard_limit

(devuelve entero) - distinto de cero significa que se excedió el límite hard mínimo.

min_position_limit

(devuelve float) - límite mínimo (límite soft) para el movimiento articular, en unidades de máquina. parámetro de configuración, refleja [JOINT_n]MIN_LIMIT.

min_soft_limit

(devuelve entero) - distinto de cero significa que se ha excedido min_position_limit.

output

(devuelve float) - posición de salida ordenada.

override_limits

(devuelve entero) - no cero significa que los límites se han ajustado.

units

(devuelve float) - unidades de articulacion por mm, o por grado para juntas angulares.
(las unidades de articulacion son las mismas que las unidades d máquina, a menos que se establezca lo contrario por el parámetro de configuración [JOINT_n]UNITS)

velocity

(devuelve float) - velocidad actual

4. El diccionario spindle

brake

(devuelve entero) - valor de la bandera del freno del husillo.

direction

(devuelve entero) - dirección rotacional del huso. adelante = 1, atrás = -1.

enabled

(devuelve entero) - valor de la bandera de husillo habilitado.

homed

(no implementado actualmente)

increasing

(devuelve entero) - poco claro.

orient_fault

(devuelve entero)

orient_state

(devuelve entero)

override

(devuelve float) - Escala de ajuste de velocidad del husillo.

override_enabled

(devuelve boolean) - valor de la bandera habilitacion para ajustar el husillo.

speed

(devuelve float) - valor de velocidad del husillo, rpm,> 0: en sentido horario, <0: en sentido anti-horario.

5. Preparacion para enviar comandos

Siempre se pueden enviar algunos comandos, independientemente del modo y el estado. Por ejemplo, siempre se puede llamar al método linuxcnc.command.abort().

Otros comandos pueden enviarse solo en el estado apropiado, y probarlos puede ser un poco complicado. Por ejemplo, un comando MDI solo se puede enviar si:

  • ESTOP no se ha activado, y

  • la máquina está encendida y

  • los ejes tienen home y

  • el intérprete no está funcionando y

  • el modo está configurado en modo MDI

entonces una prueba apropiada antes de enviar un comando MDI a través de linuxcnc.command.mdi() podría ser:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import linuxcnc
s = linuxcnc.stat()
c = linuxcnc.command()

def ok_for_mdi():
    s.poll()
    return not s.estop and s.enabled and (s.homed.count(1) == s.joints) and (s.interp_state == linuxcnc.INTERP_IDLE)

if ok_for_mdi():
    c.mode(linuxcnc.MODE_MDI)
    c.wait_complete() # espera hasta que se ejecute el cambio de modo
    c.mdi("G0 X10 Y20 Z30")

6. Enviar comandos a través de linuxcnc.command

Antes de enviar un comando, inicialice un canal de comando así:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import linuxcnc
c = linuxcnc.command()

# Ejemplos de uso para algunos de los comandos enumerados a continuación:
c.abort()

c.auto(linuxcnc.AUTO_RUN, program_start_line)
c.auto(linuxcnc.AUTO_STEP)
c.auto(linuxcnc.AUTO_PAUSE)
c.auto(linuxcnc.AUTO_RESUME)

c.brake(linuxcnc.BRAKE_ENGAGE)
c.brake(linuxcnc.BRAKE_RELEASE)

c.flood(linuxcnc.FLOOD_ON)
c.flood(linuxcnc.FLOOD_OFF)

c.home(2)

c.jog(linuxcnc.JOG_STOP,        jjogmode, joint_num_or_axis_index)
c.jog(linuxcnc.JOG_CONTINUOUS,  jjogmode, joint_num_or_axis_index, velocity)
c.jog(linuxcnc.JOG_INCREMENT,   jjogmode, joint_num_or_axis_index, velocity, increment)

c.load_tool_table()

c.maxvel(200.0)

c.mdi("G0 X10 Y20 Z30")

c.mist(linuxcnc.MIST_ON)
c.mist(linuxcnc.MIST_OFF)

c.mode(linuxcnc.MODE_MDI)
c.mode(linuxcnc.MODE_AUTO)
c.mode(linuxcnc.MODE_MANUAL)

c.override_limits()

c.program_open("foo.ngc")
c.reset_interpreter()

c.tool_offset(toolno, z_offset,  x_offset, diameter, frontangle, backangle, orientation)

6.1. Atributos linuxcnc.command

serial

    el número de serie del comando actual

6.2. métodos linuxcnc.command:

abort()

    enviar mensaje EMC_TASK_ABORT.

auto(int [, int])

    ejecutar, escalonar, pausar o reanudar un programa.

brake(int)

    engrane o suelte el freno del husillo.

debug(int)

    establecer el nivel de depuración a través del mensaje EMC_SET_DEBUG.

feedrate(float)

    establecer la velocidad de avance.

flood(int)

    encender/apagar inundacion.
    Sintaxis:
flood(command)
flood(linuxcnc.FLOOD_ON)
flood(linuxcnc.FLOOD_OFF)
Constants:
FLOOD_ON
FLOOD_OFF

home(int)

    home una articulación determinada.

jog(command-constant, bool, int[, float[, float]])

    Sintaxis:
jog(command, jjogmode, joint_num_or_axis_index, velocity[, distance]])
jog(linuxcnc.JOG_STOP, jjogmode, joint_num_or_axis_index)
jog(linuxcnc.JOG_CONTINUOUS, jjogmode, joint_num_or_axis_index, velocity)
jog(linuxcnc.JOG_INCREMENT, jjogmode, joint_num_or_axis_index, velocity, distance)     Constantes de comando; linuxcnc.JOG_STOP
linuxcnc.JOG_CONTINUOUS
linuxcnc.JOG_INCREMENT

jjogmode
       True

solicitar jog de articulacion individual (requiere teleop_enable (0))

       False

solicitud jog de eje de coordenadas cartesianas (requiere teleop_enable (1))

    joint_num_or_axis_index
       Para jog articular (jjogmode = 1)

joint_number

       Para jog de eje de coordenadas cartesianas (jjogmode = 0)

          índice de base cero de la coordenada del eje con respecto a           las letras de coordenadas conocidas XYZABCUVW           (x=>0,y=>1,z=>2,a=>3,b=>4,c=>5,u=>6,v=>7,w=>8)

load_tool_table()

    Vuelve a cargar la tabla de herramientas.

maxvel(float)

    establecer la velocidad máxima

mdi(string)

    Enviar un comando MDI. Máximo 255 caracteres.

mist(int)

activa/desactiva la niebla.
    Sintaxis:
mist(command)
mist(linuxcnc.MIST_ON)
mist(linuxcnc.MIST_OFF)
Constants:
MIST_ON
MIST_OFF

mode(int)

    establecer modo (MODE_MDI, MODE_MANUAL, MODE_AUTO).

override_limits()

    establecer la bandera de límites de ajuste de eje.

program_open(string)

    Abrir un archivo NGC.

rapidrate()

    establecer factor de ajuste de rápidos

reset_interpreter()

    restablecer el intérprete RS274NGC

set_adaptive_feed(int)

    establecer bandera de alimentación adaptativa

set_analog_output(int, float)

    ajustar el pin de salida analógica al valor

set_block_delete(int)

    establecer bloque eliminar bandera

set_digital_output(int, int)

    configurar el pin de salida digital al valor

set_feed_hold(int)

    activar/desactivar la retención de alimentación

set_feed_override(int)

    activar/desactivar el ajuste de alimentación

set_max_limit(int, float)

        establecer el límite de posición máxima para un eje dado

set_min_limit()

        establecer el límite de posición mínima para un eje dado

set_optional_stop(int)

    activar/desactivar parada opcional

set_spindle_override(int [, int])

    establecer ajuste del husillo habilitado. Por defecto el husillo 0.

spindle(int [[float] [int] [float, int]])

    establecer la dirección del husillo. Uno de SPINDLE_FORWARD,     SPINDLE_REVERSE, SPINDLE_OFF, SPINDLE_INCREASE,     SPINDLE_DECREASE o SPINDLE_CONSTANT.

#!/usr/bin/env python
import linuxcnc
c = linuxcnc.command()

# Aumente la velocidad del husillo 0 en 100 rpm. El husillo debe estar encendido primero
c.spindle(linuxcnc.INCREASE)

# Aumente la velocidad del husillo 2 en 100 rpm. El husillo debe estar encendido primero
c.spindle(linuxcnc.SPINDLE_INCREASE, 2)

# Establecer la velocidad del husillo de 0 a 1024 rpm
c.spindle.(linuxcnc.SPINDLE_FORWARD, 1024)

# Establecer la velocidad del husillo 1 a -666 rpm
c.spindle.(linuxcnc.SPINDLE_REVERSE, 666, 1)

# Detener husillo 0
c.spindle.(linuxcnc.SPINDLE_OFF)

# Detener el eje 0 explícitamente
c.spindle.(linuxcnc.SPINDLE_OFF, 0)
spindleoverride(float [, int])

    establecer el factor de ajuste del husillo. Por defecto el husillo 0.

state(int)

    establecer el estado de la máquina. El estado de la máquina debe ser STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON o STATE_OFF

task_plan_sync()

        al finalizar esta llamada, el archivo var en el disco se actualiza con         valores vivos del intérprete.

teleop_enable(int)

    habilitar/deshabilitar el modo teleop (deshabilitar para jogging articular).

tool_offset(int, float, float, float, float, float, int)

        establecer offset de herramienta. Ver ejemplo de uso arriba.

traj_mode(int)

    establecer el modo de trayectoria. El modo es uno de MODE_FREE, MODE_COORD o     MODE_TELEOP.

unhome(int)

    dejar sin home una articulación determinada.

wait_complete([float])

    Esperar a que se complete el último comando enviado. Si el tiempo de espera en     segundos no esta especificado, el valor predeterminado es 5 segundos. Devuelve -1 si     se agota el tiempo de espera, devuelva RCS_DONE o RCS_ERROR según el     estado de ejecución del comando

7. Lectura del canal de error

Para manejar mensajes de error, conéctese al canal de error y periódicamente ejecute poll().

Tenga en cuenta que el canal NML para mensajes de error tiene una cola (distinta a los canales de comando y estado), lo que significa que el primer consumidor de un mensaje de error elimina ese mensaje de la cola; si es otro consumidor de mensajes de error (por ejemplo, Axis) "verá" el mensaje dependiendo del timing. Se recomienda tener solo una tarea de lector de canal de error en una configuración.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import linuxcnc
e = linuxcnc.error_channel()

error = e.poll()

if error:
    kind, text = error
    if kind in (linuxcnc.NML_ERROR, linuxcnc.OPERATOR_ERROR):
        typus = "error"
    else:
        typus = "info"
    print typus, text

8. Lectura de valores de archivo ini

Aquí hay un ejemplo para leer valores de un archivo ini a través del objeto linuxcnc.ini:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# run as:
# python ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini

import sys
import linuxcnc

inifile = linuxcnc.ini(sys.argv[1])

# inifile.find () devuelve None si no se encontró la clave: el
# following idiom es útil para establecer un valor predeterminado:

machine_name = inifile.find("EMC", "MACHINE") or "unknown"
print "machine name: ", machine_name

# inifile.findall () devuelve una lista de coincidencias o una lista vacía
# si no se encontró la clave:

extensions = inifile.findall("FILTER", "PROGRAM_EXTENSION")
print "extensions: ", extensions

# anular el archivo NML predeterminado por parámetro ini si se proporciona
nmlfile = inifile.find("EMC", "NML_FILE")
if nmlfile:
    linuxcnc.nmlfile = os.path.join(os.path.dirname(sys.argv[1]), nmlfile)

9. El tipo linuxcnc.positionlogger

Algunas sugerencias de uso se pueden obtener de src/emc/usr_intf/gremlin/gremlin.py.

9.1. miembros

npts

    número de puntos.

9.2. métodos

start(float)

    iniciar el registrador de posición y ejecutar cada ARG segundos

clear()

    borrar el registrador de posición

stop()

    detener el registrador de posición

call()

    plot el backplot ahora.

last([int])

    Devuelve el punto más reciente de la trama o ninguno. ,