Advertisement
Guest User

Untitled

a guest
Mar 11th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ada 4.22 KB | None | 0 0
  1. -- añadimos las librerias
  2. with destilacion_auxiliar, ada.Text_IO, ada.Float_Text_IO, ada.Integer_Text_IO;
  3. use destilacion_auxiliar,ada.Text_IO, ada.Float_Text_IO, ada.Integer_Text_IO;
  4. procedure destilacion is
  5.    -- Archivos de entrada y salida
  6.    Archivo_Entrada, Archivo_Salida : File_Type;
  7.    -- Cabecera del archivo de salida
  8.    cadena:String(1..112):="          k     ST1(k)       ST2(k)       ST3(k)"
  9.      &"      ST4(k)       SC1(k)       SC2(k)       SR1(k)       SD1(k)";
  10.    -- Tipo de datos para cargar los datos de entrada y salida
  11.    type datos_entrada is array(0..14, 0..3) of Float;
  12.    type datos_salida is array(0..14, 0..7) of Float;
  13.    -- Declarar e inicializar matrices
  14.    matriz_entrada:datos_entrada:=(others=>(others=>0.00));
  15.    matriz_salida:datos_salida:=(others=>(others=>0.00));
  16.    -- Indices
  17.    Index:Float;
  18.    i,j : Integer:=0;
  19.    k : Integer:=1;
  20.    -- Valores de los sensores
  21.    -- Valores Iniciales
  22.    st1:Float:=50.00;
  23.    st2:Float:=60.00;
  24.    
  25.    T,sd1,sr1,st3,st4:Float:=0.00;
  26.    -- Valores constantes
  27.    sc1:Float:=20.00;
  28.    sc2:Float:=400.00;
  29.    sd1_optimo:Float:=25.00;
  30.    st2_optimo:Float:=80.00;
  31. begin
  32.    -- Primero cargamos los datos desde un archivo de texto
  33.    Open(Archivo_Entrada, In_File, "C:\GNAT\2018\bin\src\input_project.txt");
  34.    Skip_Line(Archivo_Entrada); -- Obviamos la cabecera del archivo
  35.    while not End_Of_File(Archivo_Entrada) loop
  36.       if End_Of_Line(Archivo_Entrada) then
  37.          Skip_Line(Archivo_Entrada);
  38.          i:=i+1;
  39.          j:=0;
  40.       else
  41.          Get(Archivo_Entrada, Index);
  42.          matriz_entrada(i,j) := Index;
  43.          j:=j+1;
  44.       end if;
  45.    end loop;
  46.    Close(Archivo_Entrada);
  47.    -- Comprobamos que los datos se cargan correctamente
  48.     --for i in matriz_entrada'Range(1) loop
  49.       --for j in matriz_entrada'Range(2) loop
  50.          --Put(matriz_entrada(i,j)'Img);
  51.          --if(j=3)then
  52.             --New_Line;
  53.          --end if;
  54.       --end loop;
  55.    --end loop;
  56.    -- Realizamos los calculos
  57.    for i in matriz_salida'Range(1) loop
  58.      
  59.       -- Actualizacion de valores
  60.       sr1 := matriz_entrada(i,1);
  61.       st4 := matriz_entrada(i,2);
  62.       st3 := matriz_entrada(i,3);    
  63.       T := temperatura(st1,st2);
  64.      
  65.       sc1:=sensor_caudal_uno(sr1, st4, T, st2_optimo, st1);
  66.       sc2:=sensor_caudal_dos(st2, st3, sd1_optimo); -- Antes de actualizar ST2
  67.      
  68.       -- Control de caudales
  69.       if (sc1 > 20.00 or sc1 < 7.50) then
  70.          Put_Line("Error en SC1, su valor es: "& sc1'Img);
  71.       else
  72.          Put_Line("Valor SC1 es correcto: "& sc1'Img);
  73.       end if;
  74.       if (sc2 > 600.00 or sc2 < 400.00) then
  75.          Put_Line("Error en SC2, su valor es: "& sc2'Img);
  76.       else
  77.          Put_Line("Valor SC2 es correcto: "& sc2'Img);
  78.       end if;
  79.      
  80.      
  81.       sd1 := destilado(st2, st3);
  82.       st2 := temperatura_campo(st1, sr1, T, st4);
  83.       st1 := sensor_entrada(st2);
  84.      
  85.      
  86.       matriz_salida(i,0) := st1; -- ST1
  87.       matriz_salida(i,1) := st2; -- ST2
  88.       matriz_salida(i,2) := st3; -- ST3
  89.       matriz_salida(i,3) := st4; -- ST4
  90.       matriz_salida(i,4) := sc1; -- SC1
  91.       matriz_salida(i,5) := sc2; -- SC2
  92.       matriz_salida(i,6) := sr1; -- SR1
  93.       matriz_salida(i,7) := sd1; -- SD1
  94.          
  95.    end loop;
  96.    New_Line;
  97.    -- Comprobamos los datos en la matriz_salida
  98.    for i in matriz_salida'Range(1) loop
  99.       for j in matriz_salida'Range(2) loop
  100.          Put(matriz_salida(i,j)'Img);
  101.          if(j=7)then
  102.             New_Line;
  103.          end if;
  104.       end loop;
  105.    end loop;
  106.    -- Escribimos el resultado en una archivo de texto
  107.    Create(Archivo_Salida, Out_File, "C:\GNAT\2018\bin\src\output_project.txt");
  108.    Put(Archivo_Salida, cadena);
  109.    New_Line(Archivo_Salida);
  110.    for i in matriz_Salida'Range(1) loop
  111.       Put(Archivo_Salida, k);
  112.       Put(Archivo_Salida, " "); -- Añadimos un espacio para facilitar su importacion
  113.       for j in matriz_Salida'Range(2) loop
  114.          Put(Archivo_Salida, matriz_salida(i,j));
  115.          Put(Archivo_Salida, " "); -- Añadimos un espacio para facilitar su importacion
  116.          if(j=7)then
  117.             New_Line(Archivo_Salida);
  118.          end if;
  119.       end loop;
  120.       k := k+1;
  121.    end loop;
  122.    Close(Archivo_Salida);
  123. end destilacion;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement