MC_MoveAbsolute — VAR_INPUT, VAR_IN_OUT et VAR_OUTPUT
Le bloc fonctionnel MC_MoveAbsolute (bibliothèque Tc2_MC2, TwinCAT v3.0.0+) démarre un positionnement absolu et surveille le mouvement sur l'ensemble du trajet. La sortie Done passe à TRUE une fois la position cible atteinte.
VAR_IN_OUT
| Nom | Type | Description |
|---|---|---|
| Axis | AXIS_REF | Structure de données axe qui adresse l'axe de manière unique dans le système. Contient le statut courant : position, vitesse, état d'erreur. |
VAR_INPUT
| Nom | Type | Description |
|---|---|---|
| Execute | BOOL | La commande est déclenchée sur le front montant. |
| Position | LREAL | Position cible absolue pour le positionnement. |
| Velocity | LREAL | Vitesse de déplacement maximale (> 0). |
| Acceleration | LREAL | Accélération (≥ 0). Si la valeur est 0, l'accélération standard de la configuration d'axe est utilisée. |
| Deceleration | LREAL | Décélération (≥ 0). Si la valeur est 0, la décélération standard est utilisée. |
| Jerk | LREAL | Jerk (≥ 0). Si la valeur est 0, le jerk standard de la configuration d'axe est appliqué. Le mouvement est toujours exécuté avec limitation du jerk — valable pour l'accélération et la décélération. |
| BufferMode | MC_BufferMode | Évalué si l'axe exécute déjà une autre commande. Si appliqué à un axe esclave couplé, seul mcAborting est disponible. |
| Options | ST_MoveOptions | Structure contenant des paramètres additionnels rarement utilisés. Peut normalement rester non connectée. |
VAR_OUTPUT
| Nom | Type | Description |
|---|---|---|
| Done | BOOL | TRUE lorsque la position cible est atteinte. |
| Busy | BOOL | TRUE tant que le mouvement est en cours. Quand Busy repasse à FALSE, le FB est prêt pour un nouvel ordre. |
| Active | BOOL | Indique que la commande est en cours d'exécution. Si en attente (buffered), passe à TRUE une fois la commande précédente terminée. |
| CommandAborted | BOOL | TRUE si la commande n'a pas pu se terminer : axe arrêté ou interrompu par un autre Move. |
| Error | BOOL | TRUE en cas d'erreur. |
| ErrorID | UDINT | Numéro d'erreur lorsque Error est actif. |
Source : documentation officielle Beckhoff InfoSys — TwinCAT PLC Library: Tc2_MC2 · MC_MoveAbsolute. Exigences : TwinCAT v3.0.0+, cible PC ou CX (x86/x64), bibliothèque Tc2_MC2.
Appel complet avec gestion des sorties
Exemple représentatif en Structured Text avec la gestion complète des sorties. Les valeurs correspondent aux paramètres par défaut du visualiseur ci-dessous.
(* ─── Déclaration VAR ───────────────────────────────── *) fbMoveAbs : MC_MoveAbsolute; bExecute : BOOL := FALSE; bDone : BOOL; bBusy : BOOL; bActive : BOOL; bCommandAborted: BOOL; bError : BOOL; nErrorID : UDINT; (* ─── Corps du programme ────────────────────────────── *) fbMoveAbs( Axis := GVL.Axis1, (* VAR_IN_OUT — AXIS_REF *) Execute := bExecute, Position := 500.0, (* mm — position cible absolue *) Velocity := 300.0, (* mm/s — doit être > 0 *) Acceleration := 1000.0, (* mm/s² — 0 = valeur config axe *) Deceleration := 1000.0, (* mm/s² — 0 = valeur config axe *) Jerk := 5000.0, (* mm/s³ — 0 = valeur config axe *) BufferMode := MC_Aborting ); bDone := fbMoveAbs.Done; bBusy := fbMoveAbs.Busy; bActive := fbMoveAbs.Active; bCommandAborted := fbMoveAbs.CommandAborted; bError := fbMoveAbs.Error; nErrorID := fbMoveAbs.ErrorID;
Attention — Execute sur front montant : ne pas maintenir Execute := TRUE en permanence. Il est impossible de déclencher un Move FB actif avec de nouveaux paramètres tant qu'il est occupé — un second FB est nécessaire pour gérer le BufferMode.
Velocity, Acceleration, Jerk — les trois niveaux de dynamique
Jerk = 0 dans MC_MoveAbsolute (Beckhoff) : la valeur 0 ne désactive pas le jerk — elle charge la valeur configurée dans les paramètres d'axe du System Manager. Vérifier cette valeur avant de mettre en production.
Le profil en S : 7 phases pour un déplacement complet
Done dans TwinCAT : Done passe à TRUE lorsque la génération de consigne NC est terminée ET que la fenêtre de position cible est atteinte (Target Position Monitoring), ou immédiatement si aucune surveillance de position n'est activée.
Comment régler le Jerk dans TwinCAT
Démarche de réglage recommandée
- Point de départ : Jerk = Acceleration × 10.
- Observer les chocs après chaque arrêt.
- Utiliser le visualiseur ci-dessous pour anticiper la durée totale avant de modifier les paramètres en production.
- Ne pas laisser Jerk = 0 sans vérifier la valeur configurée dans le System Manager.
Visualiseur interactif — Profil en S
Entrez vos valeurs MC_MoveAbsolute · Le profil et les durées se calculent instantanément
| Phase | Description | Durée |
|---|
Calcul basé sur le profil jerk-limité de TwinCAT NC. Priorités : 1) distance · 2) jerk · 3) accélération · 4) velocity réduite si nécessaire.