控制理论如何应用于我的真实世界处理器控制的升压转换器?

电器工程 微控制器 控制系统 促进 理论 pid控制器
2022-01-14 06:57:08

我对控制理论的理解有限。我在学校处理极点和零点以及传递函数。我已经为 DC/DC 转换器实现了几个基于微处理器的控制方案。这两件事是如何相互关联的,我还没有弄清楚,我想知道。基于反复试验的设计是可行的,但我更愿意更深入地了解我在做什么以及后果是什么。

答案应该集中在如何分析系统上,而不是如何改进它。也就是说,如果您有改进系统的建议,并希望给出分析原因,那就太好了!只要改进次要于分析。

出于此问题的目的,我的示例系统: 在此处输入图像描述

  • C1:1000uF
  • C2:500uF
  • L1:500 uH
  • 开关频率:4 kHz
  • R1:变量
  • 输入电压:400伏
  • 输出电压目标:500伏
  • 输出电流限制:20 安培

我正在尝试调节输出电压,但不超过输出电流限制。我有电压和电流感测,它们经过不同的放大阶段,我现在不分析,但确实包括一些滤波。随后是直接在 A/D 转换器上的 100 ohms 和 1000 pF 的 RC 低通滤波器。A/D 采样频率为 12 kHz。该值通过最后 64 个样本的单极点 IIR移动平均滤波器。

之后,我有两个 PI 循环。首先,电压回路。下面是伪代码,其值缩放为伏特、毫安和纳秒。假设边界检查在其他地方正确实施。如果没有积分项,这些循环的结构根据最大允许下降来定义 P,然后定义积分项,以便最大输出积分器可以精确地补偿该下降。INTEGRAL_SPEED 常数决定了积分器加速的速度。(在我看来,无论我如何设置常数,这似乎是确保 P 和我的收益始终保持适当平衡的合理方法,但我愿意接受其他建议。)

#DEFINE VOLTAGE_DROOP 25
#DEFINE VOLTAGE_SETPOINT 500
#DEFINE MAX_CURRENT_SETPOINT 20000

voltage_error = VOLTAGE_SETPOINT - VOLTAGE_FEEDBACK
current_setpoint = MAX_CURRENT_SETPOINT * voltage_error/VOLTAGE_DROOP

#define VOLTAGE_INTEGRAL_SPEED 4
voltage_integral += voltage_error/VOLTAGE_INTEGRAL_SPEED
//insert bounds check here
current_setpoint += VOLTAGE_DROOP * voltage_integral/MAX_VOLTAGE_INTEGRAL

#DEFINE CURRENT_DROOP 1000
#DEFINE MAX_ON_TIME 50000

current_error = current_setpoint - current_feedback
pwm_on_time = MAX_ON_TIME * current_error/CURRENT_DROOP

#define CURRENT_INTEGRAL_SPEED 4
current_integral += current_error/CURRENT_INTEGRAL_SPEED
//insert bounds check here
pwm_on_time += CURRENT_DROOP * current_integral/MAX_CURRENT_INTEGRAL

所以我有一个升压转换器,带有两个电容器、一个扼流圈、一个可变负载(可能是阶跃函数)、带有单极 RC 滤波器的反馈、一个 A/D 转换器、单极 IIR 数字滤波器和两个 PI 环路互相喂食。如何从控制理论的角度(极点、零点、传递函数等)分析这样的事情,特别是如何正确选择我的控制回路参数?

3个回答

基本控制研究中涵盖的大部分内容是线性时不变系统。如果幸运的话,最后可能还会得到离散采样和 z 变换。当然,开关模式电源 (SMPS) 是在时间上不连续地通过拓扑状态演化的系统,并且大多具有非线性响应。因此,标准或基本线性控制理论不能很好地分析 SMPS。

不知何故,为了继续使用所有熟悉且易于理解的控制理论工具;像波特图、尼科尔斯图等,必须对时间不变性和非线性做一些事情。看看 SMPS 状态如何随时间演变。以下是 Boost SMPS 的拓扑状态:

