Elaborazione in loop

Se il programma di controllo del robot creato è multitasking e contiene anche attività con loop infinito, il sistema potrebbe diventare instabile e la connessione con Epson RC+ potrebbe interrompersi.

Il controller rileva le attività con loop infinito. Se viene individuata la possibilità di influenzare il sistema, si verifica il seguente errore e il programma viene arrestato.
Se si verifica l'errore, modificare il programma e assicurarsi di non impostare un loop infinito.
Codice di errore: 2556
Messaggio di errore: è stato rilevato un loop eccessivo. Ridurre il numero di attività in loop o reimpostare Wait

Evitare il più possibile l'elaborazione con loop infiniti o altre elaborazioni simili.

Eseguire il comando Wait o un comando simile nell'elaborazione in loop ed evitare di occupare la CPU quando si eseguono calcoli che richiedono loop o durante l'attesa di segnali I/O.
Non vi sono problemi se viene utilizzato in un loop che richiede comandi con attesa, come il comando Wait, il comando di movimento del robot, il comando Print e il comando Wait Net.

PUNTI CHIAVE


Il loop infinito viene eseguito nel seguente caso:
Quando i comandi vengono creati solo con un comando senza Wait nel loop, come istruzioni operative, comandi di assegnazione e comandi di verifica I/O

Esempio 1: attivazione della porta di uscita "2" quando la porta di ingresso "0" è attiva
Esempio di programma che potrebbe causare un errore

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

Esempio di correzione

               Wait Sw(0) = On  
               On(2)  

Esempio 2: quando si esegue un numero elevato di calcoli in una struttura a loop
Esempio di programma che potrebbe causare un errore

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

Esempio di correzione

               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