1
26_500_Datos_Registros
Aketza edited this page 2026-07-22 08:41:30 +02:00

Análisis — Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Registros

Cobertura: 5 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 FB15050_ZC_CHEQUEO

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Registros/FB15050_ZC_CHEQUEO.s7dcl
  • Tipo: FB

Propósito general

El bloque FB15050_ZC_CHEQUEO implementa la gestión de los datos de chequeo de un sistema de membranas, manteniendo un histórico circular de hasta #N_REGISTROS mediciones y evaluando el rendimiento de la instalación comparando el caudal de permeado real con un valor de referencia al 100% de la bomba. Funcionalidades principales: - Detección de flanco ascendente en la orden de guardado: #s_OrdenGuardarRegistro se activa con un pulso de #GuardarRegistro mediante la variable estática #s_P_Trig_Guardar, evitando registros duplicados por nivel alto mantenido. - Adquisición de datos: al recibir la orden de guardado, se desplazan los registros existentes una posición hacia abajo mediante MOVE_BLK_VARIANT y se almacena en #Registro[1] el conjunto de variables de proceso (PorcentajeBomba, Temperatura, Caudal, CaudalPermeado, Conductividad, Presion), junto con el ResultadoChequeo calculado como el porcentaje de caudal de permeado frente a SP_Caudal_100por100, y la fecha actual convertida con FC15005_ZC_DTL_TO_ZC_FECHA a la estructura ZC_FECHA. - Cálculo del porcentaje de chequeo en tiempo real: PorcentajeChequeoActual se obtiene como el cociente entre el CaudalPermeado actual y SP_Caudal_100por100, y EstadoChequeoActual se activa cuando dicho porcentaje alcanza o supera #s_PorcentajeChequeoOK. - Alarma de bajo chequeo: se activa #AlarmaBajoChequeo cuando #ComprobarBajoChequeo está habilitado y el Caudal cae por debajo de #SP_CaudalMinimoChequeo. Se desactiva con #ResetBajoChequeo. - Animación de resultados: para cada registro se evalúa ResultadoAnimacion, que se activa cuando el ResultadoChequeo del registro es igual o superior a 80.0%, permitiendo al HMI colorear el histórico de forma intuitiva. - Visibilidad de toma de dato en HMI: VisDatoChequeo refleja el estado de #TomarDatoChequeo para señalizar al operador que la fase de toma de datos está activa. - Borrado de registros selectivo: según el valor de #s_NumeroBorrado se distingue entre borrado total (0 o -1), borrado de un registro intermedio (con desplazamiento hacia abajo para mantener la trazabilidad) y borrado del último registro. En todos los casos se inicializan a cero todos los campos del registro (analógicos y de fecha). > Restricciones: Ninguna.

Interfaz principal

Entradas:

Variable Tipo / inicialización
GuardarRegistro Bool
ComprobarBajoChequeo Bool
ResetBajoChequeo Bool
TomarDatoChequeo Bool
PorcentajeBomba Real
Temperatura Real
Caudal Real
CaudalPermeado Real
Conductividad Real
Presion Real
SP_Caudal_100por100 Real
SP_CaudalMinimoChequeo Real
FechaActual DTL

Salidas:

Variable Tipo / inicialización
EstadoChequeoActual Bool
AlarmaBajoChequeo Bool
VisDatoChequeo Bool
PorcentajeChequeoActual Real

Estado retentivo:

Variable Tipo / inicialización
s_PorcentajeChequeoOK Real := 80.0

Estado/estáticos:

Variable Tipo / inicialización
s_OrdenGuardarRegistro Bool
s_OrdenBorrarRegistros Bool
s_NumeroBorrado Int
s_OldGuardar Bool

Estado retentivo:

