3. 状态空间方程:连续系统与离散系统、状态方程与观测方程的建立

好,咱们今天聊点硬核的。状态空间方程,说白了就是给电池建一个数学模型。你想想看,电池内部那些化学反应,我们没法直接拿万用表去量。那怎么办?用数学语言描述它。

我个人习惯把这件事分成两步走:先搞清楚系统是连续的还是离散的再分别建立状态方程和观测方程。这两步走对了,后面的卡尔曼滤波才能跑得稳。

3.1 连续系统 vs 离散系统

先问一个问题:电池的SOC是连续变化的吗?

答案是肯定的。你开车的时候,电池电量是平滑下降的,不会跳变。所以从物理本质上看,SOC是一个连续系统

但是,我们的单片机是数字芯片。它只能每隔一段时间采集一次数据,比如每100ms读一次电压、电流。这就意味着,我们实际上是在离散的时间点上处理问题。

所以,我一般这样理解:

  • 连续系统:用微分方程描述,适合理论推导
  • 离散系统:用差分方程描述,适合代码实现

核心要点:卡尔曼滤波本身是离散算法,但电池模型是连续的。我们需要把连续模型离散化,才能塞进单片机里跑。

我在项目中遇到过一个问题:有人直接用连续模型写代码,结果采样周期一变,滤波就发散。嗯,这里要注意——离散化这一步不能省

3.2 状态方程:描述系统内部状态的变化

状态方程,说白了就是回答一个问题:下一时刻的SOC是多少?

对于电池来说,最简单的状态方程就是安时积分法:

SOC(k+1) = SOC(k) - (η * Δt / Q) * I(k) + w(k)

其中:

  • SOC(k):当前时刻的SOC
  • SOC(k+1):下一时刻的SOC
  • η:库仑效率(充电时约1.0,放电时约0.98-0.99)
  • Δt:采样周期(比如0.1秒)
  • Q:电池总容量(单位:Ah)
  • I(k):当前时刻的电流(放电为正)
  • w(k):过程噪声(模型误差、电流测量误差等)

写成矩阵形式更通用:

x(k+1) = A * x(k) + B * u(k) + w(k)

对于单状态SOC模型:

  • x(k) = [SOC(k)]
  • A = [1]
  • B = [-η * Δt / Q]
  • u(k) = [I(k)]

我的经验:刚开始做的时候,我总把A矩阵设成1,觉得没问题。后来发现,如果电池有自放电效应,A应该略小于1。比如锂离子电池自放电率约每月2%,折算到每个采样周期,A ≈ 0.999999。虽然影响很小,但做高精度估算时不能忽略。

3.3 观测方程:建立测量值与状态的关系

状态方程告诉我们SOC怎么变,但我们没法直接测SOC。我们能测的是什么呢?端电压

观测方程就是建立端电压与SOC之间的关系

最简单的模型是开路电压法:

V(k) = OCV(SOC(k)) - R0 * I(k) + v(k)

其中:

  • V(k):端电压测量值
  • OCV(SOC):开路电压与SOC的关系曲线(通常通过实验标定)
  • R0:电池内阻
  • I(k):电流
  • v(k):观测噪声(电压测量误差、模型误差等)

写成矩阵形式:

y(k) = C * x(k) + D * u(k) + v(k)

对于单状态模型:

  • y(k) = [V(k)]
  • C = [∂OCV/∂SOC](在SOC(k)处的斜率)
  • D = [-R0]
  • u(k) = [I(k)]

我曾经踩过的坑:OCV曲线不是线性的!在SOC中间段(20%-80%),曲线比较平缓,C矩阵的值很小。这意味着电压变化一点点,SOC可能变化很大。这时候卡尔曼滤波的增益会变小,收敛变慢。我曾经因为这个原因,在SOC 50%附近滤波半天不收敛,后来加了动态调整Q矩阵才解决。

3.4 完整的状态空间模型

把状态方程和观测方程放在一起,就是完整的电池模型:

状态方程:SOC(k+1) = SOC(k) - (η * Δt / Q) * I(k) + w(k)
观测方程:V(k) = OCV(SOC(k)) - R0 * I(k) + v(k)

这个模型虽然简单,但已经能跑卡尔曼滤波了。我刚开始做项目时就用这个模型,效果还不错。

当然,如果你想要更高精度,可以增加状态变量,比如:

  • 增加极化电压状态(RC网络)
  • 增加容量衰减状态
  • 增加温度影响

但记住一个原则:模型越复杂,计算量越大,调试越难。我建议先从简单模型开始,跑通了再逐步加复杂度。

3.5 知识体系结构图

下面这张图总结了本章的核心逻辑:

状态空间方程知识体系 连续系统 微分方程描述 离散系统 差分方程描述 离散化 状态方程 x(k+1) = A·x(k) + B·u(k) + w 描述SOC随时间的变化 观测方程 y(k) = C·x(k) + D·u(k) + v 描述端电压与SOC的关系 A矩阵:状态转移 B矩阵:输入控制 C矩阵:观测映射 D矩阵:前馈控制 核心:连续模型 → 离散化 → 状态方程 + 观测方程 → 卡尔曼滤波

3.6 小结

这一章我们干了三件事:

  1. 区分了连续系统和离散系统——物理世界是连续的,单片机世界是离散的
  2. 建立了状态方程——用安时积分法描述SOC的变化规律
  3. 建立了观测方程——用OCV曲线和内阻模型描述端电压与SOC的关系

有了这两个方程,卡尔曼滤波的骨架就有了。下一章我们会往这个骨架上填肉——把卡尔曼滤波的五个核心公式套进来。

一句话总结:状态方程是预测,观测方程是修正。两者结合,就是卡尔曼滤波的精髓。

专注资料整理