Le bloc fonction FB_UnitModeManager2 est utilisé pour mettre en œuvre différents modes de contrôle d'unité dans une application. Ce bloc fonction traite les commandes de commutation de mode d'unité et les commandes de contrôle du modèle d'état pour le mode de contrôle d'unité actuel.
Les commandes sont déclenchées par les méthodes fournies par le bloc.
Lorsqu'une commutation de mode de contrôle d'unité est demandée, son autorisation dans l'état actuel est vérifiée. Si la commutation de mode est autorisée, le mode de contrôle d'unité demandé est défini. Dans le cas contraire, le mode actuel est conservé et un message d'erreur est émis.
Les commandes d'état sont utilisées pour effectuer les transitions d'état du modèle d'état actif. Si une commande est déclenchée, son autorisation dans l'état actuel est vérifiée en fonction du modèle d'état configuré. Si la commande est autorisée, elle est acceptée et l'état résultant est défini. Si la commande n'est pas autorisée, un message d'erreur correspondant est émis.
Les différents modes de contrôle d'unité doivent être spécifiés à l'aide de la méthode DefineUnitMode(). Le bloc fonction FB_UnitModeManager2 prend en charge jusqu'à 31 modes d'unité.
Le mode de contrôle d'unité souhaité est connu du FB_UnitModeManager2. Un mode de contrôle d'unité est identifié par sa valeur numérique.
La sortie du mode de contrôle d'unité actuel est autorisée dans l'état actuel.
L'état actuel existe également dans le modèle d'état du mode de contrôle d'unité cible. Les transitions entre les modes de contrôle d'unité s'effectuent uniquement dans un état commun aux deux modes actuel et cible.
Les méthodes fournies pour déclencher les commandes d'état ou les transitions d'état correspondent au modèle d'état de base PackML tel que défini dans ANSI/ISA TR88.00.02 – 2022. Voir Modèle d'état de base PackML.
La méthode StateComplete() est utilisée pour effectuer la transition de l'état d'action actuel à l'état suivant en fonction du modèle d'état défini. Voir StateComplete (méthode).
Les méthodes Cmd<command name>() permettent de déclencher la commande d'état correspondante. Selon l'état actuel et le modèle d'état configuré, la transition d'état est effectuée ou la commande est rejetée. Voir IF_StateCommands - Informations générales.
Commandes d'état prises en charge et leurs réactions
Méthode de commande |
Description |
---|---|
CmdReset() |
Commande acceptée uniquement dans les états Stopped et Complete. Réaction : Transition vers l'état Resetting. |
CmdStart() |
Commande acceptée uniquement dans les états Idle ou dans l'état Stopped si l'état Idle n'existe pas. Réaction : Transition vers l'état Starting. |
CmdHold() |
Commande acceptée uniquement dans les états Execute et Suspended. Réaction : Transition vers l'état Holding. |
CmdUnHold() |
Commande acceptée uniquement dans l'état Held. Réaction : Transition vers l'état Unholding. |
CmdSuspend() |
Commande acceptée uniquement dans l'état Execute. Réaction : Transition vers l'état Suspending. |
CmdUnSuspend() |
Commande acceptée uniquement dans l'état Suspended. Réaction : Transition vers l'état Unsuspending. |
CmdComplete() |
Commande acceptée uniquement dans les états Execute, Held et Suspended. Réaction : Transition vers l'état Completing. |
CmdAbort() |
Commande acceptée dans tous les états sauf Aborting et Aborted. Réaction : Transition vers l'état Aborting. |
CmdClear() |
Commande acceptée uniquement dans l'état Aborted. Réaction : Transition vers l'état Clearing. |
CmdStop() |
Commande acceptée dans tous les états sauf Aborting, Aborted, Clearing, Stopping et Stopped. Réaction : Transition vers l'état Stopping. |
StateComplete() |
Commande acceptée uniquement dans les états Resetting, Starting, Holding, Unholding, Suspending, Unsuspending, Aborting, Clearing et Stopping. Réaction : Transition vers l'état suivant d'après le modèle d'état. |
En raison de l'implémentation à l'aide de méthodes et de propriétés, il est possible que les méthodes soient appelées par différentes tâches. Pour assurer le traitement complet d'une commande, les méthodes correspondantes sont implémentée de telle sorte qu'une commande n'est acceptée que si aucune autre commande n'est en cours. Si une commande est rejetée en raison d'un traitement actif, la méthode renvoie un message de diagnostic correspondant.
Vous devez toutefois tenir compte du comportement des applications multitâches lorsque vous implémentez votre application.