Code d’erreur : PROG-040 / INTP-105 · Catégorie : Programmation · Contrôleurs : R-30iB, R-30iB Plus, R-30iA Mate, LR Mate 200iD
Le cycle fonctionnait bien. Vous avez ajouté un petit sous-programme pour gérer le préhenseur, appuyé sur RUN, et le contrôleur affiche INTP-105 suivi de PROG-040 Already locked by other task (déjà verrouillé par une autre tâche). Rien ne bouge. Le correctif tient en une ligne de code TP, mais seulement si vous comprenez qui détient actuellement le contrôle du mouvement et pourquoi le contrôleur refuse de le confier à deux tâches à la fois. Chez Probot Systèmes, nous voyons ce cas chaque fois qu’un client tente d’ajouter un programme parallèle sans utiliser la Background Logic.
Cet article s’adresse aux techniciens et aux intégrateurs qui écrivent des programmes TP sur des contrôleurs R-30iB, R-30iB Plus et R-30iA Mate. La même alarme apparaît sur les cellules LR Mate avec la configuration de mouvement standard. Si vous avez plusieurs groupes de mouvement, les règles sont encore plus strictes ; cet article couvre le cas à un seul groupe, de loin le plus courant.
Chaque programme TP qui veut déplacer le robot doit réserver le contrôle du mouvement pour le groupe de mouvement qu’il utilise. Selon le manuel des codes d’erreur FANUC : « PROG-040 Already locked by other task. Cause : Le contrôle du mouvement pour le groupe spécifié a déjà été réservé par un autre programme. Solution : Vérifier les autres programmes en cours d’exécution pour déterminer lequel détient le contrôle du mouvement. »
L’alarme compagne INTP-105 est documentée juste à côté : « Run request failed. Cause : Le programme ne peut pas être démarré. Solution : Consulter le code de cause de l’erreur. » INTP-105 est l’alarme externe (la demande d’exécution a été refusée), PROG-040 est le code de cause (refusée parce que le groupe était déjà verrouillé).
En clair : deux programmes ne peuvent pas déplacer le robot en même temps. Si le programme A exécute du mouvement et que le programme B tente de démarrer avec un accès au mouvement, le programme B est bloqué avec PROG-040 jusqu’à ce que A libère le groupe ou se termine. C’est le contrôleur qui vous protège contre deux morceaux de code qui se disputent les mêmes articulations, exactement ce que doit faire un processeur de mouvement unique.
*,*,*,*,* ou équivalent). Laissez-le sur le groupe 1 et le contrôleur le traite comme une tâche de mouvement qui veut le même groupe que le programme principal.Étape 1. Lisez les deux alarmes dans le journal. INTP-105 devrait se trouver au-dessus de PROG-040. Cet ordre vous indique qu’il s’agit d’une demande d’exécution qui a échoué, et non d’un mouvement déjà en cours.
Étape 2. Ouvrez la liste des tâches en cours sous MENU > SELECT > F1 [TYPE] > Status. Cherchez tout programme à l’état PAUSED ou RUNNING. Celui qui détient le contrôle du mouvement est celui qui a un groupe de mouvement dans son en-tête et un statut non terminé.
Étape 3. Appuyez sur FCTN > 4 ABORT (ALL) pour tout arrêter proprement. Si PROG-040 disparaît ensuite, c’est qu’une tâche en pause traînait et retenait le groupe.
Étape 4. Vérifiez le masque de groupe du programme fautif. MENU > SELECT, sélectionnez le programme, appuyez sur DETAIL et regardez la ligne Group Mask. Si un programme qui ne gère que le préhenseur affiche 1,*,*,*,* au lieu de *,*,*,*,*, voilà votre problème (fil de la communauté DIY Robotics documentant le correctif du préhenseur sans groupe de mouvement).
Étape 5. Confirmez qu’aucune session WinTPE ou ROBOGUIDE n’est connectée. Ouvrez le menu d’état du réseau, ou fermez simplement tout outil PC qui communique avec l’armoire.
Pour le cas le plus courant (sous-programme de préhenseur ou d’E/S défini comme tâche de mouvement) :
1,*,*,*,* à *,*,*,*,* (aucun groupe de mouvement requis).Le programme devient ainsi une tâche purement logique, et le contrôleur le laissera s’exécuter en parallèle avec le programme de mouvement sans contester le groupe.
Pour deux programmes de mouvement qui doivent réellement tous deux déplacer le robot :
Vous devez les sérialiser. Utilisez un seul programme principal qui appelle chaque sous-routine de mouvement dans l’ordre, au lieu de tenter de les lancer par deux demandes d’exécution. Le langage TP prend en charge les chaînes de CALL précisément pour cela. Si vous avez besoin d’un comportement parallèle avec des E/S, utilisez la Background Logic. Si vous avez besoin de mouvement parallèle (impossible sur un seul groupe de mouvement), il vous faut une configuration à deux bras ou un deuxième robot.
Pour un verrou WinTPE / ROBOGUIDE bloqué :
Déconnectez l’outil PC. Si le verrou persiste, faites un Controlled Start (démarrage en maintenant PREV+NEXT). Cela efface l’état en mémoire sans perdre les programmes. Un Cold Start est excessif dans ce scénario et comporte plus de risques qu’il ne règle de problèmes.
Pour un problème d’UNLOCK_GROUP en KAREL ou en TP avancé :
PROG-040 a des cousines (PROG-041 à PROG-043) qui se déclenchent lorsque la machine à états du groupe est mal utilisée. Si un programme KAREL appelle LOCK_GROUP puis se termine sans UNLOCK_GROUP, le groupe reste verrouillé jusqu’au prochain cycle d’alimentation. C’est rare en code TP pur, mais fréquent lorsque du KAREL est ajouté par la suite. Les fils robot-forum et DIY Robotics mentionnés plus haut présentent la bonne façon de faire.
Deux situations justifient un appel :
L’alarme apparaît de façon intermittente et vous n’arrivez pas à déterminer quel programme détient le verrou. Cela signifie habituellement qu’une macro ou une tâche d’arrière-plan appelle quelque chose au mauvais moment, et la retracer exige de lire ensemble l’arbre d’appels, la configuration BG Logic et la table des macros. Nous le faisons couramment dans le cadre d’un audit de programmation.
Vous mettez en service une cellule avec plusieurs groupes de mouvement (robot plus positionneur servo, robot plus rail), et le mouvement est demandé par des séquences pilotées par l’automate d’une façon qui produit des PROG-040 intermittents. Le contrôle du mouvement multigroupe exige un modèle de propriété clair, documenté dès le départ, et la plupart des cellules que nous visitons n’en ont pas.
Contactez-nous pour une revue de programmation, ou mettez en place un contrat d’entretien préventif afin que les masques de groupe et la configuration BG Logic soient vérifiés en même temps que l’entretien mécanique.
Probot Systèmes est un intégrateur FANUC établi à Lévis (Québec) qui dessert le Canada et les États-Unis. L’architecture TP multiprogramme, la BG Logic et l’intégration KAREL font partie de chaque cellule que nous livrons. Si PROG-040 revient sans cesse sur votre ligne et que vous n’arrivez pas à retracer quelle tâche verrouille le groupe, c’est le moment de nous joindre.
Nous utilisons des témoins (cookies) pour mesurer l'audience et améliorer le site. Vous pouvez les refuser en tout temps.
Remplissez le formulaire ci-dessous et nous vous contacterons dans les plus brefs délais.