Swingrk2.m
上传用户:eighthdate
上传日期:2014-05-24
资源大小:270k
文件大小:2k
源码类别:

其他行业

开发平台:

Matlab

  1. % This program solves the swing equation of a one-machine system
  2. % when subjected to a three-phase fault with subsequent clearance
  3. % of the fault.
  4. %
  5. % Copyright  1998 H. Saadat
  6. %
  7. function swingrk4(Pm, E, V, X1, X2, X3, H, f, tc, tf, Dt)
  8. %global  Pm f H E V X1 X2 X3
  9. if exist('Pm') ~= 1
  10. Pm = input('Generator output power in p.u. Pm = '); else, end
  11. if exist('E') ~= 1
  12. E = input('Generator e.m.f. in p.u. E = '); else, end
  13. if exist('V') ~= 1
  14. V = input('Infinite bus-bar voltage in p.u. V = '); else, end
  15. if exist('X1') ~= 1
  16. X1 = input('Reactance before Fault in p.u. X1 = '); else, end
  17. if exist('X2') ~= 1
  18. X2 = input('Reactance during Fault X2 = '); else, end
  19. if exist('X3') ~= 1
  20. X3 = input('Reactance after Fault X3 = '); else, end
  21. if exist('H') ~= 1
  22. H  = input('Generator Inertia constant in sec. H = '); else, end
  23. if exist('f') ~= 1
  24. f  = input('System frequency in Hz f = '); else, end
  25. if exist('tc') ~= 1
  26. tc = input('Clearing time of fault in sec tc = '); else, end
  27. if exist('tf') ~= 1
  28. tf = input('Final time for swing equation in sec tf = '); else, end
  29. Pe1max = E*V/X1; Pe2max=E*V/X2; Pe3max=E*V/X3;
  30. clear t  x  delta
  31. d0 =asin(Pm/Pe1max);
  32. t0 = 0;
  33. x0 = [d0;  0];
  34. %tol=0.001;
  35. %[t1,xf] =ode23('pfpower', t0, tc, x0, tol);  % During fault solution (use with MATLAB 4)
  36. tspan = [t0, tc];                             % use wint MATLAB 5
  37. [t1,xf] =ode23('pfpower', tspan, x0);  % During fault solution (use with MATLAB 5)
  38. x0c =xf(length(xf), :);
  39. %[t2,xc] =ode23('afpower', tc, tf, x0c, tol); % After fault solution (use with MATLAB 4)
  40. tspan = [tc, tf];
  41. [t2,xc] =ode23('afpower', tspan, x0c); % After fault solution (use with MATLAB 5)
  42. t =[t1; t2]; x = [xf; xc];
  43. delta = 180/pi*x(:,1);
  44. clc
  45. fprintf('nFault is cleared at %4.3f Sec. n', tc)
  46. head=['                              '
  47.       '     time     delta      Dw   '
  48.       '      s       degrees    rad/s'
  49.       '                              '];
  50. disp(head)
  51. disp([t, delta, x(:, 2)])
  52. h=figure; figure(h)
  53. plot(t, delta), grid
  54. title(['One-machine system swing curve. Fault cleared at ', num2str(tc),'s'])
  55. xlabel('t, sec'), ylabel('Delta, degree')
  56. cctime(Pm, E, V, X1, X2, X3, H, f)    % Obtains the critical clearing time