Swingmeu.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. Modified Euler method
  4. %
  5. % Copyright (c) 1998 H. Saadat
  6. %
  7. function swingmeu(Pm, E, V, X1, X2, X3, H, f, tc, tf, Dt)
  8. %global  Pm f H E V X1 X2 X3
  9. clear t
  10. if exist('Pm')~=1
  11. Pm = input('Generator output power in p.u. Pm = '); else, end
  12. if exist('E')~=1
  13. E = input('Generator e.m.f. in p.u. E = '); else, end
  14. if exist('V')~=1
  15. V = input('Infinite bus-bar voltage in p.u. V = '); else, end
  16. if exist('X1')~=1
  17. X1 = input('Reactance before Fault in p.u. X1 = '); else, end
  18. if exist('X2')~=1
  19. X2 = input('Reactance during Fault X2 = '); else, end
  20. if exist('X3')~=1
  21. X3 = input('Reactance after Fault X3 = '); else, end
  22. if exist('H')~=1
  23. H  = input('Generator Inertia constant in sec. H = '); else, end
  24. if exist('f')~=1
  25. f  = input('System frequency in Hz f = '); else, end
  26. if exist('Dt')~=1
  27. Dt = input('Time interval  Dt = '); else, end
  28. if exist('tc')~=1
  29. tc = input('Clearing time of fault in sec tc = '); else, end
  30. if exist('tf')~=1
  31. tf = input('Final time for swing equation in sec tf = '); else, end
  32. Pe1max = E*V/X1; Pe2max=E*V/X2; Pe3max=E*V/X3;
  33. clear t x1 x2  delta
  34. d0 =asin(Pm/Pe1max);
  35. t(1) = 0;
  36. x1(1)= d0;
  37. x2(1)=0;
  38. np=tf /Dt;
  39. Pemax=Pe2max;
  40. ck=pi*f/H;
  41. for k = 1:np
  42.     if t(k) >= tc
  43.     Pemax=Pe3max;
  44.     else, end
  45. t(k+1)=t(k)+Dt;
  46. Dx1b=x2(k);
  47. Dx2b=ck*(Pm-Pemax*sin(x1(k)));
  48. x1(k+1)=x1(k)+Dx1b*Dt;
  49. x2(k+1)=x2(k)+Dx2b*Dt;
  50. Dx1e=x2(k+1);
  51. Dx2e=ck*(Pm-Pemax*sin(x1(k+1)));
  52. Dx1=(Dx1b+Dx1e)/2;
  53. Dx2=(Dx2b+Dx2e)/2;
  54. x1(k+1)=x1(k)+Dx1*Dt;
  55. x2(k+1)=x2(k)+Dx2*Dt;
  56. end
  57. delta=180*x1/pi;
  58. clc
  59. fprintf('nFault is cleared at %4.3f Sec. n', tc)
  60. head=['                              '
  61.       '     time     delta      Dw   '
  62.       '      s       degrees    rad/s'
  63.       '                              '];
  64. disp(head)
  65. disp([t', delta' x2'])
  66. h=figure; figure(h)
  67. plot(t, delta), grid
  68. title(['One-machine system swing curve. Fault cleared at ', num2str(tc),'s'])
  69. xlabel('t, sec'), ylabel('Delta, degree')
  70. cctime(Pm, E, V, X1, X2, X3, H, f)    % Obtains the critical clearing time