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_GUARDAR → ADQUISICION_DE_DATOS → CALCULO_%_CHEQUEO → VISIBILIDADES → BORRADO. 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: PULSADORES → PARO_MANTENIMIENTO → CONTADORES. 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_REGISTRO → TIEMPO_MEMBRANAS → BORRAR_REGISTROS → ESTADO → GESTION_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_ORDENES → MOVIMIENTO_DE_DATOS → INICIO_PRODUCCION → DATOS_DURANTE_PRODUCCION → DATOS_AL_FIN_PRODUCCION → CALCULOS → TOTALIZADORES → FCV → RESET_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: CALCULOS → GESTION_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.