机侧同步定子电压环的PI整定:从“对齐三个量“到“闭环四步法“

【风电控制】机侧同步定子电压环的PI整定:从"对齐三个量"到"闭环四步法"


【导语】

在前几篇文章中,我们讨论了并网运行状态下的电流环、弱磁控制和LVRT策略。但有一个关键环节被我们跳过了------在DFIG并网之前,它是怎么从"停机"变成"并网"的?

答案是同步(Synchronization)

在变流器上电后,转子侧变流器(RSC)需要先建立转子磁场,在定子侧感应出三相电压。然后,RSC通过闭环控制,将定子电压的幅值、频率和相位调整到与电网电压完全一致。只有当三个量的偏差都在允许范围内时,才能闭合定子侧的并网开关(如接触器或断路器)。

这个过程中,定子电压环是最核心的控制回路。它的PI参数整定直接决定了:

  • 同步过程是否快速(几秒内完成 vs 几十秒才对齐)
  • 同步过程是否平稳(电压平滑上升 vs 剧烈振荡)
  • 并网瞬间是否有冲击(无电流冲击 vs 大电流冲击)

但问题是:并网前的DFIG处于一种非常特殊的状态------定子开路。此时的电气特性与并网后完全不同,我们前面几篇文章中推导的模型和整定方法不能直接套用。

本文将从同步过程的物理本质出发,推导定子开路状态下的精确被控对象模型,给出一套完整的电压环PI参数整定方法,并讨论工程实现中的关键细节。


一、 同步过程的物理全景

1.1 同步的三个"对齐目标"

并网同步的本质,是让DFIG定子侧的三相电压与电网电压在三个维度上完全对齐:

维度 物理量 允许偏差(典型值) 控制手段
幅值 VsV_sVs vs VgV_gVg ΔV<5%VN\Delta V < 5\% V_NΔV<5%VN RSC d轴电流(调节磁链幅值)
频率 fsf_sfs vs fgf_gfg Δf<0.2Hz\Delta f < 0.2\text{Hz}Δf<0.2Hz RSC q轴电流(调节转差频率)
相位 θs\theta_sθs vs θg\theta_gθg Δθ<10°\Delta\theta < 10°Δθ<10° 转子位置(调节转子角速度)

只有三个条件同时满足,才能安全闭合并网开关。否则,并网瞬间会在定子绕组中产生巨大的环流冲击。

1.2 同步过程的时间线

复制代码
阶段1: 励磁建立          阶段2: 电压调节          阶段3: 相位锁定          阶段4: 并网
t=0                    t≈0.5s                  t≈2s                    t≈3s
│                       │                       │                       │
│  RSC输出励磁电流       │  电压环闭环控制         │  PLL锁定电网相位       │  闭合并网开关
│  定子电压从0开始建立    │  定子电压幅值→额定      │  频率/相位对齐         │  切换到并网控制模式
│                       │                       │                       │
├───────────────────────┼───────────────────────┼───────────────────────┤
│  开环/软启动           │  电压闭环              │  电压+相位闭环         │  电流环接管
│  电流缓慢上升          │  PI调节               │  PI+PLL协调           │  功率控制

关键认知:定子电压环不是在整个同步过程中都工作的。在阶段1(励磁建立)时,通常采用开环或电流控制缓慢建立磁场;在阶段2和阶段3,电压环闭环运行;在阶段4并网瞬间,控制模式从电压控制切换到电流控制。

1.3 并网前的特殊工况:定子开路

这是理解电压环整定的关键前提。

并网前,定子侧的断路器是断开的 。定子绕组处于开路状态------没有负载电流,也没有电网电压的"钳位"。

此时的电气状态:

  • 定子电流 is≈0i_s \approx 0is≈0(开路,仅有极小的寄生电流)
  • 定子电压 vs=dψs/dtv_s = d\psi_s/dtvs=dψs/dt(完全由磁链变化率决定)
  • 转子电流 iri_rir 由RSC完全控制
  • 定子磁链 ψs=Lm⋅ir\psi_s = L_m \cdot i_rψs=Lm⋅ir(因为 is=0i_s = 0is=0,ψs=Lsis+Lmir=Lmir\psi_s = L_s i_s + L_m i_r = L_m i_rψs=Lsis+Lmir=Lmir)

这与并网后的模型有本质区别。并网后,定子电压被电网"钳位",定子电流是自由变量;并网前,定子电流为零,定子电压是自由变量。


二、 被控对象模型推导

2.1 从基本方程出发

DFIG在任意旋转坐标系(d-q)下的磁链方程:

ψsd=Lsisd+Lmird \psi_{sd} = L_s i_{sd} + L_m i_{rd} ψsd=Lsisd+Lmird

ψsq=Lsisq+Lmirq \psi_{sq} = L_s i_{sq} + L_m i_{rq} ψsq=Lsisq+Lmirq

ψrd=Lmisd+Lrird \psi_{rd} = L_m i_{sd} + L_r i_{rd} ψrd=Lmisd+Lrird

ψrq=Lmisq+Lrirq \psi_{rq} = L_m i_{sq} + L_r i_{rq} ψrq=Lmisq+Lrirq

定子电压方程:

vsd=Rsisd+dψsddt−ωsψsq v_{sd} = R_s i_{sd} + \frac{d\psi_{sd}}{dt} - \omega_s \psi_{sq} vsd=Rsisd+dtdψsd−ωsψsq

vsq=Rsisq+dψsqdt+ωsψsd v_{sq} = R_s i_{sq} + \frac{d\psi_{sq}}{dt} + \omega_s \psi_{sd} vsq=Rsisq+dtdψsq+ωsψsd

2.2 定子开路简化

在定子开路条件下(isd=isq=0i_{sd} = i_{sq} = 0isd=isq=0),磁链方程简化为:

ψsd=Lmird \psi_{sd} = L_m i_{rd} ψsd=Lmird

ψsq=Lmirq \psi_{sq} = L_m i_{rq} ψsq=Lmirq

代入电压方程:

vsd=Rs⋅0+d(Lmird)dt−ωsLmirq=Lmdirddt−ωsLmirq v_{sd} = R_s \cdot 0 + \frac{d(L_m i_{rd})}{dt} - \omega_s L_m i_{rq} = L_m \frac{di_{rd}}{dt} - \omega_s L_m i_{rq} vsd=Rs⋅0+dtd(Lmird)−ωsLmirq=Lmdtdird−ωsLmirq

vsq=Rs⋅0+d(Lmirq)dt+ωsLmird=Lmdirqdt+ωsLmird v_{sq} = R_s \cdot 0 + \frac{d(L_m i_{rq})}{dt} + \omega_s L_m i_{rd} = L_m \frac{di_{rq}}{dt} + \omega_s L_m i_{rd} vsq=Rs⋅0+dtd(Lmirq)+ωsLmird=Lmdtdirq+ωsLmird

写成矩阵形式:

vsdvsq\]=Lm\[s−ωsωss\]\[irdirq\] \\begin{bmatrix} v_{sd} \\\\ v_{sq} \\end{bmatrix} = L_m \\begin{bmatrix} s \& -\\omega_s \\\\ \\omega_s \& s \\end{bmatrix} \\begin{bmatrix} i_{rd} \\\\ i_{rq} \\end{bmatrix} \[vsdvsq\]=Lm\[sωs−ωss\]\[irdirq

其中 s=d/dts = d/dts=d/dt 为微分算子。

2.3 交叉耦合的处理

这个方程告诉我们:d轴电压不仅受d轴电流影响,还受q轴电流通过 ωsLm\omega_s L_mωsLm 项耦合过来。这与前几篇文章中的交叉耦合问题一模一样。

但这里有一个关键区别:在并网运行时,我们通过前馈解耦来消除交叉耦合;在同步过程中,我们可以用类似的方法,但耦合项的物理含义不同。

稳态分析 (di/dt=0di/dt = 0di/dt=0):

vsd=−ωsLmirq v_{sd} = -\omega_s L_m i_{rq} vsd=−ωsLmirq

vsq=+ωsLmird v_{sq} = +\omega_s L_m i_{rd} vsq=+ωsLmird

这意味着:

  • d轴电压由q轴电流决定 ------控制 irqi_{rq}irq 可以调节 vsdv_{sd}vsd
  • q轴电压由d轴电流决定 ------控制 irdi_{rd}ird 可以调节 vsqv_{sq}vsq

等等,这和直觉相反! 通常我们认为d轴控制电压幅值、q轴控制有功功率。但在定子开路时,由于没有定子电流,传统的功率方程不适用,电压的d/q分量与电流的d/q分量之间的关系发生了"旋转"。

2.4 选择合适的坐标系

为了解决上述"旋转"问题,我们需要选择一个合适的坐标系来进行控制。

方案A:定子磁链定向(SFO)

将d轴对齐定子磁链矢量。此时 ψsq=0\psi_{sq} = 0ψsq=0,ψsd=∣ψs∣\psi_{sd} = |\psi_s|ψsd=∣ψs∣。

在SFO下:

  • ψsd=Lmird=∣ψs∣\psi_{sd} = L_m i_{rd} = |\psi_s|ψsd=Lmird=∣ψs∣ → d轴电流控制磁链幅值
  • ψsq=Lmirq=0\psi_{sq} = L_m i_{rq} = 0ψsq=Lmirq=0 → q轴电流应为零

定子电压:

  • vsd=Lmdirddtv_{sd} = L_m \frac{di_{rd}}{dt}vsd=Lmdtdird → d轴电压由d轴电流变化率决定
  • vsq=ωsLmird=ωs∣ψs∣v_{sq} = \omega_s L_m i_{rd} = \omega_s |\psi_s|vsq=ωsLmird=ωs∣ψs∣ → q轴电压等于额定电压(稳态)

定子电压幅值 :∣vs∣=vsd2+vsq2≈ωsLmird=ωs∣ψs∣|v_s| = \sqrt{v_{sd}^2 + v_{sq}^2} \approx \omega_s L_m i_{rd} = \omega_s |\psi_s|∣vs∣=vsd2+vsq2 ≈ωsLmird=ωs∣ψs∣(稳态)

核心结论 :在SFO坐标系下,通过控制d轴电流 irdi_{rd}ird 来控制磁链幅值,从而控制定子电压幅值。 而q轴电流在稳态下应为零。

方案B:定子电压定向(SVO)

将d轴对齐定子电压矢量。此时 vsq=0v_{sq} = 0vsq=0,vsd=∣vs∣v_{sd} = |v_s|vsd=∣vs∣。

这种坐标系更直观------d轴直接对应电压幅值。但在同步过程中,电压矢量的相位需要跟踪(通过PLL),增加了实现复杂度。

工程推荐 :在同步阶段使用方案A(SFO),因为磁链矢量比电压矢量更平滑(磁链是电压的积分,自然滤除了高频噪声),跟踪更容易。

2.5 被控对象的传递函数

在SFO坐标系下,忽略交叉耦合和电阻(通过前馈解耦消除),电压幅值对d轴电流的传递函数为:

∣Vs∣(s)ird(s)≈ωsLm⋅11+sτs \frac{|V_s|(s)}{i_{rd}(s)} \approx \omega_s L_m \cdot \frac{1}{1 + s\tau_s} ird(s)∣Vs∣(s)≈ωsLm⋅1+sτs1

其中 τs\tau_sτs 是与定子磁链建立过程相关的时间常数。

但在实际系统中,由于RSC的电流环已经闭环(电流环是电压环的内环),电流环的闭环传递函数可以近似为一个一阶惯性环节:

ird(s)ird∗(s)≈11+s/ωci \frac{i_{rd}(s)}{i_{rd}^*(s)} \approx \frac{1}{1 + s/\omega_{ci}} ird∗(s)ird(s)≈1+s/ωci1

其中 ωci\omega_{ci}ωci 是电流环的带宽。

因此,电压环的被控对象(从电流指令到定子电压)为:

Gv(s)=Vs(s)ird∗(s)=ωsLm1+s/ωci=Kplant1+sτci \boxed{G_v(s) = \frac{V_s(s)}{i_{rd}^*(s)} = \frac{\omega_s L_m}{1 + s/\omega_{ci}} = \frac{K_{plant}}{1 + s\tau_{ci}}} Gv(s)=ird∗(s)Vs(s)=1+s/ωciωsLm=1+sτciKplant

其中 Kplant=ωsLmK_{plant} = \omega_s L_mKplant=ωsLm 是被控对象的静态增益,τci=1/ωci\tau_{ci} = 1/\omega_{ci}τci=1/ωci 是电流环的等效时间常数。

这就是电压环整定的核心模型。

2.6 模型参数的物理意义

参数 表达式 典型值(3MW DFIG) 物理意义
KplantK_{plant}Kplant ωsLm\omega_s L_mωsLm 314×5.0×10−3=1.57314 \times 5.0 \times 10^{-3} = 1.57314×5.0×10−3=1.57 V/A 每安培励磁电流产生的定子电压
τci\tau_{ci}τci 1/ωci1/\omega_{ci}1/ωci 1/(2π×400)≈0.41/(2\pi \times 400) \approx 0.41/(2π×400)≈0.4 ms 电流环响应延迟
ωs\omega_sωs 2πfs2\pi f_s2πfs 314314314 rad/s 同步角速度
LmL_mLm --- 5.0 mH 定转子互感

关键观察 :KplantK_{plant}Kplant 的物理意义非常直观------它就是每安培转子电流能在定子侧感应出多少伏电压。对于3MW DFIG,Kplant=1.57K_{plant} = 1.57Kplant=1.57 V/A,意味着1A的d轴电流变化会引起1.57V的定子电压变化。


三、 电压环PI参数的理论整定

3.1 控制结构框图

复制代码
                    电压环                    电流环                被控对象
V_s_ref ──→ [+] ──→ [PI_v] ──→ i_rd_ref ──→ [PI_i] ──→ [G_plant] ──→ V_s
              ↑-                                                   │
              │                                                    │
              └────────────────────────────────────────────────────┘

完整的开环传递函数:

GOL(s)=(Kpv+Kivs)⏟电压环PI⋅11+sτci⏟电流环等效⋅Kplant⏟被控对象增益 G_{OL}(s) = \underbrace{\left(K_{pv} + \frac{K_{iv}}{s}\right)}{\text{电压环PI}} \cdot \underbrace{\frac{1}{1 + s\tau{ci}}}{\text{电流环等效}} \cdot \underbrace{K{plant}}_{\text{被控对象增益}} GOL(s)=电压环PI (Kpv+sKiv)⋅电流环等效 1+sτci1⋅被控对象增益 Kplant

3.2 方法一:基于二阶最优的解析整定

将电压环PI写成标准形式:

Cv(s)=Kpv1+sTivsTiv C_v(s) = K_{pv}\frac{1 + sT_{iv}}{sT_{iv}} Cv(s)=KpvsTiv1+sTiv

其中 Tiv=Kpv/KivT_{iv} = K_{pv}/K_{iv}Tiv=Kpv/Kiv 为积分时间常数。

设计策略:将PI的零点与被控对象的极点对消("极点对消法"),使开环传递函数简化为纯积分环节。

设置零点位置:Tiv=τciT_{iv} = \tau_{ci}Tiv=τci,即 1/Tiv=ωci1/T_{iv} = \omega_{ci}1/Tiv=ωci。

对消后的开环传递函数:

GOL(s)=Kpv⋅Kplantsτci G_{OL}(s) = K_{pv} \cdot \frac{K_{plant}}{s\tau_{ci}} GOL(s)=Kpv⋅sτciKplant

闭环传递函数变为一阶惯性环节:

T(s)=GOL1+GOL=11+sτv T(s) = \frac{G_{OL}}{1 + G_{OL}} = \frac{1}{1 + s\tau_v} T(s)=1+GOLGOL=1+sτv1

其中 τv=τciKpv⋅Kplant\tau_v = \frac{\tau_{ci}}{K_{pv} \cdot K_{plant}}τv=Kpv⋅Kplantτci 是电压环的闭环时间常数。

期望的电压环带宽 ωv\omega_{v}ωv 对应 τv=1/ωv\tau_v = 1/\omega_{v}τv=1/ωv,由此解出:

Kpv=τciKplant⋅τv=ωvKplant⋅ωci⋅ωci=ωvKplant K_{pv} = \frac{\tau_{ci}}{K_{plant} \cdot \tau_v} = \frac{\omega_{v}}{K_{plant} \cdot \omega_{ci}} \cdot \omega_{ci} = \frac{\omega_v}{K_{plant}} Kpv=Kplant⋅τvτci=Kplant⋅ωciωv⋅ωci=Kplantωv

Kpv=ωvωsLm \boxed{K_{pv} = \frac{\omega_v}{\omega_s L_m}} Kpv=ωsLmωv

Kiv=KpvTiv=Kpvτci=Kpv⋅ωci \boxed{K_{iv} = \frac{K_{pv}}{T_{iv}} = \frac{K_{pv}}{\tau_{ci}} = K_{pv} \cdot \omega_{ci}} Kiv=TivKpv=τciKpv=Kpv⋅ωci

或者等价地:

Kiv=ωv⋅ωciωsLm K_{iv} = \frac{\omega_v \cdot \omega_{ci}}{\omega_s L_m} Kiv=ωsLmωv⋅ωci

3.3 数值算例

3MW DFIG参数

  • ωs=314\omega_s = 314ωs=314 rad/s(50Hz电网)
  • Lm=5.0L_m = 5.0Lm=5.0 mH
  • Kplant=ωsLm=1.57K_{plant} = \omega_s L_m = 1.57Kplant=ωsLm=1.57 V/A
  • 电流环带宽 ωci=2π×400=2513\omega_{ci} = 2\pi \times 400 = 2513ωci=2π×400=2513 rad/s

电压环带宽选择 :ωv=2π×20=125.7\omega_v = 2\pi \times 20 = 125.7ωv=2π×20=125.7 rad/s(20Hz)

为什么选20Hz?因为电压环的带宽必须远低于电流环带宽(400Hz),通常取 1/10∼1/201/10 \sim 1/201/10∼1/20。20Hz的带宽意味着电压的上升时间约为 tr≈2.2/ωv≈17.5mst_r \approx 2.2/\omega_v \approx 17.5\text{ms}tr≈2.2/ωv≈17.5ms,足以在几秒内完成同步。

计算PI参数

Kpv=ωvKplant=125.71.57=80.0 A/V K_{pv} = \frac{\omega_v}{K_{plant}} = \frac{125.7}{1.57} = 80.0 \text{ A/V} Kpv=Kplantωv=1.57125.7=80.0 A/V

Kiv=Kpv⋅ωci=80.0×2513=201040 A/(V⋅s) K_{iv} = K_{pv} \cdot \omega_{ci} = 80.0 \times 2513 = 201040 \text{ A/(V·s)} Kiv=Kpv⋅ωci=80.0×2513=201040 A/(V⋅s)

验证闭环极点

ωn=Kiv⋅Kplantτci=201040×1.570.0004 \omega_n = \sqrt{\frac{K_{iv} \cdot K_{plant}}{\tau_{ci}}} = \sqrt{\frac{201040 \times 1.57}{0.0004}} ωn=τciKiv⋅Kplant =0.0004201040×1.57

等等,让我重新用标准二阶形式验证。闭环传递函数为:

T(s)=KpvKplants+KivKplantLeqs2+(Req+KpvKplant)s+KivKplant T(s) = \frac{K_{pv} K_{plant} s + K_{iv} K_{plant}}{L_{eq} s^2 + (R_{eq} + K_{pv} K_{plant}) s + K_{iv} K_{plant}} T(s)=Leqs2+(Req+KpvKplant)s+KivKplantKpvKplants+KivKplant

但经过极点对消后,系统简化为一阶:

T(s)=11+s/ωv=11+0.008s T(s) = \frac{1}{1 + s/\omega_v} = \frac{1}{1 + 0.008s} T(s)=1+s/ωv1=1+0.008s1

时间常数 τv=8ms\tau_v = 8\text{ms}τv=8ms,对应10%到90%上升时间 tr=2.2τv=17.6mst_r = 2.2\tau_v = 17.6\text{ms}tr=2.2τv=17.6ms。

这个响应速度足够快------在同步过程中,电压可以在50ms内完成从0到额定值的90%上升。

3.4 方法二:基于二阶系统的阻尼比设计

如果不做极点对消,而是直接将闭环系统设计为标准二阶系统,可以更灵活地控制动态特性。

闭环传递函数(不做极点对消):

T(s)=Kpvs+Kivτcis2+(1+KpvKplant)s+KivKplant T(s) = \frac{K_{pv}s + K_{iv}}{\tau_{ci}s^2 + (1 + K_{pv}K_{plant})s + K_{iv}K_{plant}} T(s)=τcis2+(1+KpvKplant)s+KivKplantKpvs+Kiv

写成标准二阶形式 T(s)=ωn2s2+2ζωns+ωn2T(s) = \frac{\omega_n^2}{s^2 + 2\zeta\omega_n s + \omega_n^2}T(s)=s2+2ζωns+ωn2ωn2(忽略分子零点的影响),可得:

ωn2=KivKplantτci \omega_n^2 = \frac{K_{iv} K_{plant}}{\tau_{ci}} ωn2=τciKivKplant

2ζωn=1+KpvKplantτci 2\zeta\omega_n = \frac{1 + K_{pv}K_{plant}}{\tau_{ci}} 2ζωn=τci1+KpvKplant

选取 ζ=0.707\zeta = 0.707ζ=0.707(ITAE最优阻尼比),ωn=ωv\omega_n = \omega_vωn=ωv(期望带宽),解出:

Kiv=ωn2τciKplant K_{iv} = \frac{\omega_n^2 \tau_{ci}}{K_{plant}} Kiv=Kplantωn2τci

Kpv=2ζωnτci−1Kplant K_{pv} = \frac{2\zeta\omega_n\tau_{ci} - 1}{K_{plant}} Kpv=Kplant2ζωnτci−1

数值算例 (ωn=125.7\omega_n = 125.7ωn=125.7 rad/s,ζ=0.707\zeta = 0.707ζ=0.707,τci=0.4\tau_{ci} = 0.4τci=0.4 ms):

Kiv=125.72×0.00041.57=6.321.57=4.03 K_{iv} = \frac{125.7^2 \times 0.0004}{1.57} = \frac{6.32}{1.57} = 4.03 Kiv=1.57125.72×0.0004=1.576.32=4.03

Kpv=2×0.707×125.7×0.0004−11.57=0.071−11.57=−0.59 K_{pv} = \frac{2 \times 0.707 \times 125.7 \times 0.0004 - 1}{1.57} = \frac{0.071 - 1}{1.57} = -0.59 Kpv=1.572×0.707×125.7×0.0004−1=1.570.071−1=−0.59

Kp为负值? 这说明在当前参数组合下,不需要很大的比例增益------因为被控对象增益 KplantK_{plant}Kplant 已经很高(1.57 V/A),电流环本身响应很快(τci\tau_{ci}τci 很小),系统的自然响应已经足够好。

修正方案 :当计算出的 KpvK_{pv}Kpv 很小甚至为负时,说明被控对象本身响应足够快,不需要大的PI增益。此时可以:

  1. 使用更小的 ωn\omega_nωn(降低带宽需求)
  2. 或者直接使用方法一的极点对消法(它保证 Kpv>0K_{pv} > 0Kpv>0)

3.5 方法三:工程简化公式

在工程实践中,对于"电流环 + 被控对象"这种内环已经闭环的串级系统,电压环PI参数有一个简化的工程公式:

Kpv=1Kplant=1ωsLm \boxed{K_{pv} = \frac{1}{K_{plant}} = \frac{1}{\omega_s L_m}} Kpv=Kplant1=ωsLm1

Kiv=Kpvτv=1ωsLm⋅τv \boxed{K_{iv} = \frac{K_{pv}}{\tau_v} = \frac{1}{\omega_s L_m \cdot \tau_v}} Kiv=τvKpv=ωsLm⋅τv1

其中 τv\tau_vτv 是期望的电压环闭环时间常数。

这个公式的含义是:比例增益恰好补偿被控对象的增益,使开环增益在低频段为1。积分项负责消除稳态误差。

数值 (τv=50ms\tau_v = 50\text{ms}τv=50ms,对应20Hz带宽):

Kpv=11.57=0.637 A/V K_{pv} = \frac{1}{1.57} = 0.637 \text{ A/V} Kpv=1.571=0.637 A/V

Kiv=0.6370.05=12.73 A/(V⋅s) K_{iv} = \frac{0.637}{0.05} = 12.73 \text{ A/(V·s)} Kiv=0.050.637=12.73 A/(V⋅s)

这组参数比方法一的结果小得多。原因是:方法一假设电流环是一个"黑盒"(带宽400Hz),而方法三更保守,直接从被控对象增益出发。

推荐:在实际调试中,从方法三的参数开始,逐步增大,观察响应。如果响应太慢(上升时间 > 100ms),再用方法一的参数。


四、 坐标系选择对电压环的影响

4.1 SFO(定子磁链定向)下的电压环

在SFO坐标系下:

  • d轴对齐磁链矢量
  • vsq=ωsψsd=ωsLmirdv_{sq} = \omega_s \psi_{sd} = \omega_s L_m i_{rd}vsq=ωsψsd=ωsLmird(稳态)
  • vsd=0v_{sd} = 0vsd=0(稳态,因为 ψsq=0\psi_{sq} = 0ψsq=0)

电压幅值 :∣Vs∣=vsq=ωsLmird|V_s| = v_{sq} = \omega_s L_m i_{rd}∣Vs∣=vsq=ωsLmird(稳态)

控制策略

  • d轴电流 irdi_{rd}ird 控制定子电压幅值(通过电压环PI)

  • q轴电流 irqi_{rq}irq 控制定子电压相位(通过相位环或频率环)

    V_s_ref ──→ [电压环PI] ──→ i_rd_ref ──→ [电流环PI] ──→ Vrd → SVPWM

    θ_s_ref ──→ [相位环PI] ──→ i_rq_ref ──→ [电流环PI] ──→ Vrq → SVPWM

4.2 SVO(定子电压定向)下的电压环

在SVO坐标系下:

  • d轴对齐电压矢量
  • vsd=∣Vs∣v_{sd} = |V_s|vsd=∣Vs∣,vsq=0v_{sq} = 0vsq=0

控制策略

  • d轴电流 irdi_{rd}ird 控制电压d轴分量(即电压幅值)
  • q轴电流 irqi_{rq}irq 控制电压q轴分量(用于调节相位)

这种方案更直观,但需要一个PLL来跟踪定子电压相位。而在同步过程中,定子电压的频率和相位还在变化中,PLL的跟踪可能不够快。

4.3 静止坐标系(α-β)下的电压环

另一种方案是完全在静止坐标系中实现,避免坐标变换:

复制代码
V_s_mag_ref ──→ [电压环PI] ──→ i_mag_ref ──→ [电流环PI] ──→ V_αβ → SVPWM
                                                ↑
θ_s_ref ──→ [频率控制] ──→ ω_slip ──→ 积分 ──→ θ_r (转子角度)

优势 :不需要Park变换和PLL,实现更简单。
劣势:d/q轴的物理解耦不如旋转坐标系清晰。


五、 考虑数字实现的参数修正

5.1 离散域修正

第五篇文章中讲到,数字控制的ZOH和计算延迟会引入 1.5Ts1.5T_s1.5Ts 的等效延迟,吃掉相位裕度。

对于电压环(带宽20Hz),在 fs=4kHzf_s = 4\text{kHz}fs=4kHz 采样下:

ϕdelay=−360°×20×1.5×250×10−6=−2.7° \phi_{delay} = -360° \times 20 \times 1.5 \times 250 \times 10^{-6} = -2.7° ϕdelay=−360°×20×1.5×250×10−6=−2.7°

电压环的带宽很低(20Hz),数字延迟的相位损失只有2.7°------完全可以忽略!

这是电压环相对于电流环的一个巨大优势:由于带宽低,数字延迟的影响微乎其微,连续域设计方法可以直接应用。

5.2 ADC滤波的影响

电压采样通常经过低通滤波(抗混叠+工频滤波),滤波器引入的相位滞后在20Hz处也很小:

滤波器 截止频率 20Hz处相位滞后
一阶LPF 1kHz 1000 Hz -1.1°
二阶LPF 500Hz 500 Hz -4.6°
二阶LPF 200Hz 200 Hz -11.3°

如果电压采样滤波器的截止频率选择200Hz以上,对20Hz的电压环影响很小。

5.3 电压测量的特殊考虑

定子电压的测量在同步阶段有特殊性:

  1. 并网前:定子电压由RSC建立,测量的是RSC控制下的"创造"出来的电压
  2. 并网瞬间:定子电压从"自由状态"突然变为"被电网钳位"
  3. 并网后:电压环通常退出,电流环接管

在并网瞬间,电压测量可能因为传感器饱和或ADC过冲而出现虚假值。对策:

c 复制代码
// 并网瞬间的电压测量保护
float Vs_measured = ADC_Read_Voltage();
float Vs_expected = Vs_rated;  // 预期电压

// 如果测量值偏离预期太远,可能是传感器异常
if (fabsf(Vs_measured - Vs_expected) > 0.3f * Vs_rated) {
    // 使用预期值替代,等待稳定
    Vs_for_control = Vs_expected;
} else {
    Vs_for_control = Vs_measured;
}

六、 Ziegler-Nichols方法的适用性讨论

6.1 Z-N方法的原理回顾

Ziegler-Nichols(Z-N)方法是一种经典的实验整定法

  1. 仅使用比例控制(Ki=0K_i = 0Ki=0)
  2. 逐渐增大 KpK_pKp 直到系统出现等幅振荡
  3. 记录临界增益 KuK_uKu 和振荡周期 TuT_uTu
  4. 根据经验公式计算PI参数

对于PI控制器:

Kp=0.45Ku,Ki=0.54KuTu K_p = 0.45 K_u, \quad K_i = \frac{0.54 K_u}{T_u} Kp=0.45Ku,Ki=Tu0.54Ku

6.2 Z-N方法在电压环整定中的问题

问题1:需要断开电流环

Z-N方法要求在被控对象输入端直接施加激励。但对于电压环,被控对象是"电流环 + 电机",无法绕过电流环单独测试。如果在电流环内部做Z-N实验,得到的是电流环的参数,不是电压环的。

问题2:振荡风险

在实际DFIG上让系统"持续振荡"来确定 KuK_uKu 是非常危险的。振荡意味着定子电压在大幅波动,这可能导致:

  • 变流器过压保护触发
  • 定子绝缘承受电压应力
  • 转子电流尖峰

问题3:参数保守

Z-N方法给出的参数通常偏保守(特别是 KiK_iKi),响应偏慢。对于同步过程这种需要快速响应的场景,Z-N参数可能不理想。

6.3 Z-N方法的替代应用

虽然不建议直接在硬件上做Z-N实验,但可以在仿真环境中使用类似的方法:

matlab 复制代码
% MATLAB/Simulink中的自动化Z-N实验
function [Ku, Tu] = AutoTune_ZN(model_name)
    % 断开PI,只用P控制
    Kp = 0.1;  % 起始增益
    step = 0.1;
    
    while true
        % 设置Kp值
        set_param([model_name '/PI'], 'P', num2str(Kp));
        
        % 运行仿真
        sim(model_name, 10);  % 仿真10秒
        
        % 检测是否振荡
        voltage = simout.Vs;
        [peaks, locs] = findpeaks(voltage);
        
        if length(peaks) > 5
            % 检查振幅是否稳定(等幅振荡)
            amp_variation = std(peaks(end-4:end)) / mean(peaks(end-4:end));
            if amp_variation < 0.05  % 5%以内认为等幅
                Ku = Kp;
                Tu = mean(diff(locs));  % 振荡周期
                return;
            end
        end
        
        Kp = Kp + step;
        
        if Kp > 1000
            error('Unable to find critical gain');
        end
    end
end

七、 试凑法的系统化流程

7.1 "先P后I"的标准流程

试凑法看似"不科学",但在工程中往往是最实用的方法。关键是要有一个系统化的流程,而不是盲目乱试。

Step 1:确定基准参数

从理论计算或工程经验出发,获取一组初始参数:

Kpv,0=1ωsLm=11.57=0.637 K_{pv,0} = \frac{1}{\omega_s L_m} = \frac{1}{1.57} = 0.637 Kpv,0=ωsLm1=1.571=0.637

Kiv,0=Kpv,00.05=12.73 K_{iv,0} = \frac{K_{pv,0}}{0.05} = 12.73 Kiv,0=0.05Kpv,0=12.73

Step 2:只调P,令I=0

复制代码
初始: Kp = 0.637, Ki = 0

观察阶跃响应:
├── 如果电压上升太慢 (>500ms) → 增大Kp (×2)
├── 如果电压有超调 (10~20%) → Kp适中,记录
├── 如果电压振荡 → Kp太大,减半
└── 如果电压剧烈振荡 → 立即减小Kp到安全值

Step 3:保持P不变,逐步增大I

复制代码
保持: Kp = 0.637 (或Step2确定的值)

初始: Ki = 0
逐步增大: Ki = 1 → 2 → 5 → 10 → 20 → ...

观察:
├── 稳态误差减小 → 继续增大Ki
├── 响应开始振荡 → Ki太大,回退一步
├── 稳态误差 < 1% → Ki合适
└── 响应有超调但不振荡 → 可接受

Step 4:微调优化

复制代码
在Step2和Step3确定的参数附近微调:
├── 减小Kp 10% → 减少超调
├── 增大Ki 20% → 减少稳态误差
├── 增大Kp 10% → 加快响应
└── 直到满足所有性能指标

7.2 试凑过程中的波形判读

复制代码
情况1: Kp太小,Ki太小
V_s
  |                    ___________
  |                   /
  |                  /
  |                 /
  |                /
  |_______________/
  └──────────────────────────── t
  特征: 上升缓慢,有稳态误差
  对策: 增大Kp,增大Ki


情况2: Kp合适,Ki太小
V_s
  |              _______________
  |             /
  |            /
  |           /
  |          /
  |---------/  ← 稳态误差
  └──────────────────────────── t
  特征: 上升速度OK,但有稳态误差
  对策: 增大Ki


情况3: Kp合适,Ki合适(目标!)
V_s
  |           ┌─────────────────
  |           │
  |          /│
  |         / │
  |        /  │
  |_______/   │
  └──────────────────────────── t
  特征: 上升快,无超调,无稳态误差
  达标!


情况4: Kp太大
V_s
  |        ╱╲
  |       ╱  ╲   ╱╲
  |      ╱    ╲ ╱  ╲____
  |     ╱      ╲
  |    ╱
  |___╱
  └──────────────────────────── t
  特征: 振荡
  对策: 减小Kp


情况5: Kp合适,Ki太大
V_s
  |       ╱╲
  |      ╱  ╲
  |     ╱    ╲____╱╲___
  |    ╱         
  |   ╱
  |__╱
  └──────────────────────────── t
  特征: 有振荡但最终收敛
  对策: 减小Ki

八、 电压环与电流环的带宽匹配

8.1 带宽层级原则

串级控制系统的基本原则:内环带宽必须远高于外环带宽,否则外环的指令变化会在内环中引起不稳定。

对于DFIG同步控制:

复制代码
带宽层级:

PWM开关频率: 4000 Hz
     │
     ▼  (1/10)
电流环带宽: 400 Hz
     │
     ▼  (1/10 ~ 1/20)
电压环带宽: 20~40 Hz
     │
     ▼  (1/5 ~ 1/10)
同步过程带宽: 2~8 Hz (人眼可观察的速度)

8.2 带宽过高的风险

如果电压环带宽设得太高(比如100Hz,接近电流环的1/4):

  1. 电流环来不及响应:电压环输出的电流指令变化太快,电流环跟踪不上,导致实际电流与指令偏差大
  2. PI积分饱和:由于电流环的跟踪误差,电压环PI的积分项持续累积,导致饱和
  3. 振荡:电压环和电流环之间形成正反馈,系统不稳定

经验法则:电压环带宽 < 电流环带宽 / 10。对于400Hz的电流环,电压环带宽不超过40Hz。

8.3 带宽过低的问题

如果电压环带宽设得太低(比如5Hz):

  1. 同步时间过长:电压从0升到额定值可能需要数秒
  2. 相位跟踪滞后:在频率/相位调节时,响应太慢导致相位对齐困难
  3. 抗扰能力差:电网电压波动(如背景谐波)无法被快速抑制

经验法则:电压环带宽 > 10Hz。对于50Hz电网,这意味着电压可以在200ms内完成响应。

8.4 电压环带宽的最优选择

综合考虑响应速度、稳定性和抗扰能力,电压环带宽的最优范围为:

15Hz≤fv≤30Hz 15\text{Hz} \le f_{v} \le 30\text{Hz} 15Hz≤fv≤30Hz

对应的PI参数范围(3MW DFIG):

带宽 fvf_vfv KpvK_{pv}Kpv KivK_{iv}Kiv 上升时间
15 Hz 60 150,800 23 ms
20 Hz 80 201,000 18 ms
25 Hz 100 251,300 14 ms
30 Hz 120 301,600 12 ms

九、 从同步到并网:控制模式切换

9.1 并网瞬间的挑战

并网瞬间是同步过程中最危险的时刻。在并网开关合闸的瞬间:

  1. 定子从开路变为闭路:定子电流从零突然建立
  2. 电网电压钳位:定子电压不再由RSC独立控制,而被电网"强制"为电网电压
  3. 控制模式切换:从电压控制切换到电流(功率)控制

如果同步不完美(电压幅值或相位有偏差),并网瞬间会产生定子环流:

is,transient=ΔVZs=ΔVRs+jωsLs i_{s,transient} = \frac{\Delta V}{Z_s} = \frac{\Delta V}{R_s + j\omega_s L_s} is,transient=ZsΔV=Rs+jωsLsΔV

对于5%的电压偏差(ΔV=0.05×563=28V\Delta V = 0.05 \times 563 = 28\text{V}ΔV=0.05×563=28V),∣Zs∣=ωsLs=314×5.2×10−3=1.63 Ω|Z_s| = \omega_s L_s = 314 \times 5.2 \times 10^{-3} = 1.63\ \Omega∣Zs∣=ωsLs=314×5.2×10−3=1.63 Ω:

is,transient=281.63≈17A i_{s,transient} = \frac{28}{1.63} \approx 17\text{A} is,transient=1.6328≈17A

仅17A的冲击电流------这是可以接受的。但如果相位偏差30°:

ΔV=2×563×sin⁡(15°)=292V \Delta V = 2 \times 563 \times \sin(15°) = 292\text{V} ΔV=2×563×sin(15°)=292V

is,transient=2921.63≈179A i_{s,transient} = \frac{292}{1.63} \approx 179\text{A} is,transient=1.63292≈179A

179A的冲击电流------已经接近额定值的50%,可能触发过流保护。

结论 :同步过程中,相位精度比幅值精度更重要。

9.2 并网瞬间的控制模式切换策略

c 复制代码
typedef struct {
    int sync_state;         // 0=未同步, 1=幅值已同步, 2=全部已同步, 3=已并网
    float Vs_mag_error;     // 幅值误差
    float Vs_phase_error;   // 相位误差
    float grid_timer;       // 并网延时计时器
} SyncController_t;

void SyncStateMachine(SyncController_t *sc,
                       float Vs_mag, float Vg_mag,
                       float Vs_phase, float Vg_phase,
                       float Ts)
{
    // 幅值和相位误差
    sc->Vs_mag_error = fabsf(Vs_mag - Vg_mag) / Vg_mag;
    sc->Vs_phase_error = fabsf(Vs_phase - Vg_phase);
    if (sc->Vs_phase_error > M_PI) sc->Vs_phase_error = 2*M_PI - sc->Vs_phase_error;
    
    switch (sc->sync_state) {
    case 0:  // 未同步
        // 电压环闭环运行,调节幅值
        if (sc->Vs_mag_error < 0.05f) {  // 幅值误差 < 5%
            sc->sync_state = 1;
        }
        break;
        
    case 1:  // 幅值已同步,等待相位
        // 电压环继续运行,同时相位环调节
        if (sc->Vs_phase_error < 0.175f &&  // 相位误差 < 10° (0.175 rad)
            sc->Vs_mag_error < 0.05f) {
            sc->sync_state = 2;
            sc->grid_timer = 0.0f;
        }
        break;
        
    case 2:  // 全部已同步,等待稳定
        sc->grid_timer += Ts;
        
        // 幅值或相位超限,回退
        if (sc->Vs_mag_error > 0.08f || sc->Vs_phase_error > 0.26f) {
            sc->sync_state = 1;
            break;
        }
        
        // 持续稳定100ms后,发出并网指令
        if (sc->grid_timer > 0.1f) {
            // 发出并网开关合闸信号
            GridContactor_Close();
            sc->sync_state = 3;
        }
        break;
        
    case 3:  // 已并网
        // 切换到电流/功率控制模式
        // 电压环退出,电流环接管
        ControlMode_Switch_to_PQ();
        break;
    }
}

9.3 切换瞬间的无扰切换(Bumpless Transfer)

从电压控制切换到电流控制时,如果直接切换,控制信号可能出现跳变("bump"),导致电流冲击。

无扰切换策略

c 复制代码
void BumplessTransfer_Switch(PI_t *pi_voltage, PI_t *pi_current,
                              float iq_voltage_output, float iq_current_ref)
{
    // 在切换瞬间,将电压环PI的输出值"馈送"到电流环PI的积分项
    // 使得切换瞬间电流环的初始输出等于电压环的最终输出
    
    float transfer_value = iq_voltage_output;
    
    // 设置电流环PI的积分项,使其输出等于transfer_value
    pi_current->integral = transfer_value - pi_current->Kp * 0.0f;  // 假设切换瞬间误差为0
    
    // 然后平滑过渡
    // 在过渡期间,电压环的权重从1渐变到0,电流环的权重从0渐变到1
}

十、 仿真验证案例

10.1 仿真设置

matlab 复制代码
% DFIG参数
Lm = 5.0e-3;    % 互感 5mH
Ls = 5.2e-3;    % 定子自感
Lr = 5.4e-3;    % 转子自感
Rs = 0.015;     % 定子电阻
Rr = 0.020;     % 转子电阻
omega_s = 2*pi*50; % 同步角速度

% 被控对象增益
K_plant = omega_s * Lm;  % 1.57 V/A

% 电流环参数(已整定)
omega_ci = 2*pi*400;      % 电流环带宽 400Hz
tau_ci = 1/omega_ci;      % 0.398ms

% 电压环参数(三组对比)
% 方案A: 工程简化法
Kp_A = 1/K_plant;          % 0.637
Ki_A = Kp_A / 0.05;        % 12.73

% 方案B: 极点对消法 (ωv = 20Hz)
omega_v = 2*pi*20;
Kp_B = omega_v / K_plant;  % 80.0
Ki_B = Kp_B * omega_ci;    % 201062

% 方案C: 折中方案
Kp_C = 10;                  % 手动选择
Ki_C = 500;                 % 手动选择

10.2 三组参数的阶跃响应对比

复制代码
方案A (Kp=0.64, Ki=12.7):
V_s (p.u.)
  1.0 |                        ________________________
      |                       /
  0.8 |                      /
      |                     /
  0.6 |                    /
      |                   /
  0.4 |                  /
      |                 /
  0.2 |                /
      |               /
  0.0 |______________/
      └─────────────────────────────────────────────── t(ms)
      0     50    100    150    200    250    300

  上升时间: ~180ms    超调: 0%    稳态误差: 0%


方案B (Kp=80, Ki=201062):
V_s (p.u.)
  1.0 |         ┌─────────────────────────────────────
      |        /│
  0.8 |       / │
      |      /  │
  0.6 |     /   │
      |    /    │
  0.4 |   /     │
      |  /      │
  0.2 | /       │
      |/        │
  0.0 |─────────┘
      └─────────────────────────────────────────────── t(ms)
      0    10    20    30    40    50

  上升时间: ~18ms     超调: ~15%    稳态误差: 0%
  注意: 有15%超调,可能在实际中触发过压保护!


方案C (Kp=10, Ki=500):
V_s (p.u.)
  1.0 |                   ____________________________
      |                  /
  0.8 |                 /
      |                /
  0.6 |               /
      |              /
  0.4 |             /
      |            /
  0.2 |           /
      |          /
  0.0 |_________/
      └─────────────────────────────────────────────── t(ms)
      0     30     60     90    120    150    180

  上升时间: ~60ms     超调: ~3%     稳态误差: 0%
  最佳折中!

10.3 推荐参数

综合三种方案的结果,**方案C(折中方案)**在实际应用中最为合适:

  • 响应足够快(60ms上升时间)
  • 超调量小(3%,不会触发保护)
  • 稳态误差为零
  • 参数裕度充足

最终推荐参数(3MW DFIG,4kHz采样):

Kpv=10 A/V,Kiv=500 A/(V⋅s) \boxed{K_{pv} = 10 \text{ A/V}, \quad K_{iv} = 500 \text{ A/(V·s)}} Kpv=10 A/V,Kiv=500 A/(V⋅s)


十一、 常见问题与对策

11.1 问题一:同步过程中电压振荡

现象:定子电压在上升过程中出现1~3Hz的低频振荡。

原因

  1. KpvK_{pv}Kpv 太大,导致电压过冲
  2. 磁链观测器延迟,导致反馈信号滞后
  3. 转子位置编码器误差,导致坐标变换角度不准

对策

  1. 减小 KpvK_{pv}Kpv 50%
  2. 增大磁链观测器的滤波时间常数
  3. 校准编码器零位

11.2 问题二:电压稳态误差

现象:定子电压稳定在95%额定值,无法达到100%。

原因

  1. KivK_{iv}Kiv 太小,积分作用不够
  2. RSC输出电压能力不足(VdcV_{dc}Vdc 太低)
  3. 电机参数偏差(LmL_mLm 实际值比标称值小)

对策

  1. 增大 KivK_{iv}Kiv
  2. 提高直流母线电压
  3. 通过空载试验标定实际 LmL_mLm

11.3 问题三:并网瞬间大电流冲击

现象:并网开关合闸瞬间,定子电流尖峰超过额定值。

原因

  1. 同步精度不够(幅值或相位偏差大)
  2. 并网开关合闸时机不佳(不在电压波形的最优时刻)
  3. 控制模式切换有延迟

对策

  1. 提高同步精度要求(相位偏差 < 5°)
  2. 使用"选相合闸"技术(在电压过零时刻合闸)
  3. 优化控制模式切换的无扰过渡

11.4 问题四:弱风区同步困难

现象:在低风速时,发电机转速低,转差率大,同步过程中电压不稳定。

原因:低转速时,转子侧的励磁能力受限(受变流器电压容量限制),难以建立稳定的定子电压。

对策

  1. 在低风速时采用"空载励磁"模式------不追求最大功率,先建立磁场
  2. 根据转速自适应调整 LRSCL_{RSC}LRSC(如果使用电感模拟策略)
  3. 限制同步的最低转速要求

十二、 总结

回到最初的问题:机侧同步定子电压环的PI参数怎么整定?

答案是一个四层架构

层次 方法 适用场景 精度
第1层:理论计算 极点对消法 / 二阶最优法 初始参数估算 ±50%
第2层:工程简化 Kp=1/(ωsLm)K_p = 1/(\omega_s L_m)Kp=1/(ωsLm) 快速获取基准值 ±100%
第3层:仿真优化 试凑法 + 波形判读 参数微调 ±20%
第4层:现场调试 阶跃响应测试 + 在线微调 最终确认 ±5%

核心公式(记住这一个就够了):

Kpv=ωvωsLm,Kiv=Kpv⋅ωci K_{pv} = \frac{\omega_v}{\omega_s L_m}, \quad K_{iv} = K_{pv} \cdot \omega_{ci} Kpv=ωsLmωv,Kiv=Kpv⋅ωci

其中 ωv\omega_vωv 是期望的电压环带宽(推荐15~30Hz),ωci\omega_{ci}ωci 是已整定的电流环带宽。

三条工程箴言

  1. 带宽层级是铁律:电压环带宽 < 电流环带宽 / 10。违反这条,系统必振荡。

  2. 相位精度比幅值精度重要10倍:同步过程中,5%的幅值偏差只会产生17A的冲击电流,但30°的相位偏差会产生179A。把精力花在相位锁定上。

  3. 并网瞬间的无扰切换比PI参数更重要:再精确的PI参数,如果在并网瞬间控制模式切换产生跳变,都会前功尽弃。做好Bumpless Transfer。


下一篇预告:《变流器控制深水区 · 第七篇:多机并联的振荡幽灵------当两台变流器开始"对话"》


如果这篇文章对你有帮助,欢迎点赞收藏。在电压环调试中遇到过任何问题,也欢迎在评论区交流。

相关推荐
Languorous.2 小时前
C++数据结构进阶|图(Graph)详解:从存储到面试高频算法实战
算法
我头发还没掉光~2 小时前
P4147 玉蟾宫
数据结构·c++·算法
江汉似年2 小时前
强化学习中的 On-policy 与 Off-policy 全面解析
人工智能·深度学习·算法·rl
code bean3 小时前
【LangChain 】 自定义解析器实战指南:从原理到 10 个业务场景落地
算法·langchain
念恒123063 小时前
基础IO(一切皆文件)
linux·c语言·c++·算法
d111111111d3 小时前
MQTT+STM32+云平台+AT命令的编写
服务器·笔记·stm32·单片机·嵌入式硬件·算法
铁皮哥3 小时前
【力扣题解】LeetCode 25. K 个一组翻转链表
java·数据结构·windows·python·算法·leetcode·链表
洛水水4 小时前
【力扣100题】29. 对称二叉树
算法·leetcode·职场和发展
大熊背4 小时前
近期遇到的一些问题总结(四)
算法·拍照·白平衡·isp pipeline