Mixed Logic, BG Logic et macros FANUC : choisir le bon outil pour l’exécution en parallèle

Code d’erreur : Mixed Logic / BG Logic / Macros  ·  Catégorie : Programmation  ·  Contrôleurs : R-30iB, R-30iB Plus, CRX-10i

Le client demande un changement « simple » : activer une sortie de vacuum quand le robot franchit une position, et seulement pendant que le convoyeur tourne. Vous ajoutez une ligne de Mixed Logic. Ça fonctionne sur le banc d’essai. Ça brise dès que la cellule monte à la vraie cadence de production, parce que la Mixed Logic ne peut traiter que des comparaisons simples pendant le mouvement. La solution n’est pas d’ajouter plus de Mixed Logic, mais de déplacer ce comportement dans la Background Logic ou dans un Condition Monitor. Chez Probot Systèmes, nous voyons ce décalage entre l’outil et le besoin sur la plupart des cellules où plusieurs intégrateurs ont touché au code au fil des ans.

Cet article s’adresse aux techniciens qui programment des contrôleurs R-30iB, R-30iB Plus et CRX-10i, qui ont besoin d’un comportement en parallèle et qui ne savent pas quelle structure de contrôle utiliser. Nous couvrons la Mixed Logic, la Background Logic, les macros et le Condition Monitor, dans l’ordre où vous devriez les évaluer.

Ce que cette erreur signifie vraiment

Il n’existe pas d’alarme FANUC unique appelée « mauvaise utilisation de la Mixed Logic ». Les symptômes apparaissent plus loin sous forme d’INTP-254 Parameter not found (paramètre introuvable), de PRIO-620 PNIO(C) station deactivated (station PNIO(C) désactivée) lorsqu’une tâche BG Logic fait référence à une E/S qui a disparu, ou simplement d’un comportement qui ne correspond pas au programme tel qu’il est écrit.

Selon le manuel des codes d’erreur FANUC au sujet d’INTP-254 : « Paramètre introuvable. Cause : le nom de paramètre spécifié est introuvable. Solution : vérifier le nom du paramètre. » L’alarme se déclenche quand une ligne de Mixed Logic, une tâche BG Logic ou une macro fait référence à une variable système ou à un paramètre qui n’existe pas dans le firmware en service. La solution consiste à lire le manuel correspondant à ce firmware, pas à colmater le symptôme.

Selon le manuel au sujet de PRIO-620 : « L’appareil dont le réglage Show error when deactivated est à ON est désactivé. Solution : vérifier la station correspondant au numéro de station indiqué et l’activer. » Celle-ci frappe quand un programme BG Logic interroge une E/S de bus de terrain qui perd la communication, et que la logique d’interrogation n’est pas conditionnée par le signal de communication OK.

La réalité de l’atelier : la Mixed Logic, la BG Logic, les macros et le Condition Monitor ont chacun une tâche pour laquelle ils sont bons. Utilisez le mauvais et vous obtenez soit une alarme en aval, soit un comportement qui dérive en production.

Causes les plus fréquentes, par ordre de probabilité

  1. Ligne de Mixed Logic trop complexe pour une exécution pendant le mouvement. La Mixed Logic sert à des comparaisons uniques et simples qui doivent être évaluées pendant le mouvement (p. ex. IF DI[3], DO[5]=ON). Empilez trois conditions et vous obtenez une synchronisation imprévisible. Le manuel de l’option Mixed Logic est explicite sur cette contrainte.
  2. Background Logic désactivée ou non configurée. Le client suppose que la BG Logic roule parce que quelqu’un a écrit un programme de style BG, mais MENU > SETUP > BG Logic montre que l’emplacement est vide. Une discussion de la communauté DIY Robotics sur le « Program Timer not running » documente exactement cette idée fausse (référence).
  3. Macro appelée depuis un chemin de mouvement critique. Les macros sont conçues pour les boutons de l’IHM (quelques lignes, rapides, retour immédiat). Une macro qui lance une longue séquence de mouvements se comporte de façon erratique parce qu’elle s’exécute sur le fil de l’interface utilisateur. La discussion de robot-forum « FANUC with SK7 starting Macro » donne un bon exemple d’utilisation correcte d’une macro (masque de groupe, sortie numérique, aucun mouvement) (référence).
  4. Condition Monitor non utilisé là où il serait approprié. Le Condition Monitor déclenche une action programmée quand une E/S change d’état pendant le mouvement, sans modifier la ligne de mouvement en cours. La plupart des cas que l’on tente de régler avec de la Mixed Logic demandent en fait un Condition Monitor.
  5. BG Logic qui fait un travail dont elle est incapable. Une discussion de robot-forum rappelle sans détour que certaines instructions TP ne sont pas permises en BG Logic, et que le message d’alarme n’aide pas toujours (référence). Les instructions de mouvement, la coordination complète de trajectoire et quelques opérations sur les registres sont restreintes.

Comment diagnostiquer en moins de 10 minutes

Étape 1. Déterminez ce qui doit s’exécuter en parallèle avec le mouvement. Une seule comparaison d’E/S ? Candidat pour la Mixed Logic. Une mise à jour d’état continue (indicateur d’alarme, convoyeur en marche) ? Candidat pour la BG Logic. Une réaction à un changement d’E/S pendant le mouvement ? Candidat pour le Condition Monitor. Un raccourci de bouton IHM ? Candidat pour une macro.

Étape 2. Ouvrez MENU > SETUP > BG Logic. Lisez la liste des tâches en cours. Si elle est vide, aucune BG Logic ne s’exécute. Les essais de BG Logic qui fonctionnent en T1 mais pas en AUTO échouent souvent parce que la tâche BG n’est pas assignée au démarrage AUTO.