Variable Tipo / inicialización
Registro Array[1..#N_REGISTROS] of _.UDT_ZC_INF_CHEQUEO

Temporales:

Variable Tipo / inicialización
for_i Int
t_dummyInt Int

Estado/estáticos:

Variable Tipo / inicialización
CONSTANT N_REGISTROS Int := 20

Dependencias

Clase Elementos referenciados/llamados
FC FC15005_ZC_DTL_TO_ZC_FECHA
Instrucción Siemens / librería MOVE_BLK_VARIANT
UDT UDT_ZC_INF_CHEQUEO

Lógica clave

Flujo organizado en las regiones: ORDEN_GUARDARADQUISICION_DE_DATOSCALCULO_%_CHEQUEOVISIBILIDADESBORRADO. Mecanismos relevantes detectados: recorridos iterativos, decisiones condicionales, detección de flancos. Operaciones señaladas por el código: (C)Copyright ZeusControl 2024 - 2026; ==========================================================================================================; Orden guardar registro; Estado anterior; Con flanco de guardar datos, desplazamos los registros y almacenamos los datos del chequeo en la poisicion 1; Desplazamiento de datos; Adquisicion de datos; Calculo porcentaje del chequeo; Estado del chequeo actual; Visibilidad bajo chequeo.

FB FB15055_ZC_HORAS_MAQUINA

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Registros/FB15055_ZC_HORAS_MAQUINA.s7dcl
  • Tipo: FB

Propósito general

El bloque FB15055_ZC_HORAS_MAQUINA implementa la gestión integral de las horas de funcionamiento de la máquina, llevando el conteo de tiempo acumulado de operación, tiempos de producción (actual y total), mantenimiento, recirculación, limpieza, pausa y tiempo de planta parada con enzimático. Incluye además la gestión del pulsador de reset de mantenimiento protegido por contraseña HMI y la gestión de los avisos por horas alcanzadas. Funcionalidades principales: - Conteo de horas de funcionamiento de la máquina (TiempoMaquina) mediante el bloque FC15025_ZC_CONTADOR_TIEMPO con estructura UDT_ZC_CONTADOR_TIEMPO. - Conteo diferenciado de tiempo de producción actual (TiempoProduccionActual), producción total (TiempoProduccionTotal), tiempo de mantenimiento (TiempoMantenimiento), tiempo de recirculación (TiempoRecirculacion), tiempo de enzimática (TiempoEnzimatica), tiempo de limpieza (TiempoLimpieza) y tiempo de pausa (TiempoPausa), todos basados en UDT_ZC_CONTADOR_TIEMPO. - Gestión del pulsador de reset de mantenimiento (Pulsador tipo UDT_ZC_PULSADOR) con cálculo y verificación de contraseña HMI (PasswordHMI / PasswordCalculado). - Gestión de los flancos de inicio de producción, inicio de CIP e inicio de pausa mediante variables estáticas s_P_Trig_* para detección de pulsos de activación. - Activación de la alarma y el paro de mantenimiento (OutputParoMantenimiento) por horas acumuladas, con flag de aviso (s_Trig_AvisoHoras). - Señales de visibilidad HMI para los distintos tiempos (VisTiempoRecirculacion, etc.) y para el paro de mantenimiento. - Orden interna de reset de tiempos (t_OrdenReset) que se activa tras la pulsación autorizada del reset de mantenimiento, reinicializando los contadores pertinentes. > Restricciones: Ninguna.

Interfaz principal

Entradas:

Variable Tipo / inicialización
Pulso1Seg Bool
FechaHora DTL
IniciarTiempoMaquina Bool
IniciarTiempoProd Bool
IniciarTiempoRecirc Bool
IniciarTiempoEnzim Bool
IniciarTiempoCIP Bool
IniciarTiempoPausa Bool
ResetTiempoEnzim Bool

Var_Input Retain:

Variable Tipo / inicialización
HabilitarMant Bool
SP_HorasAlarma UDInt
SP_MinutosAlarma USInt

Entradas:

Variable Tipo / inicialización
ProcesoID Int

Var_Input Retain:

Variable Tipo / inicialización
Usuario String[25]

Salidas:

Variable Tipo / inicialización
ParoMantenimiento Bool
VisTiempoRecirculacion Bool

Estado retentivo:

Variable Tipo / inicialización
TiempoMaquina _.UDT_ZC_CONTADOR_TIEMPO
TiempoMantenimiento _.UDT_ZC_CONTADOR_TIEMPO
TiempoProduccionActual _.UDT_ZC_CONTADOR_TIEMPO
TiempoProduccionTotal _.UDT_ZC_CONTADOR_TIEMPO
TiempoRecirculacion _.UDT_ZC_CONTADOR_TIEMPO
TiempoEnzimatica _.UDT_ZC_CONTADOR_TIEMPO
TiempoLimpieza _.UDT_ZC_CONTADOR_TIEMPO
TiempoPausa _.UDT_ZC_CONTADOR_TIEMPO

Estado/estáticos:

Variable Tipo / inicialización
Pulsador _.UDT_ZC_PULSADOR
PasswordHMI UInt
s_OldAvisoHoras Bool
s_OldInicioProduccion Bool
s_OldInicioCIP Bool
s_OldInicioPausa Bool
s_OldCondicionParo Bool
s_PasswordCalculado UInt

Temporales:

Variable Tipo / inicialización
t_OrdenReset Bool
t_CondicionParo Bool
t_ResetProdActual Bool
t_ResetLimpieza Bool
t_ResetPausa Bool

Dependencias

Clase Elementos referenciados/llamados
FC FC15025_ZC_CONTADOR_TIEMPO, FC15026_ZC_PULSADOR
UDT UDT_ZC_CONTADOR_TIEMPO, UDT_ZC_PULSADOR

Lógica clave

Flujo organizado en las regiones: PULSADORESPARO_MANTENIMIENTOCONTADORES. Mecanismos relevantes detectados: decisiones condicionales, detección de flancos. Operaciones señaladas por el código: (C)Copyright ZeusControl 2024 - 2026; ==========================================================================================================; Pulsador comprobacion contraseña; Condicion de paro por mantenimiento; Con paro por mantenimiento, activamos la marca de paro; Estado anterior condicion paro por mantenimiento; Ligica de paro y calculo de contraseña; Calculo de contraseña; Comprobacion de contraseñas desde HMI; Contraseña correcta, reseteamos todo.

FB FB15056_ZC_SIVE_MEMBRANA_CARE

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Registros/FB15056_ZC_SIVE_MEMBRANA_CARE.s7dcl
  • Tipo: FB

Propósito general

El bloque FB15056_ZC_REGISTRO_MEMBRANAS implementa la gestión integral del registro y vida útil de las membranas. Mantiene un histórico circular de intervenciones (Registros[i]), controla el tiempo de uso acumulado y genera los avisos, alarmas y alarma crítica en función de las horas restantes, incluyendo la posibilidad de registrar cambios generales de forma masiva. Funcionalidades principales: - Registro de intervención por pulsador: el bloque gestiona un pulsador (FC15026_ZC_PULSADOR) con permiso dependiente de que haya un técnico introducido en #s_TecnicoNuevoRegistro. Al confirmarse la pulsación (Pulsador.Plc), se almacena en #Registros[#s_Indice] la fecha/hora convertida con FC15005_ZC_DTL_TO_ZC_FECHA, el técnico y el tiempo de membrana (#Tiempo.Hora), se limpia el técnico y se dispara la orden interna #t_OrdenReset para reiniciar el contador de tiempo. El índice avanza de forma circular hasta #N_REGISTROS. - Registro general: la entrada #OrdenRegistroGeneral permite registrar un cambio de membrana sin pulsador físico, asociando el técnico definido en #TecnicoRegistroGeneral y siguiendo la misma lógica circular de índice. - Contador de tiempo de membrana: mediante FC15025_ZC_CONTADOR_TIEMPO se acumula el tiempo de uso en horas, con posibilidad de reset a través de #t_OrdenReset. - Cálculo de horas restantes: #TiempoMembranaRestante se calcula como la diferencia entre #HorasAlarmaCritica y #Tiempo.Hora, acotado a 0 para evitar desbordamientos cuando se supera el umbral crítico. - Borrado de registros: la entrada #OrdenBorrar limpia completamente el array de registros (fecha, hora, técnico y tiempo de membrana) y reinicia el índice de escritura a 1. - Estado global por tramos: clasificación del estado en #Estado (0: Normal, 1: Aviso, 2: Alarma, 3: Alarma crítica) según el rango de horas acumulado frente a #HorasAviso, #HorasAlarma y #HorasAlarmaCritica. - Aviso y Alarma intermitentes: se generan mediante dos Flip-Flop (FC2926_ZC_FF_INDV) con tiempos de encendido/apagado configurables (#TiempoAvisoOn/Off, #TiempoAlarmaOn/Off) para producir señales parpadeantes. La alarma crítica (AlarmaCritica) es continua y se activa definitivamente al alcanzar #HorasAlarmaCritica. > Restricciones: Ninguna.

Interfaz principal

Entradas:

Variable Tipo / inicialización
Pulso1Seg Bool
OrdenRegistroGeneral Bool
FechaHora DTL
Iniciar Bool

Var_Input Retain:

Variable Tipo / inicialización
Usuario String[25]

Entradas:

Variable Tipo / inicialización
TecnicoRegistroGeneral String[20]

Var_Input Retain:

Variable Tipo / inicialización
TiempoAvisoOn Int
TiempoAvisoOff Int
TiempoAlarmaOn Int
TiempoAlarmaOff Int
HorasAviso Int
HorasAlarma Int
HorasAlarmaCritica Int

Salidas:

Variable Tipo / inicialización
Aviso Bool
Alarma Bool
AlarmaCritica Bool
Estado Int
TiempoMembranaRestante UDInt

Entrada/salida (in/out):

Variable Tipo / inicialización
OrdenBorrar Bool

Estado retentivo:

Variable Tipo / inicialización
Registros Array[1..#N_REGISTROS] of _.UDT_ZC_SIVE_MEMBRANA_CARE

Estado/estáticos:

Variable Tipo / inicialización
Pulsador _.UDT_ZC_PULSADOR

Estado retentivo:

Variable Tipo / inicialización
Tiempo _.UDT_ZC_CONTADOR_TIEMPO
s_PuestaMarchaAno UInt
s_PuestaMarchaMes Int
s_PuestaMarchaDia Int
s_Indice Int := 1
s_TecnicoNuevoRegistro String[20]
s_FlipFlopAviso _.UDT_ZC_DISP_FF
s_FlipFlopAlarma _.UDT_ZC_DISP_FF

Temporales:

Variable Tipo / inicialización
for_i Int
t_OrdenReset Bool

Estado/estáticos:

Variable Tipo / inicialización
CONSTANT N_REGISTROS Int := 10

Dependencias

Clase Elementos referenciados/llamados
FC FC15005_ZC_DTL_TO_ZC_FECHA, FC15025_ZC_CONTADOR_TIEMPO, FC15026_ZC_PULSADOR, FC2926_ZC_FF_INDV
UDT UDT_ZC_CONTADOR_TIEMPO, UDT_ZC_DISP_FF, UDT_ZC_PULSADOR, UDT_ZC_SIVE_MEMBRANA_CARE

Lógica clave

Flujo organizado en las regiones: ORDEN_REGISTROTIEMPO_MEMBRANASBORRAR_REGISTROSESTADOGESTION_FF. Mecanismos relevantes detectados: recorridos iterativos, decisiones condicionales. Operaciones señaladas por el código: (C)Copyright ZeusControl 2023 - 2026; =============================================================================; Orden pulsador; Reset valor técnico y orden reset tiempo; Incrementamos indice y si es mayor que el número máximo de registro lo ponemos en la posición inicial; Orden registro general; Contador de tiempo; Horas Restante; Estado Aviso; Estado Alarma.

FB FB15057_ZC_CONT_PROD_MEM

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Registros/FB15057_ZC_CONT_PROD_MEM.s7dcl
  • Tipo: FB

Propósito general

Bloque de funcion que implementa la gestión de los contadores y totalizadores de producción de una máquina de membranas, manteniendo la trazabilidad histórica de la última y penúltima producción, así como los acumulados parciales y totales, junto con el cálculo del factor de conversión volumétrica (FCV) asociado a cada periodo. Funcionalidades principales: - Detección de flanco ascendente en las órdenes #InicioProduccion y #FinProduccion mediante las variables estáticas #s_P_Trig_InicioProd y #s_P_Trig_FinProd, generando los pulsos internos #s_InicioProduccion y #s_FinProduccion para evitar disparos múltiples por nivel mantenido. - Inicio de producción: al recibir #s_InicioProduccion se trasladan los datos de la última producción a la estructura #Penultima, se inicializan a cero los campos analíticos y de fecha de #Ultima, y se registra la fecha/hora de inicio en #Ultima.FechaInicio mediante la conversión realizada por FC15005_ZC_DTL_TO_ZC_FECHA. - Datos en curso: mientras #EnProduccion está activo, se copian en #Ultima las variables de proceso (LitrosEntrada, LitrosConcentrado, Brix, TempAlimentacion, TempConcentrado, TempPermeado), manteniendo actualizada la instantánea de la producción en marcha. - Fin de producción: al detectar #s_FinProduccion se registra la fecha/hora de fin en #Ultima.FechaFin y se acumulan los valores de la producción actual sobre los contadores #Parcial y #Total, tanto de litros de entrada como de concentrado. - Cálculo de litros de permeado por diferencia (LitrosEntrada - LitrosConcentrado) para las cuatro estructuras: #Ultima, #Penultima, #Parcial y #Total. - Cálculo del factor de conversión volumétrica (FCV) para cada estructura con protección frente a división por cero (cuando #LitrosEntrada o #LitrosConcentrado son menores o iguales a 0.0, el resultado se fija en 0.0). - Reset de la producción parcial: la entrada #BorrarParcial reinicia los litros del contador parcial y actualiza #Parcial.FechaInicio con la fecha/hora actual. > Restricciones: Ninguna.

Interfaz principal

Entradas:

Variable Tipo / inicialización
InicioProduccion Bool
EnProduccion Bool
FinProduccion Bool
FechaHoraActual DTL
LitrosEntrada LReal
LitrosConcentrado LReal
LitrosPermeado LReal
FCV Real
Brix LReal
TempAlimentacion LReal
TempConcentrado LReal
TempPermeado LReal
BorrarParcial Bool

Estado retentivo:

Variable Tipo / inicialización
Ultima _.UDT_ZC_CONT_PROD_MEM
Penultima _.UDT_ZC_CONT_PROD_MEM
Parcial _.UDT_ZC_CONT_PROD_MEM
Total _.UDT_ZC_CONT_PROD_MEM

Estado/estáticos:

Variable Tipo / inicialización
s_OldInicioProd Bool
s_OldFinProd Bool
s_InicioProduccion Bool
s_FinProduccion Bool

Dependencias

Clase Elementos referenciados/llamados
FC FC15005_ZC_DTL_TO_ZC_FECHA
UDT UDT_ZC_CONT_PROD_MEM

Lógica clave

Flujo organizado en las regiones: GESTION_ORDENESMOVIMIENTO_DE_DATOSINICIO_PRODUCCIONDATOS_DURANTE_PRODUCCIONDATOS_AL_FIN_PRODUCCIONCALCULOSTOTALIZADORESFCVRESET_DATOS. Mecanismos relevantes detectados: decisiones condicionales, detección de flancos. Operaciones señaladas por el código: (C)Copyright ZeusControl 2024 - 2026; ==========================================================================================================; Inicio de produccion; Fin de produccion; Estados anteriores; =================================================================================================; Traspaso de datos de ultima produccion a penultima produccion; Reset datos ultima produccion; Guardamos la fecha y hora de inicio de la produccion; Movimientos de datos durante la produccion.

FC FC15106_ZC_GESTION_LISTA

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Registros/FC15106_ZC_GESTION_LISTA.s7dcl
  • Tipo: FC; retorno Void

Propósito general

Bloque FC15106_ZC_GESTION_LISTA destinado a gestionar FC15106 ZC GESTION LISTA. Su código se organiza principalmente en: CALCULOS, GESTION_LISTA.

Interfaz principal

Entrada/salida (in/out):

Variable Tipo / inicialización
Lista Array[*] of _.UDT_ZC_LISTA_ORIG_DEST

Temporales:

Variable Tipo / inicialización
for_i Int
for_j Int
t_Index Int
t_LowerBound Int
t_UpperBound Int
t_YaExiste Bool
t_ListaTemporal Array[0..100] of _.UDT_ZC_LISTA_ORIG_DEST

Dependencias

Clase Elementos referenciados/llamados
UDT UDT_ZC_LISTA_ORIG_DEST

Lógica clave

Flujo organizado en las regiones: CALCULOSGESTION_LISTA. Mecanismos relevantes detectados: recorridos iterativos, decisiones condicionales. Operaciones señaladas por el código: ==========================================================================================================; Obtener límites reales del array; Inicializar lista temporal; Compactar y eliminar duplicados; Copiar de vuelta a lista original.