在新能源发电系统中,三相并网逆变器是将直流电能转换为交流电能并馈入电网的核心装置。其控制系统的性能直接决定了电能质量、系统稳定性和动态响应特性。本次仿真采用LCL型滤波器结构,相比传统的L型或LC型滤波器,LCL滤波器在高频段具有更好的衰减特性,但同时也带来了更复杂的控制挑战。
控制系统采用同步旋转坐标系(dq坐标系)下的全状态反馈控制策略,主要包含以下几个关键模块:
特别说明:所有控制算法均在连续域设计,更贴近实际物理系统的动态特性,避免了离散化带来的性能损失。
电网同步是并网逆变器控制的基础,我们采用基于二阶广义积分器(SOGI)的增强型锁相环结构。这种结构对电网电压谐波和扰动具有强鲁棒性,其核心微分方程为:
code复制d²x/dt² + 2kω_n dx/dt + ω_n²x = ω_n²v_α
其中:
在Simulink中,我们通过S函数实现该锁相环,核心代码如下:
matlab复制function [theta, sin_theta] = PLL(v_abc)
omega_n = 314*2; % 电网频率的2倍频
k = 1.414; % 阻尼系数
persistent x;
if isempty(x)
x = zeros(2,1);
end
% αβ变换
v_alpha = (2/3)*(v_abc(1) - 0.5*v_abc(2) - 0.5*v_abc(3));
% 状态方程
dx = [x(2); -omega_n^2*x(1) - 2*k*omega_n*x(2) + omega_n^2*v_alpha];
x = x + dx*Ts; % 欧拉积分
% 输出相位
theta = atan2(x(2), x(1));
sin_theta = sin(theta);
end
阻尼系数选择:k值直接影响锁相环的动态性能。实测表明:
频率适应性:当电网频率波动时,可通过自适应调整ω_n来保持锁相精度。我们在仿真中加入了±0.5Hz的频率波动测试。
抗干扰设计:在电网电压存在5%THD谐波污染的情况下,该锁相环仍能保持±0.5°以内的相位误差。
坐标变换采用功率不变型的Clarke变换和Park变换组合:
matlab复制function [id, iq] = abc2dq(i_abc, theta)
% Clarke变换矩阵(功率不变型)
clarke = 2/3*[1, -0.5, -0.5;
0, sqrt(3)/2, -sqrt(3)/2];
% Park变换矩阵
park = [cos(theta), sin(theta);
-sin(theta), cos(theta)];
% 组合变换
i_dq = park * clarke * i_abc';
id = i_dq(1);
iq = i_dq(2);
end
幅值关系:功率不变型变换下,相电压幅值与dq轴分量幅值比为√(2/3):1
正交性保证:实际实现时需要确保三相电流采样同步,否则会导致dq轴耦合
数值处理:在theta接近π/2或3π/2时,直接计算tanθ会导致数值不稳定,因此采用atan2函数
LCL滤波器的状态空间模型选取电感电流i_L、电容电压v_C及其积分项作为状态变量:
code复制dx/dt = A*x + B*u
y = C*x
其中:
使用MATLAB的care函数求解Riccati方程得到最优反馈增益:
matlab复制A = [ -R1/L1, w, -1/L1, 0, 0, 0;
-w, -R1/L1, 0, -1/L1, 0, 0;
1/C, 0, 0, w, -1/C, 0;
0, 1/C, -w, 0, 0, -1/C;
1, 0, 0, 0, 0, 0;
0, 1, 0, 0, 0, 0 ];
B = [1/L1, 0;
0, 1/L1;
0, 0;
0, 0;
0, 0;
0, 0 ];
Q = diag([1e5, 1e5, 1e3, 1e3, 1e4, 1e4]); % 状态权重
R = diag([1e-2, 1e-2]); % 控制权重
[K,~,~] = care(A,B,Q,R);
电流权重:Q(1,1)和Q(2,2)对应d、q轴电流误差,通常设为1e5量级。若设置过小会导致电流跟踪性能下降。
电压权重:Q(3,3)和Q(4,4)影响电容电压动态,一般比电流权重低2个数量级。
积分权重:Q(5,5)和Q(6,6)消除稳态误差,建议设为1e4量级。
由于实际系统中无法直接测量所有状态,我们采用卡尔曼滤波器进行状态估计:
c复制#define S_FUNCTION_NAME KalmanFilter
static void mdlInitializeSizes(SimStruct *S){
ssSetNumContStates(S, 4); // 估计i_Ld, i_Lq, v_Cd, v_Cq
ssSetNumDiscStates(S, 0);
...
}
static void mdlDerivatives(SimStruct *S){
real_T *dx = ssGetdX(S);
real_T *x = ssGetContStates(S);
real_T *u = ssGetInputPortRealSignal(S,0);
// 状态方程实现
dx[0] = -R1/L1*x[0] + w*x[1] - x[2]/L1 + u[0]/L1;
dx[1] = -w*x[0] - R1/L1*x[1] - x[3]/L1 + u[1]/L1;
dx[2] = x[0]/C + w*x[3] - x[2]/(R2*C) - u[2]/C;
dx[3] = -w*x[2] + x[1]/C - x[3]/(R2*C) - u[3]/C;
}
static void mdlOutputs(SimStruct *S){
real_T *y = ssGetOutputPortRealSignal(S,0);
real_T *x = ssGetContStates(S);
// 输出估计值叠加测量噪声
y[0] = x[0] + Vn*randn();
y[1] = x[1] + Vn*randn();
}
过程噪声协方差Q_kal:反映模型不确定性,通常设为系统状态变化率的1%~5%
测量噪声协方差R_kal:根据传感器精度确定,电流传感器一般取量程的0.1%~1%
调试技巧:先设R_kal为实际测量噪声方差,然后调整Q_kal使估计误差最小
在同步旋转坐标系下,通过独立调节d、q轴电流可实现有功和无功功率的解耦控制:
code复制P = 1.5*(v_gd*i_gd + v_gq*i_gq)
Q = 1.5*(v_gq*i_gd - v_gd*i_gq)
通常将d轴定向于电网电压矢量,此时:
为测试系统动态性能,我们设计含扰动的电流参考信号:
matlab复制function iref = generate_ref(t)
persistent freq;
if isempty(freq)
freq = 50 + 0.1*randn(); % 模拟电网频率波动
end
% 直轴分量(有功电流)
iref_d = 10*(1 + 0.2*sin(2*pi*0.5*t));
% 交轴分量(无功电流)
iref_q = 5*(1 - 0.1*cos(2*pi*0.8*t));
end
阶跃响应:电流参考值阶跃变化时,调节时间<10ms,超调量<5%
谐波特性:在额定功率下,并网电流THD<3%(满足IEEE 1547标准)
抗扰能力:电网电压跌落20%时,系统能在15ms内恢复稳定
锁相环性能:在电网电压含5次谐波时,相位误差<0.5°
电流跟踪:dq轴电流能准确跟踪时变参考值,稳态误差<0.5%
状态估计:卡尔曼滤波器估计误差<2%,有效抑制了测量噪声
离散化实现:虽然本仿真在连续域进行,实际数字控制需注意:
参数敏感性:LCL滤波器参数变化±20%时,需重新调整控制器参数
启动策略:采用软启动方式,初始电流参考值从0缓慢上升
保护逻辑:必须实现过流、过压、孤岛保护等安全机制