Étape 3. Lisez l’historique des alarmes si le comportement est incorrect. INTP-254 signifie qu’un nom de paramètre dans votre code n’existe pas. INTP-258 signifie une erreur d’accès au port de soudage et n’a aucun lien avec la structure logique (mentionné dans le manuel). PRIO-620 signifie qu’une référence d’E/S est hors ligne.

Étape 4. Pour les macros, vérifiez MENU > SETUP > Macro. Chaque macro est liée à un bouton ou à un signal UI. Confirmez que l’association est bien celle à laquelle vous vous attendez.

Étape 5. Pour le Condition Monitor, ouvrez le programme de mouvement concerné et cherchez les conditions WHEN en ligne avec les instructions de mouvement. Le Condition Monitor fait partie du programme de mouvement, ce n’est pas une tâche distincte.

Comment corriger le problème

Pour une Mixed Logic trop complexe :

Déplacez la partie complexe dans la BG Logic. Ne laissez qu’une seule comparaison dans la ligne de Mixed Logic, ou retirez complètement la Mixed Logic et laissez la BG Logic piloter l’E/S. Une discussion de la communauté DIY Robotics sur le démarrage d’un robot par un bouton de sortie (« Starting a Robot by an output button ») montre la bonne approche : la BG Logic associe les signaux UI à des indicateurs, et le programme principal lit ces indicateurs (référence).

Pour une BG Logic qui ne roule pas :

MENU > SETUP > BG Logic. Ajoutez la tâche. Réglez « AUTO start » pour qu’elle démarre à la mise sous tension, et pas seulement lorsqu’on la lance manuellement. Sauvegardez et redémarrez le contrôleur. La liste des tâches devrait indiquer que votre programme est en cours d’exécution.

Pour une BG Logic qui en fait trop :

Divisez-la. La BG Logic préfère de petites tâches ciblées. Un programme BG monolithique de 200 lignes est plus difficile à déboguer et plus susceptible de buter sur une instruction restreinte. Plusieurs tâches BG de 20 lignes sont plus propres.

Pour une macro qui pilote un long mouvement :

Restructurez. La macro ne devrait rien faire d’autre que CALL my_motion_program puis revenir. Le programme de mouvement s’exécute dans son propre groupe, avec son propre contrôle du mouvement. Cela évite les problèmes de synchronisation liés au fil d’exécution des macros et permet au programme de mouvement d’utiliser l’ensemble des fonctions TP.

Pour un Condition Monitor non utilisé :

Remplacez la combinaison Mixed Logic + mouvement par une instruction Condition Monitor. La syntaxe (CMR[n] et le mot-clé WHEN) est documentée dans le manuel de programmation TP de FANUC. L’avantage : la réaction de l’E/S est indépendante de l’exécution de la ligne de mouvement.

Pour une sortie numérique sur alarme ou état UO :

Utilisez la BG Logic. Une approche propre est documentée dans la communauté DIY Robotics : « Vous pouvez créer un programme BG Logic avec DO XX = UO 6 Fault » (référence). Une seule ligne de BG Logic et le voyant du panneau reflète toujours l’état d’alarme.

Quand faire appel à un spécialiste

Deux situations justifient un appel de service :

Vous avez hérité d’une cellule où quelqu’un a utilisé la Mixed Logic, la BG Logic et les macros de façon interchangeable, et le comportement est difficile à prévoir. Démêler tout ça, c’est un audit de programmation. Nous en faisons régulièrement, et le livrable est une carte documentée de qui exécute quoi et quand.

Vous devez ajouter une réaction d’E/S critique pour la sécurité pendant le mouvement (mise en sourdine d’un rideau lumineux, pause sur capteur d’effort, replanification guidée par la vision). C’est au minimum du ressort du Condition Monitor, souvent avec un mappage DCS Safe IO derrière. Le câbler sans conception de sécurité, c’est comme ça que des cellules se retrouvent avec un comportement intermittent que l’auditeur refusera de certifier.

Contactez-nous pour une revue de programmation, ou planifiez une visite de maintenance préventive afin que l’inventaire de la BG Logic et des macros soit documenté en même temps que l’entretien mécanique.

Erreurs connexes à vérifier

  • INTP-254 Parameter not found : un paramètre référencé dans le code n’existe pas dans ce firmware. Le plus fréquent en Mixed Logic et en BG Logic.
  • PRIO-620 PNIO(C) station deactivated : la BG Logic interroge un appareil de bus de terrain hors ligne. Conditionnez la lecture BG au signal de communication OK.
  • PROG-040 Already locked by other task (déjà verrouillé par une autre tâche) : la BG Logic a tenté de piloter un mouvement, ou une macro a lancé un programme de mouvement pendant qu’un autre roulait.
  • INTP-105 Run request failed (échec de la demande d’exécution) : une macro a tenté de démarrer un programme TP alors qu’aucun contrôle du mouvement n’était disponible. Lisez le code de cause.

Probot Systèmes est un intégrateur FANUC établi à Lévis (Québec) qui dessert le Canada et les États-Unis. Nous concevons les structures de Mixed Logic, de BG Logic, de macros et de Condition Monitor de chaque cellule que nous livrons, et nous les retravaillons sur les cellules de clients où l’intégrateur d’origine a choisi le mauvais outil. Si votre comportement en parallèle est imprévisible, parlons-en : contactez-nous.

Demander un devis

Remplissez le formulaire ci-dessous et nous vous contacterons dans les plus brefs délais.

Coordonnées
Votre projet
Afin de vous fournir le contenu demandé, nous devons stocker et traiter vos données personnelles. Si vous consentez à ce que nous stockions vos données personnelles à cette fin, veuillez cocher la case ci-dessous.

Inscrivez-vous à notre infolettre !

Recevez nos dernières nouvelles, événements et articles de blogue.