登录/注册

电压环电流环双闭环程序

更多

好的,我们来详细解释一下开关电源(如DC-DC变换器)中常用的“电压环-电流环双闭环”控制程序(用中文描述)。这种结构是解决负载跳变响应、提高稳定性(特别是对输出电容ESR不敏感)和实现电流限制的关键方法。

核心思想:

  1. 外环 - 电压环: 负责维持输出电压稳定在期望值。它比较实际输出电压 (Vo_adc) 和参考电压 (Vref),产生一个误差信号。
  2. 内环 - 电流环: 负责精确快速地控制电感电流(或开关电流)。它的参考信号就是电压环的输出。它比较实际电感电流采样 (Iind_adc) 和电压环给出的电流参考指令 (Iref),产生另一个误差信号。
  3. 级联控制: 内环(电流环)的响应速度必须远快于外环(电压环)。电压环产生一个“目标电流”值 (Iref),而电流环则快速跟踪这个目标电流值。
  4. 目的:
    • 快速跟踪负载电流变化: 负载突变时,需要电感电流快速变化来补偿。电流环能迅速响应电压环给出的电流调整指令。
    • 稳定性: 电流内环可以“解耦”输出电压和电感电流,使得环路设计更容易,系统对输出电容的等效串联电阻 (ESR) 变化不敏感。
    • 固有电流限制: Iref 直接控制了最大允许的电感电流,实现有效的硬件保护。

双闭环程序流程(常用数字实现 - 伪代码/流程描述):

以下是基于数字控制器(如DSP, MCU)实现的典型流程。假设使用的是PID(通常是PI)控制器,并且控制周期由定时器中断(如PWM周期中心或终点触发ADC采样)决定。

// ===================== 预定义和全局变量 =====================
float Vref;         // 输出电压参考值 (目标电压)
float Vo_adc;       // ADC采样到的实际输出电压 (标么化或校准后的实际值)
float Iind_adc;     // ADC采样到的实际电感电流 (标么化或校准后的实际值)
float Kp_v, Ki_v;   // 电压环 PI 控制器的比例和积分系数
float Kp_i, Ki_i;   // 电流环 PI 控制器的比例和积分系数
float Vo_error_prev = 0, Vo_integral = 0; // 电压环状态(误差和积分)
float Iref;         // 电流环的参考指令 (由电压环计算得出)
float Iind_error_prev = 0, Iind_integral = 0; // 电流环状态(误差和积分)
float DutyCmd;      // 最终输出的占空比控制命令
float DutyMax, DutyMin; // 占空比限幅值 (通常 0 <= DutyCmd <= 1, 或根据硬件限制调整)
float Iref_max, Iref_min; // 电流环指令限幅 (实现过流保护/限制)

// ... (其他必要变量:ADC校准参数、标么化因子、保护标志等)

// ===================== 中断服务程序 (控制循环入口点) =====================
void ControlLoop_ISR(void) {
    // 步骤 1: 读取ADC采样值
    Vo_adc = Read_ADC(ADC_CH_VOUT);    // 读取输出电压采样值
    Iind_adc = Read_ADC(ADC_CH_IIND);  // 读取电感电流采样值

    // 步骤 2: **电压环 (外环) 计算**
    //   2.1 计算当前输出电压误差
    float Vo_error = Vref - Vo_adc;

    //   2.2 更新电压环 PI 积分项 (可选抗饱和处理 - anti-windup)
    Vo_integral += Ki_v * Vo_error;   // 基本积分
    //   === 可选:积分抗饱和限幅 (非常重要!!!) ===
    //   if (Vo_integral > Iref_max) Vo_integral = Iref_max;
    //   else if (Vo_integral < Iref_min) Vo_integral = Iref_min;
    //   =========================================

    //   2.3 计算电压环输出 - 电流参考指令 (Iref)
    float Iref_calc = Kp_v * Vo_error + Vo_integral; // PI输出 = Kp*Err + Ki*Integral
    //   2.4 对电流参考指令进行限幅 (硬件保护)
    Iref = Iref_calc;                // 先赋值
    if (Iref > Iref_max) Iref = Iref_max; // 上限幅 (过流保护值)
    else if (Iref < Iref_min) Iref = Iref_min; // 下限幅 (Boost拓扑可能需要负电流或零)

    // 步骤 3: **电流环 (内环) 计算**
    //   3.1 计算当前电感电流误差
    float Iind_error = Iref - Iind_adc;

    //   3.2 更新电流环 PI 积分项 (可选抗饱和处理)
    Iind_integral += Ki_i * Iind_error; // 基本积分
    //   === 可选:积分抗饱和限幅 ===
    //   if (Iind_integral > DutyMax) Iind_integral = DutyMax;
    //   else if (Iind_integral < DutyMin) Iind_integral = DutyMin;
    //   ==========================

    //   3.3 计算电流环输出 - 原始占空比命令
    float DutyRaw = Kp_i * Iind_error + Iind_integral; // PI输出 = Kp*Err + Ki*Integral

    // 步骤 4: **生成最终占空比控制信号**
    DutyCmd = DutyRaw;                // 先赋值
    //   4.1 对占空比进行硬件限幅 (0%~接近100%)
    if (DutyCmd > DutyMax) DutyCmd = DutyMax;
    else if (DutyCmd < DutyMin) DutyCmd = DutyMin;

    // 步骤 5: 更新PWM输出寄存器
    Set_PWM_DutyCycle(DutyCmd);       // 将DutyCmd写入PWM比较寄存器

    // (可选) 步骤 6: 更新状态用于下次计算
    Vo_error_prev = Vo_error;
    Iind_error_prev = Iind_error;

    // (可选) 步骤 7: 清除中断标志等
}

关键点解释:

  1. 中断触发: 控制循环通常由硬件定时器中断触发。这个定时器通常与PWM同步,例如在PWM周期的中心或结束时触发ADC采样,确保采样点和控制计算点的时序一致性至关重要。
  2. ADC采样: 精确测量输出电压 Vo_adc 和电感电流 Iind_adc 是基础。需要注意ADC通道、采样保持时间、精度、校准(Offset/Gain)和标么化处理(将ADC原始值转换为实际电压/电流值)。
  3. PI控制器:
    • 控制器通常是PI(比例-积分)。比例系数 Kp 提供快速响应,积分系数 Ki 消除稳态误差。
    • 积分抗饱和: 当系统饱和时(例如,输出电压远低于目标值,导致 Iref 一直最大;或占空比已达极限),积分项会持续累积(称为积分饱和)。这会导致系统退出饱和状态时响应变慢甚至引起过冲振荡。Iref 限幅后的 Vo_integral 抗饱和(步骤2.4)和占空比限幅后的 Iind_integral 抗饱和(步骤4.1)极其重要
  4. 限幅:
    • Iref 限幅:保护硬件(开关管、电感等)不过流。Iref_max 设置最大允许平均电流。
    • DutyCmd 限幅:确保PWM占空比在硬件允许范围内(0%~接近100%,避免PWM寄存器设置错误导致全开或全关)。
  5. 数字实现:
    • 示例中是简单的欧拉积分(Integral += Ki * Error)。实际中可能有更复杂的离散化方法(如梯形法)。
    • 状态变量 (Vo_integral, Iind_integral, *_error_prev) 需要保存为全局或静态变量。
  6. 时序:
    • 从ADC采样到更新PWM占空比的整个计算过程必须在下一个PWM周期开始之前完成,否则会引起延迟甚至不稳定。这限制了可用的计算时间(决定了MCU/DSP的最小主频需求)。
  7. 拓扑差异: 基本的控制结构(电压外环+电流内环)适用于Buck, Boost, Buck-Boost等多种DC-DC拓扑。但在细节上有差异:
    • Buck (降压): Iref_min 通常设为零或负一个小值(取决于是否允许负电流工作模式)。DutyCmd 直接控制高边开关(或同步Buck的低边开关时序)。
    • Boost (升压): Iref_min 通常设为零。需要特别注意电流环在Duty > 0.5时的稳定性,有时需要斜率补偿。
    • 反激 (Flyback): 电流环控制的是变压器原边或副边的电流(取决于采样位置)。
    • 三相逆变器/永磁同步电机 (FOC): 原理类似,但有dq坐标系下的电压环和多个(通常是两个)电流环(Id和Iq)。

