• 大小: 6.67MB
    文件类型: .7z
    金币: 2
    下载: 1 次
    发布日期: 2023-09-23
  • 语言: Matlab
  • 标签: matlab  island  

资源简介

孤岛算法,自己拿去仿真,懂的人自然懂,里面有比较多的描述,包括论文

资源截图

代码片段和文件信息

function [sysx0strts] = afd(txuflag)
switch flag
  case 0
    [sysx0strts]=mdlInitializeSizes;
  case 1
    sys=[];
  case 2
    sys=[];
  case 3
    sys=mdlOutputs(txu);
  case 4
    sys=[];
  case 9
    sys=[];
   otherwise
    error([‘Unhandled flag = ‘num2str(flag)]);
end

%=============================================================================
% mdlInitializeSizes
function [sysx0strts]=mdlInitializeSizes  %初始化
global  f_vo theta_i theta_vo isIslanding cf %并网电流电压及其相位和孤岛标志
f_vo=50;        %50Hz
theta_i=0;      %I
theta_vo=0;     %V
isIslanding=0;  %Island
cf=0;
sizes = simsizes;
sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 3;
sizes.NumInputs      = 3;
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(txu)
global  f_vo theta_i theta_vo isIslanding cf
theta_vo=u(2); %数字锁相环输出的电压频率

if abs(theta_vo)<0.04  % 电压相位为0时更新频率
        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
        if (theta_vo>=0)&&(theta_vo<=0.5*pi*cf)
            theta_i=0;
        elseif (abs(pi-theta_vo))<=0.5*pi*cf
            theta_i=pi;  
        elseif (theta_vo>=pi*(2-0.5*cf))&&(theta_vo<=2*pi)
         theta_i=2*pi;
        elseif(theta_vo>0.5*pi*cf)&&(theta_vo<(pi-0.5*pi*cf))
        theta_i=(theta_vo-0.5*pi*cf)/(1-cf);
        elseif(theta_vo>=pi+0.5*pi*cf)&&(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_vo         theta_i=(theta_vo-0.5*pi*cf)/(1-cf);
      elseif(theta_vo>pi)&&(theta_vo<2*pi)
        theta_i=(theta_vo-1.5*pi*cf)/(1-cf);
       end
   end
   sys(1)=sin(theta_i); 
else
   sys(1)=0;
end
   sys(2)=f_vo;
   sys(3)=cf;  
  
              

        
      
                   
        
   

        
            
            
    
            
            
            
            
            
            
      

评论

共有 条评论