Skip to main content

Cinématique personnalisée

Voir le PLCopenSingle2.project exemple de projet et le CustomKinematics.library bibliothèque dans le répertoire d'installation de CODESYS en dessous de ..\CODESYS SoftMotion\Examples.

Cet exemple décrit comment créer une bibliothèque avec une transformation cinématique personnalisée (Gantry3C) et comment utiliser cette bibliothèque dans un projet pour contrôler le robot.

La transformation cinématique 'Gantry3C' se compose de 3 axes linéaires (X, Y et Z) qui portent une tête d'outil. La tête d'outil se compose d'un axe supplémentaire qui porte un outil monté. La tête de l'outil peut être tournée autour de l'axe Z.

_sm_img_custom_kinematik.png

1. Créez un nouveau projet de bibliothèque

Créez un nouveau projet avec le Bibliothèque vide modèle.

_sm_img_create_empty_project.png

2. Ajoutez un gestionnaire de bibliothèque.

Ajoutez un gestionnaire de bibliothèque au POU voir. Ajouter le SM3_Transformation, SM3_Math, et SM3_Error bibliothèques au gestionnaire de bibliothèques.

3. Créez le bloc fonction Gantry3C.

Ce bloc fonction implémente les interfaces MC_KIN_REF_SM3 et ISMKinematicsWithInfo2 de la bibliothèque SM3_Transformation. Vous pouvez définir un décalage en entrée pour chaque axe. Ce décalage est soustrait avant la transformation directe et ajouté après la transformation inverse.

_sm_img_fb_gantry3c.png

Exemple de Gantry3C avec deux cinématiques découplées et KinCoupled:

FUNCTION_BLOCK Custom_Kin_Gantry3 IMPLEMENTS ISMPositionKinematics
FUNCTION_BLOCK Custom_Kin_CAxis IMPLEMENTS ISMOrientationKinematics

FUNCTION_BLOCK Custom_Kin_Gantry3C EXTENDS Kin_Coupled

Fournir les blocs fonction Custom_Kin_Gantry3 et Custom_Kin_CAxis comme entrées pour le bloc fonction Kin_Coupled lors de l'initialisation. Maintenant Custom_Kin_Gantry3C devient une cinématique couplée combinant les cinématiques de position et d'orientation.

4. Implémentez les méthodes de l'interface MC_KIN_REF_SM3 et la propriété NumAxes4.

AxesToCartesian: Cinématique avant : Calcul de la position et de l'orientation à partir des valeurs des axes.

CartesianToAxes: Cinématique inverse : Calcul des valeurs des axes à partir de la position et de l'orientation.

NumAxes: Nombre d'axes de la cinématique

_sm_img_cartesian_to_axes.png
_sm_img_axes_to_cartesian.png
_sm_img_gantry3c_methods.png

5. Implémentez les méthodes des interfaces ISMKinematicsWithInfo2 et ISMKinematicsWithInfo.

GetAxisProperties: propriétés, telles que le type d'axe. Les limites pour chaque axe peuvent être définies.

GetKinematicsName: Nom de la cinématique

IsSingularity: Peut être ignoré pour cette cinématique

_sm_img_get_axis_properties.png
_sm_img_get_kinematics_name.png

6. Spécifiez les informations du projet.

_sm_img_project_information.png

7. Vérifiez la bibliothèque pour les erreurs de compilateur.

Pour consulter la bibliothèque, cliquez sur Construire → Vérifier tous les objets du pool.

8. Créez la description dans le configurateur de groupe d'axes.

Lorsque le POU a l'attribut sm_kin_libdoc, le commentaire spécifié dans le bloc fonction est utilisé dans le configurateur de groupe d'axes comme description de la cinématique. Le formatage de texte restructuré est utilisé pour cela.

