Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- añadimos las librerias
- with destilacion_auxiliar, ada.Text_IO, ada.Float_Text_IO, ada.Integer_Text_IO;
- use destilacion_auxiliar,ada.Text_IO, ada.Float_Text_IO, ada.Integer_Text_IO;
- procedure destilacion is
- -- Archivos de entrada y salida
- Archivo_Entrada, Archivo_Salida : File_Type;
- -- Cabecera del archivo de salida
- cadena:String(1..112):=" k ST1(k) ST2(k) ST3(k)"
- &" ST4(k) SC1(k) SC2(k) SR1(k) SD1(k)";
- -- Tipo de datos para cargar los datos de entrada y salida
- type datos_entrada is array(0..14, 0..3) of Float;
- type datos_salida is array(0..14, 0..7) of Float;
- -- Declarar e inicializar matrices
- matriz_entrada:datos_entrada:=(others=>(others=>0.00));
- matriz_salida:datos_salida:=(others=>(others=>0.00));
- -- Indices
- Index:Float;
- i,j : Integer:=0;
- k : Integer:=1;
- -- Valores de los sensores
- -- Valores Iniciales
- st1:Float:=50.00;
- st2:Float:=60.00;
- T,sd1,sr1,st3,st4:Float:=0.00;
- -- Valores constantes
- sc1:Float:=20.00;
- sc2:Float:=400.00;
- sd1_optimo:Float:=25.00;
- st2_optimo:Float:=80.00;
- begin
- -- Primero cargamos los datos desde un archivo de texto
- Open(Archivo_Entrada, In_File, "C:\GNAT\2018\bin\src\input_project.txt");
- Skip_Line(Archivo_Entrada); -- Obviamos la cabecera del archivo
- while not End_Of_File(Archivo_Entrada) loop
- if End_Of_Line(Archivo_Entrada) then
- Skip_Line(Archivo_Entrada);
- i:=i+1;
- j:=0;
- else
- Get(Archivo_Entrada, Index);
- matriz_entrada(i,j) := Index;
- j:=j+1;
- end if;
- end loop;
- Close(Archivo_Entrada);
- -- Comprobamos que los datos se cargan correctamente
- --for i in matriz_entrada'Range(1) loop
- --for j in matriz_entrada'Range(2) loop
- --Put(matriz_entrada(i,j)'Img);
- --if(j=3)then
- --New_Line;
- --end if;
- --end loop;
- --end loop;
- -- Realizamos los calculos
- for i in matriz_salida'Range(1) loop
- -- Actualizacion de valores
- sr1 := matriz_entrada(i,1);
- st4 := matriz_entrada(i,2);
- st3 := matriz_entrada(i,3);
- T := temperatura(st1,st2);
- sc1:=sensor_caudal_uno(sr1, st4, T, st2_optimo, st1);
- sc2:=sensor_caudal_dos(st2, st3, sd1_optimo); -- Antes de actualizar ST2
- -- Control de caudales
- if (sc1 > 20.00 or sc1 < 7.50) then
- Put_Line("Error en SC1, su valor es: "& sc1'Img);
- else
- Put_Line("Valor SC1 es correcto: "& sc1'Img);
- end if;
- if (sc2 > 600.00 or sc2 < 400.00) then
- Put_Line("Error en SC2, su valor es: "& sc2'Img);
- else
- Put_Line("Valor SC2 es correcto: "& sc2'Img);
- end if;
- sd1 := destilado(st2, st3);
- st2 := temperatura_campo(st1, sr1, T, st4);
- st1 := sensor_entrada(st2);
- matriz_salida(i,0) := st1; -- ST1
- matriz_salida(i,1) := st2; -- ST2
- matriz_salida(i,2) := st3; -- ST3
- matriz_salida(i,3) := st4; -- ST4
- matriz_salida(i,4) := sc1; -- SC1
- matriz_salida(i,5) := sc2; -- SC2
- matriz_salida(i,6) := sr1; -- SR1
- matriz_salida(i,7) := sd1; -- SD1
- end loop;
- New_Line;
- -- Comprobamos los datos en la matriz_salida
- for i in matriz_salida'Range(1) loop
- for j in matriz_salida'Range(2) loop
- Put(matriz_salida(i,j)'Img);
- if(j=7)then
- New_Line;
- end if;
- end loop;
- end loop;
- -- Escribimos el resultado en una archivo de texto
- Create(Archivo_Salida, Out_File, "C:\GNAT\2018\bin\src\output_project.txt");
- Put(Archivo_Salida, cadena);
- New_Line(Archivo_Salida);
- for i in matriz_Salida'Range(1) loop
- Put(Archivo_Salida, k);
- Put(Archivo_Salida, " "); -- Añadimos un espacio para facilitar su importacion
- for j in matriz_Salida'Range(2) loop
- Put(Archivo_Salida, matriz_salida(i,j));
- Put(Archivo_Salida, " "); -- Añadimos un espacio para facilitar su importacion
- if(j=7)then
- New_Line(Archivo_Salida);
- end if;
- end loop;
- k := k+1;
- end loop;
- Close(Archivo_Salida);
- end destilacion;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement