最近在看MATLAB中使用SFUCTION函数实现AFDPF孤岛检测,但是对于程序实现的原理没有搞懂,能不能帮忙解答一下
下面是使用的部分代码:
function sys=mdlOutputs(t,x,u)
global f_vo theta_i theta_vo isIslanding cf
theta_vo=u(2); %数字锁相环输出的电压频率
if abs(theta_vo)<0.04 % 电压相位为0时更新频率(电网频率在50+-0.2HZ范围内波动为正常现象)
f_vo=u(1);
cf=u(2)+0.2*(f_vo-50);
if (f_vo>50.5 || f_vo<49.5) %判断频率是否越界
sys=[0 0 cf];%?
isIslanding=1;%频率越界则输出为0,置孤岛标志
end
end
if(isIslanding==0) %判断是否孤岛效应
if cf>=0%若截断系数大于0,表示
if (theta_vo>=0)&&(theta_vo<=0.5pi*cf)
theta_i=0;
elseif (abs(pi-theta_vo))<=0.5*pi*cf
theta_i=pi;
elseif (theta_vo>=pi(2-0.5cf))&&(theta_vo<=2*pi)
theta_i=2*pi;
elseif(theta_vo>0.5picf)&&(theta_vo<(pi-0.5*pi*cf))
theta_i=(theta_vo-0.5*pi*cf)/(1-cf);
elseif(theta_vo>=pi+0.5picf)&&(theta_vo<=pi*(2-0.5*cf))
theta_i=(theta_vo-1.5*pi*cf)/(1-cf);
end
elseif cf<0
if (theta_vo>0)&&(theta_votheta_i=(theta_vo-0.5*pi*cf)/(1-cf);
elseif(theta_vo>pi)&&(theta_vo<2pi)
theta_i=(theta_vo-1.5picf)/(1-cf);
end
end
sys(1)=sin(theta_i); %非孤岛输出正弦波
else
sys(1)=0;%孤岛输出0
end
sys(2)=f_vo;
sys(3)=cf;
想要了解的问题:
1、
f_vo=u(1);
cf=u(2)+0.2*(f_vo-50);
中,u(1 2)代表的值是固定的吗?
2、sys(1 2 3)分别表示t,x,u吗,是不是由这条代码决定的
function sys=mdlOutputs(t,x,u)
3、
这段代码表示什么意思?
要是没有时间的话或许能推荐下我从什么地方可以比较系统地学习程序,自己一个人瞎找找不到学习资料。谢谢大家~
推荐你关注和私信该博主,偶然的机会看到过他类似的文章。链接:https://blog.csdn.net/ccsss22/article/details/126087996
链接:https://blog.csdn.net/ccsss22/article/details/126088167?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-6-126088167-blog-126087996.t0_edu_mix&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EOPENSEARCH%7ERate-6-126088167-blog-126087996.t0_edu_mix&utm_relevant_index=7
【如有帮助,恭请采纳】