Análisis — Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Calculos
Cobertura: 4 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 FB15102_ZC_CALCULO_FCV_UF
- Archivo:
Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Calculos/FB15102_ZC_CALCULO_FCV_UF.s7dcl - Tipo: FB
Propósito general
El bloque FB15102_ZC_CALCULO_FCV_UF implementa el cálculo de la consigna de FCV (factor de conversión volumétrica) para máquinas de membranas de ultrafiltración, a partir de las consignas de caudal de concentrado y de FCV. Gestiona además el control de presión por incrementos/decrementos para mantener el caudal de permeado total dentro de los objetivos del proceso.
Funcionalidades principales:
- Validación de entradas: se detecta error (ErrorDiferenciaPermeado) cuando la consigna SP_PorcientoPermeadoTotal está fuera del rango definido por LIM_MIN_CAUDAL_PERMEADO_TOTAL y LIM_MAX_CAUDAL_PERMEADO_TOTAL. En caso de error, el cálculo del caudal teórico de permeado total se realiza con un valor de seguridad del 1%.
- Cálculo de caudales teóricos: a partir de SP_CaudalConcentrado y SP_FCV se obtiene el caudal teórico de entrada (SP_CaudalTeoricoEntrada) y, por diferencia, el caudal teórico de permeado (SP_CaudalPermeado). Si el caudal teórico de entrada supera el SP_CaudalMaximoEntrada, la consigna de concentrado se reduce automáticamente, activando el flag AjusteSP_CaudalConcentrado para señalizar el reescalado al exterior.
- Cálculo de caudal de permeado total: SP_CaudalPermeadoTotal se obtiene aplicando el porcentaje de permeado total al caudal de permeado teórico.
- Detección de bajo caudal de permeado: se calcula la diferencia entre el caudal teórico y el real (CaudalTotalPermeado). El flag s_BajoCaudalPermeado se activa cuando la diferencia es positiva pero inferior al umbral SP_BajoCaudalPermeado, o cuando el teórico es superior al real.
- Control de presión por incrementos: mediante un temporizador (FC2928_ZC_TON_INDV con estructura ZC_TON) se incrementa progresivamente la consigna s_SP_Presion en pasos SP_IncrementosPresion cuando se detecta bajo caudal de permeado, hasta alcanzar SP_PresionMaxima. Se permite reset a SP_PresionInicial mediante la entrada BotonReset, así como el disparo manual de un incremento con ForzarIncrementos.
- Lógica de decrementos de caudal: cuando se alcanza la presión máxima (s_MaxPresionAlcanzada) y el caudal real sigue por debajo del teórico, un segundo temporizador (s_TON[1]) reduce progresivamente la consigna de concentrado aplicando un porcentaje SP_PorcentajeDecremento, acotado inferiormente por SP_CaudalMinConcentrado. Cada ajuste activa AjusteSP_CaudalConcentrado.
- Modo no activo: cuando ActivarCalculosCaudal o ActivarControlPresion están desactivados, todas las salidas y variables internas se resetean a sus valores neutros, manteniendo únicamente la presión inicial si el proceso no se encuentra en recirculación de producto (EtapaRecircProd).
- Salidas de visibilidad HMI: VisibilidadConsignasCaudal, VisibilidadConsignasPresion y VisibilidadConsignaCaudalDec se exponen para que el sistema de supervisión muestre u oculte las pantallas de consignas según la etapa activa del bloque.
- Memoria de consignas anteriores: al final del bloque se actualizan s_old_SP_CaudalConcentrado y s_old_SP_FCV para la detección de cambios en el siguiente ciclo.
> Restricciones: Ninguna.
Interfaz principal
Entradas:
| Variable | Tipo / inicialización |
|---|---|
Pulso1Seg |
Bool |
ActivarCalculosCaudal |
Bool |
ActivarControlPresion |
Bool |
Marcha |
Bool |
EtapaRecircProd |
Bool |
CaudalTotalPermeado |
Real |
SP_FCV |
Real |
SP_CaudalMaximoEntrada |
Real |
SP_PorcientoPermeadoTotal |
Real |
SP_BajoCaudalPermeado |
Real |
SP_PresionInicial |
Real |
SP_IncrementosPresion |
Real |
SP_PresionMaxima |
Real |
SP_TiempoMuestreoPresion |
Int |
SP_PorcentajeDecremento |
Real |
SP_CaudalMinConcentrado |
Real |
SP_TiempoDecrementos |
Int |
BotonReset |
Bool |
Salidas:
| Variable | Tipo / inicialización |
|---|---|
SP_CaudalTeoricoEntrada |
Real |
SP_CaudalPermeado |
Real |
SP_Presion |
Real |
ErrorDiferenciaPermeado |
Bool |
VisibilidadConsignasCaudal |
Bool |
VisibilidadConsignasPresion |
Bool |
VisibilidadConsignaCaudalDec |
Bool |
PermisoReset |
Bool |
AjusteSP_CaudalConcentrado |
Bool |
MaxPresionAlcanzada |
Bool |
Entrada/salida (in/out):
| Variable | Tipo / inicialización |
|---|---|
SP_CaudalConcentrado |
Real |
SP_CaudalPermeadoTotal |
Real |
ForzarIncrementos |
Bool |
Estado retentivo:
| Variable | Tipo / inicialización |
|---|---|
s_SP_Presion |
Real |
s_old_SP_CaudalConcentrado |
Real |
s_old_SP_FCV |
Real |
Estado/estáticos:
| Variable | Tipo / inicialización |
|---|---|
s_DiferenciaCaudalPermeado |
Real |
s_BajoCaudalPermeado |
Bool |
s_MaxPresionAlcanzada |
Bool |
s_SP_CaudalConcentrado |
Real |
s_TON |
Array[0..1] of _.UDT_ZC_DISP_TON := [ (), () ] |
Temporales:
| Variable | Tipo / inicialización |
|---|---|
t_CaudalTeoricoEntrada |
Real |
Estado/estáticos:
| Variable | Tipo / inicialización |
|---|---|
CONSTANT LIM_MIN_CAUDAL_PERMEADO_TOTAL |
Real |
LIM_MAX_CAUDAL_PERMEADO_TOTAL |
Real := 100.0 |
Dependencias
| Clase | Elementos referenciados/llamados |
|---|---|
| FC | FC2928_ZC_TON_INDV |
| UDT | UDT_ZC_DISP_TON |
Lógica clave
Flujo organizado en las regiones: ERROR → CALCULO_FCV → PRESION → TEMPORIZADOR → DECREMENTOS_CAUDAL → SALIDAS. Mecanismos relevantes detectados: decisiones condicionales, temporización IEC. Operaciones señaladas por el código: (C)Copyright ZeusControl 2024 - 2026; ====================================================; SP_PorcientoPermeadoTotal fuera de rango; Reinicializacion de valores; Modo activo; Cambio de consigna caudal de concentrado; Cálculo temporal de caudal teórico de entrada; Comparación con el caudal máximo de entrada; Recalcular caudal de concentrado; Cálculo caudal teórico de entrada.
FB FB15104_ZC_CALCULO_LIMP_2_MOD
- Archivo:
Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Calculos/FB15104_ZC_CALCULO_LIMP_2_MOD.s7dcl - Tipo: FB
Propósito general
Bloque de funcion que implementa el cálculo y la distribución temporal de la limpieza de 2 módulos de membranas, con soporte operativo para 3 módulos mediante la agrupación de los módulos 2 y 3 en una sola fase. Permite configurar, en porcentaje, el peso de cada módulo dentro del tiempo total de recirculación y reparte el tiempo restante a una fase conjunta de limpieza de todos los módulos.
Funcionalidades principales:
- Traspaso y validación de porcentajes: se leen los porcentajes de cada módulo (SP_Modulo1, SP_Modulo2) y se limitan para que la suma no supere el máximo disponible (100 - s_PorcentajeMinimoTodosModulos). Si la suma supera dicho umbral, ambos porcentajes se igualan al valor medio permitido, garantizando que siempre quede un mínimo reservado para la fase de limpieza conjunta. El porcentaje restante (s_PorcentajeRestante) se calcula como 100 - (s_PorcentajeModulo1 + s_PorcentajeModulo2).
- Cálculo de tiempos: a partir del tiempo total de recirculación (SP_TiempoRecirculacion) y de los porcentajes validados, se obtienen los tiempos individuales de cada módulo (s_CalculoTiempoModulo1, s_CalculoTiempoModulo2) y el tiempo restante (s_CalculoTiempoRestante). Se calculan también los tiempos acumulados hasta el inicio de cada fase (s_TiempoModulo1, s_TiempoModulo2) para acotar la salida de la etapa en curso.
- Activación de salidas de limpieza: durante la etapa de recirculación (EtapaRecirculacion), en función del valor de EtapaTiempoRestante, se activa la salida correspondiente:
- LimpiarSoloModulo1: mientras el tiempo restante está comprendido entre s_TiempoModulo1 y SP_TiempoRecirculacion y el porcentaje del módulo 1 es distinto de cero.
- LimpiarSoloModulo2: mientras el tiempo restante está comprendido entre s_TiempoModulo2 y s_TiempoModulo1 y el porcentaje del módulo 2 es distinto de cero.
- LimpiarTodosLosModulos: en el resto de casos, durante la fase final del tiempo de recirculación.
- Las salidas son mutuamente excluyentes: en todo momento solo una de las tres se encuentra activa, inicializándose todas a FALSE al inicio de la región.
> Restricciones: Ninguna.
Interfaz principal
Entradas:
| Variable | Tipo / inicialización |
|---|---|
EtapaRecirculacion |
Bool |
EtapaTiempoRestante |
Int |
SP_TiempoRecirculacion |
Int |
SP_Modulo1 |
Real |
SP_Modulo2 |
Real |
Salidas:
| Variable | Tipo / inicialización |
|---|---|
LimpiarSoloModulo1 |
Bool |
LimpiarSoloModulo2 |
Bool |
LimpiarTodosLosModulos |
Bool |
Estado retentivo:
| Variable | Tipo / inicialización |
|---|---|
s_PorcentajeMinimoTodosModulos |
Real := 20.0 |
s_PorcentajeModulo1 |
Real |
s_PorcentajeModulo2 |
Real |
s_PorcentajeRestante |
Real |
s_CalculoTiempoModulo1 |
Int |
s_CalculoTiempoModulo2 |
Int |
s_CalculoTiempoRestante |
Int |
s_TiempoModulo1 |
Int |
s_TiempoModulo2 |
Int |
Dependencias
No se detectan llamadas ni referencias a otros bloques exportados. Para un DB/UDT esto significa que es una hoja declarativa; sus consumidores aparecen en el mapa inverso.
Lógica clave
Flujo organizado en las regiones: TRASPASO_PARAMETROS → CALCULOS → SALIDAS. Mecanismos relevantes detectados: decisiones condicionales. Operaciones señaladas por el código: (C)Copyright ZeusControl 2024 - 2026; ==========================================================================================================; =====================================================================================; TRASPASO DE PARAMETROS DE PORCENTAJE; Se revisa los limites de los porcentajes metidos en pantalla; CALCULO DE TIEMPO DE PASO; MODULO 1; MODULO 2 y 3; TIEMPO RESTANTE.
FB FB15106_ZC_CALCULO_LIMP_4_MOD
- Archivo:
Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Calculos/FB15106_ZC_CALCULO_LIMP_4_MOD.s7dcl - Tipo: FB
Propósito general
Bloque de funcion que implementa el cálculo y la distribución temporal de la limpieza de 4 módulos, asignando a cada uno un porcentaje configurable del tiempo total de la etapa. A partir de los porcentajes validados y del tiempo total, calcula los tiempos individuales de cada módulo y activa secuencialmente la salida correspondiente en función de un contador interno en segundos.
Funcionalidades principales:
- Traspaso y validación de porcentajes: se leen los porcentajes de cada uno de los 4 módulos (SP_Salida1 a SP_Salida4) y se comprueba que su suma no supere 100.0. Si la suma supera dicho umbral, se asigna por defecto un valor de seguridad de 10.0 a cada uno de los cuatro porcentajes, evitando estados incoherentes.
- Cálculo de tiempos individuales: para cada módulo, si su porcentaje es distinto de cero, se calcula el tiempo correspondiente como Porcentaje * SP_Tiempo / 100, truncado a entero mediante REAL_TO_INT.
- Cálculo del tiempo total: se obtiene como la suma de los cuatro tiempos calculados y se utiliza para acotar el contador interno.
- Contador de etapa: mientras Etapa está activa, EnMarcha esté activado y Pulso1Seg genere un pulso por segundo, se incrementa el contador #s_ContadorTiempo hasta alcanzar #s_TiempoTotal, momento en el que se reinicia a 0 para comenzar un nuevo ciclo.
- Activación secuencial de salidas: cada salida (Salida1, Salida2, Salida3, Salida4) se activa cuando el contador se encuentra en el intervalo de tiempo correspondiente a su módulo. Salida4 se activa por descarte cuando ninguna de las tres anteriores está activa.
- Reset al salir de etapa: cuando Etapa se desactiva, el contador y todas las salidas se ponen a cero.
- Cálculo del tiempo restante de etapa (EtapaTiempoRestante): se calcula en función de la salida activa como la diferencia entre el tiempo acumulado del módulo y el contador actual. Si el resultado es negativo, se satura a 0.
> Restricciones: Ninguna.
Interfaz principal
Entradas:
| Variable | Tipo / inicialización |
|---|---|
Etapa |
Bool |
Pulso1Seg |
Bool |
EnMarcha |
Bool |
SP_Tiempo |
Int |
SP_Salida1 |
Real |
SP_Salida2 |
Real |
SP_Salida3 |
Real |
SP_Salida4 |
Real |
Entrada/salida (in/out):
| Variable | Tipo / inicialización |
|---|---|
EtapaTiempoRestante |
Int |
Salida1 |
Bool |
Salida2 |
Bool |
Salida3 |
Bool |
Salida4 |
Bool |
Estado retentivo:
| Variable | Tipo / inicialización |
|---|---|
s_PorcentajeSalida1 |
Real |
s_PorcentajeSalida2 |
Real |
Estado/estáticos:
| Variable | Tipo / inicialización |
|---|---|
s_PorcentajeSalida3 |
Real |
s_PorcentajeSalida4 |
Real |
Estado retentivo:
| Variable | Tipo / inicialización |
|---|---|
s_PorcentajeRestante |
Real |
s_CalculoTiempoSalida1 |
Int |
s_CalculoTiempoSalida2 |
Int |
Estado/estáticos:
| Variable | Tipo / inicialización |
|---|---|
s_CalculoTiempoSalida3 |
Int |
s_CalculoTiempoSalida4 |
Int |
Estado retentivo:
| Variable | Tipo / inicialización |
|---|---|
s_CalculoTiempoRestante |
Int |
s_TiempoSalida1 |
Int |
s_TiempoSalida2 |
Int |
Estado/estáticos:
| Variable | Tipo / inicialización |
|---|---|
s_TiempoSalida3 |
Int |
s_TiempoSalida4 |
Int |
S_TON |
_.UDT_ZC_DISP_TON |
s_TiempoTotal |
Int |
s_ContadorTiempo |
Int |
Dependencias
| Clase | Elementos referenciados/llamados |
|---|---|
| UDT | UDT_ZC_DISP_TON |
Lógica clave
Flujo organizado en las regiones: TRASPASO_PARAMETROS → CALCULOS → SALIDAS → TIEMPO RESTANTE. Mecanismos relevantes detectados: decisiones condicionales. Operaciones señaladas por el código: (C)Copyright ZeusControl 2024 - 2026; ==========================================================================================================; =====================================================================================; TRASPASO DE PARAMETROS DE PORCENTAJE; Se revisa los limites de los porcentajes metidos en pantalla; CALCULO DE TIEMPO DE PASO; MODULO 1; MODULO 2; MODULO 3; MODULO 4.
FC FC15103_ZC_CALCULO_RAMPA
- Archivo:
Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Calculos/FC15103_ZC_CALCULO_RAMPA.s7dcl - Tipo: FC; retorno
Void
Propósito general
Función encargada de calcular rampas hasta alcanzar valor objetivo. El bloque opera de la siguiente manera: 1. Si esta la rampa habilitada: 2. Realiza el calculo de la diferencia entre el valor actual y el valor objetivo. 3. En funcion de en que rango este, realiza los incrementos en el valor actual.
Interfaz principal
Entradas:
| Variable | Tipo / inicialización |
|---|---|
Pulso100ms |
Bool |
HabilitarRampa |
Bool |
ValorObjetivo |
Real |
IncRespRapida |
Real |
DecRespRapida |
Real |
IncRespLenta |
Real |
DecRespLenta |
Real |
HistRapidaLenta |
Real |
Entrada/salida (in/out):
| Variable | Tipo / inicialización |
|---|---|
ValorActual |
Real |
Temporales:
| Variable | Tipo / inicialización |
|---|---|
t_Diferencia |
Real |
t_Incremento |
Real |
Dependencias
No se detectan llamadas ni referencias a otros bloques exportados. Para un DB/UDT esto significa que es una hoja declarativa; sus consumidores aparecen en el mapa inverso.
Lógica clave
Flujo organizado en las regiones: CALCULO_RAMPA → CALCULOS → GESTION_INCREMENTOS. Mecanismos relevantes detectados: decisiones condicionales. Operaciones señaladas por el código: ==========================================================================================================; Gestion de la rampa de Set Point al cambiar de valor; Calculo diferencia entre Set Point y valor de la rampa; Calculo de incremento DOWN; Calculo de incremento UP; Gestion incremento UP; Gestion incremento DOWN; Gestion limite alcanzado o sin incremento configurado.