Réalisé par Gil Comninellis · Ingénieur Automation Senior · · LinkedIn

Maîtriser le Jerk dans
MC_MoveAbsolute

Dans TwinCAT, le paramètre Jerk de MC_MoveAbsolute est souvent laissé à 0 — ce qui charge les valeurs par défaut de la configuration d'axe. Comprendre son rôle exact, son impact sur la durée du déplacement et ses effets sur la mécanique est indispensable pour tout intégrateur Beckhoff.

MC_MoveAbsolute Tc2_MC2 TwinCAT 3 Beckhoff PLCopen Part 1 Profil en S · 7 phases

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

NomTypeDescription
AxisAXIS_REFStructure 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

NomTypeDescription
ExecuteBOOLLa commande est déclenchée sur le front montant.
PositionLREALPosition cible absolue pour le positionnement.
VelocityLREALVitesse de déplacement maximale (> 0).
AccelerationLREALAccélération (≥ 0). Si la valeur est 0, l'accélération standard de la configuration d'axe est utilisée.
DecelerationLREALDécélération (≥ 0). Si la valeur est 0, la décélération standard est utilisée.
JerkLREALJerk (≥ 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.
BufferModeMC_BufferModeÉvalué si l'axe exécute déjà une autre commande. Si appliqué à un axe esclave couplé, seul mcAborting est disponible.
OptionsST_MoveOptionsStructure contenant des paramètres additionnels rarement utilisés. Peut normalement rester non connectée.

VAR_OUTPUT

NomTypeDescription
DoneBOOLTRUE lorsque la position cible est atteinte.
BusyBOOLTRUE tant que le mouvement est en cours. Quand Busy repasse à FALSE, le FB est prêt pour un nouvel ordre.
ActiveBOOLIndique que la commande est en cours d'exécution. Si en attente (buffered), passe à TRUE une fois la commande précédente terminée.
CommandAbortedBOOLTRUE si la commande n'a pas pu se terminer : axe arrêté ou interrompu par un autre Move.
ErrorBOOLTRUE en cas d'erreur.
ErrorIDUDINTNumé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

📍
Velocity
mm/s · dérivée de la position
Vitesse de déplacement maximale. TwinCAT ne la dépassera jamais, mais peut la réduire si la distance est trop courte.
⚙️
Acceleration
mm/s² · dérivée de la vitesse
Contrainte mécanique transmissible : réducteur, courroie, vis-écrou. Correspond au couple maximal que peut délivrer le moteur sans saturation.
🎚️
Jerk
mm/s³ · dérivée de l'accélération
Vitesse à laquelle l'accélération monte ou descend. Jerk élevé = transition brusque. Jerk faible = montée douce en S. Protège la mécanique et réduit les vibrations résiduelles.

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

T0→T1
Jerk montant — accélération 0 → Amax
Durée = Amax / Jerk. La courbe de vitesse commence à s'incurver. Phase qui donne son caractère doux au démarrage.
T1→T2
Accélération constante à Amax
Section rectiligne. Peut être absente si la distance est trop courte. Le couple moteur est à son maximum ici.
T2→T3
Jerk descendant — accélération Amax → 0, vitesse crête atteinte
L'axe atteint sa vitesse maximale effective en fin de cette phase.
T3→T4
Croisière — vitesse constante
Absente si la distance est insuffisante. Si la distance ne permet pas d'atteindre Velocity, cette phase disparaît et la vitesse crête est réduite automatiquement par TwinCAT.
T4→T5
Jerk descendant — décélération 0 → Amax
Miroir exact de T0→T1. Le Jerk est identique en accélération et décélération.
T5→T6
Décélération constante à Amax
Miroir de T1→T2. La valeur Deceleration de MC_MoveAbsolute s'applique ici.
T6→T7
Jerk montant — décélération Amax → 0, v = 0
L'axe arrive exactement à la position cible avec vitesse nulle. TwinCAT active ensuite la surveillance de position (Done).

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

Jerk faible
≈ Amax × 2 à × 5
Transitions très douces. Allonge la durée. Recommandé pour mécaniques flexibles : courroies, vis longues, fortes inerties.
Jerk moyen
≈ Amax × 5 à × 15
Bon compromis. Point de départ recommandé. Ajuster en observant les vibrations résiduelles après arrêt.
Jerk élevé
≈ Amax × 15 à × 50
Quasi-trapézoïdal. Adapté aux axes rigides à faible inertie. Risque de vibrations si la mécanique n'est pas suffisamment rigide.

Démarche de réglage recommandée


Visualiseur interactif — Profil en S

Entrez vos valeurs MC_MoveAbsolute · Le profil et les durées se calculent instantanément

Paramètres MC_MoveAbsolute · Tc2_MC2
Distance500mm
105 000
Velocity300mm/s
102 000
Acceleration / Deceleration1000mm/s²
10010 000
Jerk5000mm/s³
50050 000
⚠ Aucune solution — réduisez le Jerk ou l'Acceleration, ou augmentez la distance.
Durée totale
Vitesse crête
Accél. effective
Jerk effectif
Profil de vitesse — courbe en S
Durées par phase
PhaseDescriptionDuré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.


Gil Comninellis
Ingénieur Automation Senior · TCI-Engineering SA

Passionné par l'automation depuis 1997, Gil Comninellis a passé plus de 25 ans à donner vie aux machines.

Il est la référence technique automation chez TCI-Engineering SA (Penthaz, Suisse), fabricant de machines spéciales. Le genre de gars qu'on appelle quand rien ne va plus!