大功率 PCS 双环闭环控制算法原理与实现

1. 引言

随着可再生能源(如光伏、风电)的大规模并网和储能系统的快速发展,大功率储能变流器(PCS, Power Conversion System) 作为能量双向流动的核心枢纽,其控制性能直接关系到电网的稳定性、电能质量以及系统效率。在众多控制策略中,双环闭环控制算法 因其优异的动态响应、稳态精度和抗干扰能力,已成为大功率 PCS 的主流控制方案。本文将深入剖析大功率 PCS 双环闭环控制算法的基本原理、数学模型、设计方法 ,并结合仿真与代码示例,阐述其工程实现要点

2. PCS 拓扑结构与控制目标

2.1 典型拓扑结构

大功率 PCS 通常采用三相两电平或三电平电压源型变流器(VSC) 作为主电路拓扑。

  • 直流侧 :连接电池储能系统(BESS),电压为 V_dc
  • 交流侧 :通过滤波电感 L_f 和滤波电容 C_f(构成 LCL 或 L 型滤波器)接入电网,电压为 V_g
  • 核心开关器件:IGBT 或 SiC MOSFET,由 PWM 信号驱动。

2.2 主要控制目标

  1. 功率控制 :精确控制注入电网的有功功率 P 和无功功率 Q,实现削峰填谷、频率支撑等功能。
  2. 电流控制:确保并网电流正弦、谐波含量低,满足并网标准(如 THD < 5%)。
  3. 直流侧电压稳定:在并网模式下维持直流母线电压恒定;在离网模式下为负载提供稳定电压。
  4. 动态响应与稳定性:在电网电压跌落、负载突变等工况下快速响应并保持系统稳定。

3. 双环闭环控制算法原理

双环控制的核心思想是外环产生内环的参考指令,内环快速跟踪该指令 。对于并网型 PCS,最经典的结构是外环为功率/直流电压环,内环为电流环

3.1 坐标系变换:ABC -> dq

为了将交流量转换为直流量进行控制,采用 Park 变换(Clarke + Park)

  • Clarke 变换 (3s/2s):将三相静止坐标系 (ABC) 转换为两相静止坐标系 (αβ)。
  • Park 变换 (2s/2r):将 αβ 坐标系旋转,对齐到与电网电压矢量同步的旋转坐标系 (dq)。
  • 在 dq 坐标系下,电网基波电压、电流表现为直流量,便于 PI 控制器实现无静差跟踪。

3.2 外环(功率/电压环)设计

  • 功能 :根据系统高级指令(如能量管理系统 EMS 下发的 P_ref, Q_ref)或需要稳定的直流电压 V_dc_ref,计算出内环电流的参考值 i_d_refi_q_ref
  • 功率外环 (并网模式):
    • 有功功率参考 P_ref 决定 i_d_refi_d_ref = (2/3) * P_ref / V_gd (假设电网电压矢量定向于 d 轴,则 V_gq = 0)。
    • 无功功率参考 Q_ref 决定 i_q_refi_q_ref = -(2/3) * Q_ref / V_gd
    • 通常,外环采用 PI 控制器,但其输出直接作为电流参考,带宽较低,主要作用是设定稳态工作点
  • 直流电压外环 (稳压模式或离网模式):
    • 通过 PI 控制器调节直流电压 V_dc 至其参考值 V_dc_ref,其输出即为有功电流参考 i_d_ref
    • 该环控制直流侧与交流侧的能量平衡。

3.3 内环(电流环)设计

  • 功能 :快速、准确地跟踪外环给出的电流参考指令 i_d_refi_q_ref,生成变流器所需的电压指令 V_d_refV_q_ref

  • 数学模型 :在 dq 同步旋转坐标系下,考虑滤波电感,可得状态方程:

    复制代码
    L * di_d/dt = V_d - V_gd + ω * L * i_q
    L * di_q/dt = V_q - V_gq - ω * L * i_d

    其中,ω 为电网角频率,V_d, V_q 为变流器输出电压指令。

  • 解耦控制 :方程中存在交叉耦合项 ω*L*i_q-ω*L*i_d。为了实现 d、q 轴电流的独立控制,引入前馈解耦

    复制代码
    V_d = (V_gd - ω * L * i_q) + u_d
    V_q = (V_gq + ω * L * i_d) + u_q

    其中,u_du_q 为 PI 控制器的输出。代入原方程后,得到两个独立的一阶系统:

    复制代码
    L * di_d/dt = u_d
    L * di_q/dt = u_q
  • PI 控制器设计 :针对解耦后的系统,d、q 轴电流环可分别设计为典型的 I 型系统。PI 参数 (Kp_i, Ki_i) 可根据期望的带宽和阻尼进行整定。

3.4 前馈与抗干扰

  • 电网电压前馈 :将 V_gdV_gq 直接加入电压指令,可有效抵消电网电压扰动对电流环的影响,提高动态性能。
  • 直流电压前馈 :在某些设计中,会将直流电压 V_dc 引入调制波计算,以线性化 PWM 环节。

4. 算法实现步骤与流程

  1. 信号采样与处理 :采样三相电网电压 V_gabc、三相并网电流 i_abc、直流侧电压 V_dc

  2. 锁相环(PLL) :基于 V_gabc 计算电网电压相位角 θ 和频率 ω,用于坐标变换和解耦。

  3. 坐标变换 :将 V_gabci_abc 通过 Park 变换得到 V_gd, V_gq, i_d, i_q

  4. 外环计算

    • 并网模式:根据 P_ref, Q_refV_gd 计算 i_d_ref, i_q_ref
    • 稳压模式:直流电压外环 PI 控制器根据 V_dc_refV_dc 计算 i_d_refi_q_ref 通常设为 0 或由无功控制给出。
  5. 内环计算

    • 计算电流误差:e_d = i_d_ref - i_d, e_q = i_q_ref - i_q

    • 经过电流环 PI 控制器得到 u_d, u_q

    • 加入前馈解耦项和电网电压前馈,得到变流器电压指令 V_d_ref, V_q_ref

      复制代码
      V_d_ref = u_d + V_gd - ω * L * i_q
      V_q_ref = u_q + V_gq + ω * L * i_d
  6. 反 Park 变换 :将 V_d_ref, V_q_ref 反变换回两相静止坐标系 V_α_ref, V_β_ref

  7. PWM 调制 :采用 空间矢量脉宽调制(SVPWM) 或正弦脉宽调制(SPWM),根据 V_α_ref, V_β_refV_dc 生成驱动 IGBT 的开关信号。

#mermaid-svg-DwQQ0YfthkFde1j1{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-DwQQ0YfthkFde1j1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-DwQQ0YfthkFde1j1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-DwQQ0YfthkFde1j1 .error-icon{fill:#552222;}#mermaid-svg-DwQQ0YfthkFde1j1 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-DwQQ0YfthkFde1j1 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-DwQQ0YfthkFde1j1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-DwQQ0YfthkFde1j1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-DwQQ0YfthkFde1j1 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-DwQQ0YfthkFde1j1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-DwQQ0YfthkFde1j1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-DwQQ0YfthkFde1j1 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-DwQQ0YfthkFde1j1 .marker.cross{stroke:#333333;}#mermaid-svg-DwQQ0YfthkFde1j1 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-DwQQ0YfthkFde1j1 p{margin:0;}#mermaid-svg-DwQQ0YfthkFde1j1 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-DwQQ0YfthkFde1j1 .cluster-label text{fill:#333;}#mermaid-svg-DwQQ0YfthkFde1j1 .cluster-label span{color:#333;}#mermaid-svg-DwQQ0YfthkFde1j1 .cluster-label span p{background-color:transparent;}#mermaid-svg-DwQQ0YfthkFde1j1 .label text,#mermaid-svg-DwQQ0YfthkFde1j1 span{fill:#333;color:#333;}#mermaid-svg-DwQQ0YfthkFde1j1 .node rect,#mermaid-svg-DwQQ0YfthkFde1j1 .node circle,#mermaid-svg-DwQQ0YfthkFde1j1 .node ellipse,#mermaid-svg-DwQQ0YfthkFde1j1 .node polygon,#mermaid-svg-DwQQ0YfthkFde1j1 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-DwQQ0YfthkFde1j1 .rough-node .label text,#mermaid-svg-DwQQ0YfthkFde1j1 .node .label text,#mermaid-svg-DwQQ0YfthkFde1j1 .image-shape .label,#mermaid-svg-DwQQ0YfthkFde1j1 .icon-shape .label{text-anchor:middle;}#mermaid-svg-DwQQ0YfthkFde1j1 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-DwQQ0YfthkFde1j1 .rough-node .label,#mermaid-svg-DwQQ0YfthkFde1j1 .node .label,#mermaid-svg-DwQQ0YfthkFde1j1 .image-shape .label,#mermaid-svg-DwQQ0YfthkFde1j1 .icon-shape .label{text-align:center;}#mermaid-svg-DwQQ0YfthkFde1j1 .node.clickable{cursor:pointer;}#mermaid-svg-DwQQ0YfthkFde1j1 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-DwQQ0YfthkFde1j1 .arrowheadPath{fill:#333333;}#mermaid-svg-DwQQ0YfthkFde1j1 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-DwQQ0YfthkFde1j1 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-DwQQ0YfthkFde1j1 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-DwQQ0YfthkFde1j1 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-DwQQ0YfthkFde1j1 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-DwQQ0YfthkFde1j1 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-DwQQ0YfthkFde1j1 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-DwQQ0YfthkFde1j1 .cluster text{fill:#333;}#mermaid-svg-DwQQ0YfthkFde1j1 .cluster span{color:#333;}#mermaid-svg-DwQQ0YfthkFde1j1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-DwQQ0YfthkFde1j1 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-DwQQ0YfthkFde1j1 rect.text{fill:none;stroke-width:0;}#mermaid-svg-DwQQ0YfthkFde1j1 .icon-shape,#mermaid-svg-DwQQ0YfthkFde1j1 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-DwQQ0YfthkFde1j1 .icon-shape p,#mermaid-svg-DwQQ0YfthkFde1j1 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-DwQQ0YfthkFde1j1 .icon-shape .label rect,#mermaid-svg-DwQQ0YfthkFde1j1 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-DwQQ0YfthkFde1j1 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-DwQQ0YfthkFde1j1 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-DwQQ0YfthkFde1j1 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 并网模式
稳压模式
开始采样
锁相环 PLL

获取相位θ与频率ω
坐标变换 Park

V_gabc, i_abc -> V_gdq, i_dq
运行模式?
功率外环

P_ref/Q_ref -> i_dq_ref
直流电压外环

V_dc_ref -> i_d_ref
i_q_ref = 0 或 Q_ref
电流内环 PI 控制

e_dq = i_dq_ref - i_dq -> u_dq
前馈解耦与补偿

V_dq_ref = u_dq + V_gdq ± ωL*i_qd
反 Park 变换

V_dq_ref -> V_αβ_ref
SVPWM 调制

生成 PWM 驱动信号
驱动 IGBT 开关
一个控制周期结束

5.1 仿真模型搭建要点

  1. 主电路模型:搭建三相两电平 VSC、直流电压源、电网、L 或 LCL 滤波器。
  2. 控制子系统:封装双环控制算法,包括 PLL、坐标变换、外环、内环、SVPWM 等模块。
  3. 测试场景:设计阶跃功率指令、电网电压跌落、负载投切等动态测试。

5.2 核心控制代码片段(伪代码风格)

c 复制代码
// 双环控制核心函数,在中断服务程序中调用 (控制周期 Ts)
void DualLoop_Control(float P_ref, float Q_ref, float Vdc_ref, float Vdc, float Vg_abc[3], float Ig_abc[3]) {
    // 1. PLL 获取电网相位 theta 和频率 omega_e
    PLL_Update(Vg_abc, &theta, &omega_e);

    // 2. Park 变换
    Clarke_Park_Transform(Vg_abc, theta, &Vgd, &Vgq);
    Clarke_Park_Transform(Ig_abc, theta, &Igd, &Igq);

    // 3. 外环:计算电流参考值
    if (control_mode == GRID_FEEDING) {
        // 功率控制外环
        I_ref_d = (2.0f/3.0f) * P_ref / Vgd;
        I_ref_q = -(2.0f/3.0f) * Q_ref / Vgd;
    } else if (control_mode == DC_VOLTAGE_CONTROL) {
        // 直流电压外环 PI
        I_ref_d = PI_Controller(&Vdc_PI, Vdc_ref, Vdc);
        I_ref_q = 0; // 或根据无功需求设定
    }

    // 4. 内环:电流 PI 控制 + 前馈解耦
    float Ud = PI_Controller(&Id_PI, I_ref_d, Igd);
    float Uq = PI_Controller(&Iq_PI, I_ref_q, Igq);

    float Vd_ref = Ud + Vgd - omega_e * Lf * Igq; // 解耦与前馈
    float Vq_ref = Uq + Vgq + omega_e * Lf * Igd;

    // 5. 反 Park 变换
    float Valpha_ref, Vbeta_ref;
    Inverse_Park_Transform(Vd_ref, Vq_ref, theta, &Valpha_ref, &Vbeta_ref);

    // 6. 生成 SVPWM 占空比
    SVPWM_Generate(Valpha_ref, Vbeta_ref, Vdc, PWM_duty_cycles);
}

6. 工程实现挑战与优化

  1. 参数敏感性 :滤波器电感 L 的准确值对解耦效果影响大,需在线辨识或自适应调整。
  2. 延时补偿:数字控制带来的计算延时和 PWM 延时需在前馈或控制器设计中予以补偿。
  3. LCL 滤波器谐振抑制 :当使用 LCL 滤波器时,需引入有源阻尼陷波器来抑制谐振峰,保证系统稳定。
  4. 过调制与直流电压利用率:在直流电压有限时,需设计过调制算法以提高输出电压能力。
  5. 弱电网适应性 :在电网阻抗较大时,PLL 和电流环的设计需额外考虑稳定性,可能需采用虚拟阻抗自适应控制

7. 总结

大功率 PCS 的双环闭环控制算法通过外环设定目标、内环快速跟踪 的分层结构,结合同步旋转坐标系下的解耦与前馈 技术,实现了对功率、电流、电压的高性能控制。该方案结构清晰,动态响应快,稳态精度高,是当前工程应用中的黄金标准。然而,其性能极大依赖于精确的系统参数和针对实际工况(如弱电网、非线性负载)的优化设计。未来,与模型预测控制(MPC)自适应控制等先进算法结合,将是进一步提升 PCS 性能的重要方向。

相关推荐
buhuizhiyuci7 小时前
【算法篇】位运算 —— 基础篇
java·数据库·算法
Black蜡笔小新8 小时前
算法训练完了怎么上线?DLTM→AIS→EasyGBS三步交付流水线
人工智能·算法
sycmancia8 小时前
Qt——多线程与界面组件的通信
开发语言·qt·算法
想吃火锅10058 小时前
【leetcode】5.最长回文子串js
算法·leetcode·职场和发展
CoderYanger8 小时前
A.每日一题:1967题+1331题
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
Jasmine_llq8 小时前
《P17010 [GESP202606 五级] 排排坐》
算法·贪心算法·数学化简求和式·排序sort 反向迭代器降序·线性遍历累加计算总权重和
va学弟9 小时前
LeetCode 热题 100 题解(1):哈希
python·算法·leetcode·哈希算法
程序员老陆9 小时前
使用Qt+大华设备SDK预览大华摄像机视频
qt·算法·音视频·视频监控
罗超驿9 小时前
9.优先级队列与堆:从底层原理到实战应用的完整指南
数据结构·算法