⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setx0.m

📁 基于PSAT 软件的多目标最优潮流计算用于中小型电力系统的分析和管理
💻 M
字号:
function a = setx0(a)global Bus DAE PV Synif ~a.n, return, endV = DAE.V(a.bus);% eliminate PV components used for initializing SVC'sfor i = 1:a.n  idxg = find(Syn.bus == a.bus(i));  if ~isempty(idxg)    svcwarn(i,[' SVC cannot be connected at the same bus as ' ...               'synchronous machines.'])    continue  end  idx = findbus(PV,a.bus(i));  PV = remove(PV,idx);  if isempty(idx)    svcwarn(i,' no PV generator found at the bus.')  endendif a.ty1  Kr = a.con(a.ty1,7);  bcv_max = a.con(a.ty1,9);  bcv_min = a.con(a.ty1,10);  DAE.x(a.bcv) = Bus.Qg(a.bus(a.ty1))./V(a.ty1)./V(a.ty1);  a.con(a.ty1,8) = DAE.x(a.bcv)./Kr + V(a.ty1);  idx = find(DAE.x(a.bcv) > bcv_max);  if idx, svcwarn(a,a.ty1(idx),' b_svc is over its max limit.'), end  idx = find(DAE.x(a.bcv) < bcv_min);  if idx, svcwarn(a,a.ty1(idx),' b_svc is under its min limit.'), end  DAE.x(a.bcv) = max(DAE.x(a.bcv),bcv_min);  DAE.x(a.bcv) = min(DAE.x(a.bcv),bcv_max);  a.Be(a.ty1) = DAE.x(a.bcv);endif a.ty2  a_max = a.con(a.ty2,9);  a_min = a.con(a.ty2,10);  T2 = a.con(a.ty2,6);  K = a.con(a.ty2,7);  Kd = a.con(a.ty2,11);  T1 = a.con(a.ty2,12);  Km = a.con(a.ty2,13);  Tm = a.con(a.ty2,14);  xl = a.con(a.ty2,15);  xc = a.con(a.ty2,16);  DAE.x(a.vm) = V(a.ty2)./Km;  b = pi*(2-xl./xc)+pi*xl.*Bus.Qg(a.bus(a.ty2))./V(a.ty2)./V(a.ty2);  % numeric solution for alpha  for i = 1:length(a.ty2)    err = 1;    % first guess is the expansion of a 3rd order Taylor series    s = sign(b(i))*((6*abs(b(i)))^(1/3))/2;    iter = 0;    while abs(err) > 1e-8      if iter > 20,        svcwarn(a.ty2(i),' convergence not reached in computing alpha')        break,      end      ga = 2*s - sin(2*s) - b(i);      ja = 2*(1-cos(2*s));      err = -ga/ja;      s = s + err;      iter = iter + 1;    end    DAE.x(a.alpha(i)) = s;  end  a.con(a.ty2,8) = DAE.x(a.vm) + Kd./K.*DAE.x(a.alpha);  idx = find(DAE.x(a.alpha) > a_max);  if idx, svcwarn(a,a.ty2(idx),' alpha is over its max limit.'), end  idx = find(DAE.x(a.alpha) < a_min);  if idx, svcwarn(a,a.ty2(idx),' alpha is under its min limit.'), end  DAE.x(a.alpha) = max(DAE.x(a.alpha),a_min);  DAE.x(a.alpha) = min(DAE.x(a.alpha),a_max);  a.Be(a.ty2) = (2*DAE.x(a.alpha) - sin(2*DAE.x(a.alpha)) - ...                 pi*(2-xl./xc))./(pi*xl);end% reference voltagesa.Vref = a.con(:,8);fm_disp('Initialization of SVCs completed.')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -