Tipo: |
Bloque de funciones |
Disponible desde: |
V1.0.1.0 |
El bloque de funciones FB_ModeManager permite gestionar las peticiones de cambio de modalidad en una aplicación de la máquina basada en el modelo de estado PackML. A partir de la definición de modalidad de la unidad, el bloque de funciones comprueba si es posible o no el cambio de modalidad solicitado.
La definición de modalidad de la unidad comprende la definición de los posibles estados para cada modalidad de control disponible, así como la definición de a partir de qué estado se permite un cambio de modalidad. Para ejecutar la definición de modalidad de la unidad pueden utilizarse las funciones auxiliares FC_InitStateModelStateChange y FC_InitStateModelExistingStates.
Por último, la definición de modalidad de la unidad debe proporcionarse en una matriz de tipo ST_UnitModeDefinition. Los índices de la matriz se corresponden con el valor numérico de las modalidades de control disponibles (consulte ET_Modes).
La definición de modalidad de la unidad debe llevarse a cabo al iniciar la aplicación (fase de inicialización), antes de la primera ejecución con i_xEnable = TRUE de la instancia del bloque de funciones FB_ModeManager.
La fase de inicialización del bloque de funciones FB_ModeManager se ejecuta en un flanco ascendente de la entrada i_xEnable. Durante esta fase, se comprueba si se puede crear un modelo de estado compatible con PackML para las definiciones de estado de la unidad de cada modalidad de control disponible. Si el proceso de inicialización se lleva a cabo correctamente, el bloque de funciones pasará a estar listo para su funcionamiento, lo cual se indica mediante la salida q_xReady.
Durante la inicialización se comprueban las siguientes condiciones:
oEl número máximo de estados es 17.
oLos estados Execute y Stopped son obligatorios para cada modalidad de control.
oEl estado Completing requiere además el estado Complete.
oLos estados Holding y Unholding requieren también en cada caso el estado Held.
oLos estados Suspending y UnSuspending requieren también en cada caso el estado Suspended.
oLos estados Aborting y Clearing requieren también en cada caso el estado Aborted.
oLos estados Resetting y Idle solo se pueden utilizar combinados.
Durante el funcionamiento normal, el bloque de funciones comprueba la petición de cambio de modalidad, indicada mediante las entradas i_diUnitMode y i_xUnitModeChange, en relación con la modalidad de control (iq_diUnitModeCurrent) y el estado actuales (i_diStateCurrent). La ejecución del bloque de funciones se activa exclusivamente en un flanco ascendente de i_sUnitModeChange. El resultado se indica mediante las salidas q_diEnterMode y q_xModeChangeRequestRejected. Si se permite el cambio de modalidad, la salida q_xModeChangeRequestRejected indicará FALSE, mientras que la salida q_diEnterMode se actualizará con el valor de la modalidad solicitada. En tal caso, deberán ejecutarse en función de la aplicación los pasos necesarios para cambiar la modalidad de control. A continuación, la información referente a la ejecución del cambio de modalidad debe transmitirse al bloque de funciones a través de la entrada i_xModeChangeDone. Si esta entrada indica TRUE, significa que la variable vinculada a la entrada o salida iq_diUnitModeCurrent se ha actualizado con la modalidad de control solicitada anteriormente.
Entrada |
Tipo de datos |
Descripción |
---|---|---|
i_xEnable |
BOOL |
Activación e inicialización del bloque de funciones. |
i_diNumberOfModes |
DINT |
Número de modalidades de funcionamiento Si se cambia el valor, será necesario reinicializar el bloque de funciones. |
i_diUnitMode |
DINT |
Modalidad de funcionamiento solicitada A esta entrada debe aplicarse la PackTag Command.UnitMode. |
i_xUnitModeChangeRequest |
BOOL |
El bloque de funciones comprueba en un flanco ascendente si es posible el cambio de modalidad de funcionamiento. A esta entrada debe aplicarse la PackTag Command.UnitModeChangeRequest. |
i_diStateCurrent |
DINT |
Estado actual de la máquina. A esta entrada debe aplicarse la PackTag Status.StateCurrent. |
i_xModeChangeDone |
BOOL |
Respuesta proveniente de la aplicación de que se ha ejecutado el cambio de modalidad solicitado. La variable vinculada a iq_diUnitModeCurrent se actualiza correspondientemente en un flanco ascendente. |
i_pstInitMode |
POINTER TO ST_UnitModeDefinition |
A través de esta entrada se transmite al bloque de funciones la dirección del puntero hacia las definiciones de modalidad de la unidad.* * La definición de modalidad de la unidad proporciona las definiciones de estado para cada modo de funcionamiento disponible y debe indicarse en una matriz de ST_UnitModeDefinition. Los índices de la matriz se corresponden con el valor numérico de las modalidades de control disponibles (consulte ET_Modes). Por consiguiente, el puntero debe apuntar al índice asociado con la modalidad de funcionamiento Producing, que corresponde a la primera modalidad. |
Entrada/salida |
Tipo de datos |
Descripción |
---|---|---|
iq_diUnitModeCurrent |
DINT |
A través de la variable vinculada con esta entrada o salida, el bloque de funciones obtiene la modalidad de funcionamiento actual para la cual se ha solicitado un cambio y escribe la nueva modalidad una vez ejecutado el cambio. A esta entrada/salida debe aplicarse la PackTag Status.UnitModeCurrent. |
Salida |
Tipo de datos |
Descripción |
---|---|---|
q_xActive |
BOOL |
Si esta salida está establecida en TRUE, significa que el bloque de funciones está activo. |
q_xError |
BOOL |
Si esta salida está establecida en TRUE, se ha detectado un error. Consulte ET_Result. |
q_xReady |
BOOL |
Si esta salida está establecida en TRUE, el bloque de funciones está listo para funcionar. |
q_etResult |
ET_Result |
Enumeración con el resultado. |
q_sResultMsg |
STRING[80] |
Mensaje del resultado adicional. |
q_xUnitModeRequested |
BOOL |
Refleja la entrada i_xUnitModeChangeRequest. A esta salida debe aplicarse la PackTag Status.UnitModeRequested. |
q_diEnterMode |
DINT |
Indica la modalidad de funcionamiento a la que se va a cambiar. Si el bloque de funciones está desactivado, la salida se establece en 0. |
q_xModeChangeRequestRejected |
BOOL |
Mientras la salida indique TRUE, el bloque de funciones no autorizará ninguna petición de cambio de modalidad, por lo que no deberá ejecutarse. |