Skip to content

7.5.3 深入理解状态空间平均法的结果

上一节我们用一套看起来很高级的矩阵操作,直接「砸」出了线性化模型的结果 (7.110)。但如果你回头看一眼那个过程,可能会有点眩晕——我们是怎么从离散的开关动作跳到连续的微分方程的?那个 AB 矩阵的加权平均到底代表了什么物理意义?

这不仅仅是数学游戏。这一节,我们要把这个数学过程和物理波形重新对齐。

你会发现,这套「状态空间平均法」其实和 7.2 节里我们用手算推导平均模型的过程是同一件事——只是这一次,我们用矩阵的语言把它说得更清楚、更通用。

从平均定义开始:把时间轴抹平

就像我们之前处理电感电流和电容电压一样,建模的第一步是承认一个事实:我们只关心低频分量。

对于电感电流或电容电压这些状态变量,我们可以把它们打包成一个向量 x(t)。为了去掉那些让我们心烦的开关纹波,我们对它在一个开关周期 Ts 内进行积分平均:

x(t)Ts=1TstTs/2t+Ts/2x(τ)dτ(7.111)

输入向量 u(t) 和输出向量 y(t) 也照此办理。这个操作的核心目的只有一个:把高频开关动作造成的锯齿波抹平,只留下低频包络

接下来,我们对电感电压方程和电容电流方程(也就是状态方程)两边同时取平均。这就得到了描述低频动态的核心方程:

Kdx(t)Tsdt=[d(t)A1+d(t)A2]x(t)Ts+[d(t)B1+d(t)B2]u(t)Ts(7.112)

如果你觉得眼熟,没错——这其实就是我们在 7.2 节里用「小纹波近似」推导出的 (7.2) 式的矩阵版。只不过那时我们在算 vLiC,现在我们在算整个系统的状态矩阵。

这一步到底做了什么?——把矩阵推导拉回物理世界

让我们停下来,看看 (7.112) 式是怎么从实际电路行为中长出来的。不要被矩阵符号吓跑,它其实只是在描述一个非常直观的过程:分段线性 + 拼接

想象我们在观察状态向量 x(t) 中的一个元素(比如电感电流 iL(t))在一个开关周期内的变化。

第一阶段:开关在位置 1 在这个子区间内,电路拓扑是固定的。根据 (7.104) 式,状态变量变化的斜率由矩阵 A1B1 决定:

dx(t)dt=K1[A1x(t)+B1u(t)]

如果你使用了「小纹波近似」,也就是假设 x(t)u(t) 在一个周期内几乎没变(或者变化非常慢),那么这个斜率在子区间内就是常数。我们可以直接用平均值代替瞬时值:

dx(t)dtK1[A1x(t)Ts+B1u(t)Ts](7.113)

这不仅是数学近似,这是我们在工程上做出的一次豪赌:赌开关频率足够高,高到波形看起来几乎是直的。如果这个假设不成立,后面的推导全是废纸。

在这个恒定斜率的作用下,经过时长 dTs 后,状态向量的值从初始值 x(0) 变成了 x(dTs)

x(dTs)=x(0)初值+(dTs)时间长度K1[A1x(t)Ts+B1u(t)Ts]斜率(7.114)

第二阶段:开关跳到位置 2 同样的逻辑,此时状态方程变成了 (7.105) 式,由 A2B2 接管。斜率也变了:

dx(t)dtK1[A2x(t)Ts+B2u(t)Ts](7.115)

这次区间长度是 dTs。从 x(dTs) 走到这一周期结束时的 x(Ts)

x(Ts)=x(dTs)初值+(dTs)时间长度K1[A2x(t)Ts+B2u(t)Ts]斜率(7.116)

拼接时刻 现在把 (7.114) 代入 (7.116)。你会发现这一长串式子其实只是在说:把两段路程加起来

x(Ts)=x(0)+dTsK1[]+dTsK1[]

把公共项 K1Ts 提出来,整理一下:

x(Ts)=x(0)+TsK1{[d(t)A1+d(t)A2]x(t)Ts+[d(t)B1+d(t)B2]u(t)Ts}(7.118)

到了这一步,离终点只差最后一步数学操作。

从离散跳到连续

我们有一个周期结束时的值 x(Ts) 和初始值 x(0)。对于平均向量 x(t)Ts 来说,它的导数近似等于一个周期内的净变化量除以时间:

dx(t)Tsdtx(Ts)x(0)Ts(7.119)

把刚才算出来的 x(Ts) (也就是 7.118 式) 代进去,减去 x(0),再除以 Ts。你会惊讶地发现,x(0) 抵消了,Ts 也约掉了,剩下的正是我们一开始给出的 (7.112) 式:

Kdx(t)Tsdt=[d(t)A1+d(t)A2]x(t)Ts+[d(t)B1+d(t)B2]u(t)Ts(7.120)

这就是我们一直在寻找的基本平均模型

但这故事还没完。如果你盯着 (7.120) 看几秒钟,你会发现一个麻烦事:它是非线性的

看那个 d(t)A1x(t)Ts 项——控制输入 d(t) 居然和状态变量 x(t)Ts 乘在了一起。这就好比你开车的油门效果不仅取决于你踩多深,还取决于车速有多快——这就是典型的非线性系统。想象那条平均量虚线是如何在两个斜率之间来回切换的,就是这个物理过程。

输出向量的平均

除了状态变量(电感电流、电容电压),我们还得关心输出向量 y(t)(比如输出电压 v(t) 或输入电流 ig(t))。

y(t) 的平均过程稍微有点不同。在 7.104 和 7.105 式中,输出方程是代数方程(没有导数)。这意味着在开关瞬间,输出量可能会发生突变(跳变)。

y(t) 在开关瞬间可能是不连续的(会跳变)。但没关系,平均法依然有效——我们照样在一个周期内积分:

y(t)Ts=d(t)[C1x(t)Ts+E1u(t)Ts]+d(t)[C2x(t)Ts+E2u(t)Ts](7.121)

整理一下矩阵,得到输出方程的平均形式:

y(t)Ts=[d(t)C1+d(t)C2]x(t)Ts+[d(t)E1+d(t)E2]u(t)Ts(7.122)

同样,这也是个非线性方程(d(t) 又乘进去了)。

现在,我们把平均后的状态方程 (7.120) 和输出方程 (7.122) 放在一起,这就是完整的平均模型:

Kdx(t)Tsdt=[d(t)A1+d(t)A2]x(t)Ts+[d(t)B1+d(t)B2]u(t)Tsy(t)Ts=[d(t)C1+d(t)C2]x(t)Ts+[d(t)E1+d(t)E2]u(t)Ts(7.123)

最后一步:扰动与线性化

现在我们手里有一个非线性的平均模型 (7.123)。为了得到传递函数,必须把它拉直成线性的。这就像我们在 7.2 节做的那样:找个直流工作点站住,然后轻轻推一下

第一步:找直流工作点 当输入是直流 (d(t)=D,u(t)=U) 时,系统达到稳态。稳态意味着导数为零。令 (7.123) 式导数为零,解出的稳态值 X,Y 就是准静态工作点:

0=AX+BU(7.124)Y=CX+EU

这里的 A,B,C,E 就是代入直流占空比 DD 后的加权平均矩阵。

第二步:引入扰动 现在,我们在直流工作点上叠加一个小得多的交流扰动:

x(t)Ts=X+x^(t)u(t)Ts=U+u^(t)y(t)Ts=Y+y^(t)d(t)=D+d^(t)d(t)=Dd^(t)(7.125)

这里有个必须遵守的前提:交流量必须远小于直流量。如果 d^(t) 大到让 d(t) 在 0 和 1 之间饱和,或者 x^(t) 大到让电感电流过零,那这个模型就崩了。

Uu^(t),D|d^(t)|,Xx^(t)(7.126)

第三步:代入并展开(重头戏来了) 把 (7.125) 代回平均方程 (7.123)。注意 d(t)d(t) 也进去了,展开时会有一堆项冒出来。让我们只看状态方程的展开过程:

Kd(X+x^(t))dt=[(D+d^)A1+(Dd^)A2](X+x^)+[(D+d^)B1+(Dd^)B2](U+u^)(7.127)

展开左边,dXdt=0(直流不变)。 展开右边,会得到两类东西:

  1. 直流项:不含 ^ 的,比如 (DA1+DA2)X
  2. 一阶交流项:含一个 ^ 的,比如 (DA1+DA2)x^,或者是 (A1A2)Xd^
  3. 二阶非线性项:含两个 ^ 的,比如 (A1A2)x^d^

把 (7.127) 全部展开写出来就是 (7.128) 式。看着吓人,其实就是把上面的三类东西排队:

Kdx^(t)dt=Ax^(t)+Bu^(t)+[(A1A2)X+(B1B2)U]d^(t)一阶交流项:我们要的+(A1A2)x^d^+(B1B2)u^d^二阶非线性项:丢掉+AX+BU直流项:等于0(7.128)

现在,让我们清理现场:

  • 直流项:根据 (7.124),这部分本来就是 0,直接扔掉。
  • 二阶项:比如 x^d^。这是两个微小量相乘,相比于 x^d^ 自身,它小得可以忽略不计(前提是 7.126 成立)。这就是线性化的本质——扔掉高阶小量。

剩下的,就是我们梦寐以求的线性化交流小信号模型

Kdx^(t)dt=Ax^(t)+Bu^(t)+{(A1A2)X+(B1B2)U}d^(t)(7.129)

以及对应的输出方程:

y^(t)=Cx^(t)+Eu^(t)+{(C1C2)X+(E1E2)U}d^(t)

仔细看这个结果。第一项 Ax^+Bu^ 描述了系统在固定拓扑下的自然响应(由 LC 决定);而那个长长的 d^(t) 项,描述了控制输入(占空比)是如何通过改变拓扑结构(A1A2)来微调系统状态的

这个结果,正是上一节末尾我们一笔带过的 (7.109) 式。现在你不仅看到了结果,还看到了它背后的血肉——从分段线性推导,到平均化近似,再到泰勒展开扔掉高阶项的全过程。

💡 矩阵差 (A1A2) 的直觉:线性化结果里那个最唬人的系数 (A1A2)X,其实有个非常直白的物理解释——它衡量的是「两个子拓扑到底差在哪」。如果开关动作只是把一个理想开关短路/开路、对储能元件的连接关系几乎没变(A1A2),那这个系数就接近零,意味着控制对系统几乎没有直接注入,Gvd 会很弱。反过来,拓扑切换越剧烈,控制权越大。所以调试时如果你发现占空比怎么调输出都不动,先去查 A1,A2 是不是写得太像了——很可能你把两个子区间的拓扑列重了。


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

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