Skip to content

7.5.1 网络的状态方程

上一节我们搞出了标准模型,那个模型其实就是一个「通用翻译器」——把任何 PWM 变换器都翻译成电路图。 但这事有一个更底层的玩法,也就是教科书里的「硬核模式」:状态空间平均法

在翻开这本硬核手册之前,我们需要先统一一下语言——这就是状态方程。

写方程的终极规范

我们在第 2 章一开始其实就在干这件事,只是当时没把它写成这么整齐的矩阵形式。对于一个线性网络,它的物理核心是什么?是储能元件。

  • 电感里的电流
  • 电容两端的电压

这些变量描述了系统的「能量状态」。在物理课上你可能背过,要描述一个质点的运动,你需要它的位置和速度——这里也是一样,电感电流和电容电压就是电路世界的「位置和速度」。只要知道了这些状态变量在 t0 时刻的值,再加上系统的输入(比如电压源),原则上你就能推算出未来任何时刻系统的样子。

为了让计算机(或者搞控制的数学家)看着舒服,我们把这一堆微分方程塞进一个矩阵的「标准容器」里:

Kdx(t)dt=Ax(t)+Bu(t)--- (7.91)y(t)=Cx(t)+Eu(t)

这里的每一项都有它的物理含义,我们得把它们对上号:

  • x(t) 是状态向量:这就是你的「记忆黑匣子」,里面装着所有的电感电流 iL 和电容电压 vC。写成列向量就是:

    x(t)=[x1(t)x2(t)]=[v1(t)v2(t)i(t)]--- (7.93)
  • u(t) 是输入向量:这是外部施加的暴力,独立的电压源 vg(t) 或者电流源 iin(t)

  • K 矩阵:这是个物理参数矩阵,通常是诊断的。它里面填的是电容值 C、电感值 L。如果是耦合电感,还要加上互感 M。它的作用是把 dx/dt(电流/电压的导数)转换成物理上的电压/电流(电感电压 Ldi/dt,电容电流 Cdv/dt)。

    Kdx(t)dt=[C1dv1dtC2dv2dtLdidt]=[iC1iC2vL]--- (7.92 近似)
  • A,B 矩阵:这两个矩阵描述了电路内部的连接关系(拓扑结构)。它们告诉我们,电感电压和电容电流是如何由状态变量和输入源线性组合而成的。

  • y(t) 是输出向量:这是你想算出来的任何东西,不一定是物理上的输出端电压,也可以是你关心的任意支路电流(比如输入电流 ig)。

  • C,E 矩阵:这两个矩阵告诉你,那些「被观测」的信号是如何由状态和输入组合而成的。

实战演练:把电路塞进矩阵

光看定义容易晕,我们直接上手撸一个电路。 来看一个示例电路:这玩意儿有两个电容 C1,C2 和一个电感 L,外加一个电流源 iin(t) 和一堆电阻。

第一步:定义变量 我们要选状态变量 x(t)。别忘了,只选独立的储能元件。 这里 C1,C2,L 都是独立的,所以:

x(t)=[v1(t)v2(t)i(t)]

输入向量很简单,就一个电流源:

u(t)=[iin(t)]

输出向量 y(t) 我们可以自己定。假设我们关心输出电压 vout 和电阻 R1 上的电流 iR1,那就把这两个塞进去:

y(t)=[vout(t)iR1(t)]

第二步:构建 K 矩阵 因为没有耦合电感,K 矩阵就是对角阵,直接把 L,C 塼进去:

K=[C1000C2000L]--- (7.94)

