Certains blocs fonction de mouvement ont une entrée appelée BufferMode. Cette entrée détermine si le bloc fonction démarre immédiatement, démarre sur un événement de capteur ou est placé en mémoire tampon.
Les options disponibles sont définies dans l'énumération du type MC_BUFFER_MODE :
oUn mouvement d'abandon (mcAborting) démarre immédiatement, annule tout mouvement en cours et vide la file d'attente des mouvements.
oUn mouvement en mémoire tampon (mcBuffered, mcBlendingPrevious, seBufferedDelay) est mis en file d'attente, c'est-à-dire ajouté à la suite de tout mouvement en cours d'exécution ou en attente d'exécution, et il démarre quand le mouvement précédent est achevé.
oUn mouvement déclenché par un événement (seTrigger) est un mouvement en mémoire tampon qui démarre lors d'un événement de capteur.
Diagramme de la file d'attente de mouvements
La figure suivante illustre la file d'attente de mouvements :
Le tampon ne peut contenir qu'un seul bloc fonction de mouvement.
La condition d'exécution du bloc fonction de mouvement présent dans le tampon est :
omcBuffered : lorsque le mouvement continu en cours est InVelocity, resp. lorsque le mouvement TOR en cours s'arrête.
oseBufferedDelay : lorsque le délai spécifié est écoulé, à partir de l'état InVelocity du mouvement continu en cours, resp. à partir de l'arrêt du mouvement TOR en cours.
omcBlendingPrevious : lorsque les cibles de position et de vitesse du bloc fonction en cours sont atteintes.
oseTrigger : lorsqu'un événement valide est détecté sur l'entrée de capteur.
La file d'attente de mouvements est vidée (tous les mouvements en mémoire tampon sont supprimés) :
oQuand un mouvement d'abandon est déclenché (mcAborting) : la broche CommandAborted est définie sur les blocs fonction en mémoire tampon.
oQuand une fonction MC_Stop_PTO est exécutée : la broche Error est définie sur les blocs fonction en tampon supprimés, avec ErrorId=StoppingActive.
oQuand une transition vers l'état ErrorStop est détectée : la broche Error est définie sur les blocs fonction en mémoire tampon, avec ErrorId=ErrorStopActive.
NOTE :
oSeul un mouvement valide peut être mis en file d'attente. Si l'exécution du bloc fonction se termine avec la sortie Error définie, le mouvement n'est pas mis en file d'attente, tout mouvement en cours d'exécution se poursuit normalement et la file d'attente n'est pas vidée.
oLorsque la file d'attente est pleine, la sortie Error est définie sur le bloc fonction applicable et la sortie ErrorId signale l'erreur MotionQueueFull.