En este ultimo punto de la asignatura, se analiza la solución de casos del área de Tecnología Industrial o Ingeniera en Mantenimiento Industrial, utilizando los aspectos de algoritmia vistos hasta este punto, es decir, se resolverán algunos casos mediante el planteamiento estructurado, teniendo como resultado un algoritmo que luego se codificará o traducirá en un lenguaje de programación como C, Python, Go u otro.
Ejemplo 1. APU Boeing 737-200
La unidad de poder auxiliar mejor conocido como APU es una fuente de purga de aire y electricidad de CA para la aeronave, lo que le otorga independencia durante los giros, el respaldo eléctrico en caso de falla del moto, proporciona aire acondicionado y presurización durante el despegue del motor. La APU (véase panel frontal del encendido de la APU, Figura 1 y lugar de ubicación Figura 2), es la unidad de poder auxiliar que suministra corriente continua y Neumático para Aire acondicionado en tierra o para el encendido de los motores.
La APU, tiene un sistema de protección que al detectar baja presión de aceite, alta temperatura de aceite, sobrerevoluciones (vease figura 1) o fuego (vease figura 3), automáticamente se apaga y corta todo el suministro de combustible, eléctrico y neumático de la APU (todas las válvulas se cierran por medida de protección).
Figura 1. panel frontal del encendido de la APU
Figura 2. Ubicación de la APU
Figura 4. panel del APU protección de fuego
Así pues, el funcionamiento de la APU es un conjunto motriz, autónomo, que puede proporcionar hasta tres funciones básicas en el avión Boeing 737-200. Estos pueden ser: par de giro, energía eléctrica y aire acondicionado. El mismo cuenta con tres fase de funcionamiento, en tierra, vuelo y el despegue. Aunado a esto en algunos casos la APU puede sufrir una falla y apagarse ya sea por sobre revoluciones, baja presión de aceite, baja cantidad de aceito o incluso fuego.
De todo lo expuesto, y después de analizar el funcionamiento del dispositivo en la aeronave, se desea realizar un algoritmo que permita obtener el diagnóstico para determinar la razón por la cual se apagó la APU del Boeing 737- 200 sea la falla por cantidad de aceite, perdida de presión de aceite, fuego y sobre de revoluciones (over-speed)que permita realizar el diagnostico para determinar la razón por la cual se apago la APU.
A continuación, se plantea una posible solución al caso expuesto, en la cual se asume que los datos son introducidos manualmente, recordemos que estos pueden ser obtenidos de forma directa desde el sistema.
Nota: Estos ejemplos son resultado de algunos proyectos de estudiantes en cursos anteriores
Algoritmo
ɛo {sea APU [4][4] ϵ R; i,j,k ϵ N; altura-pies[4] }
{ Se capturan los valores obtenidos a distintas alturas y posteriormente se analizan }
Inicio
i,j,k ← 1
{ Se inicializa el vector de alturas a estudiar }
altura-pies [1]=0;
altura-pies [2]=5;
altura-pies [3]=15;
altura-pies [4]=21;
{ Se capturan los valores obtenidos a distintas alturas }
Mientras (i ≤ 4) hacer
j ← 1
Mientras (j ≤ 4) hacer
Si (i == 1) entonces
"Introduzca cantidad de aceite reportado a" : →□
"altura-pies",altura-pies [i] →□
APU [i][j] ← □
Fsi
Si (i == 2) entonces
"Introduzca la presión reportado a" : →□
"altura-pies",altura-pies [i] →□
APU [i][j] ← □
Fsi
Si (i == 3) entonces
"Introduzca la temperatura reportado a" : →□
"altura-pies",altura-pies [i] →□
APU [i][j] ← □
Fsi
Si (i == 4) entonces
"Introduzca las revoluciones reportado a" : →□
"altura-pies",altura-pies [i] →□
APU [i][j] ← □
Fsi
i← i + 1
Fmientras
i← i + 1
Fmientras
{ Se analizan los valores a distintas alturas }
Si (APU [i][j] ≥0 ˄ APU [i][j] ≤ 49) entonces
“***ALERTA*** nivel de aceite es muy baja en tierra. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [1][2]<3) entonces
“***ALERTA*** nivel de presión es muy bajo en tierra. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [1][3]>760) entonces
“***ALERTA*** La temperatura es muy alta en tierra. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [1][4]>110) entonces
“***ALERTA*** el número de revoluciones es muy alta en tierra. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [2][1]≥0 ˄ APU [2][1]≤49) entonces
“***ALERTA*** nivel de aceite es muy baja a 5000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [2][2]<3) entonces
“***ALERTA*** nivel de presión es muy bajo a 5000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [2][3]>760) entonces
“***ALERTA*** La temperatura es muy alta a 5000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [2][4]>110) entonces
“***ALERTA*** el número de revoluciones es muy alta a 5000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [3][1]≥0 ˄ APU [3][1]≤49) entonces
“***ALERTA*** nivel de aceite es muy baja a 15000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [3][2]<3) entonces
“***ALERTA*** nivel de presión es muy bajo a 15000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [3][3]>760) entonces
“***ALERTA*** La temperatura es muy alta a 15000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [3][4]>110) entonces
“***ALERTA*** el número de revoluciones es muy alta a 15000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [4][1]≥0 ˄ APU [4][1]≤49) entonces
“***ALERTA*** nivel de aceite es muy baja a más de 21000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [4][2]<3) entonces
“***ALERTA*** nivel de presión es muy bajo a más de 21000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si (APU [4][3]>760) entonces
“***ALERTA*** La temperatura es muy alta a más de 21000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Si APU [4][4]>110 entonces
“***ALERTA*** el número de revoluciones es muy alta a más de 21000 ft. La APU no encenderá hasta que se estabilicen estos niveles” →□
Fsi
Fin
Actividad:
¿Cómo se puede optimizar este algoritmos empleando herramientas de iteración en el caso del análisis de los valores?
Codificación del algoritmo, optimizado con las herramientas de iteracion: Caso Lenguaje C
#include "stdio.h"
main()
{
printf("\nESTE PROGRAMA BUSCA CONOCER LOS DATOS DEL APU DE UN BOEING 737-200\n");
int APU [4][4], i,j,k;
int altura_pies[4];
i=1;
j=1;
k=1;
altura_pies[1]=0;
altura_pies[2]=5;
altura_pies[3]=15;
altura_pies[4]=21;
while(i<=4)
{ j=1;
while (j<=4)
{
if (i==1)
{
printf("Introduzca el aceite reportado a %d ",altura_pies[j]);
printf( " pies ");
scanf("%d",&APU[i][j]);
if(APU[i][j]<100)
printf("ERROR: el aceite está por debajo del valor permitido a los %d pies de altura \n",altura_pies[j]);
}
if (i==2)
{
printf("introduzca la presion reportado a %d ",altura_pies[j]);
printf( "mil pies ");
scanf("%d",&APU[i][j]);
if(APU [i][j]<5)
printf ("ERROR:la presion esta por debajo del valor permitido a los %d pies de altura \n",altura_pies[j]);
}
if (i==3)
{
printf("introduzca la temperatura reportado a %d ",altura_pies[j]);
printf( "mil pies ");
scanf("%d",&APU[i][j]);
if (APU [i][j]<900)
printf ("ERROR:la temperatura esta por debajo del valor permitido a los %d pies de altura \n",altura_pies[j]);
}
if (i==4)
{
printf("introduzca la revoluciones reportado a %d ",altura_pies[j]);
printf( "mil pies ");
scanf("%d",&APU[i][j]);
if (APU [i][j]<500)
printf ("ERROR:la revoluciones esta por debajo del valor permitido a los %d pies de altura \n",altura_pies[j]);
}
j=j+1;
}
i=i+1;
}
}
Codificación del algoritmo, optimizado con las herramientas de iteracion: Caso Lenguaje Python
print "ESTE PROGRAMA BUSCA CONOCER LOS DATOS DEL APU DE UN BOEING 737-200"
print "******************************************************************"
print ""
APU =[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
altura_pies = [0,0,0,0]
i=0
j=0
altura_pies[0]=0
altura_pies[1]=5
altura_pies[2]=15
altura_pies[3]=21
while(i<4):
j=0
while (j<4):
if (i==0):
print "Introduzca el aceite reportado a ",altura_pies[j]," mil pies de altura:"
APU[i][j]=input()
if(APU[i][j]<100):
print "ERROR: el aceite está por debajo del valor permitido a los ",altura_pies[j]," mil pies de altura"
if (i==1):
print "Introduzca la presion reportado a ",altura_pies[j]," mil pies de altura:"
APU[i][j]=input()
if(APU [i][j]<5):
print "ERROR:la presion esta por debajo del valor permitido a ",altura_pies[j]," mil pies de altura"
if (i==2):
print "Introduzca la temperatura reportado a ",altura_pies[j]," mil pies de altura:"
APU[i][j]=input()
if (APU [i][j]<900):
print "ERROR:la temperatura esta por debajo del valor permitido a ",altura_pies[j]," mil pies de altura"
if (i==3):
print "Introduzca el aceite reportado a ",altura_pies[j]," mil pies de altura:"
APU[i][j]=input()
if (APU [i][j]<500):
print "ERROR:la revoluciones esta por debajo del valor permitido a ",altura_pies[j]," mil pies de altura"
j=j+1
i=i+1