当前位置:网站首页>Simulation of Active anti-islanding-AFD Active Anti-islanding Model Based on Simulink
Simulation of Active anti-islanding-AFD Active Anti-islanding Model Based on Simulink
2022-08-01 03:55:00 【fpga and matlab】
目录
一、理论基础
l一个性能完善的光伏并网发电系统,需要各种保护措施保证用户的人身安全,同时防止设备因意外而造成的损坏.由于光伏发电系统和电网并联工作,因此光伏发电系统需能及时检测出电网故障并切断其与电网的连接.如果不能及时发现电网故障,就会出现光伏发电系统仍向局部电网供电的情形,从而使本地负载仍处于供电状态,造成设备损坏和人员伤亡.这种现象被称为孤岛效应.
目前孤岛检测主要分为被动式检测和主动式检测两种.被动式检测是利用电网断电瞬间,逆变器输出功率与局部负载功率不平衡造成的逆变器输出端电压值和频率变化作为孤岛效应检测的依据.其具有检测方法简单,对系统运行无干扰等优点.但是如果在电网停电的瞬间,逆变器输出功率与局部负载功率达到平衡,该方法将失去作用.
主动式检测是在系统工作中,对逆变器输出电流、频率或相位施加一定的扰动信号,并对其进行检测.如果电网正常,因电网的巨大平衡作用,逆变器输出不受扰动信号的影响;一旦电网出现故障,这些扰动量就会在逆变器输出端逐步累计,直至超出规定范围,从而反映出电网故障.与被动式检测方法相比,主动式检测方法具有精度高,检测盲区小的优点.但当局部电网存在多个分布式能源系统时,主动式检测效果下降,严重时甚至无效.
被动式检测主要有电压频率检测、相位检测、频率检测三种方法,在实际中均有一定的应用.但是由于被动式孤岛检测方法对逆变器输出功率与负载功率是否匹配有较高的要求,因此存在较大的检测盲区.所以在此不做详细的描述.
其中,Active frequency offset(Active Frequency Drift.AFD)The idea of island detection method is through phase locked loop(PLL)Determine the frequency and phase of the common point voltage.Adjusts the given frequency of the output current of the PV inverter.Make the current frequency slightly higher or lower than the common point voltage frequency.If the current half-wave has been completed and the voltage zero-crossing point has not been reached.The forced current setting is zero.Until the voltage zero-crossing point is triggered.The current just begins the next half-wave.
AFDThe steady-state frequency should make the load phase angle satisfy the following relationship
式中tzLeads for the current zero-crossing point(或滞后)Time interval for voltage zero crossings. cf为AFDtruncation factor,Tis the voltage period.
二、案例背景
1.问题描述
首先,这个电力系统,我们做如下的设置,即:
230V/50Hz,单相(single phase or 1 phase).
然后,仿真的具体要求为:
负载:小型电网 single phase 1kW grid-connected PV systems
根据 IEEE 1547 standard 对反孤岛的要求
·Voltage: 240V ± 10%,
·frequency:50Hz ± 1%
·Quality Factor, Qf: Qf < 2.5 (Qf = 0 , 0.02,0.04, … , 2.4)
·Required Islanding detection time: tdetect<0.2s and isolated to the load
·THD: <5%
2.思路流程
整个反孤岛模型,采用simulink进行建模,在matlab2010b中,建立仿真模型,其中AFDalgorithm is usedS函数进行设计,并封装为AFD模块供simulink调用.
三、部分MATLAB程序
AFD的SThe function part program is as follows:
function [sys,x0,str,ts]=mdlInitializeSizes
%定义全局变量
global f_i;
global f_vo;
global f_v_hb;
global f_v_lb;
global theta_i;
global theta_vo;
global isIslanding;
global num0;
global num1;
global step;
global step1;
global k;
%The following indicators are based onIEEE1547来取值
f_i = 50; %current frequency
f_vo = 50; %电压频率
theta_i = 0; %电流相位
theta_vo = 0; %电压相位
isIslanding= 0; %Non-islanding effect
num0 = 0;
num1 = 0;
k = 10;
step1 = 0.5;
f_v_hb = 50;
f_v_lb = 50;
%Get the system default system parameter variablessizes
sizes = simsizes;
%连续状态的个数
sizes.NumContStates = 0;
%离散状态的个数
sizes.NumDiscStates = 0;
%输出变量的个数
sizes.NumOutputs = 2;
%输入变量的个数
sizes.NumInputs = 2;
%布尔变量,Indicates the presence or absence of direct feed.1表示有,0just not
sizes.DirFeedthrough = 1;
%采样时间个数,sThe function supports multi-sampling systems
sizes.NumSampleTimes = 1;
%将结构体sizes赋值给sys
sys = simsizes(sizes);
%Initial variable state
x0 = [];
%The value is reserved by the system,必须为空
str = [];
%Sampling period variable
ts = [1e-4 0];
function sys=mdlOutputs(t,x,u)
%定义全局变量
global f_i;
global f_vo;
global f_v_hb;
global f_v_lb;
global theta_i;
global theta_vo;
global isIslanding;
global num0;
global num1;
global step;
global step1;
global k;
%锁相环输出
theta_vo=u(2);
%The voltage phase is 0update frequency
if abs(theta_vo) < 0.04
%The voltage frequency of the digital phase-locked loop output
f_vo=u(1);
end
%Determine whether it is not an islanding effect
if(isIslanding==0)
%Whether the grid-connected voltage phase crosses zero
if abs(theta_vo)<0.04
%Determine whether the grid-connected voltage frequency is out of bounds,根据1547规定,1%的调整,So it's positive and negative0.5Hz
if (f_vo>50.5) || (f_vo<49.5)
sys = [0 0];
%If exceeded then island detected
isIslanding = 1;
else
f_vo = u(1);
if(f_v_lb < f_vo)
num0=0;
end
if(f_vo < f_v_hb)
num1=0;
end
if (f_vo>=50)
num1=num1+1;
if(num1>0)
step=k*step1;
else
step=step1;
end
f_i = f_vo+step;
f_v_hb = f_i;
else
num0=num0+1;
if(num0>0)
step=k*step1;
else
step=step1;
end
f_i = f_vo-step;
f_v_lb = f_i;
end
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
%Non-islanded output sine wave
sys(1)=sin(theta_i);
else
%Island outputs zero
sys(1)=0;
end
sys(2)=f_vo;
AFD的simulink整体模型如下:
四、仿真结论分析
运行simulinkThe simulation results are displayed,The specific simulation results are shown below:
It can be seen from the previous simulation results,采用AFD这种主动反孤岛的方式,系统能够较快的检测到孤岛,但是同时AFDIt has a great influence on the waveform of the system.
五、参考文献
[1] Velasco D , Trujillo C , Garcerá, G, et al. An Active Anti-Islanding Method Based on Phase-PLL Perturbation[J]. IEEE Transactions on Power Electronics, 2011, 26(4):1056-1066.A2-12
边栏推荐
- 带你体验一次类型编程实践
- HCIP(15)
- pdb药物综合数据库
- Device tree - conversion from dtb format to struct device node structure
- 787. Merge Sort
- After specifying set 'execution.savepoint.path', restart flinksql and report this error
- Simple vim configuration
- 使用ts-node报错
- The IDEA can't find or unable to load The main class or Module "*" must not contain The source root "*" The root already belongs to The Module "*"
- Simple and easy to use task queue - beanstalkd
猜你喜欢
Replacing the Raspberry Pi Kernel
The IDEA can't find or unable to load The main class or Module "*" must not contain The source root "*" The root already belongs to The Module "*"
JS new fun(); class and instance JS is based on object language Can only act as a class by writing constructors
Weekly Summary (*67): Why not dare to express an opinion
Unknown Bounded Array
Game Security 03: A Simple Explanation of Buffer Overflow Attacks
对无限debugger的一种处理方式
HCIP(14)
Input输入框光标在前输入后自动跳到最后面的bug
纽约大学等 | TM-Vec:用于快速同源检测和比对的模版建模向量
随机推荐
JS new fun(); 类与实例 JS基于对象语言 只能通过书写构造函数充当类
The kernel's handling of the device tree
【uniCloud】云对象的应用与提升
Which interpolation is better for opencv to zoom in and out??
2. # code comments
Flutter Tutorial 02 Introduction to Flutter Desktop Program Development Tutorial Run hello world (tutorial includes source code)
软件测试基础理论知识—用例篇
787. 归并排序
[Getting Started Tutorial] Rollup Module Packager Integration
2. # 代码注释
带wiringPi库在unbutu 编译 并且在树莓派运行
JS new fun(); class and instance JS is based on object language Can only act as a class by writing constructors
【SemiDrive源码分析】系列文章链接汇总(全)
Nmap 操作手册 - 完整版
test
How to write a high-quality digital good article recommendation
简单易用的任务队列-beanstalkd
[cellular automata] based on matlab interface aggregation cellular automata simulation [including Matlab source code 2004]
指定set 'execution.savepoint.path'后,重启flinksql报这个错是啥
The fledgling Xiao Li's 113th blog project notes: Wisdom cloud smart flower watering device combat (2) - basic Demo implementation