Base de conocimiento
Aplicaciones asíncronas y en paralelo
Cómo usar las aplicaciones en segundo plano, que permiten correr más de un programa al mismo tiempo.
Esta función sustituye al hilo auxiliar (Auxiliary Thread), que el equipo de Fairino no recomienda usar.
---
Una aplicación asíncrona permite que el cobot ejecute dos o más hilos de lógica independientes al mismo tiempo. Sirve sobre todo cuando hay eventos o condiciones que deben vigilarse de forma continua mientras el programa principal corre. Con un solo hilo, el robot tiene que terminar lo que está haciendo antes de poder revisar cualquier otra cosa.

El ejemplo clásico es una banda transportadora. En el flujo típico, el cobot debe:
Revisar si hay un paquete en cierta posición
Detener la banda cuando llega el paquete
Retirar el paquete de la banda y colocarlo en un estante
Volver a arrancar la banda hasta que llegue el siguiente paquete
Con un solo hilo, el cobot no puede revisar el paquete B hasta terminar todas las instrucciones para llevar el paquete A al estante. Es decir, la banda no puede rearrancar ni vigilarse hasta que el ciclo completo de pick and place termine.

Esa limitación se resuelve separando la lógica de detección de la lógica de retiro. Si la detección corre como aplicación en segundo plano, el cobot vigila la llegada de paquetes de forma continua mientras la aplicación en primer plano se encarga del movimiento, el agarre y lo demás.
Primer plano contra segundo plano
Normalmente el cobot corre:
Una aplicación en primer plano: el script LUA principal, el del pick and place o el movimiento general del robot.
Una o más aplicaciones en segundo plano: scripts adicionales que corren de forma asíncrona con su propia lógica. Por ejemplo, puedes correr logic_A_background y logic_B_background al mismo tiempo.
Cómo se implementa
Para crear una aplicación en segundo plano, abre el panel de Background Applications con el ícono que aparece en la captura.
Ahí dentro escribes la lógica de vigilancia de la banda, o cualquier otra lógica continua. Dale a cada archivo LUA de segundo plano un nombre único, para distinguirlo con facilidad de la aplicación en primer plano.
En muchos casos hay que compartir información entre el hilo de primer plano y el de segundo. En el ejemplo de la banda se usa una variable global como UserVal: la tarea en segundo plano avisa cuando detecta un paquete y la aplicación en primer plano lee ese valor para disparar la secuencia de recolección.
Ejemplo de lógica en segundo plano
La lógica en segundo plano vigila el sensor de proximidad de forma continua. Suponiendo que tu sensor sea la entrada digital 2, la encargada de detectar la llegada del paquete, la estructura es esta:
Si DI2 = 1 (hay pieza): → detén la banda → fija la variable global de usuario (por ejemplo, SetUserVal(uservar1,1))
Si DI2 = 0 (no hay pieza): → pon la variable global en cero (por ejemplo, SetUserVal(uservar1,0)) → vuelve a encender la banda (DO0 = 1) → déjala corriendo hasta que llegue otra pieza
Guarda el script y córrelo desde la pestaña de Background Applications. Ojo: las aplicaciones en segundo plano siguen corriendo aunque el robot no esté en modo automático o esté detenido momentáneamente.
Para arrancar la aplicación en segundo plano, elige tu script de la lista y presiona Run.
Este enfoque acelera muchísimo la detección y el retiro de piezas de la banda. La misma técnica sirve para cualquier aplicación que se beneficie de un comportamiento tipo interrupción, de vigilancia continua o de ejecución asíncrona.
Traducido de la documentación de Fairino. Ante cualquier duda de seguridad, valida contra el manual del equipo y con tu asesor antes de mover el robot.
¿Sigues atorado?
Escríbenos con el número de serie y lo que ya intentaste. Contesta alguien que ha instalado estos equipos.
Pedir soporte →