当前位置: 首页 > news >正文

两轮BMS 电源模式管理 (PMM) 详解

BMS 电源模式管理 (PMM) 详解

基于量产 60V BMS(STM32F0 + SH367306 AFE),拆解 PMM 五大系统模式的定义、切换逻辑与联动关系。


一、五大系统模式

PMM.h:45-52:

┌──────────┐ 上电 ──→│ kIdle │ 空闲模式 └────┬─────┘ │ ┌─────────────┼─────────────┐ │ 充电电流 │ 放电电流 │ 超时/欠压 ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌──────────┐ │ kChg │ │ kDsg │ │ kSleep │ │ 充电模式 │ │ 放电模式 │ │ 休眠模式 │ └─────────┘ └─────────┘ └──────────┘ │ ┌──────────┐ │ kReset │ 复位模式 └──────────┘
模式充电 MOS放电 MOS预充 MOS
kIdle空闲(防打火使能)闭合断开通断时序
kIdle空闲(防打火关闭)闭合闭合断开
kChg充电闭合闭合断开
kDsg放电闭合闭合断开
kSleep休眠断开断开断开
kReset复位断开断开断开

充放电 MOS 是背靠背串联的,正常工作时(充电或放电)两个都闭合。只在保护触发时才单独关断——forbidCharge关充电 MOS,forbidDisCharge关放电 MOS。充电时放电 MOS 闭合可以减少体二极管导通损耗(MOSFET Rds(on) 远小于体二极管 Vf)。


二、模式切换逻辑

核心在kPMMMode_IdleModeM(PMM.c:256-297),只根据电流方向判断

if(SystemCurrent<-500mA)→ kChg// 检测到充电电流if(SystemCurrent ≈0或 防打火中)→ kIdle// 维持空闲if(SystemCurrent>500mA)→ kDsg// 检测到放电电流

各模式内部也有返回空闲或切换到其他模式的逻辑:

kIdle ──→ 充电电流 ──→ kChg kIdle ──→ 放电电流 ──→ kDsg kIdle ──→ 超时+欠压 ─→ kSleep kChg ──→ 电流归零 500ms ─→ kIdle kChg ──→ 放电电流 ──────→ kDsg (拔充电器直接走) kDsg ──→ 电流归零 1s ────→ kIdle kDsg ──→ 充电电流 ──────→ kChg (插充电器直接走)

三、各模式详解

3.1 空闲模式 (kIdle)

系统的"大厅"——不上不下不充不放时都在这里。

内部还有一个四级子状态机管理防打火(PMM.c:33-39):

kIdleInit → kIdleFirePrevent → kIdlePowerOn → 转 kDsg

同时在此模式下判断休眠条件:静置超时、单体欠压、单体超低压。

3.2 充电模式 (kChg)

充电电流触发,充电 MOS 和放电 MOS 均闭合。

进入后做的事:

  • 满充检测:超过 3 分钟重置 Idle 子状态机
  • 禁止充电/放电检查:FDR 故障标志位会强制关断对应 MOS
  • 满充断开:收到BatFullChrgState == kFullChg时断开充电 MOS
  • 退出:电流归零 500ms → kIdle;出现放电电流 → kDsg

3.3 放电模式 (kDsg)

放电电流触发,闭合充放电 MOS。

进入后做的事:

  • 运行限流调节kPMMMode_CurLimitRegulate(占空比增减)
  • 检测充电电流 → 切 kChg
  • 检测电流归零 1s → 切 kIdle
  • 禁止放电标志位强制关断放电 MOS

3.4 休眠模式 (kSleep)

全部 MOS 断开,MCU 低功耗。

四种触发类型(PMM.h:57):

类型触发条件典型场景
1上位机强制命令远程关停
2单体欠压电池快没电,保护性休眠
3单体超低压紧急,电池严重亏电
4静置超时 + SOC<20%用户长时间不用

唤醒方式:休眠前 MCU 将唤醒源配置为 GPIO 边沿中断,然后进入 STOP 模式。唤醒后硬件复位,软件根据中断标志识别唤醒源:

唤醒源硬件说明
通信唤醒(ComWakeup)UART/RS485 RX 引脚边沿中断充电柜或 4G 模组发来数据时触发
充电唤醒(ChgWakeUp)充电器插入检测引脚上升沿充电器插入瞬间电压跳变触发

各休眠类型的唤醒配置(PMM.c:709-743):

类型ComWakeupChgWakeUp说明
1 强制通信或充电都能唤醒
2 欠压通信或充电都能唤醒
3 超低压只能充电唤醒,通信已关闭以省电
4 静置通信或充电都能唤醒

超低压休眠(类型 3)是最极端的情况——电池电压已经低到不足以维持通信模块,所以关闭通信唤醒,只保留充电器插入这一条"救命"路径。

3.5 复位模式 (kReset)

强制全关 + 状态归零。

触发:上位机下发复位命令。所有 MOS 断开,内部计数器清零,回到kIdleInit

