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

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

Cobertura: 6 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.

DB DB11_INF

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Informes/DB11_INF.s7dcl
  • Tipo: DB

Propósito general

Bloque de datos DB11_INF que centraliza el estado persistente y/o de intercambio asociado a DB11 INF. No ejecuta lógica: proporciona memoria estructurada a los bloques consumidores.

Interfaz principal

Estado retentivo:

Variable Tipo / inicialización
Gestion _.UDT_ZC_INF_GESTION
Buffer Array[0.._.N_MAX_INF_BUFFER] of _.UDT_ZC_INF_DATOS

Dependencias

Clase Elementos referenciados/llamados
UDT UDT_ZC_INF_DATOS, UDT_ZC_INF_GESTION

Lógica clave

Elemento declarativo; no contiene flujo ejecutable. La lógica reside en los FC/FB/OB que leen o modifican sus campos.

FB FB15051_ZC_INF_CPR

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Informes/FB15051_ZC_INF_CPR.s7dcl
  • Tipo: FB

Propósito general

Bloque de funcion para la gestión de informes de descargas de compacto de recepcion. En ella se realizan las siguientes acciones: - Cálculo dinámico de indices de array de informes. - Gestion de ordenes de inicio y fin informe. - Desplazamiento y captura de datos de informe. - Borrado de informes.

Interfaz principal

Entradas:

Variable Tipo / inicialización
GuardarDatos Bool
FinGuardarDatos Bool
FechaActual DTL
TipoProceso Int
Destino Int
Producto Int
Producto1Destino Int
Producto2Destino Int
Nombre String[40]
Matricula String[10]
LetraQ String[10]
KilosSP Real
KilosDescargados Real
DensidadMedia LReal
TempMediaDescarga LReal
TempMediaEnfriamiento LReal
EmpujeRealizado Bool
AclaradoRealizado Bool

Salidas:

Variable Tipo / inicialización
GuardarSQL Bool

Entrada/salida (in/out):

Variable Tipo / inicialización
"Mux" _.UDT_ZC_MUX
Informe Array[*] of _.UDT_ZC_INF_CPR_PROD

Estado retentivo:

Variable Tipo / inicialización
s_OrdenGuardarDatos Bool
s_OrdenGuardarFechaInicio Bool

Estado/estáticos:

Variable Tipo / inicialización
s_OrdenGuardarFechaFin Bool
s_OrdenBorrarInforme Bool
s_NumeroBorrado Int

Estado retentivo:

Variable Tipo / inicialización
s_P_Trig_TomarFechaInicio Bool
s_P_Trig_TomarFechaFin Bool

Temporales:

Variable Tipo / inicialización
for_i Int
t_dummyInt Int
t_IndiceSuperior Int
t_IndiceInferior Int
t_InformeVacio _.UDT_ZC_INF_CPR_PROD

Estado/estáticos:

Variable Tipo / inicialización
CONSTANT ACTUAL Int := 1
TIPO_DESCARGA_PARCIAL Int := 1
TIPO_DESCARGA_TOTAL Int := 2

Dependencias

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

Lógica clave

Flujo organizado en las regiones: LIMITES_Y_MULTIPLEXADOORDEN_INICIO_FINADQUISICION_DE_DATOSBORRADO_INFORMES. Mecanismos relevantes detectados: recorridos iterativos, decisiones condicionales, detección de flancos. Operaciones señaladas por el código: ==========================================================================================================; Calculo limites array de informes; Si no hay informes configurados, salimos inmediatamente.; Limites multiplexado; Orden de inicio; Orden de fin; Estados anteriores; Con flanco de guardar datos fecha de inicio, desplazamos los registros y almacenamos la fecha de inicio; Desplazamiento de datos; Tomar valor de fecha de inicio.

FB FB15052_ZC_INF_PROD_MEM

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Informes/FB15052_ZC_INF_PROD_MEM.s7dcl
  • Tipo: FB

Propósito general

