PLL 带宽调整和 PI 参数设计
要将锁相环(PLL)的带宽调整到 200 Hz,我们需要重新设计 PI 控制器的参数 K PLLp K_{\text{PLLp}} KPLLp 和 K PLLi K_{\text{PLLi}} KPLLi。下面是详细的步骤:
1. 确定锁相环的自然频率和阻尼比
对于二阶系统,闭环传递函数可以表示为:
G ( s ) = ω n 2 s 2 + 2 ζ ω n s + ω n 2 G(s) = \frac{\omega_n^2}{s^2 + 2 \zeta \omega_n s + \omega_n^2} G(s)=s2+2ζωns+ωn2ωn2
其中:
- ω n \omega_n ωn 是自然频率
- ζ \zeta ζ 是阻尼比
2. 将原始传递函数与标准形式对比
从你的代码中,PLL 的开环和闭环传递函数为:
开环传递函数:
G P L L K ( s ) = K P L L p s + K P L L i s 2 G_{\mathrm{PLLK}}(s) = \frac{K_{\mathrm{PLLp}} s + K_{\mathrm{PLLi}}}{s^2} GPLLK(s)=s2KPLLps+KPLLi
闭环传递函数:
G P L L B ( s ) = G P L L K ( s ) 1 + G P L L K ( s ) = K P L L p s + K P L L i s 2 + K P L L p s + K P L L i G_{\mathrm{PLLB}}(s) = \frac{G_{\mathrm{PLLK}}(s)}{1 + G_{\mathrm{PLLK}}(s)} = \frac{K_{\mathrm{PLLp}} s + K_{\mathrm{PLLi}}}{s^2 + K_{\mathrm{PLLp}} s + K_{\mathrm{PLLi}}} GPLLB(s)=1+GPLLK(s)GPLLK(s)=s2+KPLLps+KPLLiKPLLps+KPLLi
将其与标准二阶系统的传递函数对比,我们得到:
K P L L p s + K P L L i s 2 + K P L L p s + K P L L i = ω n 2 s 2 + 2 ζ ω n s + ω n 2 \frac{K_{\mathrm{PLLp}} s + K_{\mathrm{PLLi}}}{s^2 + K_{\mathrm{PLLp}} s + K_{\mathrm{PLLi}}} = \frac{\omega_n^2}{s^2 + 2 \zeta \omega_n s + \omega_n^2} s2+KPLLps+KPLLiKPLLps+KPLLi=s2+2ζωns+ωn2ωn2
3. 匹配系数,得到参数关系
比较分母,得到:
- K P L L i = ω n 2 K_{\mathrm{PLLi}} = \omega_n^2 KPLLi=ωn2
- K P L L p = 2 ζ ω n K_{\mathrm{PLLp}} = 2 \zeta \omega_n KPLLp=2ζωn
然而,分子部分并不完全匹配。为了简化设计,我们可以忽略 K P L L p s K_{\mathrm{PLLp}} s KPLLps 项对分子的影响(通常 K P L L p s K_{\mathrm{PLLp}} s KPLLps 在高频时起作用,但在闭环特性中,分子主要由 K P L L i K_{\mathrm{PLLi}} KPLLi 决定)。
4. 计算自然频率和阻尼比
为了使带宽为 200 Hz,首先计算自然频率 ω n \omega_n ωn。
对于二阶系统,当阻尼比 ζ = 0.707 \zeta = 0.707 ζ=0.707 时,带宽 B W BW BW 与自然频率的关系近似为:
B W ≈ ω n BW \approx \omega_n BW≈ωn
因此:
ω n = 2 π × B W = 2 π × 200 rad/s = 1256.64 rad/s \omega_n = 2\pi \times BW = 2\pi \times 200\ \text{rad/s} = 1256.64\ \text{rad/s} ωn=2π×BW=2π×200 rad/s=1256.64 rad/s
可以将锁相环写成典型二阶系统的形式:
G P L L ( s ) = G P I ( s ) s + U m G P I ( s ) = k p _ P L L + k i _ P L L / s s + U m ⋅ ( k p _ P L L + k i _ P L L / s ) = 1 U m ⋅ 2 ξ P L L ω n _ P L L s + ω n _ P L L 2 s 2 + 2 ξ P L L ω n _ P L L s + ω n _ P L L 2 G_{PLL}(s)=\frac{G_{PI}(s)}{s + U_mG_{PI}(s)}=\frac{k_{p\_PLL}+k_{i\_PLL}/s}{s + U_m\cdot(k_{p\_PLL}+k_{i\_PLL}/s)}=\frac{1}{U_m}\cdot\frac{2\xi_{PLL}\omega_{n\_PLL}s+\omega_{n\_PLL}^2}{s^2 + 2\xi_{PLL}\omega_{n\_PLL}s+\omega_{n\_PLL}^2} GPLL(s)=s+UmGPI(s)GPI(s)=s+Um⋅(kp_PLL+ki_PLL/s)kp_PLL+ki_PLL/s=Um1⋅s2+2ξPLLωn_PLLs+ωn_PLL22ξPLLωn_PLLs+ωn_PLL2
其中, ω n _ P L L \omega_{n\_PLL} ωn_PLL 和 ξ P L L \xi_{PLL} ξPLL 分别是 G P L L ( s ) G_{PLL}(s) GPLL(s) 改写成的典型二阶系统的自然频率和阻尼比,表达式为:
{ ω n _ P L L = U m ⋅ k i _ P L L ξ P L L = k p _ P L L 2 ⋅ U g m k i _ P L L \begin{cases} \omega_{n\_PLL}=\sqrt{U_{m}\cdot k_{i\_PLL}}\\ \xi_{PLL}=\frac{k_{p\_PLL}}{2}\cdot\sqrt{\frac{U_{gm}}{k_{i\_PLL}}} \end{cases} {ωn_PLL=Um⋅ki_PLLξPLL=2kp_PLL⋅ki_PLLUgm
由于 G P L L ( s ) G_{PLL}(s) GPLL(s) 直接与PCC电压的幅值和锁相环环路的特性相关,因此本文将 G P L L ( s ) G_{PLL}(s) GPLL(s) 的带宽视作锁相环带宽。根据带宽的定义,带宽频率处的幅值增益应下降到比零频率处低3 dB,由此可以推得锁相环的带宽频率为:
f b w = 1 2 π ⋅ ω n _ P L L ⋅ 1 + 2 ξ P L L 2 + 2 + 4 ξ P L L 2 + 4 ξ P L L 4 f_{bw}=\frac{1}{2\pi}\cdot\omega_{n\_PLL}\cdot\sqrt{1 + 2\xi_{PLL}^2+\sqrt{2 + 4\xi_{PLL}^2+4\xi_{PLL}^4}} fbw=2π1⋅ωn_PLL⋅1+2ξPLL2+2+4ξPLL2+4ξPLL4
以下是锁相环带宽推导的详细过程:
对于典型二阶系统 G P L L ( s ) = 1 U m ⋅ 2 ξ P L L ω n _ P L L s + ω n _ P L L 2 s 2 + 2 ξ P L L ω n _ P L L s + ω n _ P L L 2 G_{PLL}(s)=\frac{1}{U_m}\cdot\frac{2\xi_{PLL}\omega_{n\_PLL}s+\omega_{n\_PLL}^2}{s^2 + 2\xi_{PLL}\omega_{n\_PLL}s+\omega_{n\_PLL}^2} GPLL(s)=Um1⋅s2+2ξPLLωn_PLLs+ωn_PLL22ξPLLωn_PLLs+ωn_PLL2,其频率响应 G P L L ( j ω ) G_{PLL}(j\omega) GPLL(jω) 为:
G P L L ( j ω ) = 1 U m ⋅ 2 ξ P L L ω n _ P L L ( j ω ) + ω n _ P L L 2 ( j ω ) 2 + 2 ξ P L L ω n _ P L L ( j ω ) + ω n _ P L L 2 G_{PLL}(j\omega)=\frac{1}{U_m}\cdot\frac{2\xi_{PLL}\omega_{n\_PLL}(j\omega)+\omega_{n\_PLL}^2}{(j\omega)^2 + 2\xi_{PLL}\omega_{n\_PLL}(j\omega)+\omega_{n\_PLL}^2} GPLL(jω)=Um1⋅(jω)2+2ξPLLωn_PLL(jω)+ωn_PLL22ξPLLωn_PLL(jω)+ωn_PLL2
将 s = j ω s = j\omega s=jω 代入后化简可得:
G P L L ( j ω ) = 1 U m ⋅ ω n _ P L L 2 + j 2 ξ P L L ω n _ P L L ω − ω 2 + j 2 ξ P L L ω n _ P L L ω + ω n _ P L L 2 G_{PLL}(j\omega)=\frac{1}{U_m}\cdot\frac{\omega_{n\_PLL}^2 + j2\xi_{PLL}\omega_{n\_PLL}\omega}{-\omega^2 + j2\xi_{PLL}\omega_{n\_PLL}\omega+\omega_{n\_PLL}^2} GPLL(jω)=Um1⋅−ω2+j2ξPLLωn_PLLω+ωn_PLL2ωn_PLL2+j2ξPLLωn_PLLω
其幅值 ∣ G P L L ( j ω ) ∣ \vert G_{PLL}(j\omega)\vert ∣GPLL(jω)∣ 为:
∣ G P L L ( j ω ) ∣ = 1 U m ⋅ ( ω n _ P L L 2 ) 2 + ( 2 ξ P L L ω n _ P L L ω ) 2 ( ω n _ P L L 2 − ω 2 ) 2 + ( 2 ξ P L L ω n _ P L L ω ) 2 \vert G_{PLL}(j\omega)\vert=\frac{1}{U_m}\cdot\frac{\sqrt{(\omega_{n\_PLL}^2)^2+(2\xi_{PLL}\omega_{n\_PLL}\omega)^2}}{\sqrt{(\omega_{n\_PLL}^2-\omega^2)^2+(2\xi_{PLL}\omega_{n\_PLL}\omega)^2}} ∣GPLL(jω)∣=Um1⋅(ωn_PLL2−ω2)2+(2ξPLLωn_PLLω)2(ωn_PLL2)2+(2ξPLLωn_PLLω)2
在零频率处 ω = 0 \omega = 0 ω=0,此时 ∣ G P L L ( j 0 ) ∣ = 1 U m \vert G_{PLL}(j0)\vert=\frac{1}{U_m} ∣GPLL(j0)∣=Um1。
根据带宽的定义,带宽频率处的幅值增益应下降到比零频率处低3dB,即 ∣ G P L L ( j ω b w ) ∣ = 1 2 ⋅ 1 U m \vert G_{PLL}(j\omega_{bw})\vert=\frac{1}{\sqrt{2}}\cdot\frac{1}{U_m} ∣GPLL(jωbw)∣=21⋅Um1。
令 ω = ω b w \omega=\omega_{bw} ω=ωbw,则有:
1 U m ⋅ ( ω n _ P L L 2 ) 2 + ( 2 ξ P L L ω n _ P L L ω b w ) 2 ( ω n _ P L L 2 − ω b w 2 ) 2 + ( 2 ξ P L L ω n _ P L L ω b w ) 2 = 1 2 ⋅ 1 U m \frac{1}{U_m}\cdot\frac{\sqrt{(\omega_{n\_PLL}^2)^2+(2\xi_{PLL}\omega_{n\_PLL}\omega_{bw})^2}}{\sqrt{(\omega_{n\_PLL}^2-\omega_{bw}^2)^2+(2\xi_{PLL}\omega_{n\_PLL}\omega_{bw})^2}}=\frac{1}{\sqrt{2}}\cdot\frac{1}{U_m} Um1⋅(ωn_PLL2−ωbw2)2+(2ξPLLωn_PLLωbw)2(ωn_PLL2)2+(2ξPLLωn_PLLωbw)2=21⋅Um1
等式两边同时消去 1 U m \frac{1}{U_m} Um1 并平方可得:
( ω n _ P L L 2 ) 2 + ( 2 ξ P L L ω n _ P L L ω b w ) 2 ( ω n _ P L L 2 − ω b w 2 ) 2 + ( 2 ξ P L L ω n _ P L L ω b w ) 2 = 1 2 \frac{(\omega_{n\_PLL}^2)^2+(2\xi_{PLL}\omega_{n\_PLL}\omega_{bw})^2}{(\omega_{n\_PLL}^2-\omega_{bw}^2)^2+(2\xi_{PLL}\omega_{n\_PLL}\omega_{bw})^2}=\frac{1}{2} (ωn_PLL2−ωbw2)2+(2ξPLLωn_PLLωbw)2(ωn_PLL2)2+(2ξPLLωn_PLLωbw)2=21
将上式进行整理和化简,令 x = ω b w ω n _ P L L x = \frac{\omega_{bw}}{\omega_{n\_PLL}} x=ωn_PLLωbw,则有:
1 + ( 2 ξ P L L x ) 2 ( 1 − x 2 ) 2 + ( 2 ξ P L L x ) 2 = 1 2 2 [ 1 + ( 2 ξ P L L x ) 2 ] = ( 1 − x 2 ) 2 + ( 2 ξ P L L x ) 2 2 + 8 ξ P L L 2 x 2 = 1 − 2 x 2 + x 4 + 4 ξ P L L 2 x 2 x 4 + ( 4 ξ P L L 2 + 2 ) x 2 − 1 = 0 \begin{align*} \frac{1+(2\xi_{PLL}x)^2}{(1 - x^2)^2+(2\xi_{PLL}x)^2}&=\frac{1}{2}\\ 2\left[1+(2\xi_{PLL}x)^2\right]&=(1 - x^2)^2+(2\xi_{PLL}x)^2\\ 2 + 8\xi_{PLL}^2x^2&=1 - 2x^2+x^4+4\xi_{PLL}^2x^2\\ x^4 + (4\xi_{PLL}^2 +2)x^2 - 1&=0 \end{align*} (1−x2)2+(2ξPLLx)21+(2ξPLLx)22[1+(2ξPLLx)2]2+8ξPLL2x2x4+(4ξPLL2+2)x2−1=21=(1−x2)2+(2ξPLLx)2=1−2x2+x4+4ξPLL2x2=0
这是一个关于 x 2 x^2 x2 的一元二次方程,根据求根公式可得:
x 2 = ( 4 ξ P L L 2 + 2 ) ± ( 4 ξ P L L 2 + 2 ) 2 + 4 2 x^2=\frac{ (4\xi_{PLL}^2 +2)\pm\sqrt{ (4\xi_{PLL}^2 +2)^2 + 4}}{2} x2=2(4ξPLL2+2)±(4ξPLL2+2)2+4
因为 x = ω b w ω n _ P L L x=\frac{\omega_{bw}}{\omega_{n\_PLL}} x=ωn_PLLωbw,且 ω b w > 0 \omega_{bw}>0 ωbw>0,所以取正根:
x 2 = 1 + 2 ξ P L L 2 + 2 + 4 ξ P L L 2 + 4 ξ P L L 4 x^2=1 + 2\xi_{PLL}^2+\sqrt{2 + 4\xi_{PLL}^2+4\xi_{PLL}^4} x2=1+2ξPLL2+2+4ξPLL2+4ξPLL4
又因为 x = ω b w ω n _ P L L x=\frac{\omega_{bw}}{\omega_{n\_PLL}} x=ωn_PLLωbw,所以 ω b w = ω n _ P L L ⋅ 1 + 2 ξ P L L 2 + 2 + 4 ξ P L L 2 + 4 ξ P L L 4 \omega_{bw}=\omega_{n\_PLL}\cdot\sqrt{1 + 2\xi_{PLL}^2+\sqrt{2 + 4\xi_{PLL}^2+4\xi_{PLL}^4}} ωbw=ωn_PLL⋅1+2ξPLL2+2+4ξPLL2+4ξPLL4。
由于 f b w = ω b w 2 π f_{bw}=\frac{\omega_{bw}}{2\pi} fbw=2πωbw,最终可得:
f b w = 1 2 π ⋅ ω n _ P L L ⋅ 1 + 2 ξ P L L 2 + 2 + 4 ξ P L L 2 + 4 ξ P L L 4 f_{bw}=\frac{1}{2\pi}\cdot\omega_{n\_PLL}\cdot\sqrt{1 + 2\xi_{PLL}^2+\sqrt{2 + 4\xi_{PLL}^2+4\xi_{PLL}^4}} fbw=2π1⋅ωn_PLL⋅1+2ξPLL2+2+4ξPLL2+4ξPLL4
5. 计算 PI 控制器参数
将 ξ P L L = 0.707 \xi_{PLL} = 0.707 ξPLL=0.707 代入公式后,带入的具体表达式如下:
f b w = 1 2 π ⋅ ω n _ P L L ⋅ 1 + 2 ( 0.707 ) 2 + 2 + 4 ( 0.707 ) 2 + 4 ( 0.707 ) 4 f_{bw} = \frac{1}{2\pi} \cdot \omega_{n\_PLL} \cdot \sqrt{1 + 2(0.707)^2 + \sqrt{2 + 4(0.707)^2 + 4(0.707)^4}} fbw=2π1⋅ωn_PLL⋅1+2(0.707)2+2+4(0.707)2+4(0.707)4
f b w = 1 2 π ⋅ ω n _ P L L ⋅ 1.999698 + 4.998997 f_{bw} = \frac{1}{2\pi} \cdot \omega_{n\_PLL} \cdot \sqrt{1.999698 + \sqrt{4.998997}} fbw=2π1⋅ωn_PLL⋅1.999698+4.998997
最终代入数值得:
f b w ≈ 2.05 2 π ω n _ P L L Hz f_{bw} \approx \frac{2.05}{2\pi} \omega_{n\_PLL} \, \text{Hz} \quad fbw≈2π2.05ωn_PLLHz
当电压Um=1时,可得:
-
积分增益:
K P L L i = ω n 2 = ( 1256.64 ) 2 ≈ 1.58 × 1 0 6 K_{\mathrm{PLLi}} = \omega_n^2 = (1256.64)^2 \approx 1.58 \times 10^6 KPLLi=ωn2=(1256.64)2≈1.58×106
-
比例增益:
K P L L p = 2 ζ ω n = 2 × 0.707 × 1256.64 ≈ 1776.96 K_{\mathrm{PLLp}} = 2 \zeta \omega_n = 2 \times 0.707 \times 1256.64 \approx 1776.96 KPLLp=2ζωn=2×0.707×1256.64≈1776.96
6. 更新代码
将计算得到的参数替换到你的代码中:
clc
KPLLp = 1776.96; % 更新后的比例增益
KPLLi = 1.58e6; % 更新后的积分增益
% 频率向量
fvec = logspace(0, 4, 10000);
GPLLB = zeros(1, length(fvec)); % 预分配空间
for k = 1:length(fvec)
fre1 = fvec(k);
s = 1i * 2 * pi * fre1; % 复频率
GPLLK = (KPLLp * s + KPLLi) / s^2; % 开环传递函数
GPLLB(k) = GPLLK / (1 + GPLLK); % 闭环传递函数
end
% 绘制幅值和相位图(保持原有代码)
subplot(2, 1, 1);
semilogx(fvec, 20 * log10(abs(GPLLB)), 'k', 'LineWidth', 1.5);
grid on;
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
subplot(2, 1, 2);
semilogx(fvec, angle(GPLLB) * 180 / pi, 'k', 'LineWidth', 1.5);
grid on;
xlabel('Frequency (Hz)');
ylabel('Phase (degrees)');
7. 验证带宽
运行代码并观察幅频响应图,确认在 200 Hz 处幅值下降了 3 dB,确保设计满足要求。
8. 调整阻尼比(可选)
如果对系统的超调量或响应速度有特定要求,可以调整阻尼比 ζ \zeta ζ 并重新计算 K P L L p K_{\mathrm{PLLp}} KPLLp:
- 增加 ζ \zeta ζ 会提高系统的阻尼,减少超调,但可能降低响应速度。
- 减小 ζ \zeta ζ 会降低系统的阻尼,增加超调,但可能提高响应速度。
结论
通过上述步骤,我们使用正确的 PLL 开环和闭环传递函数,重新计算了 PI 控制器的参数,使得锁相环的带宽调整为 200 Hz。请根据实际需求,运行代码并进行进一步的验证和调整。
完整代码
% 目标带宽
f_BW_target = 200; % Hz
% 阻尼比
zeta = 0.707;
% 频率范围
frequencies = logspace(0, 4, 1000); % 从 10 Hz 到 100 kHz
% 初始化变量
omega_n_guess = 2*pi*f_BW_target; % 初始猜测
tolerance = 1e-6; % 容差
error = 1;
max_iter = 100;
iter = 0;
while error > tolerance && iter < max_iter
iter = iter + 1;
% 计算 KPLLp 和 KPLLi
KPLLp = 2*zeta*omega_n_guess;
KPLLi = omega_n_guess^2;
% 定义频率向量
fvec = frequencies;
% 计算闭环传递函数在每个频率下的值
GPLLB = zeros(1, length(fvec));
for k = 1:length(fvec)
fre1 = fvec(k);
s = 1i*2*pi*fre1; % 复频率
GPLLB(k) = (KPLLp*s + KPLLi) / (s^2 + KPLLp*s + KPLLi);
end
% 计算幅度(以 dB 为单位)和相位(以度为单位)
mag_db = 20 * log10(abs(GPLLB));
phase_deg = angle(GPLLB) * 180 / pi;
% 找到幅值下降 -3 dB 的频率
[~, idx] = min(abs(mag_db + 3));
f_BW_actual = frequencies(idx);
% 计算误差
error = abs(f_BW_actual - f_BW_target) / f_BW_target;
% 调整 omega_n_guess
omega_n_guess = omega_n_guess * (f_BW_target / f_BW_actual);
end
if iter >= max_iter
warning('迭代未能在最大次数内收敛。');
end
fprintf('计算得到的参数:\n');
fprintf('KPLLp = %f\n', KPLLp);
fprintf('KPLLi = %f\n', KPLLi);
fprintf('实际带宽 = %f Hz\n', f_BW_actual);
% 获取目标带宽和实际带宽处的幅值和相位
% 在频率数组中找到最接近目标带宽和实际带宽的索引
[~, idx_target] = min(abs(frequencies - f_BW_target));
[~, idx_actual] = min(abs(frequencies - f_BW_actual));
% 对应的幅值和相位
mag_target = mag_db(idx_target);
phase_target = phase_deg(idx_target);
mag_actual = mag_db(idx_actual);
phase_actual = phase_deg(idx_actual);
% 绘制幅频响应和相频响应
figure;
% 绘制幅频响应
subplot(2,1,1);
semilogx(frequencies, mag_db, 'b');
title('传递函数的幅频响应');
xlabel('频率 [Hz]');
ylabel('幅值 [dB]');
grid on;
hold on;
% 在目标带宽和实际带宽处添加标记点
plot(f_BW_target, mag_target, 'ro', 'MarkerSize', 4, 'LineWidth', 2, 'DisplayName', ['目标带宽 = ' num2str(f_BW_target) ' Hz']);
plot(f_BW_actual, mag_actual, 'gs', 'MarkerSize', 4, 'LineWidth', 2, 'DisplayName', ['实际带宽 = ' num2str(f_BW_actual, '%.2f') ' Hz']);
% 添加 -3 dB 水平线
yline(-3, 'k--', '-3 dB 点', 'LineWidth', 1);
legend('幅频响应', '目标带宽', '实际带宽', '-3 dB 点');
hold off;
% 绘制相频响应
subplot(2,1,2);
semilogx(frequencies, phase_deg, 'b');
title('传递函数的相频响应');
xlabel('频率 [Hz]');
ylabel('相位 [度]');
grid on;
hold on;
% 在目标带宽和实际带宽处添加标记点
plot(f_BW_target, phase_target, 'ro', 'MarkerSize', 4, 'LineWidth', 2, 'DisplayName', ['目标带宽 = ' num2str(f_BW_target) ' Hz']);
plot(f_BW_actual, phase_actual, 'gs', 'MarkerSize', 4, 'LineWidth', 2, 'DisplayName', ['实际带宽 = ' num2str(f_BW_actual, '%.2f') ' Hz']);
legend('相频响应', '目标带宽', '实际带宽');
hold off;