第三步:列 KVL/KVL 方程(这是核心) 我们现在要把电感电压 vL 和电容电流 iC1,iC2 表示成 xu 的线性组合。也就是要把方程写成「av1+bv2+ci+diin」这种形式。

  1. 电容 C1 的电流(对节点列 KCL): 电流源进来,分成两路,一路去 R1,一路去电感。

    iC1(t)=C1dv1dt=iin(t)v1(t)R1i(t)--- (7.97)

    看到了吗?右边全是状态变量和输入变量。

  2. 电容 C2 的电流(对节点列 KCL): 电感电流进来,分流到 R2R3

    iC2(t)=C2dv2dt=i(t)v2(t)R2+R3--- (7.98)

    注意这里 R2R3 是串联的,所以用 v2 除以总电阻。这确保了右边只出现 v2 这个状态变量。

  3. 电感 L 的电压(对回路列 KVL):

    vL(t)=Ldidt=v1(t)v2(t)--- (7.99)

第四步:组装矩阵方程 把 (7.97), (7.98), (7.99) 这三个方程拼起来,左边就是 Kdxdt(也就是 [iC1,iC2,vL]T)。

[C1000C2000L][dv1dtdv2dtdidt]=[1R10101R2+R31110]A[v1v2i]+[100]B[iin]--- (7.100)

仔细对照一下:

  • A 矩阵的第一行对应 C1:系数是 1/R1,0,1。完全对得上 (7.97)。
  • A 矩阵的第二行对应 C2:系数是 0,1/(R2+R3),1。完全对得上 (7.98)。
  • A 矩阵的第三行对应 L:系数是 1,1,0。完全对得上 (7.99)。

第五步:搞定输出方程 y 我们定义了 y 包含 voutiR1。我们也得把它们写成 xu 的线性组合。

  1. vout:它是 v2 的分压。

    vout(t)=v2(t)R3R2+R3--- (7.101)

    这意味着 vout 只跟 v2 有关,跟 v1,i 没关系。

  2. iR1:欧姆定律。

    iR1(t)=v1(t)R1--- (7.102)

    只跟 v1 有关。

把它们也写成矩阵形式:

[voutiR1]=[0R3R2+R301R100]C[v1v2i]+[00]E[iin]--- (7.103)

你看,一旦把 A,B,C,D(E),K 这五个矩阵填好,这个电路的动态模型就彻底描述完了。

一个小注记

其实从第 2 章开始,我们一直在列状态方程,只是当时我们只盯着一个电感或一个电容,用标量方程来解。 现在我们只是把那些老朋友塞进了一个向量矩阵的「西装」里。这套西装的好处是:对于那种有 5 个电感、7 个电容的变态电路,矩阵形式能让你不至于疯掉。


7.5.2 基本的状态空间平均模型

好了,热身结束。 上一节我们学会了怎么把一个「线性电路」塞进矩阵里。 但变换器的问题是:它是非线性的。因为它在不停地切换拓扑。 开关在位置 1 时,电路是一套 A1,B1 矩阵;开关在位置 2 时,电路变成另一套 A2,B2 矩阵。

这怎么办? 状态空间平均法 的逻辑是:既然我们在 7.2 节里把波形平均了(忽略了纹波),那我们也应该把方程平均了。

两个世界的切换

假设我们在处理一个工作在 CCM(连续导通模式)下的 PWM 变换器。 在一个周期内,它经历两个子区间:

  1. 子区间 1(导通,占空比 d): 开关动作把电路接成了某种线性网络。此时状态方程是:

    Kdx(t)dt=A1x(t)+B1u(t)--- (7.104)
  2. 子区间 2(关断,占空比 d): 开关动作变了,拓扑变了。此时状态方程是:

    Kdx(t)dt=A2x(t)+B2u(t)--- (7.105)

注意这里的 A1A2 是完全不同的两套连接关系。比如 Buck 变换器,导通时电感接在 Vin,关断时电感接在 地(通过二极管),矩阵里的系数自然不同。

平均的魔法

如果我们假设变换器的自然频率(也就是我们要关心的动态变化速度)远低于开关频率——这正是我们做小信号分析的前提——那么我们可以大胆地做一个操作:对状态方程本身进行加权平均

