📄 fm_syn.m
字号:
DAE.Fx = DAE.Fx + sparse(Syn.delta,Syn.omega,Wn,DAE.n,DAE.n);
DAE.Fx = DAE.Fx - sparse(Syn.omega,Syn.omega,iM.*D,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(Syn.omega,Syn.delta,(-Syn.J11+2*ra.*(Syn.Id.*M1+Syn.Iq.*M2)).*iM,DAE.n,DAE.n);
DAE.Fy = DAE.Fy + sparse(Syn.omega,Syn.bus,(Syn.J11-2*ra.*(Syn.Id.*M1+Syn.Iq.*M2)).*iM,DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(Syn.omega,Syn.bus+Bus.n,(Syn.J12-2*ra.*(Syn.Id.*M3+Syn.Iq.*M4)).*iM,DAE.n,2*Bus.n);
Syn.Gp(:,1) = -Syn.J11;
Syn.Gq(:,1) = -Syn.J21;
DAE.Gx = DAE.Gx + sparse(Syn.bus,Syn.delta,Syn.Gp(:,1),2*Bus.n,DAE.n);
DAE.Gx = DAE.Gx + sparse(Syn.bus+Bus.n,Syn.delta,Syn.Gq(:,1),2*Bus.n,DAE.n);
Syn.Gp(:,3) = DAE.V(Syn.bus).*(-Syn.c3.*ss - Syn.c1.*cc);
Syn.Gp(:,4) = DAE.V(Syn.bus).*(-Syn.c1.*ss + Syn.c2.*cc);
Syn.Gq(:,3) = DAE.V(Syn.bus).*(-Syn.c3.*cc + Syn.c1.*ss);
Syn.Gq(:,4) = DAE.V(Syn.bus).*(-Syn.c1.*cc - Syn.c2.*ss);
N1 = (Syn.Gp(:,3)-2*ra.*(Syn.Id.*Syn.c3+Syn.Iq.*Syn.c1)).*iM;
N2 = (Syn.Gp(:,4)-2*ra.*(Syn.Id.*Syn.c1-Syn.Iq.*Syn.c2)).*iM;
% Model III
if (~isempty(is3))
o3 = Syn.omega(is3);
e1q3 = Syn.e1q(is3);
DAE.Fx = DAE.Fx + sparse(o3,e1q3,N1(is3),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q3,Syn.delta(is3),a35.*M1(is3)-a34.*Kp(is3).*Syn.J11(is3),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q3,o3,a34.*Kw(is3),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q3,e1q3,-a34.*Sat(2,e1q,is3)-a35.*Syn.c3(is3)+a34.*Kp(is3).*Syn.Gp(is3,3),DAE.n,DAE.n);
DAE.Gx = DAE.Gx + sparse([bs3;bs3+Bus.n],[e1q3;e1q3],[Syn.Gp(is3,3);Syn.Gq(is3,3)],2*Bus.n,DAE.n);
DAE.Fy = DAE.Fy + sparse(e1q3,bs3,-a35.*M1(is3)+a34.*Kp(is3).*Syn.J11(is3),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1q3,bs3+Bus.n,-a35.*M3(is3)+a34.*Kp(is3).*Syn.J12(is3),DAE.n,2*Bus.n);
end
% Model IV
if ~isempty(is4)
o4 = Syn.omega(is4);
e1q4 = Syn.e1q(is4);
e1d4 = Syn.e1d(is4);
DAE.Fx = DAE.Fx + sparse(o4,e1q4,N1(is4),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(o4,e1d4,N2(is4),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q4,Syn.delta(is4),a45.*M1(is4)-a44.*Kp(is4).*Syn.J11(is4),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q4,o4,a44.*Kw(is4),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q4,e1q4,-a44.*Sat(2,e1q,is4)-a45.*Syn.c3(is4)+a44.*Kp(is4).*Syn.Gp(is4,3), DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q4,e1d4,-a45.*Syn.c1(is4)+a44.*Kp(is4).*Syn.Gp(is4,4), DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d4,Syn.delta(is4),-b44.*M2(is4), DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d4,e1q4,b44.*Syn.c1(is4), DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d4,e1d4,-b43-b44.*Syn.c2(is4), DAE.n,DAE.n);
DAE.Gx = DAE.Gx + sparse([bs4;bs4;bs4+Bus.n;bs4+Bus.n],[e1q4;e1d4;e1q4;e1d4], ...
[Syn.Gp(is4,3);Syn.Gp(is4,4);Syn.Gq(is4,3);Syn.Gq(is4,4)],2*Bus.n,DAE.n);
DAE.Fy = DAE.Fy + sparse(e1q4,bs4,-a45.*M1(is4)+a44.*Kp(is4).*Syn.J11(is4),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1q4,bs4+Bus.n,-a45.*M3(is4)+a44.*Kp(is4).*Syn.J12(is4),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1d4,bs4,b44.*M2(is4),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1d4,bs4+Bus.n,b44.*M4(is4),DAE.n,2*Bus.n);
end
% Model V Type 1
if(~isempty(is51))
o51 = Syn.omega(is51);
e1q51 = Syn.e1q(is51);
e1d51 = Syn.e1d(is51);
e2d51 = Syn.e2d(is51);
DAE.Fx = DAE.Fx + sparse(o51,e1q51,N1(is51),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(o51,e2d51,N2(is51),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q51,Syn.delta(is51),a515.*M1(is51)-a514.*Kp(is51).*Syn.J11(is51),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q51,o51, a514.*Kw(is51),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q51,e1q51,-a514.*Sat(2,e1q,is51)-a515.*Syn.c3(is51)+a514.*Kp(is51).*Syn.Gp(is51,3),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q51,e2d51,-a515.*Syn.c1(is51)+a514.*Kp(is51).*Syn.Gp(is51,4),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d51,Syn.delta(is51),-b514.*M2(is51),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d51,e1q51, b514.*Syn.c1(is51),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d51,e1d51,-b513,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d51,e2d51,-b514.*Syn.c2(is51),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d51,Syn.delta(is51),-b512.*M2(is51),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d51,e1q51, b512.*Syn.c1(is51),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d51,e1d51, b511,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d51,e2d51,-b511-b512.*Syn.c2(is51),DAE.n,DAE.n);
DAE.Gx = DAE.Gx + sparse([bs51;bs51;bs51+Bus.n;bs51+Bus.n],[e1q51;e2d51;e1q51;e2d51], ...
[Syn.Gp(is51,3);Syn.Gp(is51,4);Syn.Gq(is51,3);Syn.Gq(is51,4)],2*Bus.n,DAE.n);
DAE.Fy = DAE.Fy + sparse(e1q51,bs51,-a515.*M1(is51)+a514.*Kp(is51).*Syn.J11(is51),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1q51,bs51+Bus.n,-a515.*M3(is51)+a514.*Kp(is51).*Syn.J12(is51),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1d51,bs51, b514.*M2(is51),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1d51,bs51+Bus.n, b514.*M4(is51),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e2d51,bs51, b512.*M2(is51),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e2d51,bs51+Bus.n, b512.*M4(is51),DAE.n,2*Bus.n);
end
% Model V Type 2
if(~isempty(is52))
o52 = Syn.omega(is52);
e1q52 = Syn.e1q(is52);
e2q52 = Syn.e2q(is52);
e2d52 = Syn.e2d(is52);
DAE.Fx = DAE.Fx + sparse(o52,e2q52,N1(is52),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(o52,e2d52,N2(is52),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q52,Syn.delta(is52),a525.*M1(is52)-a526.*Kp(is52).*Syn.J11(is52),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q52,o52,a526.*Kw(is52),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q52,e1q52,-a524.*Sat(2,e1q,is52),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q52,e2q52,-a525.*Syn.c3(is52)+a526.*Kp(is52).*Syn.Gp(is52,3),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q52,e2d52,-a525.*Syn.c1(is52)+a526.*Kp(is52).*Syn.Gp(is52,4),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q52,Syn.delta(is52),a522.*M1(is52)-a523.*Kp(is52).*Syn.J11(is52),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q52,o52,a523.*Kw(is52),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q52,e1q52, a521,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q52,e2q52,-a521-a522.*Syn.c3(is52)+a523.*Kp(is52).*Syn.Gp(is52,3),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q52,e2d52, -a522.*Syn.c1(is52)+a523.*Kp(is52).*Syn.Gp(is52,4),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d52,Syn.delta(is52), -b522.*M2(is52),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d52,e2q52, b522.*Syn.c1(is52),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d52,e2d52, -b521-b522.*Syn.c2(is52),DAE.n,DAE.n);
DAE.Gx = DAE.Gx + sparse([bs52;bs52;bs52+Bus.n;bs52+Bus.n],[e2q52;e2d52;e2q52;e2d52], ...
[Syn.Gp(is52,3);Syn.Gp(is52,4);Syn.Gq(is52,3);Syn.Gq(is52,4)],2*Bus.n,DAE.n);
DAE.Fy = DAE.Fy + sparse(e1q52,bs52, -a525.*M1(is52)+a526.*Kp(is52).*Syn.J11(is52),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1q52,bs52+Bus.n,-a525.*M3(is52)+a526.*Kp(is52).*Syn.J12(is52),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e2q52,bs52,-a522.*M1(is52)+a523.*Kp(is52).*Syn.J11(is52),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e2q52,bs52+Bus.n,-a522.*M3(is52)+a523.*Kp(is52).*Syn.J12(is52),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e2d52,bs52,b522.*M2(is52),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e2d52,bs52+Bus.n,b522.*M4(is52),DAE.n,2*Bus.n);
end
% Model V Type 3
if (~isempty(is53))
d53 = Syn.delta(is53);
o53 = Syn.omega(is53);
e1q53 = Syn.e1q(is53);
psid53 = Syn.psid(is53);
psiq53 = Syn.psiq(is53);
Syn.Gp(is53,1) = -DAE.V(bs53).*((e1q(is53)-psid(is53)).*c534.*cc(is53)+psiq(is53).*c535.*ss(is53));
Syn.Gp(is53,[3 7 8]) = [-DAE.V(bs53).*c534.*ss(is53),DAE.V(bs53).*c535.*cc(is53),DAE.V(bs53).*c534.*ss(is53)];
Syn.Gq(is53,1) = DAE.V(bs53).*((e1q(is53)-psid(is53)).*c534.*ss(is53)-psiq(is53).*c535.*cc(is53));
Syn.Gq(is53,[3 7 8]) = [-DAE.V(bs53).*c534.*cc(is53),-DAE.V(bs53).*c535.*ss(is53),DAE.V(bs53).*c534.*cc(is53)];
q1 = (Syn.Gp(is53,3)-2*ra(is53).*(e1q(is53)-psid(is53)).*c534.*c534).*iM(is53);
q2 = (Syn.Gp(is53,7)-2*ra(is53).*psiq(is53).*c535.*c535).*iM(is53);
q3 = -(a534+a531.*Wn.*ra(is53).*c534).*a532;
q4 = a531.*Wn.*ra(is53).*c534.*a532;
DAE.Fx = DAE.Fx + sparse(o53,e1q53,q1,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(o53,psiq53,q2,DAE.n,DAE.n);
DAE.Fx = DAE.Fx - sparse(o53,psid53,q1,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q53,d53,-a531.*Wn.*DAE.V(bs53).*cc(is53).*a532,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q53,o53,-a531.*Wn.*psiq(is53).*a532,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q53,e1q53,q3,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q53,psiq53,-a531.*Wn.*omega(is53).*a532,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q53,psid53,q4,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psiq53,d53, -Wn.*DAE.V(bs53).*ss(is53),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psiq53,o53, -Wn.*psid(is53),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psiq53,psiq53, -Wn.*ra(is53).*c535,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psiq53,psid53, -Wn.*omega(is53),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psid53,d53, Wn.*DAE.V(bs53).*cc(is53),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psid53,o53, Wn.*psiq(is53),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psid53,e1q53, Wn.*ra(is53).*c534,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psid53,psiq53, Wn.*omega(is53),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psid53,psid53,-Wn.*ra(is53).*c534,DAE.n,DAE.n);
DAE.Gx = DAE.Gx + sparse([bs53; bs53; bs53; bs53+Bus.n; bs53+Bus.n; bs53+Bus.n], ...
[e1q53; psiq53; psid53; e1q53; psiq53; psid53], ...
[Syn.Gp(is53,3); Syn.Gp(is53,7); Syn.Gp(is53,8); ...
Syn.Gq(is53,3); Syn.Gq(is53,7); Syn.Gq(is53,8)],2*Bus.n,DAE.n);
DAE.Fy = DAE.Fy + sparse(e1q53,bs53, a531.*Wn.*DAE.V(bs53).*cc(is53).*a532,DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1q53,bs53+Bus.n,-a531.*Wn.*ss(is53).*a532,DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(psiq53,bs53, Wn.*DAE.V(bs53).*ss(is53),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(psiq53,bs53+Bus.n, Wn.*cc(is53),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(psid53,bs53, -Wn.*DAE.V(bs53).*cc(is53),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(psid53,bs53+Bus.n, Wn.*ss(is53),DAE.n,2*Bus.n);
end
% Model VI
if(~isempty(is6))
o6 = Syn.omega(is6);
e1q6 = Syn.e1q(is6);
e1d6 = Syn.e1d(is6);
e2q6 = Syn.e2q(is6);
e2d6 = Syn.e2d(is6);
DAE.Fx = DAE.Fx + sparse(o6,e2q6,N1(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(o6,e2d6,N2(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q6,Syn.delta(is6),a5.*M1(is6)-a6.*Kp(is6).*Syn.J11(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q6,o6,a6.*Kw(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q6,e1q6,-a4.*Sat(2,e1q,is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q6,e2q6,-a5.*Syn.c3(is6)+a6.*Kp(is6).*Syn.Gp(is6,3),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q6,e2d6,-a5.*Syn.c1(is6)+a6.*Kp(is6).*Syn.Gp(is6,4),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d6,Syn.delta(is6),-b4.*M2(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d6,e1d6,-b3,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d6,e2q6,b4.*Syn.c1(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d6,e2d6,-b4.*Syn.c2(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q6,Syn.delta(is6),a2.*M1(is6)+a3.*Kp(is6).*Syn.J11(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q6,o6,a3.*Kw(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q6,e1q6,a1,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q6,e2q6,-a1-a2.*Syn.c3(is6)-a3.*Kp(is6).*Syn.Gp(is6,3),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q6,e2d6,-a2.*Syn.c1(is6)-a3.*Kp(is6).*Syn.Gp(is6,4),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d6,Syn.delta(is6),-b2.*M2(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d6,e1d6,b1,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d6,e2q6,b2.*Syn.c1(is6),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d6,e2d6,-b1-b2.*Syn.c2(is6),DAE.n,DAE.n);
DAE.Gx = DAE.Gx + sparse([bs6;bs6;bs6+Bus.n;bs6+Bus.n],[e2q6;e2d6;e2q6;e2d6], ...
[Syn.Gp(is6,3);Syn.Gp(is6,4);Syn.Gq(is6,3);Syn.Gq(is6,4)],2*Bus.n,DAE.n);
DAE.Fy = DAE.Fy + sparse(e1q6,bs6,-a5.*M1(is6)+a6.*Kp(is6).*Syn.J11(is6),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1q6,bs6+Bus.n,-a5.*M3(is6)+a6.*Kp(is6).*Syn.J12(is6),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1d6,bs6,b4.*M2(is6),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e1d6,bs6+Bus.n,b4.*M4(is6),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e2q6,bs6,-a2.*M1(is6)+a3.*Kp(is6).*Syn.J11(is6),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e2q6,bs6+Bus.n,-a2.*M3(is6)+a3.*Kp(is6).*Syn.J12(is6),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e2d6,bs6,b2.*M2(is6),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(e2d6,bs6+Bus.n,b2.*M4(is6),DAE.n,2*Bus.n);
end
% Model VIII
if ~isempty(is8)
d8 = Syn.delta(is8);
o8 = Syn.omega(is8);
e1q8 = Syn.e1q(is8);
e1d8 = Syn.e1d(is8);
e2q8 = Syn.e2q(is8);
e2d8 = Syn.e2d(is8);
psid8 = Syn.psid(is8);
psiq8 = Syn.psiq(is8);
q1 = (DAE.V(is8).*cc(is8)-2*ra(is8).*(e2d(is8)+psiq(is8))./ ...
xq2(is8)).*iM(is8)./xq2(is8);
q2 = (DAE.V(is8).*ss(is8)+2*ra(is8).*(e2q(is8)-psid(is8))./ ...
xd2(is8)).*iM(is8)./xd2(is8);
DAE.Fx = DAE.Fx + sparse(o8,e2d8,q1,DAE.n,DAE.n);
DAE.Fx = DAE.Fx - sparse(o8,e2q8,q2,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(o8,psiq8,q1,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(o8,psid8,q2,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q8,o8,a68.*Kw(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q8,e1q8, -a48.*Sat(2,e1q,is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q8,e2q8, -a58./xd2(is8)-a68.*Kp(is8).*psiq(is8)./xd2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q8,e2d8, -a68.*Kp(is8).*psid(is8)./xq2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q8,psiq8,-a68.*Kp(is8).*(psid(is8)./xq2(is8)+(e2q(is8)-psid(is8))./xd2(is8)),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1q8,psid8, a58./xd2(is8)-a68.*Kp(is8).*(-(-e2d(is8)-psiq(is8))./xq2(is8)-psiq(is8)./xd2(is8)),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d8,e1d8, -b38,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d8,e2d8, -b48./xq2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e1d8,psiq8, -b48./xq2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q8,o8, a38.*Kw(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q8,e1q8, a18,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q8,e2q8, -a18-a28./xd2(is8)-a38.*Kp(is8).*psiq(is8)./xd2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q8,e2d8, -a38.*Kp(is8).*psid(is8)./xq2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q8,psiq8,-a38.*Kp(is8).*(psid(is8)./xq2(is8)+(e2q(is8)-psid(is8))./xd2(is8)),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2q8,psid8, a28./xd2(is8)-a38.*Kp(is8).*(-(-e2d(is8)-psiq(is8))./xq2(is8)-psiq(is8)./xd2(is8)),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d8,e1d8, b18,DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d8,e2d8, -b18-b28./xq2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(e2d8,psiq8, -b28./xq2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psiq8,Syn.delta(is8), -Wn*DAE.V(bs8).*ss(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psiq8,o8, -Wn*psid(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psiq8,e2d8, -Wn*ra(is8)./xq2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psiq8,psiq8, -Wn*ra(is8)./xq2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psiq8,psid8, -Wn*omega(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psid8,Syn.delta(is8), Wn*DAE.V(bs8).*cc(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psid8,o8, Wn*psiq(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psid8,e2q8, Wn*ra(is8)./xd2(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psid8,psiq8, Wn*omega(is8),DAE.n,DAE.n);
DAE.Fx = DAE.Fx + sparse(psid8,psid8, -Wn*ra(is8)./xd2(is8),DAE.n,DAE.n);
Syn.Gp(is8,[5 6 7 8]) = [-DAE.V(bs8)./xd2(is8).*ss(is8), DAE.V(bs8)./xq2(is8).*cc(is8), DAE.V(bs8)./xq2(is8).*cc(is8), DAE.V(bs8)./xd2(is8).*ss(is8)];
Syn.Gq(is8,[5 6 7 8]) = [-DAE.V(bs8)./xd2(is8).*cc(is8),-DAE.V(bs8)./xq2(is8).*ss(is8),-DAE.V(bs8)./xq2(is8).*ss(is8), DAE.V(bs8)./xd2(is8).*cc(is8)];
DAE.Gx = DAE.Gx + sparse([bs8;bs8;bs8;bs8;bs8+Bus.n;bs8+Bus.n;bs8+Bus.n;bs8+Bus.n], ...
[e2q8;e2d8;psiq8;psid8;e2q8;e2d8;psiq8;psid8], ...
[Syn.Gp(is8,5);Syn.Gp(is8,6);Syn.Gp(is8,7);Syn.Gp(is8,8);Syn.Gq(is8,5);Syn.Gq(is8,6);Syn.Gq(is8,7);Syn.Gq(is8,8)],2*Bus.n,DAE.n);
DAE.Fy = DAE.Fy + sparse(psiq8,bs8,Wn*DAE.V(bs8).*ss(is8),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(psiq8,bs8+Bus.n, Wn*cc(is8),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(psid8,bs8,-Wn*DAE.V(bs8).*cc(is8),DAE.n,2*Bus.n);
DAE.Fy = DAE.Fy + sparse(psid8,bs8+Bus.n, Wn*ss(is8),DAE.n,2*Bus.n);
end
end
% --------------------------------------------------------------
% Saturation function
% --------------------------------------------------------------
function output = Sat(flag,e1q,isx)
global Syn
b = [0.8*ones(Syn.n,1), 1-Syn.con(:,25), 1.2*(1-Syn.con(:,26))];
c2 = b*[12.5; -25; 12.5];
c1 = b*[-27.5; 50; -22.5];
c0 = b*[15; -24; 10];
switch flag
case 1 % saturation function
output = e1q(isx);
idx = find(output > 0.8);
if ~isempty(idx)
k = isx(idx);
output(idx)=c2(k).*e1q(k).^2+c1(k).*e1q(k)+c0(k);
end
case 2 % Jacobian
output = ones(length(isx),1);
idx = find(e1q(isx) > 0.8);
if ~isempty(idx)
k = isx(idx);
output(idx)=2*c2(k).*e1q(k) + c1(k);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -