Compilation, chargement et déploiement KAREL FANUC : pourquoi votre fichier .PC ne roule pas sur le robot

Code d’erreur : Déploiement KAREL  ·  Catégorie : Programmation  ·  Contrôleurs : R-30iB, R-30iB Plus, R-J3iC, CRX-10i

Vous avez écrit une petite routine KAREL bien propre, vous l’avez compilée sur votre portable, transférée par FTP en .PC vers le robot, vous avez appuyé sur SELECT, et le contrôleur refuse de la voir. Ou il la voit, mais ne peut pas l’exécuter. KAREL a trois modes de défaillance sur les contrôleurs FANUC, et ils surviennent dans un ordre précis : mauvaise version de KTRANS, option de licence manquante ou transfert corrompu. Nous voyons les trois, à peu près dans cet ordre, sur les cellules de nos clients, et la démarche de correction est la même chaque fois. Chez Probot Systèmes, nous maintenons des utilitaires KAREL pour le déploiement sur des parcs de robots, alors ce processus est mis à l’épreuve chaque semaine sur des armoires R-30iB et CRX.

Cet article s’adresse aux techniciens et aux intégrateurs qui déploient des programmes KAREL (.PC) sur des contrôleurs FANUC. Il suppose que vous avez un fichier source .KL et accès à KTRANS ou à son équivalent dans ROBOGUIDE. Si vous faites face à des erreurs PRIO-620 ou PROG-040 provenant d’un programme KAREL qui commande un mouvement, elles ont leurs propres articles.

Ce que cette erreur signifie vraiment

KAREL est le langage de programmation de plus haut niveau de FANUC. Les fichiers sources sont des .KL, les binaires compilés sont des .PC, et la compilation se fait hors du robot avec KTRANS (un outil Windows en ligne de commande). Le robot ne voit jamais que le fichier .PC, et le contrôleur vérifie trois choses avant de l’exécuter : le binaire est intact, l’option KAREL est sous licence, et le binaire a été compilé pour la version de firmware en service.

Même s’il n’existe pas d’alarme FANUC unique appelée « erreur de compilation KAREL », le contrôleur affiche bien PROG-040 Already locked by other task (déjà verrouillé par une autre tâche) quand des appels KAREL chevauchent un mouvement. Selon le manuel : « Cause : le contrôle du mouvement pour le groupe spécifié était déjà 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. » Si vous voyez un jour PROG-040 provenant d’un utilitaire KAREL, c’est que cet utilitaire est configuré avec un groupe de mouvement dont il n’a pas réellement besoin.

De même, PRIO-620 PNIO(C) station deactivated (station PNIO(C) désactivée) apparaît quand un utilitaire KAREL tente de lire des données de bus de terrain et que l’esclave est absent; le manuel indique : « 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. » Ces deux alarmes surviennent après un chargement KAREL réussi, pas lors de la compilation elle-même.

En clair : ce sont les trois vérifications préalables (concordance du traducteur, licence, binaire intact) qui conditionnent l’exécution du programme. Si l’une d’elles échoue, le contrôleur refuse silencieusement de l’exécuter ou affiche un message générique « programme introuvable » au moment du SELECT.

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

  1. Version de KTRANS qui ne correspond pas au firmware du contrôleur. Un KTRANS V9 ne produira pas un .PC propre pour un contrôleur V8, et vice versa. Le .PC contient un en-tête de version que le contrôleur vérifie au chargement. S’ils ne concordent pas, le contrôleur fait comme si le fichier n’existait pas. Une discussion Reddit sur le thème « devenir expert en une journée » rappelle sans détour que maîtriser KTRANS en profondeur n’est pas le point de départ, mais que la concordance des versions est non négociable (référence).
  2. Option KAREL non chargée sur le contrôleur. KAREL est une option (R632 ou code de commande similaire). MENU > STATUS > Version ID > F1 [ORDER FILE] liste ce qui est réellement chargé. Si R632 est absent, aucun fichier .PC ne roulera sur ce robot. Point final.
  3. Transfert FTP en mode ASCII. Les fichiers .PC sont binaires. Les transferts ASCII convertissent les fins de ligne et corrompent le fichier. Le contrôleur ne peut pas distinguer un binaire corrompu d’un fichier manquant, alors vous voyez simplement « no such program » (programme inexistant).
  4. Directive INCLUDE manquante pour les .KL système de FANUC. La plupart des exemples KAREL reposent sur %INCLUDE klevkmsk et d’autres en-têtes semblables pour les types de données système. S’il manque l’include dans votre source, KTRANS signale des identificateurs non définis dans le fichier de listage (.L). Reprenez la structure fournie par FANUC dans son KAREL Reference Manual.
  5. Appel KAREL depuis un programme TP sans l’avoir enregistré. Même un .PC chargé avec succès ne s’exécutera pas à partir d’un CALL TP tant qu’il n’a pas été sélectionné au moins une fois via MENU > SELECT > KAREL Programs, selon la façon dont le projet a été structuré (communauté DIY Robotics : Karel Translator Directives).

Comment diagnostiquer en moins de 10 minutes

Étape 1. Relevez la version du firmware du contrôleur. MENU > STATUS > Version ID. Notez la version majeure.mineure (p. ex. V9.40P/12).

Étape 2. Vérifiez votre version de KTRANS. La version figure dans le nom du fichier (KTRANS940 pour V9.40, etc.) ou dans l’en-tête du listage .L. La version majeure.mineure doit correspondre à celle du contrôleur. Une différence de correctif (V9.40 vs V9.41) est habituellement acceptable; une différence de version mineure (V9.40 vs V9.50) ne l’est pas.

Étape 3. Confirmez que l’option KAREL est chargée. MENU > STATUS > Version ID > F1 [ORDER FILE]. Cherchez les entrées R632 ou J632. Si elles sont absentes, KAREL n’est pas sous licence sur ce contrôleur et aucun KTRANS, aussi bon soit-il, n’y changera rien.

Étape 4. Retransférez le fichier par FTP en mode BINARY. Avec un client FTP en ligne de commande : tapez binary avant put my_program.pc. Avec WinSCP : réglez le mode de transfert à Binary dans les préférences de session. En cas de doute, ouvrez le .PC dans un éditeur hexadécimal des deux côtés : s’ils sont identiques octet par octet, le transfert binaire s’est bien déroulé.

Étape 5. Sélectionnez le programme. SELECT > F1 [TYPE] > KAREL Programs. S’il n’apparaît pas dans la liste, le chargement a échoué silencieusement. S’il apparaît mais que RUN échoue, le problème vient du contrôle du mouvement (voir PROG-040 plus haut), et la correction du manuel consiste à « vérifier l’interrupteur d’activation du teach pendant et les autres programmes en cours d’exécution pour déterminer lequel détient le contrôle du mouvement ».

Comment corriger le problème

Pour une incompatibilité de version :

Recompilez avec le KTRANS correspondant. Si vous ne l’avez pas, installez la version de ROBOGUIDE qui correspond à celle du contrôleur et utilisez son KTRANS intégré. ROBOGUIDE V9.10, V9.30 et V9.40 sont chacun livrés avec le bon traducteur pour leur firmware respectif. Ne copiez pas un .PC V8 dans une armoire V9.

Pour une option KAREL manquante :

C’est une question de licence. Commandez l’option R632 (KAREL Programming Option) auprès de FANUC pour le numéro de série concerné. Le fichier d’option est ajouté lors d’un démarrage contrôlé (Controlled Start). Il n’existe aucun contournement logiciel.

Pour un binaire corrompu :

Retransférez en mode binaire. Une discussion au sujet d’un utilitaire Fanuc de gestion des commentaires bâti autour de KAREL rappelle que le .PC doit être transféré en binaire et sélectionné sur le TP sous SELECT > KAREL Programs (référence). Un transfert FTP binaire propre, suivi d’un SELECT, devrait fonctionner en moins de 30 secondes.

Pour une erreur d’INCLUDE :

Ouvrez le fichier de listage .L produit par KTRANS. Le premier identificateur non défini vous indique quel include système manque. Ajoutez la directive %INCLUDE appropriée (en-têtes typiques : klevkmsk, klevccdf, kliosop). Le KAREL Reference Manual de FANUC les énumère tous avec leur fonction.

Pour un programme KAREL qui se charge mais ne peut pas être appelé depuis le TP :

Confirmez que l’appel est CALL my_program et non CALL my_program( ). La syntaxe des arguments diffère légèrement entre TP et KAREL. Si le programme KAREL ne déclare aucun argument, retirez les parenthèses. S’il en déclare, déclarez-les avec les bons types.

Quand faire appel à un spécialiste

Deux cas justifient un appel :

Vous voulez déployer un utilitaire KAREL sur un parc de robots ayant différentes révisions de firmware. C’est un problème de chaîne de compilation (une seule source, plusieurs binaires .PC, FTP automatisé, déploiement d’options en démarrage contrôlé), et ça vaut la peine de le faire correctement une fois plutôt qu’à chaque mise en service.

Vous déboguez un programme KAREL qui fait planter le contrôleur, qui fige ou qui entre en conflit avec une tâche de mouvement. KAREL a un accès complet aux variables système, et un programme bogué peut bloquer l’armoire d’une manière qu’un programme uniquement TP ne peut pas. La solution passe habituellement par une refonte de l’architecture selon les règles documentées de contrôle du mouvement, pas par plus de code KAREL.

Contactez-nous pour un déploiement KAREL, ou planifiez une visite de maintenance préventive afin que le fichier d’options, la version de KTRANS et l’inventaire KAREL soient documentés avant la prochaine mise à niveau du firmware.

Erreurs connexes à vérifier

  • PROG-040 Already locked by other task : KAREL commande un mouvement alors qu’un programme TP détient le groupe. Problème purement de programmation.
  • PRIO-620 PNIO(C) station deactivated : un utilitaire KAREL lit un appareil de bus de terrain hors ligne. Ce n’est pas un bogue KAREL en soi, mais c’est souvent la logique d’interrogation KAREL qui le fait ressortir.
  • INTP-105 Run request failed (échec de la demande d’exécution) : la demande d’exécution n’a pas démarré. Regardez la ligne juste en dessous pour le véritable code de cause.
  • Erreurs HOST-xxx : alarmes du serveur FTP KAREL. Si le serveur Web / KCL de l’armoire n’a pas été déverrouillé dans Host Comm, les utilitaires IHM pilotés par KAREL ne pourront pas communiquer.

Probot Systèmes est un intégrateur FANUC établi à Lévis (Québec) qui dessert le Canada et les États-Unis. Nous concevons et déployons des utilitaires KAREL pour les IHM en bord de ligne, l’enregistrement de données et les échanges avec les automates sur des cellules R-30iB et CRX dans les deux pays. Si votre déploiement KAREL bloque sur « le fichier est là, mais le robot refuse de l’exécuter », parlons-en rapidement : 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.