Structure d’une fonction MOVE
La structure de base d'une fonction de déplacement est la suivante :
<fonction Move>(<type déplacement>, <position cible>, <vitesse vers cible>)
où :
-
fonction Move est soit :
MoveImmed : abandon de tout profil de déplacement en cours et déplacement vers la nouvelle position cible.
MoveQueue : fusion d'un profil de déplacement avec la fin d'un profil en cours pour atteindre la nouvelle position cible.
-
type déplacement est soit :
ABS_MOVE : Déplacement absolu (nécessite que l'axe soit référencé). .
La position cible est calculée avec la position absolue référencée à partir de la position d'origine. Le déplacement va au plus court (faire attention, si les modulos sont activés).
ABS_MOVE_POS : Déplacement absolu dans le sens positif pour les axes ayant les modulos activés ou les axes coordonnés.
ABS_MOVE_NEG : Déplacement absolu dans le sens négatif pour les axes ayant les modulos activés ou les axes coordonnés.
ABS_MOVE_NO_ROLLOVER : Déplacement absolu pour axes indépendants, configurés par modulo. Il est possible d'atteindre une valeur supérieure au modulo configuré.
INCR_MOVE : Déplacement incrémental. La position cible est prise en tant que valeur incrémentale référencée à partir de la position actuelle (pour MoveImmed) ou à partir de la dernière position cible fusionnée (MoveQueue).
CONT_MOVE : Déplacement continu. La position cible indique le sens d'un profil de déplacement continu qui se déplace vers les limites logicielles.
-
position cible est un nombre réel qui spécifie la position de la cible exprimée dans les unités de position par défaut de l'axe.
-
vitesse vers cible est un nombre réel qui spécifie la vitesse d'approche exprimée dans les unités de vitesse par défaut de l'axe.
La fonction MOVE lance le déplacement. Elle revient à l'application avant la fin du profil de déplacement. Le programme d'application utilise les bits d'état (
%I) pour déterminer l'état du profil de déplacement. (Voir
Objets langage Sercos).
Les fonctions ABS_MOVE qui spécifient une position cible en dehors des limites logicielles de l'axe de déplacement génèrent une MovementError du fait que l'axe de déplacement ne peut pas atteindre la cible. Les fonctions INCR_MOVE qui génèrent une cible en dehors des limites ne génèrent pas une MovementError puisque que le calcul de la position cible peut prendre du retard du fait du mécanisme de file d'attente des déplacements. De tels déplacements INCR_MOVE sont convertis en position cible pour atteindre la limite et génèrent un défaut AXIS_SUMMARY_FAULT lorsque la limite est atteinte. Les vitesses d'approche supérieures à la limite de vitesse maximale pour un axe de déplacement sont converties en vitesse d'approche à la limite de vitesse.
Les bits IN_POSITION et AXIS_AT_TARGET sont mis à 0 au démarrage d'un déplacement. Le bit RAMPING est mis à 1 lorsque l'axe de déplacement reçoit une commande d'accélération ou de décélération. Le bit STEADY est mis à 1 lorsque l'axe de déplacement reçoit une commande Move à vitesse constante. STOPPING est mis à 1 au début de la décélération vers la position cible. IN_POSITION est mis à 1 lorsque la position réelle et la position cible sont comprises dans la plage après que STOPPING ait été mis à 1. PROFILE_END est mis à 1 lorsque le contrôleur commande à l'asservissement de rester à la position cible. AXIS_AT_TARGET est mis à 1 lorsque la position réelle et la position cible sont comprises dans la plage après que PROFILE_END ait été mis à 1. STOPPING sera mis à 0 lorsque l'axe aura atteint la fin du profil (PROFILE_END) et sera dans la plage (IN_POSITION).