调试双闭环系统:

  1. 先调内环(电流环):
    • 暂时断开电压环。用固定或缓慢变化的 Iref 测试电流环。
    • 调节 Kp_iKi_i,使电感电流能快速、无超调/小超调地跟踪阶跃变化的 Iref。电流环带宽应远高于电压环预期带宽(5-10倍)。
    • 使用示波器观察阶跃响应:上升时间、超调量、稳定时间、是否有振荡。
  2. 再调外环(电压环):
    • 接上电压环。
    • 在设定值 Vref 或负载电流上加一个小的阶跃变化。
    • 调节 Kp_vKi_v,目标是在保证稳定性(无振荡)的前提下,使输出电压恢复速度快且过冲小。通常电压环比电流环慢得多。
  3. 观测波形: 关键波形包括输出电压、电感电流波形、电压环输出的 Iref、电流环输出的 DutyRaw、最终的 DutyCmd

注意事项:

通过理解上述原理、流程和关键点,你应该能够实现并调试一个基本的电压-电流双闭环控制程序。记住,电流内环的快速响应电压外环的稳定性以及积分抗饱和是成功的关键。

变频器参数的电流速度该如何调节?

切换的变频器控制,在开环设定的电流环速度环比例积分参数几乎能够比较好的满足额定输出频率额定

2024-07-15 21:43:53

三相光伏并网逆变器中闭环的作用?

三相光伏并网逆变器中的双闭环控制系统是一种常见的控制策略,它通常包括电流环

2024-04-25 18:18:10

位置与速度电流的差别是什么?

前几天又人跟我讲在这三个环控制中位置环精度最低,电流环精度最高,我想知道

2023-12-20 07:29:19

什么叫SPWM变频电源的闭环控制?

什么叫SPWM变频电源的双闭环控制? 中港扬盛变频电源电压、电流

资料下载 李维嘉 2022-01-06 13:09:43

闭环直流调速系统中电流的仿真模型

双闭环直流调速系统中电流环的仿真模型(通信电源技术审稿费)-转速

资料下载 佚名 2021-09-28 14:24:16

BUCK系统的控制器设计

MH 灯是一种特殊负载,工程中通常用双环进行控制,内环为电流环,外环为功

资料下载 姚小熊27 2021-06-19 14:42:02

两种控制策略的对比研究资料详细说明

由于单相逆变器开环系统无法保证电压的稳定输出和较高的波形质量,通常会采用双环控制策略来改善系统性能。目前

资料下载 whtianqi 2020-05-06 08:00:00

电压电流闭环传递函数的详细资料说明

本文档的主要内容详细介绍的是电压电流闭环传递函数的详细资料说明。电压外环设计 电压

资料下载 佚名 2019-05-17 16:38:45

基于PID的Buck与Boost闭环仿真

Buck的模型是一个双闭环输出15V的模型,频率60Khz,由给定输出电压目标进行误差计算送入PID的

2023-10-16 14:36:49

运动控制器关于电流、速度、位置的优化

通常情况下,伺服系统由电流环、速度环以及位置环组成,3个

2023-10-08 11:13:11

闭环直流调速系统中转速有哪些作用呢?

双闭环直流调速系统中,转速环有哪些作用,电流

2023-03-22 11:10:48

SPWM变频电源的闭环控制是什么意思

什么叫SPWM变频电源的双闭环控制?中港扬盛变频电源电压、电流

2021-12-28 06:12:10

怎样去计算电流闭环带宽

电流环带宽是什么?怎样去计算电流环的闭环带宽?

2021-10-09 09:25:59

为什么电压叫外环?电流叫内环

电压环是什么?电流环又是什么?为什么

2021-09-29 06:57:38

过渡阶段速度到底是开环还是闭环

这里所说的“开环”指的是“I/f”控制,闭环即“速度-电流双闭环”。很多

2021-08-27 06:40:25
7天热门专题 换一换
相关标签