_sm_img_restructured_text.png
_sm_img_axis_group_description.png
_sm_img_axis_group_configurator.png
Procédure. Pour générer la description de la cinématique à partir des commentaires du bloc fonction dans l'éditeur de groupes d'axes, procédez comme suit :
  1. Inclure l'attribut sm_kin_libdoc comme le montre l'image ci-dessus.

  2. Inclure les propriétés de projet requises DocFormat et DocLanguages (dans la boîte de dialogue d'informations sur le projet) liés à la documentation de la bibliothèque.

    Résultat:

    _sm_img_project_information_libdoc.png
  3. Assurez-vous que le répertoire d'installation de CODESYS contient le libdoc.exe fichier exécutable (répertoire : ...\DocScripting\3.5.xx.0\).

  4. Téléchargez le convertisseur wkhtmltox 32 bits avec la version 0.12.5 ou inférieure à partir de https://wkhtmltopdf.org/downloads.html. Extraire le wkhtmltox.dll fichier et copiez-le dans ...\\DocScripting\\3.5.xx.0\\bin dans le CODESYS répertoire d'installation.

    Important

    Depuis wkhtmltox.dll ne prend plus en charge les images par défaut dans la version 0.12.6 et supérieure, vous devez utiliser la version 0.12.5 ou inférieure.

  5. Créer la variable système LIBDOC_CODESYS dans Windows. Définissez la valeur sur le chemin du fichier de CODESYS.exe. Assurez-vous de spécifier le nom du chemin et le nom du profil entre guillemets doubles.

    Résultat:

    _sm_img_libdoc_path.png
  6. Enregistrez, fermez et rouvrez le projet de bibliothèque.

  7. Cliquez sur Fichier → Enregistrer le projet en tant que bibliothèque compilée.

    La bibliothèque compilée sera installée dans le projet qui utilise cette cinématique.

Utilisation de la bibliothèque dans un projet (CustomKinematics_Implementation.project)

Le projet montre comment utiliser et contrôler la cinématique créée dans la section précédente en faisant du jogging ou en commandant un mouvement.

  1. Créer un CODESYS projet standard avec le CODESYS SoftMotion Win manette.

  2. Ouvrez le gestionnaire de bibliothèque et installez la bibliothèque CustomKinematics.compiled-library (créé dans la section précédente) contenant la cinématique Gantry3C. Ajoutez la bibliothèque au gestionnaire de bibliothèque.

  3. Ajoutez un objet groupe d'axes et sélectionnez le KinCustom.Gantry3C cinématique.

    Résultat:

    _sm_img_select_kinematics.png
  4. Ajoutez 4 axes virtuels au Pool d'axes généraux SoftMotion pool d'axes dans l'arborescence des périphériques. (DriveX, Y, Z et C)

  5. Ouvrez le configurateur de groupe d'axes. Dans le Mappage aux axes section, mappez les axes à leurs champs respectifs.

    Résultat:

    _sm_img_axis_mapping.png
  6. Le programme Prg_Visu est le programme principal qui contrôle le groupe d'axes. Au démarrage de l'application, Prg_Visu met le groupe d'axes sous tension et l'active. De plus, il appelle tous les blocs fonctionnels nécessaires pour contrôler le groupe d'axes (mouvements pas à pas, linéaires et PTP). Tous ces mouvements peuvent être contrôlés à partir de la visualisation jointe.

    Résultat:

    _sm_img_prg_visu.png
  7. Bloc fonctionnel : Jog: Ce FB combine le jogging dans l'espace des axes ainsi que dans l'espace cartésien. Il utilise deux instances de SMC_GroupJog2. L’un concerne l’espace des axes et l’autre l’espace cartésien. Ce bloc fonction peut être utilisé avec les modèles de visualisation V_RobotPosition_axes et V_RobotPosition_cart_Jog pour déplacer n'importe quelle cinématique dans l'espace cartésien et axial.

    Résultat:

    _sm_img_fb_jog.png
    _sm_img_fb_jog2.png
  8. FB SMC_TRAFOF_Gantry3C: Ce bloc fonction transforme les valeurs d'axe d'entrée d'une cinématique Gantry3C en ses valeurs TCP respectives. De plus, les valeurs des axes sont normalisées afin qu'elles puissent être utilisées avec le modèle de visualisation TRAFOF_Gantry3C_YZ visualiser les mouvements de la cinématique.

    Résultat:

    _sm_img_trafof_gantry3c.png
  9. Compilez et exécutez l'application. Ouvrez la visualisation. Vous pouvez piloter le robot aussi bien dans l'espace des axes que dans l'espace cartésien. Il existe également des modèles de visualisation pour commander un mouvement linéaire ou PTP.

    Résultat:

    _sm_img_custom_kinematics_visu.png

Astuce

L'exemple décrit ici traite des axes de positionnement et d'orientation dans un bloc fonctionnel commun. De nombreuses cinématiques peuvent comprendre deux cinématiques partielles découplées : une cinématique de positionnement (delta, portique, etc.) et une cinématique d'orientation (outils comme l'axe C, le poignet2, le poignet3, etc.). Les deux cinématiques sont reliées entre elles au "point de bride", le TCP de la cinématique de positionnement. La cinématique d'orientation se caractérise par le fait qu'elle est capable de calculer le vecteur du point de bride au TCP de la cinématique couplée. Le calcul se fait en utilisant uniquement l'orientation de ce TCP (c'est-à-dire qu'il est indépendant de la cinématique de positionnement ou indépendant de l'orientation du point d'aile). La cinématique de positionnement doit à son tour pouvoir déterminer ses positions d'axe à partir de la seule position du point d'aile. Il ne doit pas dépendre de l'orientation du point de bride.

Dans ce cas, vous pouvez recourir à des interfaces telles que ISMPositionKinematics ou ISMOrientationKinematics. Pour implémenter ces interfaces, définissez un bloc fonction à implémenter ISMPositionKinematics et un autre bloc fonctionnel à implémenter ISMOrientationKinematics. Enfin, définissez un bloc fonction qui étend le bloc fonction Kin_Coupled (depuis SM3_Transformation) avec les blocs fonctionnels définis précédemment comme entrées.

Pour plus d'informations, consultez : Création de cinématiques personnalisées