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