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

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: ERRORCALCULO_FCVPRESIONTEMPORIZADORDECREMENTOS_CAUDALSALIDAS. 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_PARAMETROSCALCULOSSALIDAS. 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_PARAMETROSCALCULOSSALIDASTIEMPO 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_RAMPACALCULOSGESTION_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.