📄 fcall.m
字号:
function p = fcall(p)
global DAE Pod
if ~p.n, return, end
ty1 = find(p.con(:,3) == 1);
ty2 = find(p.con(:,3) == 2);
x0 = p.x0;
x1 = DAE.x(p.x1);
if ty2
[Ps,Qs,Pr,Qr,Is,Ir] = fex_lineflows;
Kp = p.con(:,12);
Ki = p.con(:,13);
tp = ty2(find(p.con(ty2,4) == 1));
ta = ty2(find(p.con(ty2,4) == 2));
if tp
x0(tp) = -Kp(tp).*(p.Pref(tp)-Ps(p.line(tp))) + DAE.x(p.x2(tp));
DAE.f(p.x2(tp)) = -Ki(tp).*(p.Pref(tp)-Ps(p.line(tp)));
end
if ta
x0(ta) = -Kp(ta).*(p.Pref(ta)-Ps(p.line(ta))-Pr(p.line(ta))) ...
+ DAE.x(p.x2(ta));
DAE.f(p.x2(ta)) = -Ki(ta).*(p.Pref(ta)-Ps(p.line(ta))-Pr(p.line(ta)));
end
end
% Updating signal x0
if p.pod
x0(p.pod) = x0(p.pod) + p.con(p.pod,16).*DAE.x(Pod.Vs(Pod.tcsc));
end
x1_max = p.con(:,10);
x1_min = p.con(:,11);
u = ~(x1 >= x1_max & DAE.f(p.x1) > 0) & ...
~(x1 <= x1_min & DAE.f(p.x1) < 0);
DAE.f(p.x1) = u.*(x0-x1)./p.con(:,9);
DAE.x(p.x1) = min(x1_max,x1);
DAE.x(p.x1) = max(x1_min,DAE.x(p.x1));
% update B
p.B = btcsc(p);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -