CtrEditor/Documentation/Hidraulic/FluidManagementSystem.md

9.6 KiB
Raw Blame History

🧪 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

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

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

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³)

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)

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

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

// 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

// 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

// 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

// 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