Indépendamment de la méthode choisie pour envoyer une commande, certaines contraintes doivent être prises en compte :
-
Une seule commande peut être envoyée à la fois (au plus une commande par cycle d'automate). La commande précédente doit être reçue par la voie avant l'envoi d'une nouvelle.
Toute commande envoyée pendant l'échange d'une autre avec la voie sera ignorée.
La disponibilité peut être vérifiée sur le rack du bus par le bit système CMD_IN_PROGR (%MWr.m.c.0.1).
-
La voie peut recevoir deux commandes successivement. L'une sera exécutée, pendant que l'autre est en tampon, en attente d'achèvement de la première. Ce n'est vrai que pour les commandes de positionnement, et le mode de tampon choisi doit être Buffered ou BlendingPrevious.
-
Quand une commande est en cours d'exécution alors qu'une autre est déjà dans le tampon, la voie ne peut pas accepter de troisième commande. Vérifiez la disponibilité de la voie avant d'envoyer toute commande.
Si une commande est envoyée alors que la voie n'est pas disponible, elle est rejetée, toutes les commandes de la voie sont abandonnées, l'axe est arrêté et une notification d'erreur correspondante est signalée dans l'objet d'état BUFFER_FULL (%MWr.m.c.3.4).
Disponibilité des modules pour les commandes
La valeur des objets d'état implicites : Idle et FreeCmdBuf permet de vérifier si le module est disponible pour une nouvelle commande.
Le tableau ci-dessous détaille les différents cas :
Idle
|
FreeCmdBuf
|
Signification
|
0
|
0
|
Deux cas :
Dans les deux cas, aucune commande ne devrait être envoyée.
|
0
|
1
|
Une commande est en cours d'exécution, mais le tampon de commande est libre.
Une nouvelle commande peut être envoyée et sera conservée dans le tampon de commande ; FreeCmdBuf est mis à 0.
|
1
|
0
|
Non significatif
|
1
|
1
|
Le tampon est libre et aucune commande n'est en cours d'exécution.
Une nouvelle commande peut être envoyée.
|