miércoles, 27 de mayo de 2026

03d.- Programación II - Esquema de Bombeo (MODIFICADO) - Interruptor de Alto Nivel y Válvula de Desvió incluido

En la clase pasada se planteo Modificar el esquema de control del tanque de forma de evitar el desborde del tanque. Para esto se incorporo una válvula de desvió y un Switch de Alto Nivel. La idea es desviar el agua a otra instalación en caso de alto nivel, se nos dice que si se detecta el alto nivel debemos abrir la válvula de desvío y encender la bomba y mantenerlas en esa posición.

El programa cerrara la válvula de desvió únicamente cuando el tanque detecte bajo nivel.

El esquema quedaría de la siguiente forma:

La actividad consiste en modificar el programa existente para cumplir con el esquema.


Programa Modificado C++



 /* PROGRAMA ELABORADO POR: CARLOS FERRER

  Rev may 2026  

 (Modificado para incluir interruptor de alto nivel y Válvula de desvió/Emergencia) 

*/

 


#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()


{

 setlocale(LC_ALL,"spanish");

 string bomba="APAGADA";

 double presion=0;

 string pantalla="ON";

 string valvula_d="CERRADA";

 int aux=1;


 // Leemos los datos del archivo de texto prueba a través de la función

 // Sheila (Puede ser cualquier nombre coloque el de mi hija)


  inicio:

 ifstream sheila("d:\\prueba.txt"); 

 string nivel_b;

 string nivel_a;

 string valvula_s;


  sheila >>nivel_b>>nivel_a>>valvula_s; 


 // Validamos la comunicación con el archivo de texto

 if (nivel_b=="OFF" or nivel_b=="off" or nivel_b=="Off")

  {

  nivel_b="OFF";

  }

 else if (nivel_b=="ON" or nivel_b=="On" or nivel_b=="on")

  {

  nivel_b="ON";

  }

 else

{

  nivel_b="No hay comunicacion";

  }

 

  

  if (nivel_a=="OFF" or nivel_a=="off" or nivel_a=="Off")

  {

  nivel_a="OFF";

  }

 else if (nivel_a=="ON" or nivel_a=="On" or nivel_a=="on")

  {

  nivel_a="ON";

  }

 else

{

  nivel_a="No hay comunicacion";

  }

 

if (valvula_s=="ABIERTA" or valvula_s=="Abierta" or valvula_s=="abierta") 

  {

  valvula_s="ABIERTA";

  }

else if (valvula_s=="CERRADA" or valvula_s=="Cerrada" or valvula_s=="cerrada" )

    {

  valvula_s="CERRADA";

  }

 else

  {

  valvula_s="No hay comunicacion";

  }

 

if (nivel_b=="No hay comunicacion" or nivel_a=="No hay comunicacion" or valvula_s=="No hay comunicacion")

{

  aux=1;

pantalla="ON";

  }


 else


{

  aux=0;

  pantalla="ON";

}


 if (aux==0)


 {

 // imprimimos los valores en pantalla 

 if(pantalla=="ON")


{

  system("cls");

  cout <<"La Presion= "<<presion;

  cout <<" - Tu bomba esta= "<<bomba<<endl; 

  cout <<" - El Switch de nivel bajo= "<<nivel_b;

  cout <<" - El Switch de nivel alto= "<<nivel_a<<endl;

  cout <<" - La valvula de servicio esta= "<<valvula_s;  

  cout <<" - La valvula de desvio esta= "<<valvula_d<<endl; 

  pantalla ="OFF"; 

}


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


     Sleep (1000);


 

 //Simulamos la válvula de desvió


 

 if (nivel_a=="OFF" and nivel_b=="OFF")

  {

  valvula_d="ABIERTA";

    pantalla ="ON";

}


 if (nivel_a=="OFF" and nivel_b=="ON")

{

     valvula_d="ABIERTA";

pantalla ="ON";

}   


 if (nivel_a=="ON" and nivel_b=="OFF")


  {

     valvula_d="CERRADA";

pantalla ="ON";

  }


// Simulamos la Presión    


if (valvula_d=="CERRADA" and valvula_s=="CERRADA" and bomba=="ENCENDIDA")

    {

     presion=presion+3;

     pantalla ="ON";

}


 if (valvula_d=="CERRADA" and valvula_s=="ABIERTA" and bomba=="APAGADA")

    {

     presion=presion-3;

     pantalla ="ON";

}

 if (valvula_d=="CERRADA" and valvula_s=="ABIERTA" and bomba=="ENCENDIDA" and presion<32)

    {

     presion=presion+1;

     pantalla ="ON";

}

 if (valvula_d=="CERRADA" and valvula_s=="ABIERTA" and bomba=="ENCENDIDA" and presion>32)

    {

     presion=presion-1;

     pantalla ="ON";

}

 if (valvula_d=="ABIERTA" and bomba=="APAGADA" and valvula_s=="ABIERTA")

    {

     presion=presion-4;

     pantalla ="ON";

}

 if (valvula_d=="ABIERTA" and bomba=="ENCENDIDA" and valvula_s=="ABIERTA" and presion>28)

    {

     presion=presion-2;

     pantalla ="ON";

}

 if (valvula_d=="ABIERTA" and bomba=="ENCENDIDA" and valvula_s=="ABIERTA" and presion<28)

    {

     presion=presion+0.5;

     pantalla ="ON";

}


 if (valvula_d=="ABIERTA" and bomba=="APAGADA" and valvula_s=="CERRADA")

{

     presion=presion-1;

     pantalla ="ON";

}


 if (valvula_d=="ABIERTA" and bomba=="ENCENDIDA" and valvula_s=="CERRADA" and presion<32)

    {

     presion=presion+1;

     pantalla ="ON";

}


 if (valvula_d=="ABIERTA" and bomba=="ENCENDIDA" and valvula_s=="CERRADA" 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 (nivel_a=="ON" and nivel_b=="OFF" and bomba=="ENCENDIDA")

{

     bomba="APAGADA";

     pantalla ="ON";


 if (nivel_a=="ON" and nivel_b=="ON" and presion<20 and bomba=="APAGADA")

    {

     bomba="ENCENDIDA";

     pantalla ="ON";

}  


 if (nivel_a=="ON" and nivel_b=="ON" and presion>40 and bomba=="ENCENDIDA")

    {

     bomba="APAGADA";

     pantalla ="ON";


 if (nivel_a=="OFF" and presion<40 and nivel_b=="ON" and bomba=="APAGADA")

    {

     bomba="ENCENDIDA";

     pantalla ="ON";


 if (nivel_a=="OFF" and nivel_b=="OFF" and bomba=="ENCENDIDA")

{

     bomba="APAGADA";

     pantalla ="ON";

 }


 


  // INFORMAMOS SI NO HAY COMUNICACIÓN CON EL ARCHIVO


  


 if (aux==1)

{

  if(pantalla=="ON")

{

system("cls");

cout <<" **** NO HAY COMUNICACIÓN CON EL ARCHIVO DE TEXTO *****";

pantalla ="OFF"; 

}


goto inicio;


}



Archivo Modificado



        ON                                            ON                               CERRADA          


   Switch de Nivel BAJO          Switch de Nivel ALTO     Válvula a la descarga       

(ON= Agua, Off=Alarma)       (ON= Agua, Off=Alarma)    (ABIERTA / CERRADA)          /REMOTO)
 
                                              




No hay comentarios.:

Publicar un comentario