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
et sont des états obligatoires pour chaque mode de contrôle.L’état
requiert l’état .Les états
et requièrent dans chaque cas l’état .Les états
et requièrent dans chaque cas l’état .Les états
et requièrent dans chaque cas l’état .Les états
et 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.
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. |