在此处输入图像描述

这些单独的拓扑中的每一个都易于作为时不变系统单独分析。但是,单独进行的每个分析都没有多大用处。该怎么办?

当拓扑状态从一个突然切换到下一个时,有一些量或变量在切换边界上是连续的。这些通常称为状态变量。最常见的例子是电感电流和电容电压。为什么不根据每个拓扑状态的状态变量编写方程,并通过组合为加权和来取某种状态方程的平均值以获得时不变模型?这并不完全是一个新想法。

状态空间平均——从外到内的状态平均

70 年代,加州理工学院的 Middlebrook 1发表了关于 SMPS 的状态空间平均的开创性论文。该论文详细介绍了组合和平均拓扑状态以模拟低频响应。Middlebrook 的模型对一段时间内的状态进行平均,对于固定频率 PWM 控制,归结为占空比 (DC) 加权。让我们从基础开始,以在连续导通模式 (CCM) 下工作的升压电路为例。有源开关的开启状态占空比将输出电压与输入电压关联为:

\$V_o\$ = \$\frac{V_{\text{in}}}{1-\text{DC}}\$

两种状态中的每一种及其平均组合的方程为:

\$\begin {array} {cccc} &\text {Active State} &\text {Passive State} &\text {Ave State} \\ \text {State Var $\backslash $ Weight} &\text {DC} &\text {(1 - DC)} & \\ \frac {\text {di} _L} {\text {dt}} &\frac {V_ {\text {in}}} {L} &\frac { -V_C + V_ {\text {in}}} {L} &\frac {(-1 + \text {DC}) V_C + V_ {\text {in}}} {L} \\ \frac {\text {dV} _C} {\text {dt}} & - \frac {V_C} {CR} &\frac {i_L} {C} - \frac {V_C} {CR} &\frac {(R - \text { DC} R) i_L - V_C} {CR} \end {array}\$

好的,这需要对状态进行平均,从而产生一个时间不变的模型。现在,对于一个有用的线性化 (ac) 模型,需要将扰动项添加到控制参数 DC 和每个状态变量中。这将导致稳态项与旋转项相加。

\$\text{DC}\rightarrow \text{DC}_o + d_{\text{ac}}\$
\$i_L\rightarrow I_{\text{Lo}} + i_L\$
\$V_c\rightarrow V_{ \text{co}} + v_c\$
\$V_{\text{in}}\rightarrow V_{\text{ino}} + v_{\text{in}}\$

将这些代入平均方程。由于这是一个线性交流模型,您只需要一阶变量乘积,因此丢弃两个稳态项或两个旋转项的任何乘积。

\$\frac{d v_c}{\text{dt}}\$ = \$\frac{\left(1-\text{DC}_o\right) i_L-I_{\text{Lo}} d_{\文本{ac}}}{C} -\frac{v_c}{CR}\$
\$\frac{d i_L}{\text{dt}}\$ = \$\frac{d_{\text{ac} } V_{\text{co}}+v_c \left(\text{DC}_o-1\right)+v_{\text{in}}}{L}\$

这只是关于工作点的常见线性变化。此外,由于我们正在寻找 AC 解决方案,\$\frac{d}{\text{dt}}\$ 总是可以替换为 s(或 \$\text{j$\omega $}\$)。求解得到与 \$d_{\text{ac}}\$ 相关的输出电压 \$v_c\$ 产生:

\$\frac{v_c}{d_{\text{ac}}}\$ = \$\frac{-V_{\text{co}} \text{DC}_o+V_{\text{co}}- L I_{\text{Lo}} s}{CL s^2+\text{DC}_o^2-2 \text{DC}_o+\frac{L s}{R}+1}\$

从这个传递函数可以看到右半平面零的位置 \$f_{\text{rhpz}}\$ 和复极对位置 \$f_{\text{cp}}\$ 。

\$f_ {\text {rhpz}}\$ = \$\frac{V_{\text{co}} \left(1-\text{DC}_o\right){}^2}{2 \pi L i_o}\$

\$f_{\text{cp}}\$ = \$\frac{1-\text{DC}_o}{2 \pi \sqrt{LC}}\$

对于L1=500uH,C2=500uF,Vin=400V,Vo=500V,R1=25欧姆的电路值;\$f_ {\text {rhpz}}\$ 为 5093 Hz,\$f_{\text{cp}}\$ 为 255 Hz。

在此处输入图像描述

增益和相位图显示复极点和右半平面零。由于没有包括 L1 和 C2 的 ESR,所以极点的 Q 值如此之高。现在要添加额外的模型元素需要返回并将它们添加到起始微分方程中。

我可以在这里停下来。如果我这样做了,你就会拥有一位尖端技术专家的知识……从 1973 年开始。越南战争将会结束,你可以停止为你得到的那个荒谬的选择性服务乐透号码而汗流浃背。另一方面,闪亮的尼龙衬衫和迪斯科会很热。最好继续前进。


PWM 平均开关模型——由内而外的状态平均

在 80 年代后期,Vorperian(Middlebrook 的前学生)对州平均有着深刻的见解。他意识到,在一个周期内真正发生变化的是开关条件。事实证明,对开关进行平均比对电路状态进行平均时,对转换器动态建模更加灵活和简单。

在 Vorperian 2之后,我们为 CCM 升压建立了一个平均 PWM 开关模型。从规范开关对(有源和无源开关一起)的角度出发,其输入-输出节点分别用于有源开关 (a)、无源开关 (p) 和两者的共同点 (c)。如果您回头参考状态空间模型中升压调节器的 3 个状态图,您会看到在开关周围画了一个框,表示 PWM 平均模型的连接。

您将需要与输入和输出电压 \$V_{\text{ap}}\$ 和 \$V_{\text{cp}}\$ 以及输入和输出电流 \$i_a\$ 和 \$ 相关的方程式i_c\$ 以一种平均的方式。通过检查和了解这些简单的电压和电流的样子,可以得到:

\$V_{\text{ap}}\$ = \$\frac{V_{\text{cp}}}{\text{DC}}\$

\$i_a\$ = 直流 \$i_c\$

然后添加扰动

\$\text{DC}\rightarrow \text{DC}_o + d_{\text{ac}}\$
\$i_a\rightarrow I_a + i_a\$
\$i_c\rightarrow I_c + i_c\$
\$V_{ \text{ap}}\rightarrow V_{\text{ap}} + v_{\text{ap}}\$
\$V_{\text{cp}}\rightarrow V_{\text{cp}} + v_{ \文本{cp}}\$

所以,

\$v_{\text{ap}}\$ = \$\frac{v_{\text{cp}}}{\text{DC}_o}\$ - \$\frac{d_{\text{ac} } V_{\text{ap}}}{\text{DC}_o}\$

和,

\$ i_a\$ = \$i_c \text{DC}_o + i_c d_{\text{ac}}\$

这些等式可以转化为适用于 SPICE 的等效电路。稳态直流与小信号交流电压或电流相结合的术语在功能上等同于理想变压器。其他项可以建模为按比例缩放的依赖源。这是一个带有平均 PWM 开关的升压调节器的 AC 模型:

在此处输入图像描述

PWM 开关模型的波特图看起来与状态空间模型非常相似,但并不完全相同。差异是由于增加了 L1 (0.01Ohms) 和 C2 (0.13Ohms) 的 ESR。这意味着 L1 的损耗约为 10W,输出纹波约为 5Vpp。因此,复极对的 Q 较低,rhpz 很难看到,因为它的相位响应被 C2 的 ESR 零覆盖。

在此处输入图像描述