正如我们在 7.2 节里把 vL(t)iC(t) 在一个周期内平均成 vL=d(on值)+d(off值) 一样,这里的矩阵也可以这么干。

平均后的直流平衡方程是:

0=AX+BU--- (7.106)Y=CX+EU

这里大写的 X,U,Y 代表稳态值(Quiescent values),也就是没有扰动时的直流分量。

而那个被平均出来的矩阵 A,B,C,E 是怎么来的?是两个子拓扑矩阵的「混合体」:

A=dA1+dA2B=dB1+dB2C=dC1+dC2E=dE1+dE2--- (7.107)

这就是状态空间平均法的核心一步。 它把一个时变的、非线性的切换系统,变成了一个(在一定近似下的)线性的、连续的平均模型。

如果你只想算稳态(比如给定输入电压 Vg 和占空比 D,求输出电压 V),你只需要解 (7.106) 这个代数方程组:

X=A1BU--- (7.109)

这其实就是我们在第 2 章里算 V=DVg 的矩阵版通用公式。

扰动:真正的交流模型

但我们的目标是交流小信号模型。我们要引入扰动。 还记得我们在 7.2 节里怎么推导 M(D)v^g+ 的吗?我们把 vg=Vg+v^g 代入,然后展开。 这里完全一样。我们对状态方程里的所有变量都引入交流小扰动:

x(t)=X+x^(t)u(t)=U+u^(t)d(t)=D+d^(t)

把这些代入平均后的方程,利用泰勒展开的一阶近似(忽略 x^d^ 这种二阶小量),你会得到一个不仅含有 x^,u^,还多了一项含有 d^(t) 的方程。

最终得到的小信号交流状态方程长这样:

Kdx^(t)dt=Ax^(t)+Bu^(t)+{(A1A2)X+(B1B2)U}d^(t)--- (7.110)y^(t)=Cx^(t)+Eu^(t)+{(C1C2)X+(E1E2)U}d^(t)

这一大坨东西里,真正值得关注的是那个 d^(t) 前面的系数。 {(A1A2)X+(B1B2)U} 这一项是什么?它就是控制信号对系统的直接注入。 它反映了这么一个物理事实:当你改变占空比 d 时,你不仅改变了电路拓扑的权重(A 的变化),还直接改变了等效电压源的幅度(B 的变化)。

总结一下这条路径

状态空间平均法给了我们一套「全自动」流程:

  1. 写子拓扑方程:分别写出开关在位置 1 和位置 2 时的 A1,B1,A2,B2
  2. 平均:用 dd 把它们加权混合,得到 A,B
  3. 扰动与线性化:把矩阵方程在直流工作点附近展开,丢掉高阶项。

做完这三步,你就得到了 (7.110)。这就包含了你需要的一切信息:输入到输出的传递函数(在 u^ 那一项),以及控制到输出的传递函数(在 d^ 那一项)。

接下来,只要把这个通用的矩阵形式,应用到具体的 Buck、Boost 或者 Buck-Boost 电路上,我们就能推导出那个传说中的「标准模型」了。这就是下一节要干的事——我们会看到那些枯燥的矩阵是如何变回成 e(s)j(s) 这样的受控源的。

💡 什么时候别用状态空间法:状态空间平均法看着很「万能」,但它有个隐形门槛——你得能写出每个子区间干净的线性状态方程 Kx˙=Aix+Biu。一旦电路里出现「开关瞬间状态跳变」(比如带 ESR 的电容、或者电容直接被开关短接),x 在子区间边界上不连续,状态空间的「连续演化」假设就崩了。这时候要么换状态变量(详见 7.5.5 节怎么处理 ESR),要么老老实实回到开关平均法。别迷信矩阵万能,它也有它的适用边界。


参考说明:参考自 geqianQWQ 同学阅读《Fundamentals of Power Electronics》的笔记,仅作理解线索;本文为结合自己理解重新整理的学习笔记,不涉及对原书的复制或翻译。

面向嵌入式学习者的硬件学习笔记