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

📄 setx0.m

📁 电力系统分析计算程序
💻 M
字号:
function a = setx0(a)global Bus DAE Settings Windif ~a.n, return, endcheck = 1;Wn = 2*pi*Settings.freq;V = DAE.y(a.vbus);rho = getrho(Wind,a.wind);% Constants% x0a.dat(:,1) =  a.con(:,7) + a.con(:,10);% x'a.dat(:,2) =  a.con(:,7) + a.con(:,10).*a.con(:,9)./ ...    (a.con(:,10)+a.con(:,9));% T'0a.dat(:,3) = (a.con(:,10)+a.con(:,9))./a.con(:,8)/Wn;% 1/(2*Hwr)a.dat(:,4) = 1./(2*a.con(:,11));% 1/(2*Hm)a.dat(:,5) = 1./(2*a.con(:,12));% 4*R*pi*f/pa.dat(:,6) = 2*Wn*a.con(:,14)./a.con(:,15).*a.con(:,17);% Aa.dat(:,7) = pi*a.con(:,14).*a.con(:,14);% Initialization of state variablesPc = Bus.Pg(a.bus);Qc = Bus.Qg(a.bus);Vc = DAE.y(a.vbus);ac = DAE.y(a.bus);vr = -Vc.*sin(ac);vm =  Vc.*cos(ac);for i = 1:a.n  % parameters  Vr = vr(i);  Vm = vm(i);  Rs = a.con(i,6);  X0 = a.dat(i,1);  X1 = a.dat(i,2);  T10 = a.dat(i,3);  Pg = Pc(i);  Qg = Qc(i);    eqn = ones(5,1);  inc = ones(5,1);  jac = zeros(5,5);    jac(1,1) = Vr;  jac(1,2) = Vm;  jac(2,1) = -Rs;  jac(2,2) = X1;  jac(2,3) = 1;  jac(3,1) = -X1;  jac(3,2) = -Rs;  jac(3,4) = 1;  jac(4,2) = (X0-X1)/T10;  jac(4,3) = -1/T10;  jac(5,1) = -(X0-X1)/T10;  jac(5,4) = -1/T10;    % variables: x(1) = ir  %            x(2) = im  %            x(3) = e'r  %            x(4) = e'm  %            x(5) = sigma  % first guess  x = jac([1:5],[1:4])\[Pg;Vr;Vm;0;0];  x(5) = 0;    iter = 0;    while max(abs(inc)) > 1e-5        if iter > 20      fm_disp(['Initialization of constant speed wind turbine #',...               num2str(i),' failed (convergence problem).'])      break    end        eqn(1) = Vr*x(1) + Vm*x(2) - Pg;    eqn(2) = x(3) - Vr - Rs*x(1) + X1*x(2);    eqn(3) = x(4) - Vm - Rs*x(2) - X1*x(1);    eqn(4) =  Wn*x(5)*x(4) - (x(3)-(X0-X1)*x(2))/T10;    eqn(5) = -Wn*x(5)*x(3) - (x(4)+(X0-X1)*x(1))/T10;        jac(4,4) =  Wn*x(5);    jac(4,5) =  Wn*x(4);    jac(5,3) = -Wn*x(5);    jac(5,5) = -Wn*x(3);        inc = -jac\eqn;    x = x + inc;    iter = iter + 1;      end    Qg = Vm*x(1)-Vr*x(2);  Te = x(3)*x(1)+x(4)*x(2);    % shunt capacitor  a.dat(i,8) = (Qc(i)-Qg)/V(i)/V(i);    % wind turbine state variables  DAE.x(a.e1r(i)) = x(3);  DAE.x(a.e1m(i)) = x(4);  DAE.x(a.omega_m(i)) = 1-x(5);  DAE.x(a.gamma(i)) = Te/a.con(i,13);  DAE.x(a.omega_t(i)) = DAE.x(a.omega_m(i));    % wind power  Pw = Te*DAE.x(a.omega_m(i));  if Pg < 0    fm_disp([' * * Turbine power is negative at bus <',Bus.names{a.bus(i)},'>.'])    fm_disp(['     Wind speed <',num2str(a.wind(i)),'> cannot be initilized.'])    DAE.x(getidx(Wind,a.wind(i))) = 1;    continue  end  % wind speed  iter = 0;  incvw = 1;  eqnvw = 1;  R = a.dat(i,6);  A = a.dat(i,7);    vw = 0.9*getvw(Wind,a.wind(i));    while abs(eqnvw) > 1e-8    if iter > 20      wspeed = num2str(a.wind(i));      fm_disp([' * * Initialization of wind speed <', ...               wspeed, '> failed (convergence problem).'])      fm_disp(['     Tip: Try increasing the nominal wind speed <',wspeed,'>.'])      check = 0;      break    end    eqnvw = windpower(a,rho(i),vw,A,R,DAE.x(a.omega_m(i)),1,1)-Pw*Settings.mva*1e6;    jacvw = windpower(a,rho(i),vw,A,R,DAE.x(a.omega_m(i)),1,2);    incvw = -eqnvw/jacvw(2);    %disp([eqnvw+Pw*a.con(i,3),incvw])    vw = vw + incvw;    %disp([vw,iter]);    iter = iter + 1;  end  DAE.x(getidx(Wind,a.wind(i))) = vw/getvw(Wind,a.wind(i));  % find & delete static generators  if ~fm_rmgen(a.u(i)*a.bus(i)), check = 0; endendDAE.x(a.e1r) = a.u.*DAE.x(a.e1r);DAE.x(a.e1m) = a.u.*DAE.x(a.e1m);DAE.x(a.omega_m) = a.u.*DAE.x(a.omega_m);DAE.x(a.gamma) = a.u.*DAE.x(a.gamma);DAE.x(a.omega_t) = a.u.*DAE.x(a.omega_t);% random initial phase angle for shadow tower effect%a.dat(:,9) = 2*pi*rand(a.n,1);if ~check  fm_disp('Constant speed wind turbine cannot be properly initialized.')else  fm_disp(['Constant speed wind turbines initialized.'])end

⌨️ 快捷键说明

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