FB_ModeManager

Descripción general

Tipo:

Bloque de funciones

Disponible desde:

V1.0.1.0

G-SE-0065026.1.gif-high.gif

 

 

Descripción funcional

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 iniciali­zació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.

Interfaz

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.