Obsidean_VM/04-SIDEL/00 - MASTER/MIXER/Documentacion/Análisis del Software PLC M...

9.4 KiB

Análisis del Software PLC Mixer/Starblend (TIA Portal v18)

Basado en el archivo full_project_representation.md. Análisis técnico del software PLC para un ingeniero informático familiarizado con PLCs.

Fase 1: Estructura General y Tipos de Datos (UDTs)

Organización del Proyecto

El proyecto sigue una estructura estándar y modular en TIA Portal:

  • Tipos de Datos PLC (UDTs): Definen estructuras de datos personalizadas y reutilizables. Fundamental para estandarizar el manejo de dispositivos y datos complejos.
  • Bloques de Función (FBs): Encapsulan lógica de control reutilizable con memoria asociada (DBs de instancia). Ideales para controlar componentes como válvulas, motores, o implementar lógica compleja como PID o secuenciadores.
  • Funciones (FCs): Contienen lógica reutilizable sin memoria propia. Usadas para cálculos, conversiones, o tareas específicas que no requieren estado persistente.
  • Bloques de Datos (DBs):
    • Globales: Almacenan datos compartidos por todo el programa (Configuración, Estado, Interfaces).
    • De Instancia: Almacenan los datos internos (estado) de cada llamada a un FB.
  • Variables PLC (Tags): Variables globales (Marcas, Temporizadores, Contadores).

La conversión de LAD a SCL probablemente se enfocó en FBs y FCs para mejorar la estructuración, legibilidad y capacidad de implementar algoritmos complejos.

Tipos de Datos PLC (UDTs) Relevantes

Los UDTs definen las plantillas para los datos de componentes comunes:

  • AnalogInstrument: Estructura estándar para entradas analógicas (sensores). Incluye PV, SP, escalado (Zero, Span), valor filtrado (PVFiltered), y estados (Alarm, Mask, Wait).
  • CIP_Link_Type: Define la interfaz de datos con el sistema CIP (peticiones, estados, fase actual).
  • Cylinder_Valve / MotorValve: Para control de válvulas. Incluyen comandos (Open, Close), realimentaciones (Opened, Closed), y estados (Fault). MotorValve podría incluir posición.
  • DosingCtrl: Específico para control de dosificación. Contiene setpoints, valores actuales, estado de actuador asociado.
  • DriveCtrl: Para control de motores/bombas. Incluye comandos (Start, Stop), feedback (Running, Fault), y posible control de velocidad.
  • FlowMeter: Representa un medidor de flujo. Incluye Flow Rate, Totalizer, y estado.
  • HMI_Commands: Estructura para recibir comandos desde el HMI.
  • HMI_Status: Estructura para enviar datos de estado/proceso al HMI.
  • LevelProbe: Representa sondas de nivel (analógicas o discretas).
  • PID_Compact: Probablemente encapsula los parámetros y E/S para el bloque PID_Compact de Siemens.
  • TankLevelCtrl: Estructura para el control de nivel en tanques (sondas, setpoints, control de actuadores).
  • Totalizer: Estructura genérica para acumular valores (volumen, masa).

Observación: El uso intensivo de UDTs promueve la modularidad y facilita la creación de instancias para múltiples dispositivos idénticos.

Fase 2: Bloques de Función (FBs) y Funciones (FCs) Clave

Agrupados por funcionalidad del Mixer/Starblend:

Control Principal y Secuencia

  • BlenderCtrl__Main (FB): Controlador principal. Gestiona estados generales (Parado, Producción, CIP), coordina sub-funciones, maneja totalizadores generales (ref: mResetProductTotTmr, mResetTotalizerTmr).
  • BlenderRun__Control (FB): Gestiona la secuencia de producción. Inicia/detiene dosificación, carbonatación, fases de arranque/parada (ref: mTON_Reset_RecircPHE_Goo).
  • SequenceControl (FB): Posiblemente un secuenciador genérico utilizado por los anteriores.
  • ManageState (FC): Determina el estado operativo de la máquina basado en condiciones actuales.

Dosificación y Control de Ratio

  • DosingControl (FB): Controla la adición de un ingrediente (agua, jarabe). Se instanciará varias veces. Recibe setpoint y actúa sobre válvula/bomba.
  • RatioControl (FB): Crítico. Mantiene la proporción (Brix) entre ingredientes. Lee flujos (de FlowMeter / AnalogInstrument), calcula el ratio actual y ajusta los setpoints de los DosingControl. Puede usar PID.
  • FlowControl (FB): Podría ser un control de flujo genérico (PID) usado por DosingControl o RatioControl.
  • AnalogScaling (FC/FB): Convierte lecturas de sensores (INT) a unidades de ingeniería (REAL).
  • FlowMeter (Lógica asociada): Lee caudal, calcula totalizado.
  • TotalizerCtrl (FB): Gestiona cálculo y reseteo de totalizadores específicos.
  • CalculateRatio (FC): Contiene la fórmula matemática para el cálculo de ratio.

Control de Tanques y Niveles

  • TankLevel (FB): Gestiona nivel de un tanque específico (ej. producto, desaireador). Incluye lógica de control y alarmas (ref: mSyrTank_LevFault2, mSyrTank_LoadDelay).
  • LevelControl (FB): Control de nivel genérico (ON/OFF o PID).
  • DeaerationControl (FB): Específico para el tanque de desaireación (nivel de agua, bomba de vacío).

Carbonatación

  • CarbonationControl (FB): Gestiona inyección de CO2. Controla válvula/dosificador basado en setpoint y medición (flujo CO2, P/T). Puede usar PID.

Control de Calidad

  • ProductQuality (FB): Monitoriza parámetros clave (Brix, CO2, Temperatura). Gestiona alarmas relacionadas (ref: mTTM306_H2O_HighDlyAlm).
  • SelCheckBrixSource (FB): Selecciona y valida la fuente de medición de Brix si hay múltiples (sensor en línea, cálculo densidad). Gestiona alarmas con retardo (ref: mSyrBxDelayAlrm, mSyrDensDelayAlrm).

Control de Actuadores (Válvulas y Bombas)

  • ValveCtrl (FB): Control individual de válvulas (ON/OFF, modulantes). Lógica de comando, feedback, fallo, interlocks. Asociado a UDTs Cylinder_Valve / MotorValve.
  • MotorCtrl (FB): Control de bombas/motores. Start/Stop, estado, fallo. Asociado a UDT DriveCtrl.
  • PumpsControl (FB): Gestiona un grupo de bombas (alternancia, habilitación, fallos centralizados) (ref: mSyrRoomH2OPumpFaultDly).

Limpieza CIP

  • CIPMain_Flood / CIPMain_Path (FBs): Gestionan secuencias CIP (inundación de tanques, limpieza de líneas). Interactúan con sistema CIP central (vía CIP_Link_Type, CIP_Interface_DB). (ref: mSyrTank_Flood).

Comunicación Externa

  • Com_Filler (FC/FB): Lógica de comunicación con la llenadora (listo, demanda, E-Stop). Vía señales o bus, usando Filler_Interface_DB.
  • Com_SyrupRoom (FC/FB): Lógica de comunicación con sala de jarabes (petición, confirmación). Usando SyrupRoom_Interface_DB.

Utilidades y Funciones Generales

  • AnalogAlarm (FB): Genera alarmas estándar para valores analógicos.
  • HandleAlarms (FC): Posiblemente centraliza la gestión de alarmas (activación, reconocimiento).
  • HMI_Interface (FC): Agrupa lógica de intercambio de datos con el HMI (vía HMI_Commands, HMI_Status, HMI_DB).

Fase 3: Bloques de Datos (DBs) y Variables (Tags)

Bloques de Datos Globales (GDBs)

  • Configuration_DB / Parameters_DB: Crucial. Almacena todos los parámetros configurables (setpoints de ratio/Brix, flujos, límites de alarma, tiempos, PIDs, recetas). Su estructura define la flexibilidad y ajuste de la máquina.
  • Status_DB: Almacena el estado actual de la máquina y valores de proceso importantes para lógica interna y HMI.
  • Alarms_DB: Contiene el estado de todas las alarmas definidas.
  • Interface_DBs (Filler_Interface_DB, SyrupRoom_Interface_DB, CIP_Interface_DB): Buffers de datos para la comunicación con sistemas externos.

Bloques de Datos de Instancia (IDBs)

  • Cada uso de un FB crea un IDB asociado (ej. DosingControl_Water_DB). Almacenan el estado interno (VAR_STAT) y parámetros específicos de esa instancia.

Variables PLC (Tags)

  • Variables m... (ej. mSyrBxDelayAlrm): Memorias internas (flags, condiciones, triggers). Sus nombres suelen indicar su propósito.
  • Temporizadores (implícitos en ...Tmr, ...Dly, TON_...): Usados para retardos, debounce, timeouts en secuencias.

Próximos Pasos Sugeridos

Para profundizar el análisis:

  1. Analizar Lógica Interna de FBs Clave: Revisar el código SCL (si disponible) de RatioControl, BlenderRun__Control, DosingControl.
  2. Detallar Estructura del Configuration_DB: Identificar parámetros clave y su impacto.
  3. Examinar Lógica de Comunicación: Ver detalles del intercambio de señales/datos con Llenadora, Sala Jarabes, CIP.
  4. Analizar Manejo de Estados y Alarmas: Diagrama de estados de la máquina y flujo de gestión de alarmas.
  5. Revisar Implementación de PID: Configuración y uso de PID_Compact u otros bloques PID.

Próximos Pasos Sugeridos:

Para profundizar, podríamos enfocarnos en:

  1. Analizar la lógica interna de FBs clave: Como RatioControl, BlenderRun__Control, o DosingControl. Si tienes el código SCL de estos bloques, podríamos revisarlo.
  2. Detallar la estructura del Configuration_DB: Identificar qué parámetros son configurables y cómo afectan el funcionamiento.
  3. Examinar la lógica de comunicación: Ver cómo se gestionan exactamente las señales con la Llenadora, Sala de Jarabes y CIP.
  4. Analizar el manejo de estados y alarmas: Cómo transita la máquina entre estados y cómo se generan y gestionan las alarmas.
  5. Revisar la implementación del PID: Si se usa PID_Compact u otro, ver cómo está configurado y cómo se integra en el control de flujo, nivel o carbonatación.