Traitement en boucle
Si le programme de contrôle du robot créé comprend plusieurs tâches et comporte également des tâches en boucle infinie, le système peut devenir instable et la connexion avec Epson RC+ peut être interrompue.
Le contrôleur détecte les tâches en boucle infinie. En cas de détection de risques pouvant affecter le système, l’erreur suivante se produit et le programme s’arrête.
Si l’erreur se produit, modifiez le programme et veillez à ne pas définir de boucle infinie.
Code d’erreur : 2556
Message d’erreur : une boucle excessive a été détectée. Réduisez le nombre de tâches en boucle ou réinitialisez Wait
N’effectuez aucun traitement tel qu’une boucle infinie ou tout autre traitement similaire autant que possible.
Exécutez la commande Wait ou une commande similaire dans le traitement en boucle et évitez d’occuper le processeur lors de l’exécution de calculs nécessitant une boucle ou l’attente de signaux d’E/S.
L’utilisation dans une boucle nécessitant des commandes Wait, telles que la commande Wait, la commande de mouvement du robot, la commande Print et la commande Wait Net, ne constitue pas un problème.
POINTS CLÉS
Une boucle infinie est effectuée dans le cas suivant :
Lorsque des commandes sont créées uniquement avec une commande sans Wait dans la boucle, comme une instruction d’opération, une commande d’affectation et une commande de vérification d’E/S
Exemple 1 : lors de l’activation du port de sortie « 2 » lorsque le port d’entrée « 0 » est activé
Exemple de programme susceptible de provoquer une erreur
Do
If Sw(0) = On Then
On(2)
Exit Do
EndIf
Loop
Exemple de correction
Wait Sw(0) = On
On(2)
Exemple 2 : lors de l’exécution d’un grand nombre de calculs dans une structure de boucle
Exemple de programme susceptible de provoquer une erreur
For i = 0 To 10000
For j = 0 To 10000
a = a + 1
Next
Next
Exemple de correction
For i = 0 To 10000
For j = 0 To 10000
a = a + 1
Next
Wait 0.01 ' Exécuter Wait pour éviter d’occuper le processeur
Next