Bloque de funcion que implementa la gestión de los datos de informe de producción de una máquina de membranas, manteniendo un histórico de hasta #N_REGISTROS producciones con todos los datos relevantes del proceso (volúmenes, Brix, FCV, temperaturas, tiempos, destinos y producto) para su trazabilidad y consulta desde el sistema de supervisión. Funcionalidades principales: - Detección de flanco ascendente en las órdenes #OrdenInicioInforme y #OrdenFinInforme mediante las variables estáticas #s_P_Trig_Inicio y #s_P_Trig_Fin, generando los pulsos internos #s_OrdenInicioInforme y #s_OrdenFinInforme. - Inicialización de informe: al recibir #s_OrdenInicioInforme se desplazan los informes existentes una posición hacia abajo mediante MOVE_BLK_VARIANT, se reinicializan los campos del nuevo informe activo (#Informe[#ACTUAL]: fechas, tiempo de producción, destinos, producto, litros, Brix, FCV y temperaturas) y se almacena la fecha/hora de inicio mediante la conversión realizada por FC15005_ZC_DTL_TO_ZC_FECHA. - Datos en curso: mientras #EnProduccion está activo, se copian en #Informe[#ACTUAL] los valores de proceso en tiempo real: tiempo de producción, destinos de concentrado y permeado, código de producto, litros (entrada, concentrado y permeado por diferencia), Brix, FCV y las tres temperaturas (concentrado, permeado y entrada), aplicando LREAL_TO_REAL para adaptar la precisión al tipo de dato del UDT. - Fin de informe: al detectar #s_OrdenFinInforme se registra la fecha/hora de fin en #Informe[#ACTUAL].FechaFin. - Borrado masivo: la entrada #s_Borrar permite limpiar completamente todos los registros del array, inicializando fechas, tiempos, litros, Brix, FCV, temperatura de concentrado y código de producto a sus valores neutros. La propia variable de orden se autodesactiva tras la operación. > Restricciones: PLC serie 1200/1500.

Interfaz principal

Entradas:

Variable Tipo / inicialización
OrdenInicioInforme Bool
OrdenFinInforme Bool
EnProduccion Bool
FechaHoraActual DTL
Producto Int
DestinoConcentrado Int
DestinoPermeado Int
LitrosEntrada LReal
LitrosConcentrado LReal
Brix LReal
Fcv Real
TempEntrada LReal
TempConcentrado LReal
TempPermeado LReal
TiempoProduccion _.UDT_ZC_CONTADOR_TIEMPO

Entrada/salida (in/out):

Variable Tipo / inicialización
Informe Array[*] of _.UDT_ZC_INF_PROD_MEM

Estado/estáticos:

Variable Tipo / inicialización
s_OrdenInicioInforme Bool
s_OrdenFinInforme Bool

Estado retentivo:

Variable Tipo / inicialización
s_oldInicio Bool
s_oldFin Bool

Estado/estáticos:

Variable Tipo / inicialización
s_OrdenBorrarInforme Bool
s_NumeroBorrado Int

Temporales:

Variable Tipo / inicialización
for_i Int
t_dummyInt Int
t_IndiceSuperior Int
t_IndiceInferior Int
t_InformeVacio _.UDT_ZC_INF_PROD_MEM

Estado/estáticos:

Variable Tipo / inicialización
CONSTANT ACTUAL Int := 1

Dependencias

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

Lógica clave

Flujo organizado en las regiones: LIMITESGESTION_ORDENESINICIALIZACIONDATOS_DURANTE_PRODUCCIONFIN_INFORMEBORRADO_DATOS. Mecanismos relevantes detectados: recorridos iterativos, decisiones condicionales, detección de flancos. Operaciones señaladas por el código: (C)Copyright ZeusControl 2023 - 2026; ==========================================================================================================; Calculo limites array de informes; Si no hay informes configurados, salimos inmediatamente.; Orden de inicio; Orden de fin; Estados anteriores; Desplazamiento de datos; Reinicializacion de los datos; Guardado de fecha y hora actual.

FB FB15053_ZC_INF_LIMP_MAQ

  • Archivo: Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Informes/FB15053_ZC_INF_LIMP_MAQ.s7dcl
  • Tipo: FB

Propósito general

