function [sys,x0,str,ts] = afd1(t,x,u,flag)
switch flag
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
case 1
sys=[];
case 2
sys=[];
case 3
sys=mdlOutputs(t,x,u);
case 4
sys=[];
case 9
sys=[];
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
%=============================================================================
% mdlInitializeSizes
function [sys,x0,str,ts]=mdlInitializeSizes
global f_i f_vo theta_i theta_vo isIslanding
f_i=50;
f_vo=50;
theta_i=0;
theta_vo=0;
isIslanding=0;
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 2;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [1e-4 0];
%=============================================================================
% mdlOutputs
function sys=mdlOutputs(t,x,u)
global f_i f_vo theta_i theta_vo isIslanding
theta_vo=u(2);
if abs(theta_vo)<0.04 % 电压相位为0时更新频率
f_vo=u(1);
end
if(isIslanding==0)
if abs(theta_vo)<0.04
if (f_vo>50.5) || (f_vo<49.5) %判断频率是否越界
sys=[0 0];
isIslanding=1;
else
f_i=f_vo+2.5;
theta_i=theta_vo;
end
else
if(pi-theta_i<0.03) && (pi-theta_vo>0.03)
theta_i=pi;
elseif(2*pi-theta_i<0.03) && (2*pi-theta_vo>0.03)
theta_i=2*pi;
elseif (pi-theta_vo<0.03) && (pi-theta_i>0.03)
theta_i=pi;
elseif (2*pi-theta_vo<0.03) && (2*pi-theta_i>0.03)
theta_i=2*pi;
else
theta_i=theta_i+2*pi*f_i*1e-4;
end
end
sys(1)=sin(theta_i);
else
sys(1)=0;
end
sys(2)=f_vo;
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
主动孤岛检测,主动孤岛检测方法,matlab源码.zip (4个子文件)
主动孤岛检测
频率偏移
afd.m 2KB
AFD1.mdl 54KB
afd1.m 2KB
AFD1.mdl.r2009a 48KB
共 4 条
- 1
lithops7
- 粉丝: 325
- 资源: 4457
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页