17 KiB
- OB1
- FC2000 : MIX - Blender Ctrl Main
- FC1860 :
- FC2000 : MIX - Blender Ctrl Main
Documentación del Software de Control de Mixer (TIA Portal)
1. Introducción
Este documento describe la estructura y el funcionamiento del software desarrollado en TIA Portal para el control de un proceso de mezclado (Mixer/Blender). El software está escrito principalmente en SCL (Structured Control Language), con algunos componentes originados en LAD o STL. El objetivo es proporcionar una visión general de las funciones, bloques de datos y lógica de control para facilitar su estudio y comprensión.
2. Arquitectura General
El software parece seguir una estructura modular común en TIA Portal, utilizando:
- Bloques de Función (FB): Encapsulan lógica compleja y mantienen su propio estado (datos de instancia). Ejemplos:
BlenderPID_PIDSPCalc
,BlenderPID_ActualRecipe
,MFMAnalogValues
. - Funciones (FC): Realizan tareas específicas sin mantener un estado interno persistente entre llamadas. Ejemplos:
BlenderCtrl_InitErrors
,BlenderRun_SelectConstan
,CO2EqPress
. - Bloques de Datos (DB): Almacenan datos del sistema, como parámetros de configuración, variables de proceso, recetas, estados de HMI y datos persistentes. Ejemplos:
Blender_Constants
,Blender_Variables
,HMI_Blender_Parameters
,HMI_PID
,Recipe__XX
.
La ejecución probablemente está organizada en Tareas (OBs cíclicos, de alarma, etc.) que llaman a los FBs y FCs principales. La lógica principal se centra en:
- Gestión de Recetas: Carga, interpreta y aplica parámetros de recetas de producción y CIP.
- Control de Procedimientos: Secuencia las operaciones de la máquina (arranque, producción, parada, enjuague, CIP, runout).
- Control PID: Regula flujos (agua, sirope, CO2), niveles y presiones mediante controladores PID con cálculo de FeedForward.
- Monitorización y Alarmas: Supervisa el estado del proceso, detecta fallos y gestiona alarmas.
- Interfaz HMI: Intercambia datos con la interfaz Hombre-Máquina para visualización y comandos.
- Manejo de I/O: Interactúa con sensores, actuadores y medidores de flujo (posiblemente vía Profibus/Profinet).
- Configuración: Adapta el funcionamiento según el modelo de máquina y opciones seleccionadas.
3. Bloques de Datos Clave (DBs)
Estos son algunos de los DBs más importantes identificados:
Blender_Constants
(DB972): Almacena constantes físicas y de proceso (densidades, factores de conversión, constantes de PID base, tiempos, etc.).[583]Blender_Variables
(DB971): Contiene variables de proceso en tiempo real (flujos medidos, SP calculados, errores, niveles, etc.).[599]Blender_Variables_Pers
(DB970): Guarda variables que deben persistir entre ciclos de encendido/apagado (flags de tipo de receta, totalizadores, horas de funcionamiento).[623]HMI_Blender_Parameters
(DB1001): Interfaz principal para parámetros de HMI. Contiene:Processor_Options
: Opciones de configuración de la máquina (modelo, presencia de equipos como carbonatador, enfriador, tipo de medidores, etc.). ¡Importante para los selectores![1095]Actual_Recipe_Parameters
: Parámetros de la receta activa.[1096]ProcessSetup
: Parámetros de configuración del proceso (presiones, constantes de pérdida, tiempos, etc.).[1097]
HMI_PID
(DB1013): Estructura de datos para todos los controladores PID del sistema (parámetros Kp, Ti, Td, SP, PV, Out, flags de modo manual, etc.).[1135]HMI_Device
(DB1010): Estructura de datos para controlar y monitorizar dispositivos individuales (válvulas, bombas) con sus estados (abierto, cerrado, manual, fallo, etc.).[1098]HMI_Instrument
(DB1011): Almacena valores y estados de instrumentos analógicos (niveles, presiones, temperaturas, flujos, etc.).[1122]HMI_Digital
(DB1012): Almacena estados de instrumentos digitales (sensores de nivel discretos, etc.).[1118]Procedure_Variables
(DB960): Contiene flags y estados para gestionar la ejecución de diferentes procedimientos (arranque, producción, parada, CIP, runout, etc.).[1475]PID_Variables
(DB961): Variables intermedias utilizadas específicamente en los cálculos de los PID (valores delta P, pérdidas por fricción, valores integrales guardados).[1459]Profibus_Variables
(DB973): Almacena datos leídos desde dispositivos Profibus (probablemente medidores de flujo Maselli, Endress+Hauser, MicroMotion, etc.).[1560]System_RunOut_Variables
(DB962): Gestiona el proceso de fin de producción (runout) y cambio rápido de formato (QCO).[1877]Recipe__XX
(DB401-DB450): Almacenan los datos de las recetas de producción.[1594]-[1693]CIPRecipe_XX
(DB501-DB530): Almacenan los datos de las recetas CIP.[775]-[834]- Otros DBs HMI:
HMI_Alarms
(DB1000)[1092],HMI_Variables_Cmd
(DB1005)[1156],HMI_Variables_Status
(DB1006)[1158],HMI_Local_CIP_Variables
(DB1003)[1133],HMI_Service
(DB1004)[1154],HMI_Recipe_Edit
(DB1008)[1140],HMI_Recipe_Name
(DB1009)[1142] gestionan diferentes aspectos de la interfaz HMI.
4. Módulos de Funcionalidad Principal
4.1. Control Principal y Secuenciación
- Gestión de Procedimientos: Los flags en
Procedure_Variables
(DB960) indican el estado de las secuencias (arranque, producción, parada, etc.). Funciones comoBlenderCtrl_ResetSPWord
(FC2014)[12] yBlenderCtrl_UpdatePWord
(FC2034)[17] parecen gestionar la activación y el estado de los actuadores (gSP_...
->gP_...
) según lo requiera cada paso del procedimiento. - Modo Automático/Manual:
BlenderCtrl_All Auto
(FC2036)[1] yBlenderCtrl_ManualActive
(FC2037)[7] gestionan el estado general y las alarmas relacionadas con los modos de operación.
4.2. Control PID
Este es el núcleo del control de proceso continuo.
BlenderPID__Main
(FB): Orquesta la lógica PID. Llama a otros bloques para inicializar parámetros y calcular SPs/FF. Transfiere PVs a los PIDs y gestiona modos (Auto/Manual, Simulación, CIP).[412]BlenderPID_PIDSPCalc
(FB): Calcula los Setpoints (SP) para los PIDs principales (flujos de aguaRMM301
, siropeRMP302
, CO2RMM303
, GAS2RMM304
; presión tanqueRVM301
; nivelesRVP303
,RVN302
; temperaturaRVM319
) basándose en la receta activa, el modo de operación, las rampas de velocidad, la demanda del llenador y las correcciones por error.[286] Llama a funciones comoCO2EqPress
[968],DeairCO2TempComp
[1007],MaxCarboCO2 Vol
[1256].BlenderPID_PIDFFCalc
(FB): Calcula los valores de FeedForward (FF) para los PIDs de flujo y nivel, anticipando la apertura de las válvulas según el SP y las condiciones de presión/fricción.[151] UtilizaFrictionLoss
[1069] yFeedForward
[1037].BlenderPID_PIDInitParam
(FB): Inicializa y ajusta dinámicamente los parámetros de los PID (Kp, Ti, Td) según las condiciones (estabilidad, modo parada).[209]BlenderPID_BlendingFault
(FB): Monitoriza los errores acumulados de mezcla (gBlendError
) y carbonatación (gCarboCO2Error
) y genera alarmas si exceden los límites definidos.[116]BlenderPIDCtrl_SaveInteg
(FB): Guarda el término integral de los PIDs cuando el flujo es mínimo y estable, para mejorar el arranque posterior.[32]BlenderPID_PIDResInteg
(FC): Resetea los términos integrales de los PIDs.[274]- Otros PIDs: Se gestionan PIDs específicos como el de liberación de presión (
BlenderPIDCtrl_PresRelea
)[25] y el control de cabezal de llenado (PID_Filling_Head_Calc
)[1446].
4.3. Gestión de Recetas
RecipeManagement___Prod
(FC1798): Gestiona la carga, guardado, edición, copia y borrado de recetas de producción (probablemente interactuando con DBsRecipe__XX
y HMI).[1711]CIPRecipeManagement
(FC1799): Gestión similar para las recetas CIP (usando DBsCIPRecipe_XX
).[835]BlenderPID_ActualRecipe
(FB): Interpreta los parámetros de la receta activa (HMI_Blender_Parameters.Actual_Recipe_Parameters
) y configura los flags y variables de operación correspondientes (gSugarBeverage
,gWaterRecipe
,gCarboStillRecipe
,gSkipDeaireation
, niveles de tanque, etc.).[86]RecipeCalculation
(FC): Calcula valores dependientes dentro de la edición de recetas (ej. densidad a partir de Brix, ratio a partir de Brix, etc.).[1694]
4.4. Configuración de Máquina y Constantes (Selectores DIP)
La configuración principal de la máquina parece realizarse a través del parámetro _ModelNum
dentro de HMI_Blender_Parameters.Processor_Options.Blender_OPT
. Este número (probablemente ajustado vía HMI o selector físico) determina qué conjunto de constantes se carga:
-
BlenderRun_SelectConstan
(FC): Esta función es clave. Utiliza una estructuraCASE
sobreHMI_Blender_Parameters.Processor_Options.Blender_OPT._ModelNum
(valores 0 a 10).[523]- Para cada
_ModelNum
: Se asignan valores específicos a variables enBlender_Variables
(DB971), tales como:gWaterVFM_DN
,gSyrupMFM_DN
,gWaterPipe_DN
: Diámetros nominales de medidores y tuberías.[524, 527, 531, 535, 539, 543, 547, 551, 555, 559, 563]gSyrupMFMZeroStab
: Estabilidad del cero del medidor de sirope.[524, 528, 532, 536, 540, 544, 548, 552, 556, 560, 564]gProdTankVolume
,gDeairTankVolume
: Volúmenes de los tanques.[525, 529, 533, 537, 541, 545, 549, 553, 557, 561, 565]gBlenderNomSpeed
: Velocidad nominal de producción.[525, 529, 533, 537, 541, 545, 549, 553, 557, 561, 565]gProdTankBottomVol
: Volumen muerto del tanque de producto.[526, 530, 534, 538, 542, 546, 550, 554, 558, 562, 566]gBufferTankProbeHeight
: Altura de la sonda del tanque buffer (diferente para modelos 4-6 y 7-9).[543, 547, 551, 555, 559, 563]
- Después del
CASE
: Se definen otros parámetros base:gMinProduction
: Velocidad mínima de producción (calculada a partir de la nominal).[568, 569]- Errores/Repetibilidad de medidores (
gWaterVFMMeasError
,gSyrupMFMMeasError
, etc.).[573]-[579] - Parámetros de primera producción (
gFirstProdExtraBrix
, etc.).[580] - Tiempos y valores para el runout.[581, 582]
- Para cada
-
Otras Opciones (
HMI_Blender_Parameters.Processor_Options.Blender_OPT
): Flags booleanos que habilitan/deshabilitan funcionalidades o indican presencia de equipos:_Simulation
: Habilita modo simulación (visto enMFMAnalogValues
[1310],Input_CheckFlowMetersSta
[1196])._BrixMeter
,_MeterType
,_Promass
: Configuración del medidor de producto/brix.[87, 88]_CarboPresent
: Indica si hay carbonatador.[94]_CO2_GAS2_Injection
,_GAS2InjectionType
: Configuración de segunda inyección de gas (N2/Aire).[95, 99, 183]_CoolerPresent
,_CoolerControl
: Presencia y tipo de control del enfriador.[93]_Deaireation
,_ByPassDeair
,_StillWaterByPass
: Opciones de desaireación.[107]_BlendFillSystem
: Indica si el sistema está acoplado a un llenador.[108, 110]_FlowMeterType
: Tipo de medidor de flujo (Endress/MicroMotion).[1196, 1278]_WaterPromass
: Indica si el medidor de agua es Promass.[1164, 1293]_SyrupLevel
: Usa nivel en tanque de sirope en lugar de cantidad fija.[1510]_FastChangeOverEnabled
: Habilita cambio rápido de formato.[1873]- ... y otras opciones vistas en el código.
4.5. Manejo de I/O y Dispositivos
- Lectura Analógica:
ReadAnalogIn
(FC1971)[1584] parece escalar y verificar valores analógicos de entrada (PEW). - Escaneo Digital:
Input_DigitalScanner
(FC1719)[1200] procesa entradas digitales, aplicando filtros o lógica de temporización. - Estado de Medidores:
Input_CheckFlowMetersSta
(FC)[1160] interpreta los bytes de estado de los medidores de flujo Profibus para detectar fallos o condiciones EPD (Empty Pipe Detection). - Escaneo de Instrumentos:
Instrument_Scanner
(FC1968)[1203] verifica fallos generales de instrumentación. - Fallo Válvulas Neumáticas:
Pneumatic_Valve_Fault
(FC1969)[1466] monitoriza el estado de las válvulas neumáticas comparando comando y feedback, usando temporizadores definidos enPneumatic_Valve_Fault_DB
(DB969)[1464]. - Interfaz Profibus:
Profibus_Variables
(DB973)[1560] almacena los datos leídos.MFMAnalogValues
(FB)[1267] procesa estos datos (o simula si está activo). - Diagnóstico Profibus/Profinet: Bloques como
GNS_PLCdia_ProfibusData
(DB2416)[1078],GNS_PLCdia_ProfinetData
(DB2415)[1081],HMI_CPU_DP_Diag
(DB174)[1084] yGLOBAL_DIAG_DB
(DB11)[1075] parecen relacionados con el diagnóstico de la red de comunicación.
4.6. Interfaz HMI
- Comandos y Estado:
HMI_Variables_Cmd
(DB1005)[1156] recibe comandos de la HMI.HMI_Variables_Status
(DB1006)[1158] envía el estado del proceso a la HMI. - Visualización de Datos:
Output_AnalogValueToHMI
(FC)[1421] prepara y envía valores analógicos relevantes (flujos, temperaturas, errores, SPs) a la HMI para su visualización. - Alarmas y Mensajes:
HMI_Alarms
(DB1000)[1092] contiene los flags de alarma.ProductQuality_Messages
(FC)[1532] activa mensajes específicos basados en la calidad del producto.MessageScroll
(FC210)[1263] podría gestionar la visualización secuencial de mensajes. - Gestión de Usuarios:
HMI_Key_User
(DB500)[1088] maneja la autenticación y niveles de usuario.
4.7. Control CIP
- Secuenciador CIP: Bloques como
CIPLocal_ExecSimpleCIP
(FC)[682],CIPLocal_ExecStep
(FC)[716],CIPLocal_ProgStepUp
(FC)[766],CIPLocal_ProgStepDown
(FC)[760] ejecutan las recetas CIP paso a paso. - Inicialización Pasos CIP:
CIP_SimpleProgr_Init
(FC)[872] define qué válvulas/bombas activar para cada tipo de paso CIP (Enjuague, Recirculación, Drenaje, etc.). - Datos CIP:
CIP_Program_Variables
(DB963)[869] almacena el estado actual del CIP.CIPReportDB
(DB600)[864] parece ser para reportes.
4.8. Funciones Utilitarias
Se utilizan diversas funciones para cálculos específicos:
- Cálculos Físicos:
SyrupDensity
[1868],WaterDensity
[1903],CO2 Solubility
[962],CO2EqPress
[968],CO2InjPressure
[975],PPM O2
[1469]. - Cálculos de Flujo/Presión:
ValveFlow
[1899],FrictionLoss
[1069],DeltaP
[1029],Flow_To_Press_Loss
[1063],Freq_To_mmH2O
[1067],mmH2O_TO_Freq
[1361],DeaireationValve
[1010]. - Procesamiento de Señales:
Integral
(FB)[1206],LowPassFilter
(FB)[1227],SlewLimit
(FB)[1808],Delay
(FB)[1015],MSE Slope
(FB)[1398],Statistical_Analisys
(FB)[1840]. - Manipulación de Datos/Strings:
Block_compare
(FC61)[634],Block_move
(FC60)[639],DELETE
(FC4)[1020],EQ_STRNG
(FC10)[1033],REPLACE_Mod
(FC32)[1794]. - Otras:
FW_DRand
(FC1922)[1072] (generador aleatorio para simulación),T_Timer
(FC40)[1896] (temporizador simple).
5. Estructura de Llamadas (Inferida)
Como se mencionó, sin el proyecto completo, la jerarquía exacta es difícil de determinar. Sin embargo, algunas interacciones clave son:
- Un OB Cíclico principal (Task0/Task1/Task2?) probablemente llama a:
BlenderPID__Main
(que a su vez llama aBlenderPID_PIDInitParam
,BlenderPID_PIDSPCalc
,BlenderPID_ActualRecipe
, etc.)- Bloques de gestión de procedimientos (que usan
BlenderCtrl_ResetSPWord
,BlenderCtrl_UpdatePWord
). - Bloques de manejo de I/O (
Input_DigitalScanner
,Instrument_Scanner
,MFMAnalogValues
,ReadAnalogIn
). - Bloques de comunicación HMI (
Output_AnalogValueToHMI
,ProductQuality_Messages
). - Gestores de recetas (
RecipeManagement___Prod
,CIPRecipeManagement
). - Control CIP (
CIPLocal_ExecSimpleCIP
). - Control de Runout/QCO (
ProductAvailable
,QCO Monitor
).
BlenderPID_PIDSPCalc
llama a funciones de cálculo comoCO2EqPress
,DeairCO2TempComp
,MaxCarboCO2 Vol
.BlenderPID_PIDFFCalc
llama aFrictionLoss
yFeedForward
.MFMAnalogValues
llama aValveFlow
,DeltaP
,FW_DRand
y utiliza FBs comoSlewLimit
,LowPassFilter
,Delay
.BlenderRun_SelectConstan
es llamado (probablemente al inicio o al cambiar configuración) para establecer constantes.- El secuenciador CIP (
CIPLocal_ExecSimpleCIP
) llama aCIPLocal_ProgStepUp/Down
,CIPLocal_ExecStep
, yCIP_SimpleProgr_Init
.
6. Conclusión
Este software implementa un control completo para un proceso de mezcla, abarcando desde la gestión de recetas y la configuración de la máquina hasta el control PID detallado, la secuenciación de procedimientos (producción, CIP, runout) y la interacción con HMI y periféricos. La configuración de la máquina se basa fuertemente en el _ModelNum
y otros flags dentro de HMI_Blender_Parameters.Processor_Options.Blender_OPT
, que determinan las constantes y funcionalidades activas.
Para un análisis más profundo de la secuencia exacta de ejecución y las interdependencias completas, sería necesario examinar el proyecto completo en TIA Portal, especialmente la configuración de los OBs y las llamadas entre bloques.
Espero que esta documentación te sea de gran utilidad para tu estudio. Si necesitas analizar algún bloque o funcionalidad en más detalle, no dudes en preguntar.