Bloque de funcion que implementa la gestión de los datos de informe de limpieza de la máquina, manteniendo un histórico de hasta #N_REGISTROS limpiezas con todos los datos relevantes de cada fase (básica 1, ácida y básica 2): tiempo total, tipo de limpieza, temperaturas, conductividades de limpieza y enjuague, porcentaje de caudal de referencia y tiempo de recirculación por etapa. Se utiliza en máquinas de membranas para trazabilidad y consulta desde el sistema de supervisión. Funcionalidades principales: - Detección de flanco ascendente y descendente en #EnLimpieza mediante las variables estáticas #s_P_Trig_Inicio y #s_P_Trig_Fin, generando el pulso de inicio #s_OrdenInicioInforme y el de fin #s_OrdenFinInforme. - Inicialización del informe: al recibir #s_OrdenInicioInforme se desplazan los informes existentes una posición hacia abajo mediante MOVE_BLK_VARIANT, se reinicializan a cero los contadores internos de recirculación (#TiempoRecircBasica1, #TiempoRecircAcida, #TiempoRecircBasica2) y los campos del nuevo informe activo (#Informe[1]: tipo de limpieza, tiempos de recirculación por fase, tiempo total, temperaturas, conductividades y porcentajes de caudal de referencia de cada fase). Se almacena la fecha/hora de inicio mediante la conversión realizada por FC15005_ZC_DTL_TO_ZC_FECHA. - Datos en curso: mientras #EnLimpieza está activo, se incrementan los contadores de tiempo de recirculación de cada fase (#TiempoRecircBasica1, #TiempoRecircAcida, #TiempoRecircBasica2) cuando el pulso de 1 segundo y el flag de fase correspondiente (#LimpBasica1, #LimpAcida, #LimpBasica2) están activos, y se copian en #Informe[1] los valores de proceso en tiempo real: tipo de limpieza, tiempo total de limpieza, temperatura, conductividad de limpieza, conductividad de enjuague, porcentaje de caudal de referencia y tiempo de recirculación para cada una de las tres fases. - Fin de informe: al detectar #s_OrdenFinInforme se registra la fecha/hora de fin en #Informe[1].FechaFin. - Borrado masivo: la entrada #s_Borrar permite limpiar completamente todos los registros del array, inicializando fechas, tipo de limpieza, tiempos de recirculación, tiempo total, temperaturas, conductividades y porcentajes de caudal de referencia a sus valores neutros. La propia variable de orden se autodesactiva tras la operación. > Restricciones: Ninguna.

Interfaz principal

Entradas:

Variable Tipo / inicialización
EnLimpieza Bool
LimpBasica1 Bool
LimpAcida Bool
LimpBasica2 Bool
Pulso1Seg Bool
FechaHoraActual DTL
TempBasica1 LReal
CTLimpBasica1 LReal
CTEnjBasica1 LReal
PorcentajeQRefBasica1 LReal
TempAcida LReal
CTLimpAcida LReal
CTEnjAcida LReal
PorcentajeQRefAcida LReal
TempBasica2 LReal
CTLimpBasica2 LReal
CTEnjBasica2 LReal
PorcentajeQRefBasica2 LReal
TipoLimpieza Int
TiempoLimpieza _.UDT_ZC_CONTADOR_TIEMPO

Entrada/salida (in/out):

Variable Tipo / inicialización
Informe Array[*] of _.UDT_ZC_INF_LIMP_MAQ

Estado/estáticos:

Variable Tipo / inicialización
s_OrdenInicioInforme Bool
s_OrdenFinInforme Bool

Estado retentivo:

Variable Tipo / inicialización
s_oldInicio Bool
s_oldFin Bool

Estado/estáticos:

Variable Tipo / inicialización
s_OrdenBorrarInforme Bool
s_NumeroBorrado Int

Estado retentivo:

Variable Tipo / inicialización
TiempoRecircBasica1 Int
TiempoRecircAcida Int
TiempoRecircBasica2 Int

Temporales:

Variable Tipo / inicialización
for_i Int
t_dummyInt Int
t_IndiceSuperior Int
t_IndiceInferior Int
t_InformeVacio _.UDT_ZC_INF_LIMP_MAQ

Estado/estáticos:

Variable Tipo / inicialización
CONSTANT ACTUAL Int := 1

Dependencias

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

Lógica clave

Flujo organizado en las regiones: LIMITESGESTION_ORDENESINICIALIZACIONDATOS_DURANTE_PRODUCCIONFIN_INFORMEBORRADO_DATOS. Mecanismos relevantes detectados: recorridos iterativos, decisiones condicionales, detección de flancos. Operaciones señaladas por el código: (C)Copyright ZeusControl 2025 - 2026; ==========================================================================================================; Calculo limites array de informes; Si no hay informes configurados, salimos inmediatamente.; Orden inicio produccion; Orden fin produccion; Estados anteriores; Desplazamiento de datos; Reinicializacion de los datos; Guardado de fecha y hora actual.

FC FC11_ZC_INF_GESTOR

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

Propósito general

