资讯中心

联系我们

深圳市维立信电子科技有限公司
地址:深圳市福田区红荔路第一世界广场A座8D-E
咨询电话:0755-83766766
E-mail:info@welissom.com

如何设计双向直流电源的数字PI控制器?

2025-11-25 09:51:22  点击:

设计双向直流电源的数字PI控制器需结合双向能量流动特性、动态响应需求、稳定性要求,通过离散化PI算法、参数整定、抗饱和处理及双向模式切换逻辑实现。以下是详细设计步骤与关键要点:

一、双向直流电源的数字PI控制器核心需求

  1. 双向能量流动控制
    • 电源需在源模式(输出功率)负载模式(吸收功率)间无缝切换,PI控制器需适应两种模式的动态特性差异(如源模式输出阻抗低,负载模式输入阻抗高)。
  2. 高动态响应
    • 快速跟踪负载突变(如电机启动、电池充放电切换),避免输出电压跌落或过冲。
  3. 稳定性与抗干扰
    • 抑制开关噪声、纹波及参数扰动(如电感温升导致的电感量变化)。
  4. 参数自适应
    • 根据模式(源/负载)、工作点(电压/电流范围)动态调整PI参数,优化性能。

二、数字PI控制器设计步骤

1. 连续域PI控制器设计

  • 传递函数模型
    双向直流电源的典型小信号模型可简化为二阶系统(含输出滤波器LC环节),其开环传递函数为:

G(s)=s(Ls+R)(Cs+1/Ro)Kp(s+Ki/Kp)

其中:

  • KpKi为PI参数,LC为滤波器电感/电容,R为线路电阻,Ro为输出阻抗(源模式)或输入阻抗(负载模式)。

  • 参数整定方法

    • 极点配置法:根据目标带宽(如1kHz)和相位裕度(如60°)配置闭环极点,反推KpKi

    • Ziegler-Nichols法:通过临界增益Ku和振荡周期Tu计算参数:

Kp=0.45Ku,Ki=Kp/(0.85Tu)
  • 仿真优化:使用MATLAB/Simulink或PLECS搭建模型,通过参数扫描(如Coulomb效率法)找到最优值。

2. 离散化方法

将连续域PI控制器转换为数字实现,常用方法包括:

  • 位置式PI

u(k)=Kpe(k)+Kii=0ke(i)Ts
  • 优点:直接计算控制量,无积分饱和风险(需额外处理)。

  • 缺点:计算量大,历史误差累积易溢出。

  • 增量式PI

Δu(k)=Kp[e(k)e(k1)]+Kie(k)Ts
u(k)=u(k1)+Δu(k)
  • 优点:计算量小,积分饱和易处理(通过限幅)。

  • 缺点:需保存上一周期控制量u(k1)

  • 推荐方案
    采用增量式PI,结合抗积分饱和逻辑(如遇限削弱积分法):

    cif (u(k) > U_max) {    u(k) = U_max;    if (e(k) > 0) integral_term = 0; // 抑制正向积分} else if (u(k) < U_min) {    u(k) = U_min;    if (e(k) < 0) integral_term = 0; // 抑制负向积分}

3. 双向模式切换逻辑

  • 模式判断条件
    • 源模式:输出电流(I_{out} > 0)(电源向负载供电)。
    • 负载模式:输出电流(I_{out} < 0)(电源吸收能量,如电池充电或回馈制动)。
    • 切换阈值:设置死区(如(-0.1A < I_{out} < 0.1A))避免频繁切换。
  • 参数自适应策略
    • 源模式
      • 增大(K_p)以提高动态响应(输出阻抗低,需快速抑制负载突变)。
      • 减小(K_i)避免积分饱和(输出电压稳定,无需强积分作用)。
    • 负载模式
      • 减小(K_p)防止过冲(输入阻抗高,电流变化慢)。
      • 增大(K_i)增强稳态精度(需快速消除电流误差)。
    • 示例参数表
      模式(K_p)(K_i)积分限幅
      源模式0.50.01±10V
      负载模式0.20.05±5V

4. 数字实现关键代码(C语言示例)

c// 定义参数float Kp_source = 0.5, Ki_source = 0.01;float Kp_load = 0.2, Ki_load = 0.05;float U_max = 10.0, U_min = -10.0; // 控制量限幅float integral_term = 0.0;float u_prev = 0.0;// PI控制器函数float PI_Controller(float e, float I_out, float Ts) {    float Kp, Ki;    if (I_out > 0.1) { // 源模式        Kp = Kp_source;        Ki = Ki_source;    } else if (I_out < -0.1) { // 负载模式        Kp = Kp_load;        Ki = Ki_load;    } else { // 死区,保持上一状态        return u_prev;    }    // 增量式PI    float delta_u = Kp * (e - e_prev) + Ki * e * Ts;    float u = u_prev + delta_u;    // 抗积分饱和    if (u > U_max) {        u = U_max;        if (e > 0) integral_term = 0;    } else if (u < U_min) {        u = U_min;        if (e < 0) integral_term = 0;    }    // 更新状态    e_prev = e;    u_prev = u;    return u;}

三、性能优化与验证

1. 动态响应测试

  • 测试方法
    • 阶跃负载测试:源模式下从10%负载突增至90%,负载模式下从90%突减至10%。
    • 观察输出电压过冲(≤5%)、恢复时间(≤1ms)及稳态误差(≤0.5%)。

2. 稳定性分析

  • 频域分析
    • 使用MATLAB绘制闭环Bode图,验证相位裕度(≥45°)和增益裕度(≥6dB)。
  • 时域仿真
    • 在PLECS中模拟电源在双向模式切换时的瞬态响应,检查是否振荡或发散。

3. 参数鲁棒性测试

  • 参数扰动
    • 改变电感量(±20%)、电容值(±10%),观察PI控制器能否保持稳定。
  • 温度影响
    • 模拟电感温升(如从25℃升至85℃),验证参数自适应逻辑的有效性。

四、案例分析

场景:某双向直流电源在负载模式(电池充电)下,输出电流从5A突减至1A时,电压过冲达8%。
问题分析

  1. 负载模式PI参数Kp过大,导致动态响应过快。
  2. 积分限幅值(±10V)过高,未有效抑制积分饱和。
    优化措施
  3. 将负载模式Kp从0.5降至0.2,Ki从0.01增至0.05。
  4. 缩小积分限幅至±5V。
    结果:复测后电压过冲降至3%,恢复时间缩短至0.8ms。

五、总结

设计双向直流电源的数字PI控制器需:

  1. 分模式设计参数:根据源/负载模式动态调整KpKi
  2. 采用增量式PI:结合抗积分饱和逻辑,提升稳定性。
  3. 实现平滑切换:通过电流阈值和死区避免模式频繁切换。
  4. 验证鲁棒性:通过阶跃测试、频域分析和参数扰动验证性能。
    最终目标是实现双向能量流动下的高动态响应、低稳态误差及强抗干扰能力。