# 馃И Sistema de Gesti贸n de Fluidos - CtrEditor En base a : "Quisiera mejorar el sistema hidraulico, quiero eliminar los parametros inncesarios de #file:osHydTank.cs y usar para todo el sistema hidraulico bar en vez PA, ademas quisiera poder modificar el nivel o los litros actuales del tanque y el tipo de fluido actual. Los fluidos pueden ser agua o jarabe con sacarosa en donde se permite usar el brix. quiero lograr que el motor hidraulico sea suficientemente correcto pero principalmente simple de usar. El objetivo de la aplicacion es una rapida simulacion de distintos fluidos hacia un mixer industrial, que puede recibir agua, jarabe o un mix o liquido con soda caustica para el cip. El fluido puede tener temperaturas diferentes. No estoy enfocado en los transitorios muy rapidos pero si en transitorios de mezcla como por ejemplo agua y luego jarabe. La idea es que el tanque puede tener una funcion de mezcla gradual, el tanque debe permitir tener un fluido principal y otro secundario y cantidad de litros de cada uno. Luego el secundario se vaciara primero y en un momento se mezclara ambos fluidos por una cantidad de litros de mezcla hasta que luego quedara solo el segundo fluido. En los pipe solo puede haber un solo tipo de fluido, que es el que esta saliendo actualmente del tanque que puede ser del tipo primario o secundario o mezcla durante los litros de mezcla. La idea es que las propiedades de fluido son transmitidas desde el tanque a el pipe segun el sentido del pipe actualmente ya que esto depende de el equilibrio de flujo actual en los pipes dado por las presiones de los tanques y por la presion de las bombas que generan un diferencial de presion. Los pipe en realidad no tiene sentido este es definido en funcion del flujo. Esto significa que segun el flujo el tipo de fluido se toma de la interfaz A o B . Los tanques en realidad solo tiene una presion definida y un nivel y un tipo primario / secundario de fluido. Las bombas son generadoras de presiones en un sentido con una cuva y con control de falta de nivel de fluido. Cuando un tanque no tiene nivel el fluido es de tipo aire. Este fluido hace que las bombas no puedan generar mas presion. Acepto sugerencias." ## 馃搵 Resumen del Sistema Este documento describe el nuevo sistema avanzado de gesti贸n de fluidos implementado en CtrEditor. El sistema permite manejar m煤ltiples tipos de fluidos industriales con capacidades de mezcla, control de temperatura y concentraci贸n, dise帽ado espec铆ficamente para simulaciones de procesos industriales alimentarios y sistemas CIP (Clean In Place). --- ## 馃幆 Arquitectura del Sistema ### **FluidProperties** - Sistema Central de Fluidos ```csharp public class FluidProperties { public FluidType FluidType { get; set; } = FluidType.Water; public double ConcentrationBrix { get; set; } = 0.0; public double Temperature { get; set; } = 20.0; public SolidColorBrush FluidColor { get; } public double Density { get; } public double Viscosity { get; } } ``` ### **Tipos de Fluidos Soportados** ```csharp public enum FluidType { Air, // Aire (sistema vac铆o) Water, // Agua (procesos b谩sicos) Syrup, // Jarabe con sacarosa (industria alimentaria) CausticSoda, // Soda c谩ustica (sistemas CIP) Mix // Mezcla de fluidos } ``` --- ## 馃敡 Nuevas Funcionalidades del Tanque Hidr谩ulico ### **Gesti贸n de Fluidos Dual** - **Fluido Primario**: Principal contenido del tanque - **Fluido Secundario**: Para operaciones de mezcla - **Mezcla Gradual**: Algoritmo de combinaci贸n autom谩tica ### **Control de Mezcla Industrial** ```csharp public enum MixingState { Idle, // Motor de mezcla apagado Active, // Mezcla activa a RPM constantes Gradual // Mezcla gradual autom谩tica } ``` ### **Propiedades de Control Editables** - **CurrentLevelM**: Nivel actual en metros (editable) - **CurrentVolumeL**: Volumen actual en litros (editable) - **TankPressureBar**: Presi贸n en bar (convertido de Pa) - **MixingMotorRpm**: Velocidad del motor de mezcla (0-100 RPM) --- ## 馃搳 Unidades de Medida Actualizadas ### **Presi贸n** - **Antigua**: Pascales (Pa) - **Nueva**: Bar (m谩s pr谩ctica para aplicaciones industriales) - **Conversi贸n**: 1 bar = 100,000 Pa ### **Flujo** - **Antigua**: m鲁/s (metros c煤bicos por segundo) - **Nueva**: L/min (litros por minuto) - **Conversi贸n**: 1 m鲁/s = 60,000 L/min ### **Volumen** - **Unidades**: Litros (L) - **Conversi贸n**: m鲁 脳 1000 = L --- ## 馃И C谩lculos de Propiedades de Fluidos ### **Densidad (kg/m鲁)** ```csharp public double Density => FluidType switch { FluidType.Air => 1.225, FluidType.Water => 1000.0, FluidType.Syrup => 1000.0 + (ConcentrationBrix * 6.0), // Aumenta con Brix FluidType.CausticSoda => 1530.0, // NaOH concentrado FluidType.Mix => CalculateMixedDensity(), _ => 1000.0 }; ``` ### **Viscosidad (Pa路s)** ```csharp public double Viscosity => FluidType switch { FluidType.Air => 1.81e-5, FluidType.Water => 0.001, FluidType.Syrup => 0.001 * Math.Pow(10, ConcentrationBrix / 25.0), // Exponencial con Brix FluidType.CausticSoda => 0.003, // M谩s viscoso que agua FluidType.Mix => CalculateMixedViscosity(), _ => 0.001 }; ``` ### **Colores Distintivos** - **Agua**: Azul claro (`#87CEEB`) - **Jarabe**: Marr贸n dorado (`#DAA520`) - **Soda C谩ustica**: P煤rpura (`#800080`) - **Aire**: Gris claro (`#D3D3D3`) - **Mezcla**: Color calculado por interpolaci贸n --- ## 馃攧 Sistema de Mezcla Gradual ### **Algoritmo de Mezcla** ```csharp public FluidProperties MixWith(FluidProperties other, double ratio) { // Ratio: 0.0 = 100% this, 1.0 = 100% other return new FluidProperties { FluidType = FluidType.Mix, ConcentrationBrix = Lerp(this.ConcentrationBrix, other.ConcentrationBrix, ratio), Temperature = Lerp(this.Temperature, other.Temperature, ratio) }; } ``` ### **Estados de Mezcla** 1. **Idle**: Sin mezcla activa 2. **Active**: Mezcla continua a RPM constantes 3. **Gradual**: Transici贸n autom谩tica de fluido secundario a primario --- ## 馃彮 Aplicaciones Industriales ### **Industria Alimentaria** - **Jarabes**: Control preciso de concentraci贸n Brix (0-100%) - **Temperaturas**: Rango operativo de 5掳C a 120掳C - **Mezcla**: Diluci贸n controlada de jarabes concentrados ### **Sistemas CIP (Clean In Place)** - **Soda C谩ustica**: Para limpieza de tuber铆as y tanques - **Agua de Enjuague**: Etapas de pre y post lavado - **Control de Temperatura**: Limpieza a temperaturas elevadas (60-85掳C) ### **Procesos de Mezcla** - **Control de RPM**: 0-100 RPM para diferentes tipos de mezcla - **Tiempo de Mezcla**: Control mediante estados de mezcla - **Homogeneizaci贸n**: Algoritmos de mezcla gradual --- ## 馃敡 Migraci贸n desde el Sistema Anterior ### **Par谩metros Eliminados** - `ConnectedInletPipe` / `ConnectedOutletPipe`: Reemplazado por gesti贸n autom谩tica - Unidades en Pa: Convertidas autom谩ticamente a bar - Flujos en m鲁/s: Convertidos autom谩ticamente a L/min ### **Nuevas Propiedades** ```csharp // Gesti贸n de fluidos public FluidProperties PrimaryFluid { get; set; } public FluidProperties SecondaryFluid { get; set; } // Control de mezcla public MixingState MixingState { get; set; } public double MixingMotorRpm { get; set; } // Unidades actualizadas public double TankPressureBar { get; set; } public double CurrentVolumeL { get; set; } public double FlowRateInletLMin { get; set; } public double FlowRateOutletLMin { get; set; } ``` ### **Compatibilidad** - Conversi贸n autom谩tica de unidades existentes - Valores por defecto para nuevas propiedades - Fluido primario inicializado como agua a 20掳C --- ## 馃搵 Lineamientos de Implementaci贸n ### **1. Inicializaci贸n de Tanques** ```csharp // Nuevo tanque con fluido predeterminado var tank = new osHydTank() { PrimaryFluid = new FluidProperties { FluidType = FluidType.Water, Temperature = 20.0 }, CurrentLevelM = 1.0, TankPressureBar = 1.013, // Presi贸n atmosf茅rica MixingState = MixingState.Idle }; ``` ### **2. Operaciones de Mezcla** ```csharp // Preparar mezcla de jarabe tank.SecondaryFluid = new FluidProperties { FluidType = FluidType.Syrup, ConcentrationBrix = 65.0, Temperature = 85.0 }; tank.MixingState = MixingState.Gradual; tank.MixingMotorRpm = 25.0; ``` ### **3. Sistemas CIP** ```csharp // Configurar limpieza con soda c谩ustica tank.PrimaryFluid = new FluidProperties { FluidType = FluidType.CausticSoda, Temperature = 75.0 }; tank.MixingState = MixingState.Active; tank.MixingMotorRpm = 50.0; ``` --- ## 馃幆 Ventajas del Nuevo Sistema ### **Precisi贸n Industrial** - Unidades est谩ndar de la industria (bar, L/min) - C谩lculos precisos de propiedades de fluidos - Control de concentraci贸n y temperatura ### **Flexibilidad Operativa** - M煤ltiples tipos de fluidos soportados - Operaciones de mezcla complejas - Estados de mezcla configurables ### **Facilidad de Uso** - Propiedades editables directamente - Colores distintivos para identificaci贸n visual - Conversiones autom谩ticas de unidades ### **Aplicabilidad Real** - Dise帽ado para procesos industriales reales - Soporte para sistemas CIP - Escalabilidad para diferentes industrias --- ## 馃搱 Futuras Expansiones ### **Fluidos Adicionales** - Alcoholes (etanol, isopropanol) - 脕cidos (ac茅tico, c铆trico) - Detergentes industriales - Gases industriales ### **Propiedades Avanzadas** - pH y conductividad - Punto de ebullici贸n/congelaci贸n - Tensi贸n superficial - Compatibilidad qu铆mica ### **Control Avanzado** - Perfiles de temperatura - Recetas de mezcla autom谩ticas - Optimizaci贸n energ茅tica - Trazabilidad de lotes --- *Documento actualizado: Septiembre 2025* *Versi贸n del Sistema: 2.0*