Función para la gestión e interfaz de escritura de informes hacia el sistema SCADA/HMI mediante una máquina de estados y la lectura de un buffer. Las tareas que realiza son las siguientes: - Extracción de datos del buffer: Búsqueda inversa del registro más antiguo pendiente de envío evaluando la condición Registrar = 1 mediante un bucle FOR. - Transferencia del registro a la estructura estática Gestion.Datos y generación de un Id único basado en la fecha y hora actual. - Limpieza inmediata de todas las variables (Booleanos, Reales, Enteros, Fechas y Strings) en la posición original del buffer. - Ejecución de la etapa REPOSO: Activación de la secuencia ante la orden OrdenIniciar, siempre que se detecte conexión con el SCADA y la habilitación general esté activa. - Ejecución de la etapa ESPERA_ENTRE_AVISOS: Temporización basada en pulsos de 1 segundo (Pulso1Seg) antes de un reintento. Deriva a fallo si se supera el máximo de intentos. - Ejecución de la etapa LANZAR_AVISO: Activación de la señal Aviso.Registrar hacia el SCADA y paso a espera tras cumplirse el tiempo parametrizado. - Ejecución de la etapa ESPERA_CONFIRMACION: Monitoreo de la respuesta del sistema superior. Si Aviso.Estado es igual a 4, el envío es exitoso. Si hay error (estado 12) o agotamiento de tiempo, se incrementa el contador de intentos y se repite el ciclo. - Ejecución de la etapa FALLO: Generación de una traza de sistema (TRZ_CAT_1_SYS) registrando el código de error TRZ_SYS_INF_ERR ante la imposibilidad de entrega del informe. - Ejecución de la etapa BORRAR_DATOS: Reseteo íntegro de la estructura Gestion.Datos para preparar el sistema para el próximo ciclo de comunicación y retorno al estado de reposo.

Interfaz principal

Entradas:

Variable Tipo / inicialización
Pulso1Seg Bool

Temporales:

Variable Tipo / inicialización
for_i Int
t_PosicionRegistro Int
t_RegistroEncontrado Bool
t_RetVal Int

Estado/estáticos:

Variable Tipo / inicialización
CONSTANT REPOSO Int := 0
ESPERA_ENTRE_AVISOS Int := 10
LANZAR_AVISO Int := 20
ESPERA_CONFIRMACION Int := 30
FALLO Int := 40
BORRAR_DATOS Int := 50

Dependencias

Clase Elementos referenciados/llamados
DB DB11_INF, DB1_SYS
FC FC15006_ZC_DTL_TO_STRING, FC8_ZC_TRZ_REGISTRO

Lógica clave

Flujo organizado en las regiones: GESTION_INFORMESSECUENCIA_INFORME. Mecanismos relevantes detectados: recorridos iterativos, máquina de estados/selección CASE, decisiones condicionales. Operaciones señaladas por el código: ==========================================================================================================; =============================================================================; COPIAMOS EL ULTIMO REGISTRO (El mas antiguo) A LA VARIABLE REGISTRO QUE ES LA; ENCARGADA DE COMUNICARLA CON EL SCADA/HMI; Buscamos el ultimo registro; Registro encontrado; Si hemos encontrado el registro, copiamos a variable estatica; Copiamos el los datos de la traza a variable estatica para tratarla; Quitamos el registro del buffer; Si existe registro a trazar, lanzamos la orden de iniciar la secuencia.

FC FC12_ZC_INF_REGISTRO

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

Propósito general

Función para el almacenamiento y estructuración masiva de registros de trazabilidad dentro del buffer de informes del sistema. En ella se realizan las siguientes acciones: - Comprobación de habilitación: Verificación de la variable de permiso HabilitacionGeneral; si no se encuentra activa, se omite la ejecución del bloque mediante un retorno anticipado. - Desplazamiento de datos (FIFO): - Ejecución de la instrucción de bloque para desplazar todos los registros existentes en el Buffer una posición hacia abajo. - Liberación del índice 0 del array para permitir la inserción del nuevo registro sin sobrescribir el histórico reciente. - Gestión e inserción del nuevo registro: - Generación y asignación de un identificador único (Id) transformando la fecha y hora actual del sistema a formato cadena. - Escritura de los metadatos de control y catalogación (Registrar, Tipo, Codigo) en la primera posición del buffer. - Procesamiento y validación de hasta 4 marcas de tiempo dinámicas (Fecha_1 a Fecha_4), forzando una fecha por defecto (01/01/1970) si el año recibido es 0. - Mapeo y transferencia masiva de todas las variables de proceso vinculadas al evento, incluyendo cadenas de texto (CodString_1 a 15), booleanos (Bool_1 a 32), reales (Real_1 a 20) y enteros (Int_1 a 20).

Interfaz principal

Entradas:

Variable Tipo / inicialización
Registrar USInt
Tipo Int
Codigo String
Fecha_1_Ano UInt
Fecha_1_Mes USInt
Fecha_1_Dia USInt
Fecha_1_DiaSemana USInt
Fecha_1_Hora USInt
Fecha_1_Minuto USInt
Fecha_1_Segundo USInt
Fecha_1_NanoSegundo UDInt
Fecha_2_Ano UInt
Fecha_2_Mes USInt
Fecha_2_Dia USInt
Fecha_2_DiaSemana USInt
Fecha_2_Hora USInt
Fecha_2_Minuto USInt
Fecha_2_Segundo USInt
Fecha_2_NanoSegundo UDInt
Fecha_3_Ano UInt
Fecha_3_Mes USInt
Fecha_3_Dia USInt
Fecha_3_DiaSemana USInt
Fecha_3_Hora USInt
Fecha_3_Minuto USInt
Fecha_3_Segundo USInt
Fecha_3_NanoSegundo UDInt
Fecha_4_Ano UInt
Fecha_4_Mes USInt
Fecha_4_Dia USInt
Fecha_4_DiaSemana USInt
Fecha_4_Hora USInt
Fecha_4_Minuto USInt
Fecha_4_Segundo USInt
Fecha_4_NanoSegundo UDInt
CodString_1 Int
CodString_2 Int
CodString_3 Int
CodString_4 Int
CodString_5 Int
CodString_6 Int
CodString_7 Int
CodString_8 Int
CodString_9 Int
CodString_10 Int
CodString_11 Int
CodString_12 Int
CodString_13 Int
CodString_14 Int
CodString_15 Int
Bool_1 Bool
Bool_2 Bool
Bool_3 Bool
Bool_4 Bool
Bool_5 Bool
Bool_6 Bool
Bool_7 Bool
Bool_8 Bool
Bool_9 Bool
Bool_10 Bool
Bool_11 Bool
Bool_12 Bool
Bool_13 Bool
Bool_14 Bool
Bool_15 Bool
Bool_16 Bool
Bool_17 Bool
Bool_18 Bool
Bool_19 Bool
Bool_20 Bool
Bool_21 Bool
Bool_22 Bool
Bool_23 Bool
Bool_24 Bool
Bool_25 Bool
Bool_26 Bool
Bool_27 Bool
Bool_28 Bool
Bool_29 Bool
Bool_30 Bool
Bool_31 Bool
Bool_32 Bool
Real_1 Real
Real_2 Real
Real_3 Real
Real_4 Real
Real_5 Real
Real_6 Real
Real_7 Real
Real_8 Real
Real_9 Real
Real_10 Real
Real_11 Real
Real_12 Real
Real_13 Real
Real_14 Real
Real_15 Real
Real_16 Real
Real_17 Real
Real_18 Real
Real_19 Real
Real_20 Real
Int_1 Int
Int_2 Int
Int_3 Int
Int_4 Int
Int_5 Int
Int_6 Int
Int_7 Int
Int_8 Int
Int_9 Int
Int_10 Int
Int_11 Int
Int_12 Int
Int_13 Int
Int_14 Int
Int_15 Int
Int_16 Int
Int_17 Int
Int_18 Int
Int_19 Int
Int_20 Int

Temporales:

Variable Tipo / inicialización
t_dummy Int
t_fecha_vacia DTL

Dependencias

Clase Elementos referenciados/llamados
DB DB11_INF, DB1_SYS
FC FC15006_ZC_DTL_TO_STRING
Instrucción Siemens / librería MOVE_BLK_VARIANT

Lógica clave

Flujo organizado en las regiones: COMPROBACION_HABILITACIONDESPLAZAMIENTO_DE_DATOSGESTION_REGISTRO_INFORME. Mecanismos relevantes detectados: decisiones condicionales. Operaciones señaladas por el código: ==========================================================================================================; Si no esta habilitado los informes, salimos de la funcion.; Desplazamos los datos del buffer una posicion hacia abajo; Grabamos el nuevo registro.