FB_ModeManager

Présentation

Type :

Bloc fonction

Disponible à partir de :

V1.0.1.0

Description fonctionnelle

Le bloc fonction FB_ModeManager peut être utilisé pour gérer les demandes de changement de mode dans une application de machine basée sur le modèle d’états PackML. A partir de la définition des modes de l’unité, le bloc fonction vérifie si le changement de mode demandé est possible ou non.

La définition des modes de l’unité inclut la définition des états possibles de chaque mode de contrôle disponible et l’état à partir duquel un changement de mode est possible. Pour l’exécution de la définition du mode de l’unité, les fonctions auxiliaires FC_InitStateModelStateChange et FC_InitStateModelExistingStates peuvent être utilisées.

Enfin, la définition du mode de l’unité doit être fournie dans un tableau de type ST_UnitModeDefinition. Les index du tableau correspondent à la valeur numérique des modes de contrôle disponibles (consultez ET_Modes).

La définition du mode de l’unité doit être effectuée au début (phase d’initialisation) d’une application, avant le premier appel avec i_xEnable = TRUE de l’instance du bloc fonction FB_ModeManager.

Sur un front montant de l’entrée i_xEnable, la phase d’initialisation du bloc fonction FB_ModeManager est exécutée. Lors de cette phase, les définitions des états de l’unité pour chaque mode de contrôle disponible sont vérifiées pour déterminer si un modèle d’état conforme à PackML peut être créé. Si l’initialisation est correctement effectuée, le bloc fonction est prêt à fonctionner, ce qui est indiqué par la sortie q_xReady.

Lors de l’initialisation, les conditions suivantes sont vérifiées :

  • Nombre maximal d'états : 17

  • Les états Execute et Stopped sont des états obligatoires pour chaque mode de contrôle.

  • L’état Completing requiert l’état Complete.

  • Les états Holding et Unholding requièrent dans chaque cas l’état Held.

  • Les états Suspending et UnSuspending requièrent dans chaque cas l’état Suspended.

  • Les états Aborting et Clearing requièrent dans chaque cas l’état Aborted.

  • Les états Resetting et Idle peuvent être utilisés uniquement combinés.

Durant le fonctionnement normal, le bloc fonction vérifie la demande de changement de mode, qui est indiquée par les entrées i_diUnitMode et i_xUnitModeChange, en fonction du mode de contrôle actuel (iq_diUnitModeCurrent) et de l’état actuel (i_diStateCurrent). Seul un front montant sur i_sUnitModeChange déclenche l’exécution du bloc fonction. Le résultat est indiqué par les sorties q_diEnterMode et q_xModeChangeRequestRejected. Si le changement de mode est autorisé, la sortie q_xModeChangeRequestRejected indique FALSE et la sortie q_diEnterMode est mise à jour avec la valeur du mode demandé. Dans ce cas, les étapes requises pour changer le mode de contrôle doivent être exécutées en fonction de votre application. Ensuite les informations indiquant que le changement de mode a été exécuté doivent être transmises au bloc fonction via l’entrée i_xModeChangeDone. Si l’entrée indique TRUE, la variable liée à l’entrée/sortie iq_diUnitModeCurrent est mise à jour avec le mode de contrôle demandé précédemment.

Interface

Entrée

Type de données

Description

i_xEnable

BOOL

Activation et initialisation du bloc fonction.

i_diNumberOfModes

DINT

Nombre de modes de fonctionnement

Si la valeur est modifiée, la réinitialisation du bloc fonction est nécessaire.

i_diUnitMode

DINT

Mode de fonctionnement demandé

PackTag Command.UnitMode doit être appliqué à l’entrée.

i_xUnitModeChangeRequest

BOOL

Sur un front montant, le bloc fonction vérifie si un changement de mode de fonctionnement est possible.

PackTag Command.UnitModeChangeRequest doit être appliqué à l’entrée.

i_diStateCurrent

DINT

Etat actuel de la machine

PackTag Status.StateCurrent doit être appliqué à l’entrée.

i_xModeChangeDone

BOOL

Retour d’information de l’application indiquant que le changement de mode demandé a été exécuté. Sur un front montant, la variable liée à iq_diUnitModeCurrent est mise à jour en conséquence.

i_pstInitMode

POINTER TO ST_UnitModeDefinition

Via cette entrée, l’adresse du pointeur des définitions du mode de l’unité est transférée au bloc fonction.*

* La définition du mode de l’unité fournit l’état de chaque mode de fonctionnement disponible et doit être fourni dans un tableau de ST_UnitModeDefinition. Les index du tableau correspondent à la valeur numérique des modes de contrôle disponibles (consultez ET_Modes). Par conséquent, le pointeur doit pointer sur l’index qui est associé au mode de fonctionnement Producing, qui est le premier mode.

Entrée/sortie

Type de données

Description

iq_diUnitModeCurrent

DINT

Via la variable liée à cette entrée/sortie, le bloc fonction obtient le mode de fonctionnement actuel lors d’une demande de changement, et il écrit le nouveau mode de fonctionnement une fois le changement exécuté.

PackTag Status.UnitModeCurrent doit être appliqué à l’entrée/sortie.

Sortie

Type de données

Description

q_xActive

BOOL

Si cette sortie est définie sur TRUE, le bloc fonction est actif.

q_xError

BOOL

Si cette sortie est TRUE, une erreur a été détectée. Consultez ET_Result.

q_xReady

BOOL

Si cette sortie est définie sur TRUE, le bloc fonction est prêt à fonctionner.

q_etResult

ET_Result

Énumération avec le résultat.

q_sResultMsg

STRING[80]

Message de résultat supplémentaire.

q_xUnitModeRequested

BOOL

Renvoie l'entrée i_xUnitModeChangeRequest.

PackTag Status.UnitModeRequested doit être appliqué à cette sortie.

q_diEnterMode

DINT

Indique le mode de fonctionnement pour lequel on veut changer. Si le bloc fonction est désactivé, la sortie est définie sur 0.

q_xModeChangeRequestRejected

BOOL

Tant que cette sortie indique TRUE, une demande de changement de mode n’est pas autorisée par ce bloc fonction et ne doit pas être effectuée.