Position de transformation de calcul de mouvement avec orientation (MCTPO)
Ces informations s’appliquent aux automates
Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 et ControlLogix 5590.Utilisez l’instruction Position de transformation de calcul de mouvement avec orientation (Motion Calculate Transform Position with Orientation, MCTPO) pour :
- Calculer les positions cartésiennes, en fonction des positions articulaires, lorsque le sens de transformation est configuré sur Avant.
- Calculer les positions articulaires, en fonction des positions cartésiennes, lorsque le sens de transformation est configuré sur Inverse.
- Il s’agit d’une instruction de transition. Suivez ces étapes lors de son utilisation :
- Dans la logique à relais, insérez une instruction pour faire basculer la condition d’entrée d’échelon de false à true à chaque exécution de l'instruction.
- Dans une routine de texte structuré, insérez une condition pour que l’instruction provoque son exécution uniquement lors d’une transition.
Architecture | Standard | Sécurité |
|---|---|---|
Automates CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 et GuardLogix 5570 | Oui | Non |
Les automates Compact GuardLogix 5380, CompactLogix 5380, ControlLogix 5580, GuardLogix 5580 et ControlLogix 5590 | Oui | Non |
Langues disponibles
Diagramme à relais

Bloc fonctionnel
Cette instruction n'est pas disponible dans le bloc fonctionnel.
Texte structuré
MCTPO(CartesianSystem, RobotSystem, MotionControl, WorkFrame, ToolFrame, Direction, ReferencePosition, TransformPosition, RobotConfiguration, TurnsCounter);
Opérandes
IMPORTANT:
N'utilisez pas le même nom d'étiquette pour plusieurs instructions dans le même programme. N'écrivez en aucun cas dans l'étiquette de sortie de l'instruction.
IMPORTANT:
Si les opérandes de l’instruction sont modifiés en mode Exécution, les éditions en attente doivent être acceptées et le mode de l’automate doit passer de Programme à Exécution pour que les modifications prennent effet.
Configuration
Ce tableau fournit les opérandes utilisés pour configurer l’instruction. Ces opérandes ne peuvent pas être modifiés lors de l’exécution.
Opérande | Type de données | Format | Description |
|---|---|---|---|
Cartesian System | COORDINATE_SYSTEM | Balise | Système de coordonnées cartésiennes utilisé pour programmer les mouvements. Pour les automates qui prennent en charge les types de données de mouvement REF_TO, le type d’opérande du système de coordonnées peut être remplacé par le type REF_TO_COORDINATE_SYSTEM. |
Robot System | COORDINATE_SYSTEM | Balise | Système de coordonnées non cartésiennes qui contrôle le matériel réel. Référence à un système de coordonnées non cartésiennes qui contrôle le matériel réel. Pour les automates qui prennent en charge les types de données de mouvement REF_TO, le type d’opérande du système de coordonnées peut être remplacé par le type REF_TO_COORDINATE_SYSTEM. |
Motion Control | MOTION_INSTRUCTION | Balise | Étiquette de contrôle pour cette instruction |
Work Frame | POSITION_DATA | Balise immédiate | Les décalages de cadre de travail sont les décalages utilisés pour localiser le référentiel de travail de l'utilisateur du robot par rapport à l'origine du cadre de base du robot. Ces décalages se composent d'une valeur XYZ et d'une valeur RxRyRz. Cela permet d'écrire les programmes dans l'espace de travail de l'utilisateur ou du cadre de travail et de les transformer vers le cadre de base du robot. Pour faire pivoter la position cible autour de l'axe X, Y ou Z ou pour décaler la position cible le long de l'axe X, Y ou Z du système de coordonnées de base du robot, entrez les degrés de rotation dans les membres de l'étiquette Rx, Ry et Rz en unités de degrés de rotation. Entrez les distances de décalage dans les membres des étiquettes X, Y et Z dans les unités de coordination. Définissez le membre d’ID sur une valeur supérieure ou égale à zéro. Pour maintenir le cadre de travail sur le cadre de base du robot, laissez les valeurs structurée à zéro ou définissez la valeur de l'étiquette de l'opérande sur zéro. |
Tool Frame | POSITION_DATA | Balise immédiate | Les décalages Point central d'outil (TCP) sont utilisés pour localiser le centre de l'outil par rapport au centre de l'extrémité du bras. Ces décalages se composent d'une valeur XYZ et d'une valeur RxRyRz. Pour prendre en compte la position cible pour un outil attaché ayant des décalages de translation et/ou d'orientation, entrez les distances de décalage de l'outil dans les membres des étiquettes X, Y et Z en unités de coordination. Entrez les degrés de rotation de l'outil dans les membres des étiquettes Rx, Ry et Rz en unités de degrés de rotation. Définissez le membre d’ID sur une valeur supérieure ou égale à zéro. Pour que la position cible ne reflète que le point à l'extrémité du bras, laissez la valeur de structure à zéro ou définissez la valeur de l'étiquette de l'opérande sur zéro. |
Pour plus d’informations sur la configuration de systèmes de coordonnées, reportez-vous au
Manuel d’utilisation du système de coordonnées de mouvements
, publication MOTION-UM002.Affecte les indicateurs d'état mathématique
Non
Défauts majeurs/mineurs
Aucun spécifique à cette instruction. Un défaut majeur peut se produire si une référence non initialisée ou une référence de type incorrect est transmise aux opérandes du système de coordonnées. Reportez-vous à la section Indexer via des tableaux pour consulter les défauts d’indexation par tableau.
Exécution
Diagramme à relais
Condition/état | Action entreprise |
|---|---|
Préscrutation | Identique à Condition d’entrée d’échelon est fausse |
La condition d'entrée d'échelon est égale à faux | .EN, .DN, . ER sont définis sur faux. |
La condition d’entrée d’échelon est vraie et le bit .EN est faux | Le bit .EN est défini sur vrai et cette instruction est exécutée. |
La condition d’entrée d’échelon est vraie et le bit .EN est vrai | N/A |
Post-scrutation | Identique à Condition d’entrée d’échelon est fausse |
Texte structuré
Condition/état | Action entreprise |
|---|---|
Préscrutation | Reportez-vous à Pré-scrutation dans le tableau Diagramme à relais. |
Exécution normale | Reportez-vous à Condition d’entrée d’échelon est fausse, puis Conditions d’entrée d’échelon est vraie sur le tableau Diagramme à relais. |
Post-scrutation | Reportez-vous à Post-scrutation dans le tableau Diagramme à relais. |
Entrées
Opérande | Type de données | Format | Description |
|---|---|---|---|
Transform Direction | DINT | Balise | Pour calculer la position cartésienne, sélectionnez Avant(0). Pour calculer les positions d'articulation du robot, sélectionnez Inverse(1). |
Reference Position | REAL[6] | Balise | Si le sens de transformation est avant, entrez un tableau avec des angles articulaires. Si le sens de transformation est inverse, entrez un tableau avec des coordonnées cartésiennes. |
Robot Configuration | DINT | Balise | Le bit 0 de la configuration du robot n’a pas d’importance et est ignoré pour TD = Inverse et TD = Avant. Cet opérande d’entrée n’est valide que dans le sens de transformation Inverse. Liste des valeurs de bit : Bit0 – Configuration du robot Modifier(1)/Identique(0)Bit1 – Gaucher(1)/Droitier(0)Bit2 – Au-dessus(1)/Au-dessous(0)Bit3 – Retourner(1)/Ne pas retourner(0)La configuration du robot doit être zéro (0) pour les géométries de robots Delta. |
Robot Turns Counters | INT16[4] | Balise | Compteur indiquant le nombre de fois que le point 180 degrés est franchi dans le sens +/- selon lequel l'axe respectif a tourné. Si le sens de transformation est vers l'avant, la valeur est calculée par le système et retournée via cette étiquette. Si le sens de transformation est inverse, cette valeur détermine les positions articulaires finales. Les éléments suivants sont un tableau affectation d'index pour le nombre de tours des axes articulaires : Index 0 - axe J1 Index 1 - axe J4 Index 2 - axe J6 Index 3 - Réservé |
Sorties
Opérande | Type de données | Format | Description |
|---|---|---|---|
Transform Position | REAL[6] | Balise | Tableau qui mémorise la position calculée. Si le sens de la transformation est :
|
Robot Turns Counters | INT16[4] | Balise | Si le sens de transformation est vers l'avant, cette valeur est calculée par le système et retournée via cette étiquette. |
Robot Configuration | DINT | Balise | Cet opérande de sortie n’est valable que pour le sens de transformation Avant. Si le sens de transformation est Avant, la valeur est calculée par le système et retournée via cette balise. Pour les géométries de robot Delta, la sortie de configuration du robot est toujours zéro. |
IMPORTANT:
Pour les géométries de robot articulé dépendant à 4 axes, si vous entrez une position cartésienne qui correspond à la valeur articulaire de -179,00 pour J2, la transformation inverse MCTPO retourne l’erreur JOINT_ANGLE_EXCEEDED en raison d’une erreur d’arrondi dans les calculs cinématiques.
Pour les limites J3, reportez-vous à la documentation utilisateur fournie par le fabricant de votre robot.
Codes de défaut
Une erreur se produit lors de l’exécution si vous fournissez des valeurs d’opérande non valides.
Codes d’erreur étendus
Les codes d’erreur étendus fournissent des informations supplémentaires spécifiques aux instructions pour les codes d’erreur qui sont génériques pour d’autres instructions. Reportez-vous à la section Codes d’erreur de mouvement (.ERR) pour les instructions de mouvement. La signification des codes d'erreur étendus dépend des codes d'erreur correspondants.
Code d’erreur | Code EX_ERROR | Description |
|---|---|---|
13 | 3 | Valeur hors limites (angle de base) Tout angle d’orientation 360 ou -360. |
13 | 3 | Valeur hors limites (ID de base) ID est égal à toute valeur négative. |
13 | 4 | Valeur hors limites (angle d'outil) Tout angle d’orientation 360 ou -360. |
13 | 4 | Valeur hors limites (ID d'outil) ID est égal à toute valeur négative. |
13 | 5 | Paramètre hors limites Sens de transformation. |
13 | 6 | Paramètre hors limites Fin du tableau de positions de référence 6 |
13 | 6 | Paramètre hors limites La position d’entrée Rx, Ry ou Rz existe et la valeur ![]() 180 degrés |
13 | 6 | Paramètre hors limites Opérande 6 Si la géométrie du robot est Delta J1J2J6 ou Delta J1J2J3J6 et si la position d’entrée Rx existe et n’est pas égale à 180°. Si la géométrie du robot est Delta J1J2J6 ou Delta J1J2J3J6 et si la position d’entrée Ry existe et n’est pas égale à 0°. Si la géométrie du robot est Delta J1J2J3J4J5 et si la position d’entrée Rx existe et que la valeur n’est pas égale à 0° ou 180°. |
13 | 7 | Paramètre hors limites Fin du tableau de positions de transformation 6 |
13 | 9 | Paramètre hors limites Tous les compteurs de tours fournis pour la transformation inverse dépassent 127 ou -127 tours. |
61 | 1 | Conflit de connexion Erreur du groupe de mouvements de la transformation Le système de coordonnées cartésiennes ou du robot n'est pas groupé ou associé au même groupe de mouvements. |
61 | 2 | Conflit de connexion Erreur de systèmes en double pour la transformation Opérande 0 et Opérande 1 sont le même type de système de coordonnées |
61 | 3 | Conflit de connexion Erreur de dimension de la source de la transformation La dimension de la transformation du système de coordonnées cartésiennes est < 2. |
61 | 4 | Conflit de connexion Erreur de dimension de la cible de la transformation La dimension de la transformation du système de coordonnées du robot est égale à zéro. |
61 | 9 | Conflit de connexion Erreur de chevauchement des axes de la transformation Un axe est membre des systèmes cartésien et du robot. |
61 | 12 | Conflit de connexion Longueur de liaisons non valide pour la transformation Les longueurs de liaison pour toutes les géométries du robot doivent être 0,0 unité. |
61 | 15 | Conflit de connexion Configuration Delta non valide pour la transformation Longueur de Liaison 1 ne doit pas être égal à Longueur de liaison 2 Re Décalage1 de l'effecteur terminal ne doit pas être négative Pour Delta J1J2J6 et Delta J1J2J3J6, Décalage 3 (D3) de l'effecteur terminal ne doit pas être négative (Longueur de liaison 1 + Rb - Re) doit être inférieur à la longueur de liaison 2 (Longueur de liaison 1 + Rb – Re) doit être positif ou supérieur à zéro |
61 | 18 | Conflit de connexion Configuration articulée non valide pour la transformation Lorsque la valeur de décalage n’est pas valide pour la géométrie articulée indépendante J1J2J3J4J5J6, cette erreur est générée. Le décalage de base Yb doit être égal à 0,0 Le décalage d’effecteur terminal Ye doit être égal à 0,0 Le décalage d’effecteur terminal Ze doit être égal à 0,0 |
67 | 1 | Position non valide de transformation Orientation Rx non valide MOP Valeur de l'orientation Rx non valide pour les transformations EOA. Pour les géométries à 4 axes uniquement (Delta, SCARA, Articulé dépendant), seule la position Rx = 180 degrés est autorisée. Pour toutes les autres positions, cela générera une erreur. |
67 | 2 | Position non valide de transformation MOP Orientation Ry non valide Valeur de l'orientation Ry non valide pour les transformations EOA. Pour les géométries à 4 axes, après le retrait du cadre de travail et du cadre d'outil, il ne doit pas y avoir de valeur d'orientation Ry pour EOA. |
67 | 3 | Position non valide de transformation MOP Orientation Ry non valide |
147 | 3-5 | Constante de mise à l'échelle de l'orientation non valide Code d'erreur étendu 3 : Rx Code d'erreur étendu 4 : Ry Code d'erreur étendu 5 : Rz L’axe d’orientation a une constante de mise à l’échelle MAX_K_CONSTANT_FOR_ORIENTATION_AXIS. ouune constante de mise à l'échelle non entière ou un rapport de conversion entre les Unités de coordination et des Unités de position différent de 1:1. |
148 | 3 -5 | MCPM Décalage de l'orientation non nul Décalage de l'orientation Rx non valide. Code d'erreur étendu 3 : Décalage de l'orientation Rx non valide. Code d'erreur étendu 4 : Décalage de l'orientation Ry non valide. Code d'erreur étendu 5 : Décalage de l'orientation Rz non valide. Si la géométrie du robot est (MO_CD_J1J2J6 ou MO_CD_J1J2J3J6) et : Ou si la géométrie du robot est MO_CD_J1J2J3J4J5 et : |
151 | 1 | Dépassement de la limite des angles articulaires J1 Pour plus de détails, reportez-vous aux sections de configuration spécifique à la géométrie pour la limitation de plage articulaire. |
151 | 2 | Dépassement de la limite des angles articulaires J2 Pour plus de détails, reportez-vous aux sections de configuration spécifique à la géométrie pour la limitation de plage articulaire. |
151 | 3 | Dépassement de la limite des angles articulaires J3 Pour plus de détails, reportez-vous aux sections de configuration spécifique à la géométrie pour la limitation de plage articulaire. |
151 | 4 | Dépassement de la limite des angles articulaires J4 Pour plus de détails, reportez-vous aux sections de configuration spécifique à la géométrie pour la limitation de plage articulaire. |
151 | 5 | Dépassement de la limite des angles articulaires J5 Pour plus de détails, reportez-vous aux sections de configuration spécifique à la géométrie pour la limitation de plage articulaire. |
151 | 6 | Dépassement de la limite des angles articulaires J6 Pour plus de détails, reportez-vous aux sections de configuration spécifique à la géométrie pour la limitation de plage articulaire. |
153 | 1 | Position de translation non valide Translation X non valide MOP La translation sur l'axe X n'est pas valide |
153 | 2 | Position de translation non valide Translation Y non valide MOP La translation sur l'axe Y n'est pas valide |
153 | 3 | Position de translation non valide Translation Z non valide MOP La translation sur l'axe Z n'est pas valide |
156 | 1 | Erreur de condition de singularité L’axe articulaire J1 est proche de la condition de singularité d’armement dans la géométrie articulée indépendante à 6 axes Erreur extérieure 1 : Condition de singularité d’armement |
156 | 2 | Erreur de condition de singularité L’axe articulaire J3 est proche de la condition de singularité de coude dans la géométrie articulée indépendante à 6 axes Erreur extérieure 2 : Condition de singularité de coude |
156 | 3 | Erreur de condition de singularité L’axe articulaire J5 est proche de la condition de singularité de poignet dans la géométrie articulée indépendante à 6 axes Erreur extérieure 1 : Condition de singularité de poignet |
Exemple
Diagramme à relais
Cet exemple illustre une instruction MCTPO avec un sens de transformation inverse, dans laquelle l'utilisateur alimente les positions cartésiennes et le compteur de tours en entrée. L'instruction calcule les positions angulaires articulaires de la cible correspondante et est écrite comme sortie dans le paramètre Position de transformation.

Cet exemple illustre l'instruction MCTPO avec le sens de transformation avant. Les positions cibles sont dirigées comme entrées dans l'opérande de position de référence. L'instruction calcule les positions cartésiennes correspondantes et active le compteur comme sortie.

Texte structuré
MCTPO(CS1, CS2, MCTPo1[0], BaseFrame, ToolFrame, Forward, refPos[0], transPos[0], robotConfig[0], TurnsCounter[0]);
CONSEIL:
Pour plus d'informations sur la création de géométries avec prise en charge de l'orientation, consultez le Manuel d'utilisation du système de coordonnées de mouvements, publication MOTION-UM002.
Fournir une réponse
360 ou
-360.
6
180 degrés