USM PROG II
Blog informativo Cátedra de Programación II Profesor: Ing Carlos Ferrer - USM Caracas
jueves, 18 de junio de 2026
sábado, 6 de junio de 2026
03e.- Programación II - PROYECTO de Simulación y control con Manejo de Archivos - 3er Parcial (Semestre 2026 - II)
El siguiente esquema representa el sistema de Craqueo Catalítico de la Refinería Isla - Aruba:
- Que la temperatura en la torre de craqueo alcance niveles superiores a los 100 grados Centígrados.
- Que la presión a la descarga de la válvula se iguale o sea superior a la presión a la entrada de la válvula, en este caso el flujo de catalizador retornaría dañando la bomba de catalizador y probablemente contaminando el catalizador de la esfera,
Ustedes deben crear un programa en C++ que se cargue en un controlador lógico programable de forma de evitar las situaciones de riesgo, tal como se indica en la siguiente gráfica.
Su grupo de trabajo deberá elaborar un programa que simulé:
El Transmisor de Temperatura. Depende de: (1) la bomba de catalizador (2) bomba de Crudo (3) Válvula de catalizador y (4) Válvula de crudo.El Transmisor de Presión a la descarga de la bomba de Catalizador. Depende de: (1) Bomba de Catalizador (2) Válvula de catalizador (3) Estado previo de la presión (por debajo de 55 psi / por encima de 55 psi).
La Bomba de Catalizador. Depende de: (1) transmisor de temperatura de la torre (2) Switch de temperatura (3) Switch de Presión diferencial (4) Transmisor de presión a la descarga de la bomba (5) Estado anterior de la Bomba de Catalizador.
.- Una variable de perturbación de la temperatura en la torre (Grados Centígrados -30 a 30 cent)
.- La Válvula de Crudo (Abierta/Cerrada)
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
El programa cerrara la válvula de desvió únicamente cuando el tanque detecte bajo nivel.
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;
}
sábado, 23 de mayo de 2026
jueves, 21 de mayo de 2026
03c.- Programación II - Esquema de Bombeo - Simulación Clase Nro. 3 - Actividad propuesta miércoles 20 de Mayo
Para mejorar el funcionamiento del sistema de bombeo industrial, en la clase del Miércoles 21 de May se estableció una modificación del esquema trabajado por el profesor, la modificación consiste en incorporar un "Switch de Alto Nivel"y "Una válvula de desvió de seguridad", el esquema quedaría de la siguiente forma:
03b.- Programación II - Esquema de Bombeo - Simulación Clase Nro. 2
Basado en el siguientes esquema de Control












