jueves, 21 de mayo de 2026

03b.- Programación II - Esquema de Bombeo - Simulación Clase Nro. 2

 Basado en el siguientes esquema de Control




En la clase de hoy se elaboró un programa que simula el apagado y encendido de la bomba y el comportamiento de la presión a la descarga de la bomba.

Adicionalmente se elaboró un archivo de texto que simula: el Switch de Nivel (Interruptor de Bajo nivel),  la Válvula de servicios y Modo de Operación de la bomba (Local / Remoto).




Se indicó que tanto la Válvula como el Switch  lo manipularía el estudiante desde el archivo de texto y que el programa respondería basado en las tablas de la verdad para la Presión y la Bomba:






PROGRAMA 


/* PROGRAMA ELABORADO POR: CARLOS FERRER 
Control de nivel simple
Elaborado: Carlos Ferrer
Rev May 2026*/

#include<iostream> // Mostrar datos en pantalla
#include<fstream> // Leer y escribir en un archivo de texto
#include<windows.h> // Control de ejecución (tiempo de refrescamiento de pantalla)
#include<locale.h>
using namespace std;

int main()
{
 string bomba="APAGADA";
 double presion=0;
 string pantalla="ON",texto_aux;
 int aux=1;
 setlocale(LC_ALL,"spanish");
 
 
 /*Leemos los datos del archivo de texto prueba a través de la función
 conticinio (Puede ser cualquier nombre coloque conticinio porque me gusto la palabra)*/
 
 inicio:
 
 ifstream conticinio("C:\\Prueba\\prueba.txt"); 
  
 string sw_bajo_nivel;
 string valvula;
 string comunicacion="Normal"; 
  
 conticinio >>sw_bajo_nivel>>valvula; 
 

 
 //Verifico el estado del Switch de bajo nivel
 
 if(sw_bajo_nivel=="ON" or sw_bajo_nivel=="on" or sw_bajo_nivel=="On")
  {
sw_bajo_nivel="ON";
}

 else if(sw_bajo_nivel=="OFF" or sw_bajo_nivel=="off" or sw_bajo_nivel=="Off")
  {
sw_bajo_nivel="OFF";
}
 else 
  {
  comunicacion="Falla";
  }

 //Verifico el estado de la válvula de servicio
 
 if(valvula=="ABIERTA" or valvula=="abierta" or valvula=="Abierta")
  {
valvula="ABIERTA";
}

 else if(valvula=="CERRADA" or valvula=="cerrada" or valvula=="Cerrada")
  {
valvula="CERRADA";
}
 else 
  {
  comunicacion="Falla";
  }

 
 //Chequeamos la comunicación con el archivo de Texto
 
 if (comunicacion=="Normal" )
  {
  aux=0;
  }
 if (comunicacion=="Falla" )
  {
  aux=1;
  }
 
 
 
 // Hacemos los cálculos del sistema
  
 if (aux==0)
  {
  
 // imprimimos los valores en pantalla cuando la comunicación esta ok
 
 
  if(pantalla=="ON")
  {
  system("cls");
    cout <<endl<<"        COMPORTAMIENTO DEL SISTEMA "<<endl;
  cout <<endl<<"             La Presión= "<<presion<<endl;
  cout <<"             Tu bomba esta= "<<bomba<<endl; 
  if(sw_bajo_nivel=="OFF")
  {
  texto_aux="ALARMA";
  }
else
  {
  texto_aux="NORMAL";
  }
  cout <<"             El Switch de bajo nivel= "<<texto_aux<<endl;
  cout <<"             La válvula esta= "<<valvula<<endl<<endl;  
    cout <<"     **** COMUNICACIÓN CON EL ARCHIVO NORMAL *****";
  pantalla ="OFF"; 
    }

//  Establecemos un tiempo de 1 de segundo para ver los cambios en la presión

    Sleep (1000);
    
    
// Simulamos la Presión    
    
    if (valvula=="CERRADA" and bomba=="ENCENDIDA")
    {
      presion=presion+3;
        pantalla ="ON";
    }
 
  if (valvula=="ABIERTA" and bomba=="APAGADA")
    {
      presion=presion-3;
        pantalla ="ON";
    }
 
     if (valvula=="ABIERTA" and bomba=="ENCENDIDA" and presion<32)
    {
      presion=presion+1;
        pantalla ="ON";
      }
 
      if (valvula=="ABIERTA" and bomba=="ENCENDIDA" and presion>32)
    {
      presion=presion-1;
        pantalla ="ON";
        }
 
 //impedimos que la presión de negativo
  
      if (presion<0)
    {
      presion=0;
        pantalla ="ON";
      }

    // Controlamos el encendido y apagado de la bomba
    
      if (sw_bajo_nivel=="OFF" and bomba=="ENCENDIDA")
    {
      bomba="APAGADA";
        pantalla ="ON";
     
  
      if (sw_bajo_nivel=="ON" and presion<20 and bomba=="APAGADA")
    {
      bomba="ENCENDIDA";
        pantalla ="ON";
      }  
      if (sw_bajo_nivel=="ON" and presion>40 and bomba=="ENCENDIDA")
    {
      bomba="APAGADA";
        pantalla ="ON";
     
  
   
  }
 
  // Imprimimos la información con la comunicación fallada
  
 if (aux==1)
  {
  
  if(pantalla=="ON")
  {
  system("cls");
    cout <<endl<<"    EL PROGRAMA NO OPERA DEBIDO A QUE: "<<endl<<endl;
cout <<"    (1) EL CONTENIDO DEL ARCHIVO FUE ESCRITO "<<endl;
cout <<"        DE FORMA INCORRECTA (ON/OFF ABIERTA/CERRADA) "<<endl; 
cout <<"    (2) NO HAY COMUNICACIÓN CON EL ARCHIVO .TXT (REVISE LA RUTA) "<<endl;
cout <<"    (3) LAS DOS RAZONES ANTERIORES ";
  pantalla ="OFF"; 
    }  
 
   }
 
 goto inicio;
 
}




ARCHIVO PRUEBA.TXT

  OFF                                       ABIERTA                              

 Switch de Nivel            Válvula a la descarga                 

(ON= Agua, Off=Vacio)   (ABIERTA / CERRADA)  

                                              



El Archivo de texto debe presentar la data en la primera línea de lo contrario no será leído por el programa.

Verifique que la ruta donde colocó el archivo de texto sea la indicada en el programa de lo contrario la data no será leída.

Para C++ Recuerde cambiar "\" por "\\" cuando declare la ruta dentro del programa.

Éxito 

No hay comentarios.:

Publicar un comentario