前言
最近读了几篇关于并网逆变器dq轴阻抗建模的文章,对其中的扫频法比较感兴趣,于是利用Matlab/Simulink搭建了一个阻抗测量模块。以三相交流电网带RL负载的简单系统为对象,利用扫频法测量了负载的dq轴阻抗。结果表明,测得阻抗的幅值相角与阻抗传递函数的结果相符合,验证了阻抗测量模块的正确性。
一、扫频法的工作原理
扫频法将被测单元视为一个黑箱子,通过在其端口注入一定频率的电压扰动信号,测量得到对应的电压和电流信号,然后计算得到对应的输出阻抗值。dq轴阻抗扫频测量法的原理如下图所示[1]。
在dq轴同步旋转坐标系中阻抗表示为矩阵的形式Z=[Zdd,Zdq;Zqd,Zqq],因此需要注入两次同频率且线性无关的扰动信号,才可解出阻抗矩阵中的每一个值。选用的两组扰动信号表示如下:
{
Δ
U
d
1
=
U
p
sin
(
ω
p
t
)
Δ
U
q
1
=
U
p
cos
(
ω
p
t
)
(
第
一
次
扰
动
)
{
Δ
U
d
2
=
−
U
p
sin
(
ω
p
t
)
Δ
U
q
2
=
U
p
cos
(
ω
p
t
)
(
第
二
次
扰
动
)
\left\{ \begin{array}{c} \varDelta U_{d1}=U_\mathrm{p}\sin \left( \omega _\mathrm{p}t \right)\\ \varDelta U_{q1}=U_\mathrm{p}\cos \left( \omega _\mathrm{p}t \right)\\ \end{array} \right. (第一次扰动) \\\quad \\ \left\{ \begin{array}{c} \varDelta U_{d2}=-U_\mathrm{p}\sin \left( \omega _\mathrm{p}t \right)\\ \varDelta U_{q2}=U_\mathrm{p}\cos \left( \omega _\mathrm{p}t \right)\\ \end{array} \right. (第二次扰动)
{ΔUd1=Upsin(ωpt)ΔUq1=Upcos(ωpt)(第一次扰动){ΔUd2=−Upsin(ωpt)ΔUq2=Upcos(ωpt)(第二次扰动)
式中,
ω
p
\omega _\mathrm{p}
ωp为注入的扰动频率,
U
p
U_\mathrm{p}
Up为注入扰动的幅值。
U
p
U_\mathrm{p}
Up越大,阻抗测量的精度越高,但是对系统的稳定性也会造成较大影响。参照文献[1],这里取
U
p
U_\mathrm{p}
Up为电网额定电压的0.1倍。
第一次注入扰动后,从负载侧电压电流dq轴分量中提取出与扰动同频的响应分量(
Δ
U
d
1
\varDelta U_d1
ΔUd1、
Δ
U
q
1
\varDelta U_q1
ΔUq1)和(
Δ
I
d
1
\varDelta I_d1
ΔId1、
Δ
I
q
1
\varDelta I_q1
ΔIq1);同样地,第二次注入扰动后,从负载电压电流中提取出同频响应分量(
Δ
U
d
2
\varDelta U_d2
ΔUd2、
Δ
U
q
2
\varDelta U_q2
ΔUq2)和(
Δ
I
d
2
\varDelta I_d2
ΔId2、
Δ
I
q
2
\varDelta I_q2
ΔIq2)。在dq同步旋转坐标系中有:
[
Δ
U
d
1
Δ
U
q
1
]
=
[
Z
d
d
Z
d
q
Z
q
d
Z
q
q
]
[
Δ
I
d
1
Δ
I
q
1
]
(
1
)
[
Δ
U
d
2
Δ
U
q
2
]
=
[
Z
d
d
Z
d
q
Z
q
d
Z
q
q
]
[
Δ
I
d
2
Δ
I
q
2
]
(
2
)
\left[ \begin{array}{c} \varDelta U_{d1}\\ \varDelta U_{q1}\\ \end{array} \right] =\left[ \begin{matrix} Z_{dd}& Z_{dq}\\ Z_{qd}& Z_{qq}\\ \end{matrix} \right] \left[ \begin{array}{c} \varDelta I_{d1}\\ \varDelta I_{q1}\\ \end{array} \right] \quad\quad\quad\quad (1) \\\quad \\ \left[ \begin{array}{c} \varDelta U_{d2}\\ \varDelta U_{q2}\\ \end{array} \right] =\left[ \begin{matrix} Z_{dd}& Z_{dq}\\ Z_{qd}& Z_{qq}\\ \end{matrix} \right] \left[ \begin{array}{c} \varDelta I_{d2}\\ \varDelta I_{q2}\\ \end{array} \right] \quad\quad\quad\quad (2)
[ΔUd1ΔUq1]=[ZddZqdZdqZqq][ΔId1ΔIq1](1)[ΔUd2ΔUq2]=[ZddZqdZdqZqq][ΔId2ΔIq2](2)
由式(1)和(2)可得:
[
Z
d
d
Z
d
q
Z
q
d
Z
q
q
]
=
[
Δ
U
d
1
Δ
U
q
1
Δ
U
d
2
Δ
U
q
2
]
[
Δ
I
d
1
Δ
I
q
1
Δ
I
d
2
Δ
I
q
2
]
−
1
\left[ \begin{matrix} Z_{dd}& Z_{dq}\\ Z_{qd}& Z_{qq}\\ \end{matrix} \right] =\left[ \begin{matrix} \begin{array}{c} \varDelta U_{d1}\\ \varDelta U_{q1}\\ \end{array}& \begin{array}{c} \varDelta U_{d2}\\ \varDelta U_{q2}\\ \end{array}\\ \end{matrix} \right] \left[ \begin{matrix} \begin{array}{c} \varDelta I_{d1}\\ \varDelta I_{q1}\\ \end{array}& \begin{array}{c} \varDelta I_{d2}\\ \varDelta I_{q2}\\ \end{array}\\ \end{matrix} \right] ^{-1}
[ZddZqdZdqZqq]=[ΔUd1ΔUq1ΔUd2ΔUq2][ΔId1ΔIq1ΔId2ΔIq2]−1
需要注意的是上述矩阵中的元素均为复数,因而求出的阻抗矩阵为复数矩阵,对阻抗矩阵中的每个元素提取幅值相角即可得到该频率下阻抗分量的幅频特性。
二、Simulink模块的搭建
1.主电路
主电路为690V无穷大电网经
Z
g
Z_\mathrm{g}
Zg后给3相RL负载供电,
Z
g
Z_\mathrm{g}
Zg=
r
g
r_\mathrm{g}
rg+j
ω
l
g
\omega l_\mathrm{g}
ωlg,取
r
g
r_\mathrm{g}
rg=0
Ω
\varOmega
Ω,
l
g
l_\mathrm{g}
lg=0.01mH。三相RL负载取R=0.3174
Ω
\varOmega
Ω,L=0.05mH。
2.锁相环
锁相环用于产生dq坐标变换的相角theta,其内部控制框图如下图所示。锁相环内部是基于标幺值控制的,所以输入锁相环的电压要先进行标幺化处理。
ω
b
\omega_b
ωb为电网角频率的基准值,
ω
b
\omega_b
ωb=100
π
\pi
π;PI调节器的比例和积分系数为(0.084,4.69)。
3.小信号扰动部分
小信号扰动部分搭建如下。
其中,Ud1等扰动信号采用sine wave模块产生,内部参数设置如下。
Up=690*sqrt(2/3)*0.1;%扰动幅值取电网额定电压的10%
f=100;%扰动频率/Hz
三、阻抗测量模块的测试
1.RL负载的阻抗模型
dq同步旋转坐标系中,3相RL负载的阻抗模型为:
Z
r
l
(
s
)
=
[
L
s
+
R
−
ω
L
ω
L
L
s
+
R
]
Z_{\mathrm{rl}}\left( s \right) =\left[ \begin{matrix} Ls+R& -\omega L\\ \omega L& Ls+R\\ \end{matrix} \right]
Zrl(s)=[Ls+RωL−ωLLs+R]
带入仿真模型中的数据,可以做出阻抗矩阵的波特图,这里只给出前两个分量。
R=0.3174;
L=0.05e-3;
w=2*pi*50;
figure(1)
Zdd=tf([L,R],1);
subplot(1,2,1)
bode(Zdd)
Zdq=tf(-w*L,1);
subplot(1,2,2)
bode(Zdq)
做出Zdd和Zdq的幅频特性如下图所示。
2.阻抗测量结果
设置仿真时长为3s,算法为变步长ode23t,测量100Hz和1000Hz扰动下负载的dq轴阻抗,以期和上一小节中的幅频特性相对应。每个频率下需要运行两次仿真模型,第一次运行时在小扰动部分将Voltage Perturb2注释掉,只留下Voltage Perturb1;而第二次运行时则与之相反。两次运行结束后,电压电流的响应分量即可输出到工作区,之后可以通过编写简单的程序来提取阻抗矩阵的幅值和相角。代码如下:
%第一次扰动
Id1=Id.data(end);
Iq1=Iq.data(end);
Ud1=Ud.data(end);
Uq1=Uq.data(end);
%第二次扰动
Id2=I_d.data(end);
Iq2=I_q.data(end);
Ud2=U_d.data(end);
Uq2=U_q.data(end);
A=[Ud1,Ud2;Uq1,Uq2];
B=[Id1,Id2;Iq1,Iq2];
Z=A/B
% hold on;scatter(f,20*log10(abs(Z(1,1))));
% hold on;scatter(f,angle(Z(1,1))*180/pi);
% hold on;scatter(f,20*log10(abs(Z(1,2))));
% hold on;scatter(f,angle(Z(1,2))*180/pi);
其中,end表示取响应分量的最后一个数值(稳定的数值)。
测量结果与用阻抗传递函数计算出的结果对比如下。可以看出,利用扫频法测量得到的点与用阻抗模型计算的结果基本重合,从而验证了所搭建阻抗测量模块的正确性。
总结
利用Matlab/Simulink搭建了三相交流系统的阻抗测量模块,通过简单的RL电路验证了模块的正确性,可为之后研究复杂交流系统的阻抗特性做铺垫。
参考文献
[1] 李辉,王坤,胡玉,王晓,夏桂森.双馈风电系统虚拟同步控制的阻抗建模及稳定性分析[J].中国电机工程学报,2019,39(12):3434-3443.DOI:10.13334/j.0258-8013.pcsee.181467.
---------------6.25更新----------------
有些网友可能需要仿真模型,模型放在下方链接了,自取:
链接:https://pan.baidu.com/s/1jzOKR7lZpACPTC1iN7nrBA
提取码:lp3a
此模型的局限和不足:目前这个模型只能测量较小频率变化范围内3相RL负载的dq轴阻抗,当频率增加到10kHz后测量结果就偏离实际结果了。博主本来是想用这种方法来扫三相逆变器的阻抗模型的,但是现在看来RL负载都扫不好更别提逆变器了(捂脸)。无奈网上关于三相系统dq轴扫频的帖子少之又少,而论文中介绍的方法又很难复现,才将自己的一知半解分享出来。如果有大佬因此帖子受到启发,搭出更好的模型还望不惜赐教!
---------------3.03更新----------------
本人动态里上传了本帖中扫频模型的操作步骤,希望能够解决大家看完本帖的疑惑。祝大家早日搭出满意的模型!