AFDPF孤岛检测中S-function函数中的正反馈系数与论文中一致时无法检测出孤岛

请教一下各位,孤岛检测中的AFDPF法,在simulnk中有这样一个代码,如图

img


我将图中的正反馈系数设为0.1-0.2的时候无法检测出孤岛,只有设置到10以上时候才能检测出孤岛,具体我需要在哪里修改参数才能达到论文中的正反馈系数设为0.1-0.2时能正常检测出孤岛呢?
参靠文献有正反馈主动移频式孤岛检测算法的改进,刘晓博。求解答一下,实在搞不懂哪里需要调节了。
另外说让我去看博主的AFD检测法的原理的就不用说了,那个我看了,但是看了之后我还是不知道怎么修改。
下面是我的AFDPF的代码

function [sys,x0,str,ts] = afd(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     = 3;
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时更新频率0.04
        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+0.01+10*(f_vo-50);
            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);
    sys(3)=1; 
else
    sys(1)=0;
    sys(3)=0;
end
sys(2)=f_vo;


根据你提供的代码,孤岛检测是通过判断频率是否越界来实现的。在代码中,当电压相位小于0.04时(表示电压相位接近于0),会更新输出频率f_vo的值。

如果你想要在正反馈系数设为0.1-0.2时也能检测出孤岛,可以尝试在以下位置进行参数调整:

  1. if abs(theta_vo)<0.04 的条件判断语句中,将0.04改为更小的值,比如0.01或更小。这样可以使得电压相位更接近于0时就能更新频率f_vo的值。

  2. if (f_vo>50.5) || (f_vo<49.5) 的条件判断语句中,将50.5和49.5改为更适合的阈值。根据你的需求,你可以尝试调整阈值范围,例如改为50.1和49.9。

需要注意的是,对代码进行修改可能会导致其他方面的影响,需要进行适当的测试和验证。此外,建议先理解论文中的算法原理,这样可以更好地指导你进行代码的修改和调试工作。

正反馈系数似乎没有直接出现在代码中,要找到与正反馈系数相关的计算公式,并在相应的位置进行修改

【以下回答由 GPT 生成】

根据您提供的信息,AFDPF(主动频率侦测和功率反馈)孤岛检测算法中的正反馈系数问题是无法检测到孤岛,除非将系数设置为10以上。您希望知道如何修改参数才能够在正反馈系数设为0.1-0.2时正常检测出孤岛。此外,您还提到有一个参考文献,需要调节哪些参数我们不确定。下面将分步解答您的问题:

  1. 首先,我们需要了解AFDPF孤岛检测算法的原理。请提供更多关于算法原理、具体要求、预期结果等方面的信息,以便更好地帮助您解决问题。

  2. 根据您提供的代码,我注意到在sizes.NumOutputs中,输出数量为3。但代码中尚未给出相应输出的定义。请提供这部分代码,以便更好地了解算法的逻辑和需要输出的数据。

  3. 在您提供的代码中,正反馈系数没有被使用到。我认为在修改正反馈系数之前,我们需要确保代码中正确地使用了该参数。请提供更多关于正反馈系数在算法中的使用方式的信息。

  4. 如果您能提供Liu Xiaobo参考文献的详细信息,我们可以通过阅读该文献来确切了解需要调节的参数。

综上所述,请提供更多关于AFDPF孤岛检测算法的信息,以便更好地帮助您解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

将正反馈项改为一个线性函数,实际生产中电网电压频率可能会有波动的,最好通过多次试验或者仿真来确定下最优的参数值

小系统的时间步长可能会使频率偏移更加明显,从而提高孤岛检测的准确性。或者尝试调整正反馈系数的初始值和增长速率,以在较小的正反馈系数下也能够检测出孤岛。可以尝试减小Simulink模型中的时间步长参数。

根据你提供的代码,AFDPF法(Active Frequency Drift Protection法)是一种用于孤岛检测的算法。你提到在将正反馈系数设置为0.1-0.2时无法检测出孤岛,而只有设置为10以上才能检测出。这可能是因为算法的参数设置不适合你的系统情况,或者是算法的实现逻辑有问题。

AFDPF法的正反馈系数控制的是频率偏离的阈值。正反馈系数越大,系统对于频率偏离的容忍度越小,也就是越容易检测到孤岛。相反,正反馈系数越小,系统对于频率偏离的容忍度越大,可能会导致无法检测到孤岛。

根据你的描述,你希望在正反馈系数设置为0.1-0.2时也能正常检测出孤岛。这可能需要你根据你的系统特点,调整算法中的参数和逻辑。具体来说,你可以考虑以下几个方面:

  1. 调整阈值: 正反馈系数影响阈值,你可以尝试将阈值调整为更适合你的系统的值,以便在0.1-0.2范围内也能够检测到孤岛。

  2. 检查逻辑: 仔细检查你的算法实现逻辑,确保没有错误,尤其是在判断孤岛状态时的条件判断逻辑。

  3. 实验和调试: 进行一些实验,通过修改正反馈系数和其他参数,观察算法的输出是否符合你的预期。你可以尝试不同的参数组合,以找到适合你系统的最佳参数。

  4. 参考文献和专家建议: 如果你有相关的参考文献或者可以咨询领域内的专家,可以从中获取更多关于参数设置和算法调整的建议。

最终,调整算法参数和逻辑需要结合你的具体系统情况进行,可能需要一些试验和调试。如果你对这方面不确定,可以考虑咨询专业人士或者相关领域的同行,获取更准确的建议。