Programme logique

Description

Les applications PolyScope X peuvent inclure un programme logique qui s'exécute en continu en arrière-plan, indépendamment du programme principal du robot. Cette fonctionnalité est utile pour les tâches qui doivent continuer à s'exécuter lorsque le bras est mis hors tension, que le programme principal est en pause ou arrêté, ou que l'opérateur a pénétré dans une zone de sécurité.


Les utilisations typiques comprennent la gestion de la communication par bus de terrain (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC), la réaction aux entrées de capteurs externes, la transmission de l'état du robot à un automate de production et le contrôle d'équipements externes lorsque le programme principal s'arrête.

Le programme logique ne peut pas utiliser de fonctions qui déplacent directement le bras de robot, modifient la charge utile ou modifient les paramètres RTO.

Exemples d'applications avec un programme logique

  1. Réponse active à une entrée provenant d'un capteur externe lorsque le robot est en mode d'arrêt, tel que l'arrêt de sécurité, l'arrêt de protection ou l'Arrêt d'urgence, et que le programme principal est en pause ou arrêté, ou avant la mise sous tension du bras de robot.

  2. La communication par bus de terrain (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) est maintenue même lorsque le bras de robot est hors tension et que le programme n'est pas en cours d'exécution.

  3. Fonctionnement continu de la logique de cellule lorsque le programme principal est interrompu par l'opérateur.

  4. Rapport d'état du robot, qui est transmis au logiciel de contrôle de production (automate de production).

  5. Arrêt contrôlé des équipements externes, tels que la soudeuse, le convoyeur ou le distributeur de colle, lorsque le programme principal s'arrête ou est mis en pause.

  6. Les données saisies par l'opérateur sont enregistrées avant le lancement du programme.

  7. Récupération personnalisée en cas de défaillance. L'opérateur peut décider de la marche à suivre après la reprise du programme principal.

  8. Remplacement du contrôleur PLC externe dans les petites cellules robotisées.

Licence

Logic Program nécessite une licence, qui peut être achetée via le portail client.

 

Contrôle du programme logique

Dans la page « Programme », sélectionnez « Programme logique » dans la barre latérale. La barre latérale déployée affiche les commandes permettant de naviguer entre les différentes parties du programme logique. Il vous permet également de démarrer, de mettre en pause, d'arrêter et de réinitialiser le programme.

 

Le bouton « Exécuter le programme » affiche soit « Exécuter le programme », soit « Arrêter le programme», selon l'état du programme logique. Elle sert de raccourci pour les actions de contrôle de programme disponibles dans le menu contextuel du programme logique.

Les quatre indicateurs du programme Logic indiquent l'état actuel du programme. Ils indiquent également si le programme est configuré pour démarrer automatiquement au lancement d'une application.

 

Structure du programme logique

Un programme logique comporte les mêmes sections structurelles qu'un programme principal :

  • Corps principal du programme — s'exécute en continu jusqu'à ce qu'il soit arrêté manuellement, à l'aide d'une instruction d'arrêt ou à la suite d'une erreur d'exécution.
  • Avant le démarrage — s'exécute une fois au lancement du programme logique.
  • Modules — fonctions et threads, organisés de la même manière que dans le programme principal. Par défaut, les fonctions de thread ne s'exécutent qu'une seule fois ; activez l'option « boucle » pour que le thread s'exécute en continu.

Le programme du robot et le programme logique disposent chacun de leur propre ensemble de variables globales, d'un pool de threads indépendant et d'un cycle de vie d'exécution indépendant. Le démarrage, l'arrêt ou le dysfonctionnement d'un programme n'entraîne pas l'arrêt de l'autre. Une instruction « halt » ou « pause » n'affecte que le programme dans lequel elle est exécutée.

 

 

Dans la section « Avant de commencer », vous ne pouvez exécuter le programme qu'une seule fois.

Dans la section Modules , vous pouvez consulter la liste des fonctions et des threads disponibles pour le programme.

 

Échange de données avec le programme du robot

Les variables d'application constituent le principal moyen de communication entre le programme du robot et le programme logique. Les variables peuvent être à la fois définies et lues à partir du robot et du programme logique.

Cet exemple compte les éléments entrant dans le tampon d'entrée de la cellule robotisée et affiche le nombre au programme du robot. Le compteur continue de s'incrémenter même lorsque le bras de robot est hors tension.

 

Lecture de l'état du robot

L'état du robot est accessible via les variables RTDE intégrées. Ces variables peuvent être lues à l'aide de la fonction de script get_rtde_value() . Pour obtenir la liste complète des champs RTDE disponibles, consultez le Guide RTDE.

L'exemple suivant montre comment vérifier si la fonction « Safeguard Stop » est active :


safety_status = get_rtde_value("safety_status")
# vérification de l'arrêt de sécurité et de l'arrêt
de sécurité en mode automatique  is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

L'exemple suivant vérifie si le programme du robot est en pause :

is_program_paused = get_rtde_value("runtime_state") == 4

L'API de contrôle URScript intègre également cette fonctionnalité.

 

Lancement automatique d'un programme logique

Vous pouvez sélectionner un programme qui sera lancé automatiquement au chargement d'une application. Lorsque vous sélectionnez l'option Démarrage automatique , le programme logique démarre immédiatement après le chargement de l'application.

Vous pouvez également lancer automatiquement le programme logique lorsque le contrôleur du robot est mis sous tension et que la dernière application est chargée.

La fonction « Autostart » fonctionne quel que soit le mode de fonctionnement ou l'état du bras de robot. Lorsque la fonction Autostart est déclenchée au chargement, une notification de type « snackbar » confirme que le programme logique a démarré.

 

 

Le badge situé dans la barre latérale, sur l'icône du programme Logic, indique toujours l'état actuel du programme : s'il est en cours d'exécution ou à l'arrêt.

Il vous incombe de vous assurer que le programme logique est sûr lorsque le robot est sous tension et lorsque différentes applications sont chargées.

Les programmes logiques peuvent activer et désactiver des équipements externes à l'aide de connexions câblées ou de connexions PLC (Modbus, PROFINET, Ethernet/IP, Socket, sorties directes ou autres interfaces).

 

Modules et threads

Les fonctionnalités du programme logique peuvent être organisées en fonctions. Cela fonctionne de la même manière que dans le programme du robot.

Chaque fonction peut être marquée comme un thread . Par défaut, les threads ne sont exécutés qu'une seule fois. Cochez la case « Loop » de la fonction de thread pour exécuter le thread en boucle.

 

Partage des ressources

Bien que le programme du robot et le programme logique soient exécutés indépendamment, chacun disposant de son propre pool de threads et de variables, ils partagent tous les mêmes ressources matérielles. Cela impose quelques contraintes dont le programmeur doit tenir compte :

  • Les threads du programme logique s'exécutent sur le même processeur que le programme du robot. Le temps d'exécution de tous les threads du programme logique s'ajoutera au temps d'exécution de tous les threads du programme du robot. Dans les cas extrêmes, cela peut entraîner une violation de type « Runtime too much behind ».

  • Certaines ressources de communication, telles que les signaux Modbus ou les registres à usage général, sont des ressources partagées. Écrire simultanément dans le même registre entraînera des résultats inattendus. Par ailleurs, le comportement observé actuellement peut évoluer à l'avenir lorsque l'implémentation sous-jacente sera optimisée.

  • Modbus — Un client Modbus est partagé. Les signaux créés dans l'un ou l'autre des programmes sont visibles dans les deux.

  • Adaptateur Ethernet/IP flexible — Chaque programme ouvre son propre descripteur de lecture ou d'écriture sur la même instance. Les handle ne doivent pas écrire dans les mêmes champs de données.

 

Limitations

  • Seul un sous-ensemble des instructions URScript est disponible dans le programme logique.

  • Les indicateurs d'exécution du programme et le débogage par points d'arrêt ne sont pas pris en charge pour le programme logique.

  • Le mode interpréteur n'est pas pris en charge dans les programmes logiques. Toutefois, le mode interpréteur peut toujours être lancé dans le programme du robot pendant l'exécution du programme logique.