Procesamiento de bucles

Si el programa de control robótico creado consiste en múltiples tareas y también tiene tareas con bucle infinito, el sistema puede volverse inestable y la conexión con Epson RC+ puede desconectarse.

El controlador detecta tareas en bucle infinito. Si se detectan posibilidades de afectar al sistema, se produce el siguiente error y se detiene el programa.
Si se produce el error, modifique el programa y asegúrese de no establecer un bucle infinito.
Código de error: 2556
Mensaje de error: se ha detectado un bucle excesivo. Reduzca el número de tareas en bucle o restablezca Wait

No realice ningún procesamiento como bucles infinitos o cualquier otro procesamiento similar en la medida de lo posible.

Ejecute el comando Wait o un comando similar en el procesamiento del bucle y evite ocupar la CPU al realizar cálculos que requieran un bucle o esperar señales de E/S.
No hay ningún problema si se utiliza en un bucle que requiera comandos Wait, como el comando Wait, el comando de movimiento del robot, el comando Print y el comando Wait Net.

PUNTOS CLAVE


El bucle infinito se ejecuta en el siguiente caso:
Cuando los comandos se crean solo con comando sin Wait en el bucle, como instrucciones de operación, comandos de asignación y comandos de comprobación de E/S

Ejemplo 1: al activar el puerto de salida "2" cuando el puerto de entrada "0" está activado
Ejemplo de un programa que puede causar un error

               Do  
                  If Sw(0) = On Then  
                      On(2)  
                      Exit Do  
                  EndIf  
               Loop  

Ejemplo de corrección

               Wait Sw(0) = On  
               On(2)  

Ejemplo 2: al realizar una gran cantidad de cálculos en una estructura de bucle
Ejemplo de un programa que puede causar un error

               For i = 0 To 10000  
                   For j = 0 To 10000  
                       a = a + 1  
                   Next  
               Next  

Ejemplo de corrección

               For i = 0 To 10000  
                   For j = 0 To 10000  
                       a = a + 1  
                   Next  
                   Wait 0.01     ' Execute Wait to avoid occupying the CPU  
               Next