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 知识体系结构图
下面这张图总结了本章的核心逻辑:
3.6 小结
这一章我们干了三件事:
- 区分了连续系统和离散系统——物理世界是连续的,单片机世界是离散的
- 建立了状态方程——用安时积分法描述SOC的变化规律
- 建立了观测方程——用OCV曲线和内阻模型描述端电压与SOC的关系
有了这两个方程,卡尔曼滤波的骨架就有了。下一章我们会往这个骨架上填肉——把卡尔曼滤波的五个核心公式套进来。
一句话总结:状态方程是预测,观测方程是修正。两者结合,就是卡尔曼滤波的精髓。