Skip to main content

Interruption des mouvements

Interruption des mouvements à axe unique

Les mouvements à axe unique, tels que MC_MoveAbsolute, peut être interrompu à tout moment par d'autres mouvements. Il peut s'agir d'un mouvement vers une position différente ou d'un changement de vitesse maximale, d'accélération ou de secousse avec le même type de mouvement et vers la même position. L'interruption est mise en œuvre de telle sorte qu'il n'y ait pas de saut de vitesse. Pour tous les types de rampes quadratiques, il n'y a pas non plus de saut d'accélération

Dans certains cas, une inversion de l'axe est inévitable en raison du mouvement interrompu :

  • Si la nouvelle position cible d'un MC_MoveAbsolute existe avant la fin de la distance de décélération actuelle

  • Si une décélération maximale plus faible et/ou une secousse maximale plus faible sont utilisées pour le mouvement interrompu, qui à son tour étend la distance de décélération au-delà de la position cible

  • Si SMC_MoveContinuousAbsolute ou SMC_MoveContinuousRelative est utilisé avec un EndVelocity qui ne peut pas être atteint à partir de l'état actuel de l'axe sans inversion

Quand la rampe est typée sin² et quadratique (lisse) sont utilisées, une inversion peut se produire lors de l'interruption même si cela ne semble pas nécessaire. (C'est-à-dire, même si les raisons énumérées ci-dessus ne s'appliquent pas. Voir les explications ci-dessous.) La nouvelle position cible pourrait alors être dépassée, bien qu'elle ne soit pas située avant l'ancienne position cible. Cela peut se produire même si la décélération maximale et la secousse maximale ne sont pas modifiées (voire augmentées) et si la vitesse finale n'est pas modifiée par rapport au mouvement interrompu. Dans ce cas, les règles suivantes s'appliquent :

  • Pour les types de rampes trapézoïdales et quadratiques, il n'y a jamais de dépassement.

  • Pour sin² type de rampe, il n'y a pas de dépassement lorsque la nouvelle position cible et les valeurs limites d'accélération et de décélération sont égales aux anciennes valeurs.

  • Dans tous les autres cas, il se peut qu'il y ait un dépassement sin² et quadratique (lisse) types de rampes.

Explication de la sin² type de rampe : Le mouvement interrompu commence par une nouvelle rampe de vitesse sin², ce qui signifie que l'accélération commence à 0 et augmente ou diminue progressivement. Si l'accélération de l'axe n'est pas égale à 0 au moment de l'abandon, l'accélération passe à 0 au début de la rampe de vitesse sin². Cela peut entraîner un dépassement car l'augmentation ou la diminution de l'accélération prend du temps.

Explication de la quadratique (lissé) type de rampe : la même explication s'applique que pour sin², mais pour la secousse plutôt que pour l'accélération.

Remarque à propos de la dérogation

Sur la base des explications ci-dessus, en utilisant MC_SetOverride avec le sin² et quadratique (lissé) le type de rampe n'est pas recommandé

Interruption pendant la phase de décélération

Mouvements à axe unique, tels que MC_MoveAbsolute, peut être interrompu à tout moment par d'autres mouvements. Il peut s'agir d'un mouvement vers une autre position ou d'un changement de vitesse ou d'accélération. Fondamentalement, l'interruption du mouvement est mise en œuvre par un autre de manière à ce qu'il n'y ait pas de saut de vitesse. Pour tous les types de rampes (sauf trapèze), il n'y a pas non plus de saut dans l'accélération. Lorsque les types de rampe sin² et quadratique (lisse) sont utilisés, une inversion peut se produire lors d'une interruption et n'apparaît pas nécessaire dans un premier temps (voir explication). Ensuite, la nouvelle position cible est dépassée, bien qu'elle ne soit pas située avant l'ancienne position cible. Cela peut se produire dans les situations suivantes :

  • Si une valeur de décélération maximale plus petite est définie pour le mouvement d'annulation qu'auparavant

    Dans ce cas, la distance de décélération disponible jusqu'à la nouvelle position cible est peut-être trop courte (pour tous les types de rampe).

  • En conséquence, pour quadratique et quadratique (lisse) types de rampe lorsqu'une valeur maximale inférieure est définie pour le jerk

Cependant, si ces valeurs maximales restent inchangées (ou augmentent), les règles suivantes s'appliquent :

  • Pour trapèze et quadratique rampes, il n'y a jamais de surcourse.

  • Pour le sin² de type rampe, il n'y a pas de surcourse lorsque la nouvelle position cible et les valeurs limites d'accélération et de décélération sont égales aux anciennes valeurs.

  • Dans tous les autres cas, il peut y avoir surcourse avec sin² et quadratique (lisse) types de rampes.

Commentaires sur le dépassement de la position cible (type de rampe : sin²)

Lorsque le mouvement sur un seul axe est démarré, le profil de mouvement est calculé en premier. Cela signifie que le calcul des phases, dans lesquelles le mouvement est accéléré, s'exécute à vitesse constante ou décélère. Pour le sin² de type rampe, une courbe sin² est tracée sur la phase d'accélération/décélération. La courbe sin² a la propriété d'avoir l'accélération égale à zéro avant et après, permettant ainsi une transition constante vers d'autres phases.

Un comportement spécial se produit lorsqu'un mouvement est interrompu pendant une courbe sin². Si l'accélération actuelle n'est pas égale à zéro, une courbe sin² ne peut pas être démarrée car elle doit démarrer avec une accélération 0.

Comme le profil de la courbe sin² garantit une courbe d'accélération constante à l'utilisateur, le générateur de trajectoire fait donc descendre la valeur d'accélération à zéro. Il utilise l'entrée jerk du bloc fonction. Si cette valeur est zéro, alors la valeur de jerk définie dans la configuration du contrôleur (fRampJerk) sera utilisée.

Le diagramme suivant montre le comportement d'interruption : Les signaux de position, de vitesse, d'accélération et de Execute du bloc interrompu sont représentés de haut en bas. En commençant par le front montant de Execute, l'accélération est réduite linéairement à zéro, avant qu'un nouveau profil sin² ne soit connecté (phase entre les graduations verticales).

_sm_img_interrupt_movement_1.png

Astuce

Si la sélection de la valeur d'à-coup est trop faible par rapport à l'accélération, alors cette phase peut être trop longue et le blocage peut conduire à une course apparemment incontrôlée. La valeur de jerk doit être sélectionnée de manière à ce que la décélération de l'accélération ne prenne que quelques millisecondes (par exemple, avec une accélération maximale de 10 000 u/s2 et une secousse de 1 000 000 u/s3, cette phase dure au maximum 10ms).

Exemple 5. Dépassement de la position cible
_sm_img_interrupt_movement_2.png

Un mouvement de la position 0 à la position 1 a été démarré avec une valeur de vitesse spécifique de 1 u/s et une valeur d'accélération de 10 u/s2. Juste avant d'atteindre la position cible lorsque la décélération a déjà été réglée, une nouvelle commande de mouvement s'interrompt avec une nouvelle position cible de 1.01.

En raison de la phase de décélération de l'accélération immédiatement après le début du deuxième mouvement, l'axe parcourt une distance qui signifie que l'axe doit se déplacer au-delà de la cible, puis il doit être retourné.