Análisis — Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Recetas
Cobertura: 1 fuente(s) .s7dcl.
Resumen de carpeta
Esta carpeta pertenece a la capa indicada por su prefijo numérico y agrupa elementos con responsabilidad funcional común. El detalle siguiente diferencia bloques ejecutables, memoria global/instancia y contratos UDT.
FB FB15200_ZC_SYNC_RECETA_PANEL
- Archivo:
Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Recetas/FB15200_ZC_SYNC_RECETA_PANEL.s7dcl - Tipo: FB
Propósito general
Función central para la gestión de la sincronización de recetas con el HMI. Implementa una máquina de estados que coordina la importación (y borrado opcional) de recetas desde el HMI, gestionando las temporizaciones de espera, las señales de confirmación y los códigos de estado/error, así como el registro de la última sincronización correcta.
> Restricciones: Ninguna.
Acciones detalladas:
- Gestiona los temporizadores generales del bloque: retardo de inicio (TON_OrdenInicio), retardos de orden de importar/borrar desde HMI (TON_RetardoImportarHmi, TON_RetardoBorrarHmi), temporizadores de espera de estado (TON_EstadoImportar, TON_EstadoBorrar) y temporizadores de error (TON_ErrorImportar, TON_ErrorBorrar).
- Estado ETAPA_0_REPOSO: si existe receta nueva (s_ExisteRecetaNueva) y la etapa actual es reposo, arranca la temporización de inicio. Una vez cumplido el tiempo, se activa s_Iniciar, se inicializan los estados de importar/borrar, se carga la RutaCarpetaRecetas en s_RutaCarpeta y se pasa a la etapa de orden de importar al HMI.
- Estado ETAPA_10_IMPORTAR_ORDEN_HMI: activa la marca s_OrdenSincHMI cuando se recibe desde HMI o cuando expira TON_RetardoImportarHmi, y transiciona a la etapa de espera de importación.
- Estado ETAPA_20_IMPORTAR_ESPERA_HMI: espera a que finalice la temporización de estado (TON_EstadoImportar) o de error (TON_ErrorImportar) para pasar a la etapa de comprobación.
- Estado ETAPA_30_IMPORTAR_COMPROBACION: evalúa el código de estado de importación (s_EstadoImportar). Si es correcto (4), resetea s_ExisteRecetaNueva y ErrorImportar, registra la UltimaSincronizacion y, si está habilitado el borrado (HabilitarBorrado), continúa con la etapa de borrado; en caso contrario, vuelve a ETAPA_0_REPOSO. Si el estado no es correcto, marca ErrorImportar y vuelve a reposo.
- Estado ETAPA_40_BORRAR_ORDEN_HMI: activa s_OrdenBorrarHMI cuando se recibe desde HMI o cuando expira TON_RetardoBorrarHmi, y transiciona a la etapa de espera de borrado.
- Estado ETAPA_50_BORRAR_ESPERA_HMI: espera a que finalice la temporización de estado (TON_EstadoBorrar) o de error (TON_ErrorBorrar) para pasar a la etapa de comprobación de borrado.
- Estado ETAPA_60_BORRAR_COMPROBACION: evalúa el código de estado de borrado (s_EstadoBorrar). Si es correcto (4), resetea s_ExisteRecetaNueva y ErrorBorrar; si no, activa ErrorBorrar. En ambos casos, resetea los flags de estado y orden y vuelve a ETAPA_0_REPOSO.
- En cada ciclo se actualiza la etapa en curso (s_Etapa := s_EtapaSiguiente), manteniendo la coherencia de la máquina de estados.
Interfaz principal
Entradas:
| Variable | Tipo / inicialización |
|---|---|
HabilitarBorrado |
Bool := FALSE |
RutaCarpetaRecetas |
String[25] := '\temp\RecetasScada\' |
FechaHoraActual |
DTL |
TiempoRetardoInicio |
Time := T#20S |
TiempoRetardoHmi |
Time := T#10S |
TiempoComprobacion |
Time := T#500MS |
TiempoError |
Time := T#8S |
Var_Output Retain:
| Variable | Tipo / inicialización |
|---|---|
ErrorImportar |
Bool |
ErrorBorrar |
Bool |
Estado retentivo:
| Variable | Tipo / inicialización |
|---|---|
s_ExisteRecetaNueva |
Bool |
s_OrdenSincHMI |
Bool |
s_OrdenBorrarHMI |
Bool |
s_EstadoImportar |
Int |
s_EstadoBorrar |
Int |
s_RutaCarpeta |
String |
s_Iniciar |
Bool |
s_Etapa |
Int |
s_EtapaSiguiente |
Int |
UltimaSincronizacion |
DTL |
Estado/estáticos:
| Variable | Tipo / inicialización |
|---|---|
TON_OrdenInicio |
TON_TIME |
TON_RetardoImportarHmi |
TON_TIME |
TON_RetardoBorrarHmi |
TON_TIME |
TON_EstadoImportar |
TON_TIME |
TON_ErrorImportar |
TON_TIME |
TON_EstadoBorrar |
TON_TIME |
TON_ErrorBorrar |
TON_TIME |
Estado/estáticos:
| Variable | Tipo / inicialización |
|---|---|
CONSTANT ETAPA_0_REPOSO |
Int := 0 |
ETAPA_10_IMPORTAR_ORDEN_HMI |
Int := 10 |
ETAPA_20_IMPORTAR_ESPERA_HMI |
Int := 20 |
ETAPA_30_IMPORTAR_COMPROBACION |
Int := 30 |
ETAPA_40_BORRAR_ORDEN_HMI |
Int := 40 |
ETAPA_50_BORRAR_ESPERA_HMI |
Int := 50 |
ETAPA_60_BORRAR_COMPROBACION |
Int := 60 |
Dependencias
| Clase | Elementos referenciados/llamados |
|---|---|
| Instrucción Siemens / librería | TON_TIME |
Lógica clave
Flujo organizado en las regiones: GESTION_TEMPORIZADORES → LOGICA → REPOSO → IMPORTAR_ORDEN_HMI → IMPORTAR_ESPERA_HMI → IMPORTAR_COMPROBACION → BORRAR_ORDEN_HMI → BORRAR_ESPERA_HMI. Mecanismos relevantes detectados: máquina de estados/selección CASE, decisiones condicionales. Operaciones señaladas por el código: (C)Copyright ZeusControl 2022 - 2022; ==========================================================================================================; Retardo inicio sincronizacion; Retardo orden importar hmi; Retardo estado/error importar; Retardo orden borrar hmi; Retardo borrar estado; Si se ejecuta correctamente, reseteamos marca que indica que hay recetas nuevas que sincronizar; y guardamos la fecha y hora de la ultima sincronizacion.