⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 distinguish.m

📁 基于专家系统的电能质量分析。识别程序
💻 M
字号:
%识别程序:
%输入作为识别参数时,则将电压幅值化成标么值的形式,而且谐波的幅值一般均设为1;
%X数组的第一行为基波a相的测量值,第二行为b相的测量值,第三行为c相的测量值(如果没有三相数据,则第二行和第三行为谐波数值),以后几行均为谐波数值;
%倒数第二行为电压波动数值,输入格式为【0 0 d(电压波动值)】,最后一行为三相不平衡数值,输入格式为【e(三相不平衡度) 0 0】;
clear;
clc;
X=[49.5 0.6 0.9;148.5 0.6 0.9];

handles.X=X;
HH=[];
[a,b]=size(handles.X);
X=handles.X;
for j=2:a
   if X(j,1)/X(1,1)>1.04|X(j,1)/X(1,1)<0.96
      G=X(j,1)/X(1,1);
      G=round(G*10)/10;
      if G>1|G<1&G>0|G<0
         Faulttype=[num2str(G),'次谐波//'];
         HH=[HH Faulttype];
      end
   end
end

for i=1:a
   if X(i,2)<=0.6&X(i,2)>=0.01
      if X(i,3)<=0.9&X(i,3)>=0.1
         if i==1
            Faulttype='基波分量瞬时电压暂降//';
            HH=[HH Faulttype];
         else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相瞬时电压暂降//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相瞬时电压暂降//'];
                     HH=[HH Faulttype];
                end
            else
                Faulttype=[num2str(G),'次谐波分量瞬时电压暂降//'];
                HH=[HH Faulttype];
            end
         end
      end
   end
   
   if X(i,2)<=0.6&X(i,2)>=0.01
      if X(i,3)<=1.8&X(i,3)>=1.1
          if i==1
            Faulttype='基波分量瞬时电压暂升//';
            HH=[HH Faulttype];
         else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相瞬时电压暂升//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相瞬时电压暂升//'];
                     HH=[HH Faulttype];
                end
            else
                Faulttype=[num2str(G),'次谐波分量瞬时电压暂升//'];
                HH=[HH Faulttype];
            end
         end
      end
   end
   
   if X(i,2)<=3&X(i,2)>=0.01
      if X(i,3)<=0.1
         if i==1
            Faulttype='基波分量暂时电压中断//';
            HH=[HH Faulttype];
         else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相暂时电压中断//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相暂时电压中断//'];
                     HH=[HH Faulttype];
                end
            else
                Faulttype=[num2str(G),'次谐波分量暂时电压中断//'];
                HH=[HH Faulttype];
            end
         end
      end
   end
   
   if X(i,2)<=3&X(i,2)>0.6
      if X(i,3)<=0.9&X(i,3)>=0.1
         if i==1
            Faulttype='基波分量暂时电压暂降//';
            HH=[HH Faulttype];
         else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相暂时电压暂降//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相暂时电压暂降//'];
                     HH=[HH Faulttype];
                end
            else
                Faulttype=[num2str(G),'次谐波分量暂时电压暂降//'];
                HH=[HH Faulttype];
            end
         end
      end
   end
   
   if X(i,2)<=3&X(i,2)>0.6
      if X(i,3)<=1.4&X(i,3)>=1.1
         if i==1
            Faulttype='基波分量暂时电压暂升//';
            HH=[HH Faulttype];
         else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相暂时电压暂升//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相暂时电压暂升//'];
                     HH=[HH Faulttype];
                end
            else
                Faulttype=[num2str(G),'次谐波分量暂时电压暂升//'];
                HH=[HH Faulttype];
            end
         end
      end
   end
   
   if X(i,2)<=60&X(i,2)>3
      if X(i,3)<=0.1
         if i==1
            Faulttype='基波分量短时电压中断//';
            HH=[HH Faulttype];
         else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相短时电压中断//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相短时电压中断//'];
                     HH=[HH Faulttype];
                end
            else
                Faulttype=[num2str(G),'次谐波分量短时电压中断//'];
                HH=[HH Faulttype];
            end
         end
      end
   end
   
   if X(i,2)<=60&X(i,2)>3
      if X(i,3)<=0.9&X(i,3)>=0.1
         if i==1
            Faulttype='基波分量短时电压暂降//';
            HH=[HH Faulttype];
         else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相短时电压暂降//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相短时电压暂降//'];
                     HH=[HH Faulttype];
                end
            else
                Faulttype=[num2str(G),'次谐波分量短时电压暂降//'];
                HH=[HH Faulttype];
            end
         end
      end
   end
   
   if X(i,2)<=60&X(i,2)>3
       if X(i,3)<=1.2&X(i,3)>=1.1
          if i==1
            Faulttype='基波分量短时电压暂升//';
            HH=[HH Faulttype];
         else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相短时电压暂升//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相短时电压暂升//'];
                     HH=[HH Faulttype];
                end
            else
                Faulttype=[num2str(G),'次谐波分量短时电压暂升//'];
                HH=[HH Faulttype];
            end
         end
      end
   end
  
   if X(i,2)>=60
       if X(i,3)==0
          if i==1
            Faulttype='基波分量持续中断//';
            HH=[HH Faulttype];
          else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相持续中断//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相持续中断//'];
                     HH=[HH Faulttype];
                end
            else
                Faulttype=[num2str(G),'次谐波分量持续中断//'];
                HH=[HH Faulttype];
            end
          end
      end
   end
   
   if X(i,2)>=60
       if X(i,3)<=0.9&X(i,3)>=0.8
          if i==1
            Faulttype='基波分量欠电压//';
            HH=[HH Faulttype];
          else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相欠电压//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相欠电压//'];
                     HH=[HH Faulttype];
                end
            else
               Faulttype=[num2str(G),'次谐波分量欠电压//'];
               HH=[HH Faulttype];
            end
          end
       end
   end
  
   if X(i,2)>=60
       if X(i,3)<=1.2&X(i,3)>=1.1
         if i==1
            Faulttype='基波分量过电压//';
            HH=[HH Faulttype];
         else
            G=X(i,1)/X(1,1);
            G=round(G*10)/10;
            if G==1
                if i==2
                    Faulttype=['b相过电压//'];
                     HH=[HH Faulttype];
                elseif i==3
                    Faulttype=['c相过电压//'];
                     HH=[HH Faulttype];
                end
            else
               Faulttype=[num2str(G),'次谐波分量过电压//'];
               HH=[HH Faulttype];
            end
         end
      end
   end
   if  X(i,1)==0
      if X(i,2)==0
         if X(i,3)<=0.3&X(i,3)>=0.05       %对于电压波动,输入的幅值为波动的最大值;
            Faulttype='电压波动//';
            HH=[HH Faulttype];
         end
      end
   end   
   if X(i,3)==0
       if X(i,2)==0
           if X(i,1)>0|X(i,1)<0
              Faulttype='三相不平衡//'; 
              HH=[HH Faulttype];
           end
       end
   end
end

if X(1,1)/50<1.04&X(1,1)/50>1.0016
   Faulttype='频率波动//';
   HH=[HH Faulttype];
elseif X(1,1)/50<0.9984&X(1,1)/50>0.96
   Faulttype='频率波动//';
   HH=[HH Faulttype];
end
HH

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -