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

其他行业

开发平台:

Matlab

  1. % This function  Simulates the swing equation of a one-machine system
  2. % and returns the critical clearing time for stability.
  3. %
  4. % Copyrigth (C) 1998 H. Saadat
  5. %
  6. function  cctime(Pm, E, V, X1, X2, X3, H, f)
  7. Pe1max = E*V/X1; Pe2max=E*V/X2; Pe3max=E*V/X3;
  8. d0 =asin(Pm/Pe1max);
  9. dmax = pi-asin(Pm/Pe3max);
  10. cosdc = (Pm*(dmax-d0)+Pe3max*cos(dmax)-Pe2max*cos(d0))/(Pe3max-Pe2max);
  11.   if abs(cosdc) > 1
  12.   fprintf('No critical clearing angle could be found.n')
  13.   fprintf('System can remain stable during this disturbance.nn')
  14.   return
  15.   else, end
  16. dc = acos(cosdc);
  17.   if dc > dmax
  18.   fprintf('No critical clearing angle could be found.n')
  19.   fprintf('System can remain stable during this disturbance.nn')
  20.   return
  21.   else, end
  22. tf = 0.4;
  23. x0 = [d0; 0];
  24. %[t1,xf] =ode23('pfpower', 0, tf, x0, 0.00001);   % use with MATLAB 4
  25. tspan = [0, tf];                                  % use with MATLAB 5
  26. options = odeset('RelTol', 0.00001);              % use with MATLAB 5
  27. [t1,xf] =ode23('pfpower', tspan, x0, options);    % use with MATLAB 5
  28. kk=find(xf(:,1) <= dc); k=max(kk);
  29. tt=t1(k);
  30. while tf <= tt & tf <= 3.6
  31. tf=tf+.4;
  32.    fprintf('nSearching with a final time of %3.2f Sec. n', tf)
  33.    tol=0.00001+tf*2.5e-5;
  34.    %[t1,xf] =ode23('pfpower', 0, tf, x0, tol);     % use with MATLAB 4
  35.    tspan = [0, tf];                                % use with MATLAB 5
  36.    options = odeset('RelTol', tol);                % use with MATLAB 5
  37.    [t1,xf] =ode23('pfpower', tspan, x0, options);  % use with MATLAB 5
  38.    kk=find(xf(:,1) <= dc); k=max(kk);
  39.       tt= t1(k);
  40. end
  41. %end
  42. tmargin = t1(k);
  43. if tf >= 3.6
  44.   fprintf('nA clearing time could not be found up to 4 sec. nn')
  45.   return
  46.   else, end
  47. fprintf('nCritical clearing time =  %4.2f seconds n', tmargin)
  48. fprintf('Critical clearing angle = %6.2f degrees nn', dc*180/pi)