PWM 开关模型是非常强大的直观概念:

  • 由 Vorperian 派生的 PWM 开关是规范的。这意味着此处显示的模型可以与升压、降压或升压-降压拓扑一起使用,只要它们是 CCM。您只需更改连接以匹配 p 与被动开关、a 与主动开关以及 c 与两者之间的连接匹配。如果你想要 DCM,你将需要一个不同的模型……而且它比 CCM 模型更复杂……你不能拥有一切。

  • 如果您需要在电路中添加诸如 ESR 之类的东西,则无需返回输入方程并重新开始。

  • 它很容易与 SPICE 一起使用。

  • PWM开关模型被广泛覆盖。Everett Rogers (SLVA061) 在“了解开关模式电源中的升压功率级”中有一篇可访问的文章。

限制?这里的模型不包含任何谐振或开关频率效应(如奈奎斯特采样),因此至少比具有环路带宽的 \$f_s\$ 低十倍。一个基本假设是,像 L1/R1 和 R1C2 这样的时间常数比切换周期 \$T_s\$ 大得多(如果其中任何一个都小于大约 10 倍 \$T_s\$,那么是时候开始担心准确性了)。

现在你进入了 1990 年代。手机重量不到一磅,每张桌子上都有一台 PC,SPICE 无处不在,以至于它是一个动词,而计算机病毒是一个东西。未来从这里开始。


1 GW Wester 和 RD Middlebrook,“开关直流 - 直流转换器的低频特性”,IEEE Transactions an Aerospace and Electronic Systems,Vol。AES - 9,第 376 - 385 页,1973 年 5 月。

2 V. Vorperian,“使用 PWM 开关模型对 PWM 转换器的简化分析:第一部分和第二部分”,IEEE Transactions on Aerospace and Electronic Systems,Vol。AES - 26,第 490 - 505 页,1990 年 5 月。

控制理论的粗略简化:

基本上,您需要从模型开始。对您正在分析的物理转换器进行建模相当容易。有一些数学模型可以高精度地复制升压转换器的电气行为。

棘手的是对控制系统进行建模。想到的一个工具是PSIM,它允许您将许多数字参数建模为离散块(量化、A/D 转换、IIR 滤波器、延迟等) - 这为您提供了一个简单的沙盒,可以在没有硬件风险的情况下使用.

下一步是分析从控制到输出的“工厂”,以了解您究竟想要补偿什么。这通常是通过设置直流工作点(无反馈)、在一定频率范围内注入扰动并测量响应来开环完成的。

一旦获得开环响应,您就可以设计一个补偿器,以确保足够的工作裕度以实现稳定性(在增益过零处有足够的相位裕度,在 180 度相位处有足够的衰减)。然后,您在模拟中以块(或伪代码)形式实现您的控制器,并测试闭环响应。

使用模拟工具会很有用,但电路的基本原理是每秒传输 4,000 次能量,而负载的功率是能量传输乘以每秒能量传输的次数。

所以如果负载功率为4kW,则每个周期需要传递1焦耳的能量。这会导致您需要向 500uH 电感器注入多少电流。储存的能量是 \$\frac{LI^2}{2}\$ 等于 1 因此 I = \$\sqrt{\frac{2}{500 \times 10^{-6}}}\$ = 63A .

当 IGBT 开路时,该能量通过二极管 S1 释放到负载电路中。

因为对于电感器 \$ E = L \frac{di}{dt}\$ 我们可以计算出 IGBT 需要“开启”多长时间 - 这是 dt,当然我们知道 di = 63A。我们也知道 E (400V) 和 L。

计算结果为 dt = \$\frac{500 \times 10^{-6}\times 63}{400}=79\mu s\$

如果负载电阻较小,则需要传输更多功率,并且流入电感器的峰值电流会更高,这当然意味着 IGBT 保持开启的时间更长。

dt 是您对电路的输入,它可以高达近 250\$\mu s\$ (4kHz) 但对于上面的示例(半功率负载),79\$\mu s\$ 似乎可以完成这项工作. 唯一要计算的另一件事是您将看到多少纹波电压,为此您必须将 Q=CV 应用于电容器,特别是 \$\frac{dq}{dt} = C \frac{dv} {dt}\$。

\$\frac{dq}{dt} = \$ 电流和 \$\frac{dv}{dt} = \$ 电压纹波,但我现在失去了生活的意愿,所以也许你可以解决这个问题。