Advertisement
danieldelarosa

Ecuaciones Sistema Control

Oct 23rd, 2023 (edited)
1,800
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.25 KB | None | 0 0
  1. % Tiempo de simulación
  2. time_span = 0:0.01:10;
  3.  
  4. % Define un rango de valores de Kc y otros parámetros con la misma longitud
  5. Kc_range = linspace(0.1, 2, 100);  % Rango de valores de Kc
  6. Kp_values = zeros(1, 100);
  7. tr_values = zeros(1, 100);
  8. tp_values = zeros(1, 100);
  9. OS_values = zeros(1, 100);
  10. ts_values = zeros(1, 100);
  11. error_step_values = zeros(1, 100);
  12. error_ramp_values = zeros(1, 100);
  13. error_parabola_values = zeros(1, 100);
  14.  
  15. % Cálculo de parámetros de respuesta y errores
  16. for i = 1:numel(Kc_range)
  17.     Kc = Kc_range(i);
  18.    
  19.     % Aquí se calculan los valores de los parámetros
  20.    
  21.     Kp_values(i) = Kc * 1.2;  
  22.     tr_values(i) = 2.0 / Kc;  
  23.  
  24.     % Cálculo del error en estado estacionario  para entrada escalón)
  25.     num = [Kc * Kp_values(i)];
  26.     den = [1, Kc * Kp_values(i)];
  27.     sys = tf(num, den);
  28.     [y, t] = step(sys, time_span);
  29.     error_step_values(i) = abs(1 - y(end));  % Error en estado estacionario
  30. end
  31.  
  32. % Menú interactivo para seleccionar el parámetro a graficar
  33. while true
  34.     disp('Seleccione el parámetro que desea graficar:');
  35.     disp('1. Kp');
  36.     disp('2. Tiempo de subida (tr)');
  37.     disp('3. Tiempo pico (tp)');
  38.     disp('4. Sobreelongación (OS)');
  39.     disp('5. Tiempo de establecimiento (ts)');
  40.     disp('6. Error en escalón');
  41.     disp('7. Error en rampa');
  42.     disp('8. Error en parábola');
  43.     disp('9. Graficar todos los parámetros juntos');
  44.     disp('0. Salir');
  45.    
  46.     choice = input('Elija una opción: ');
  47.    
  48.     if choice == 0
  49.         break;  % Salir del bucle si el usuario elige 0
  50.     end
  51.    
  52.     % Preguntar al usuario si desea mostrar todas las respuestas en una sola gráfica
  53.     if choice == 9
  54.         show_all_responses = input('¿Mostrar todas las respuestas en la misma gráfica? (0: No, 1: Sí): ');
  55.     else
  56.         show_all_responses = 0;  % Valor predeterminado, no mostrar todas las respuestas juntas
  57.     end
  58.    
  59.     % ...
  60.  
  61. % Graficar el parámetro seleccionado
  62. if choice == 9 && show_all_responses
  63.     % Graficar todos los parámetros juntos en una sola gráfica dividida tipo grilla
  64.     figure;
  65.  
  66.     subplot(2, 2, 1);
  67.     plot(Kc_range, Kp_values, 'ro-', 'LineWidth', 2);
  68.     xlabel('Valor de Kc');
  69.     title('Kp');
  70.    
  71.     subplot(2, 2, 2);
  72.     plot(Kc_range, tr_values, 'go-', 'LineWidth', 2);
  73.     xlabel('Valor de Kc');
  74.     title('Tiempo de subida (tr)');
  75.    
  76.     subplot(2, 2, 3);
  77.     plot(Kc_range, tp_values, 'bo-', 'LineWidth', 2);
  78.     xlabel('Valor de Kc');
  79.     title('Tiempo pico (tp)');
  80.    
  81.     subplot(2, 2, 4);
  82.     plot(Kc_range, OS_values, 'mo-', 'LineWidth', 2);
  83.     xlabel('Valor de Kc');
  84.     title('Sobreelongación (OS)');
  85.    
  86.     suptitle('Parámetros de Respuesta');
  87.    
  88.     % Guardar la imagen en un archivo
  89.     saveas(gcf, 'grafica_todos_los_parametros.png');
  90.    
  91.     disp('La figura "grafica_todos_los_parametros.png" ha sido guardada como imagen.');
  92. else
  93.     % Graficar el parámetro seleccionado individualmente
  94.     figure;
  95.     switch choice
  96.         case 1
  97.             parameter_values = Kp_values;
  98.             parameter_name = 'Kp';
  99.         case 2
  100.             parameter_values = tr_values;
  101.             parameter_name = 'Tiempo de subida (tr)';
  102.         case 3
  103.             parameter_values = tp_values;
  104.             parameter_name = 'Tiempo pico (tp)';
  105.         case 4
  106.             parameter_values = OS_values;
  107.             parameter_name = 'Sobreelongación (OS)';
  108.         case 5
  109.             parameter_values = ts_values;
  110.             parameter_name = 'Tiempo de establecimiento (ts)';
  111.         case 6
  112.             parameter_values = error_step_values;
  113.             parameter_name = 'Error en escalón';
  114.         case 7
  115.             parameter_values = error_ramp_values;
  116.             parameter_name = 'Error en rampa';
  117.         case 8
  118.             parameter_values = error_parabola_values;
  119.             parameter_name = 'Error en parábola';
  120.     end
  121.     plot(Kc_range, parameter_values, 'ro-', 'LineWidth', 2);
  122.     xlabel('Valor de Kc');
  123.     ylabel(parameter_name);
  124.     title(['Variación de ', parameter_name, ' con Kc']);
  125.    
  126.     % Guardar la imagen en un archivo
  127.     filename = [parameter_name, '_vs_Kc.png'];
  128.     saveas(gcf, filename);
  129.    
  130.     disp(['La figura "', filename, '" ha sido guardada como imagen.']);
  131. end
  132. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement