Programa lógico

Descripción

Las aplicaciones de PolyScope X pueden incluir un programa lógico que se ejecute de forma continua en segundo plano, independientemente del programa principal del robot. Esto resulta útil para tareas que deben seguir ejecutándose cuando el brazo está apagado, el programa principal está en pausa o se ha detenido, o cuando el operador ha entrado en una zona de seguridad.


Entre los usos habituales se incluyen el mantenimiento de la comunicación por bus de campo (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC), la respuesta a entradas de sensores externos, la notificación del estado del robot a un PLC de producción y el control de equipos externos cuando se detiene el programa principal.

El programa lógico no puede utilizar funciones que muevan directamente el brazo robótico, cambien la carga útil o modifiquen los parámetros del PCH.

Ejemplos de aplicaciones con el programa lógico

  1. Respuesta activa a la señal de un sensor externo mientras el robot se encuentra en un modo de parada, como «Parada de seguridad», «Parada de protección» o «Parada de emergencia», y el programa principal está en pausa o detenido, o antes de que se encienda el brazo robótico.

  2. La comunicación por bus de campo (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) se mantiene incluso si el brazo robótico está apagado y el programa no se está ejecutando.

  3. Funcionamiento continuo de la lógica de la célula mientras el operador interrumpe el programa principal.

  4. Informe de estado del robot, que se transmite al software de control de producción (PLC de producción).

  5. Parada controlada de equipos externos, como máquinas de soldadura, cintas transportadoras o dispensadores de cola, cuando el programa principal se detiene o se pone en pausa.

  6. Los datos introducidos por el operador se registran antes de que se inicie el programa.

  7. Recuperación personalizada en caso de fallos. El operador puede decidir qué hacer tras reanudar el programa principal.

  8. Sustitución del controlador PLC externo en células robóticas pequeñas.

Licencia

Logic Program requiere una licencia, que se puede adquirir a través del portal del cliente.

 

Control del programa lógico

En la página «Programa», selecciona «Programa lógico» en la barra lateral. La barra lateral ampliada muestra los controles para navegar por las diferentes partes del programa lógico. También te permite iniciar, pausar, detener y reiniciar el programa.

 

El botón «Ejecutar programa» cambia a «Ejecutar programa » o «Detener programa», dependiendo del estado del programa lógico. Sirve como acceso directo a las acciones de control del programa disponibles en el menú contextual del programa lógico.

Los cuatro indicadores del programa Logic muestran el estado actual del programa. También indican si el programa está configurado para iniciarse automáticamente al cargar una aplicación.

 

Estructura del programa lógico

Un programa lógico tiene las mismas secciones estructurales que un programa principal:

  • Cuerpo principal del programa — se ejecuta de forma continua hasta que se detiene manualmente, mediante una instrucción de parada o por un error de ejecución.
  • Antes de empezar — se ejecuta una vez al iniciar el programa lógico.
  • Módulos — funciones y subprocesos, organizados de la misma forma que en el programa principal. Las funciones de los hilos solo se ejecutan una vez de forma predeterminada; activa la opción de bucle para que un hilo se ejecute de forma continua.

El programa del robot y el programa lógico tienen cada uno su propio conjunto de variables globales, un grupo de subprocesos independiente y un ciclo de vida de ejecución independiente. El inicio, la parada o la aparición de un fallo en un programa no detiene al otro. Una instrucción de parada o pausa solo afecta al programa en el que se ejecuta.

 

 

En la sección «Antes de empezar», solo puedes ejecutar el programa una vez.

En la sección «Módulos» , puedes ver la lista de funciones y subprocesos disponibles para el programa.

 

Intercambio de datos con el programa del robot

La principal forma de comunicación entre el programa del robot y el programa lógico es a través de las variables de aplicación . Las variables se pueden tanto establecer como leer desde el robot y el programa lógico.

Este ejemplo cuenta los elementos que entran en el búfer de entrada de la célula del robot y muestra el recuento al programa del robot. El contador sigue sumando incluso cuando el brazo robótico está apagado.

 

Lectura del estado del robot

El estado del robot está disponible a través de las variables RTDE integradas. Estas variables se pueden leer utilizando la función de script get_rtde_value() . Para consultar la lista completa de campos RTDE disponibles, consulta la Guía de RTDE.

El siguiente ejemplo muestra cómo comprobar si la función «Safeguard Stop» está activa:


safety_status = get_rtde_value("safety_status")
# comprueba si hay una parada de seguridad y si la parada
de seguridad en modo automático está activa  is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

El siguiente ejemplo comprueba si el programa del robot está en pausa:

is_program_paused = get_rtde_value("runtime_state") == 4

La API de control de URScript también integra esta funcionalidad.

 

Inicio automático del programa lógico

Puede seleccionar un programa para que se inicie automáticamente al cargar una aplicación. Al seleccionar la opción «Inicio automático», el programa lógico se inicia inmediatamente después de que se cargue la aplicación.

También puede iniciar automáticamente el programa lógico cuando se encienda el controlador del robot y se cargue la última aplicación.

La función «Autostart» funciona independientemente del modo de funcionamiento o del estado del brazo robótico. Cuando se activa el inicio automático al cargar el programa, una notificación en forma de barra emergente confirma que el programa lógico se ha iniciado.

 

 

La insignia de la barra lateral del icono de Logic Program indica siempre el estado actual del programa, tanto si está en ejecución como si está detenido.

Es su responsabilidad asegurarse de que el programa lógico sea seguro cuando el robot esté encendido y cuando se carguen diferentes aplicaciones.

Los programas lógicos pueden activar y desactivar equipos externos mediante conexiones cableadas o de PLC (Modbus, PROFINET, Ethernet/IP, Socket, salidas directas u otras interfaces).

 

Módulos y hilos

La funcionalidad del programa lógico se puede organizar en funciones. Esto funciona de la misma manera que en el programa del robot.

Cada función se puede marcar como un hilo . Por defecto, los subprocesos se ejecutan una sola vez. Marca la casilla «Loop» de la función de subproceso para ejecutar el subproceso de forma continua.

 

Compartir recursos

Aunque el programa del robot y el programa lógico se ejecutan de forma independiente, cada uno con su propio conjunto de subprocesos y variables, todos comparten los mismos recursos de hardware. Esto impone algunas limitaciones que el programador debe tener en cuenta:

  • Los subprocesos del programa lógico se ejecutan en la misma CPU que el programa del robot. El tiempo de ejecución de todos los subprocesos del programa lógico se sumará al tiempo de ejecución de todos los subprocesos del programa del robot. En casos extremos, esto puede provocar la infracción «Runtime too much behind».

  • Algunos recursos de comunicación, como las señales Modbus o los registros de uso general, son recursos compartidos. Escribir en el mismo registro al mismo tiempo provocará resultados inesperados. Además, el comportamiento observado actualmente puede cambiar en el futuro cuando se optimice la implementación subyacente.

  • Modbus — Se comparte un único cliente Modbus. Las señales creadas en cualquiera de los dos programas son visibles en ambos.

  • Adaptador flexible Ethernet/IP — Cada programa abre su propio identificador de lectura o escritura para la misma instancia. Los «handles» no deben escribir en los mismos campos de datos.

 

Limitaciones

  • En el programa lógico solo está disponible un subconjunto de instrucciones de URScript.

  • Los indicadores de ejecución del programa y la depuración basada en puntos de interrupción no son compatibles con el programa lógico.

  • El modo intérprete no es compatible con los programas lógicos. No obstante, el modo intérprete se puede iniciar en el programa del robot mientras se está ejecutando el programa lógico.