3.6 存储模式(kIdle 下的子状态)

存储模式不是独立的 PMM 顶层模式,而是空闲模式下的低活动优化状态。MCU 仍在运行,MOS 同空闲模式,只是降低非必要操作的频率。进入后 4G 模组上报battery_state = 6

进入条件(PMM.c:608-618):空闲模式下满足全部四种条件且持续60 分钟——

if(SystemMode==kIdle&&循环次数>3// 电池已完整充放过至少 3 次&&无系统故障&&有密钥)// 防盗:无密钥不进存储{if(StoreMode_Cnt>=60分钟)BmsStoreMode_flg=1;}

进入后的变化:

模块正常空闲存储模式
DSM 数据存储间隔10 分钟2 小时(减少 Flash 擦写)
4G 上报状态battery_state=4battery_state=6
退出条件有电流 / 出故障 / 密钥被清 → 立即退出

与休眠模式 (kSleep) 的区别:

存储模式休眠模式
MCU正常运行STOP 低功耗
MOS同空闲全部断开
通信保持关闭等唤醒
本质闲着,少干点活彻底关,等唤醒
恢复有电流立退必须唤醒源触发

设计意图:电池长期放在仓库或柜子里不用时,没必要每 10 分钟写 Flash 浪费寿命,把存储间隔拉到 2 小时就够了。用户一取用,立退恢复正常。


四、对外的 SystemStatus

PMM 内部用SystemMode做状态机,对外用SystemStatus上报(PMM.h:19-24):

kPMMIdle=0// 空闲kPMMChging=1// 充电中kPMMDsging=2// 放电中

SystemStatus被 LED 指示灯、4G 模块、Modbus 寄存器使用,告知外部"电池在干什么"。它和内部SystemMode不是一一对应——比如在kIdle里跑防打火子状态机,对外仍报kPMMIdle


五、工厂模式 vs 运营模式

这不是 PMM 的系统模式,而是 EEPROM 中FuncConfig2.FactoryMode的一个配置位,影响多个模块的行为:

标志位= 0= 1
FactoryMode运营模式工厂模式(下线检测)

由上位机在生产线下线时写入,出厂前置 0。三处行为差异:

模块运营模式 (0)工厂模式 (1)
PMM 限流SOP 查表动态限流(35A~1.5C)固定 1.5C,避免检测时触发限流
防盗 AntiLossbBatOperate = 1,防盗使能bBatOperate = 0,防盗禁用
存储模式循环 >3 次后可进入不能进入

本质:生产线上做下线检测时,防盗、限流这些保护逻辑不能干扰测试流程。出厂前把标志位从 1 改成 0,电池才进入正常运营状态。


本文基于量产 BMS 代码分析。

http://www.jsqmd.com/news/1132206/

相关文章:

  • DraftPaper_Loop:基于AI Agent的论文写作工作流,从Idea到草稿的自动化实践
  • 整体难度属于工科天花板
  • AIGEO优化企业那个公司好
  • 固定资产管理不再琐碎:智慧系统如何化繁为简
  • 2026年如何选择大模型:一份基于真实价格的实战指南
  • 双高斯结构 5 种主流变体解析:从 6片4组到非球面,35mm F1.4 设计演进
  • 各位大神帮帮我
  • AI 生成的 HTML 代码如何变成链接?手把手教你 3 种方法
  • PaddleOCR 多语言识别完整使用教程(适配你的 C++/Qt 部署场景)
  • Hermes Agent私有化部署指南:从Docker到技能创建全流程解析
  • 从404链接到开源知识库:Galgame Wiki 如何为小众文化“存档”
  • 2026子平格局分析排盘工具怎么选:看规则线索、复盘记录和AI边界
  • 密码学在区块链技术中的应用研究
  • 毕业生必备7款AI写论文工具,一站式搞定选题初稿与降AIGC
  • Franka机械臂安装实时内核
  • 第20章|登堂入室:通过 Agent SDK 掌控 Claude Code
  • Window11安装Wsl2及Ubuntu22.04
  • pycharm连接GPU服务器跑模型
  • NSK长行程超大导程滚珠丝杠技术解析
  • 校园交通安全升级:通车科技用AI筑起校园“安全防线“
  • Python循环导入实战指南:诊断、修复与架构避坑
  • 陶大程:机器人要的不是高清复刻,世界模型走偏了?
  • STM32 01 LED点灯(第一天学习)
  • 实战手册:用Exiled Exchange 2打造流放之路2高效交易体验
  • 福州高定木作怎么选不踩坑?整木定制品牌实力深度对比
  • 大厂提前批7月陆续启动:软件测试岗的“黄金30天”怎么抢?
  • 【STM32项目】智能快递柜
  • 2026微信小程序搭建平台实测测评,优缺点解析
  • 红外火情时序预判 CNN-LSTM 模型
  • 多模态AI Agent在内容生成领域的研究进展综述