第二章 系统架构设计:SCMS整体架构与功能模块划分
好,咱们进入正题。系统架构设计,说白了就是搭骨架。骨架搭歪了,后面填再好的肉也白搭。SCMS(超级电容管理系统)这东西,跟BMS(电池管理系统)看着像,但脾气完全不同。超级电容充放电快、寿命长、低温性能好,但电压窗口窄、能量密度低。所以它的管理系统,设计思路得跟着变。
我个人习惯,做架构设计前先画一张大图。把整个系统拆成几块,每块干什么、怎么通信、怎么协同,心里先有个谱。下面这张图,是我做项目时常用的SCMS功能架构,你可以参考一下。
2.1 前端采集模块:系统的眼睛和耳朵
前端采集,负责把超级电容的电压、电流、温度这些物理量,变成主控能读懂的数字信号。这活儿看着简单,其实坑不少。
我记得有一次做项目,采集回来的电压数据跳得像心电图。查了半天,发现是采样电阻的温漂太大。超级电容充放电时电流大,电阻发热,阻值一变,分压比就跑了。从那以后,我选采样电阻都盯着温漂系数,低于25ppm/°C的才敢用。
核心采集参数:
- 单体电压:精度要求 ±5mV 以内,采样速率 ≥10Hz
- 总电压:精度 ±0.1% FS,隔离采样
- 电流:霍尔传感器或分流器,双向测量(充放电)
- 温度:每4-6个单体布置一个NTC,精度 ±1°C
前端采集的架构,我一般推荐用专用AFE(模拟前端)芯片。像LTC6811、MAX17853这些,一颗能管12个通道,菊花链级联,隔离也方便。你想想看,要是用分立元件搭,光隔离就得费不少功夫。
小技巧:AFE芯片的SPI通信,建议加一级隔离(比如ADuM1401)。我曾经遇到过共模干扰把AFE烧了的情况,加了隔离后,再没出过问题。
2.2 主控单元:系统的大脑
主控单元,说白了就是整个SCMS的决策中心。它负责跑算法、做判断、发指令。选什么MCU,得看你的算法复杂度和接口需求。
我个人习惯,主控MCU至少要有这些资源:
- 双CAN接口(一路对设备,一路对后台)
- SPI接口(接AFE、存储、显示)
- UART接口(调试、GPS、4G模块)
- 足够的Flash和RAM(算法代码+数据缓存)
主控要干的事儿,我列了个清单:
| 功能 | 说明 | 实时性要求 |
|---|---|---|
| 数据采集与处理 | 读取AFE数据,滤波、校准、异常检测 | ≤100ms |
| SOC估算 | 基于电压-容量曲线或库仑计数法 | ≤1s |
| SOH估算 | 基于内阻变化或容量衰减 | ≥10s(慢变参数) |
| 均衡控制 | 判断均衡条件,控制均衡开关 | ≤500ms |
| 故障诊断 | 过压、欠压、过温、过流、通信异常 | ≤200ms |
| 通信管理 | 协议解析、数据打包、心跳维持 | ≤50ms(CAN) |
嗯,这里要注意。SOC估算对超级电容来说,跟电池不太一样。超级电容的电压-容量关系几乎是线性的,所以用开路电压法就能估得挺准。但库仑计数法受电流采样精度影响大,我建议两种方法结合着用。
2.3 均衡管理:让每个电容都"服气"
超级电容串联使用时,每个单体的容量和漏电流不可能完全一致。充放电次数多了,电压就会跑偏。有的电容电压高,有的低。高的那个容易过压,低的那个容量又用不满。均衡管理就是干这个的——把电压拉平。
均衡分两种:
- 被动均衡:通过电阻把高电压单体的能量放掉。简单、便宜,但效率低,还发热。
- 主动均衡:用电感或电容把能量从高电压单体搬到低电压单体。效率高,但电路复杂,成本高。
避坑指南:我曾经在一个项目中用了被动均衡,结果均衡电阻选小了,发热量巨大,把PCB都烤黄了。后来换成主动均衡,虽然成本多了几块钱,但系统稳定多了。超级电容内阻小,均衡电流可以做得比电池大,主动均衡的优势更明显。
均衡策略上,我一般这么定:
- 检测到单体电压差超过50mV,启动均衡
- 均衡电流控制在0.5A~2A(看电容容量和散热条件)
- 电压差小于10mV时,停止均衡
- 温度超过65°C时,强制停止均衡
2.4 通信接口:让数据跑起来
SCMS不是孤岛,它得跟充电机、负载、上位机、云平台打交道。通信接口就是它的嘴巴和耳朵。
常用的通信方式:
| 接口类型 | 速率 | 距离 | 典型用途 |
|---|---|---|---|
| CAN 2.0B | 250kbps~1Mbps | ≤40m | 与充电机、BMS、整车通信 |
| RS485 | 115200bps | ≤1200m | 与上位机、PLC通信 |
| 以太网 | 10/100Mbps | ≤100m | 数据上传、远程监控 |
| 4G/5G | 取决于网络 | 不限 | 云平台、手机APP |
我个人习惯,CAN总线是必须有的。工业现场和车载环境,CAN的可靠性和实时性没得说。RS485作为备用,用于调试和本地监控。以太网和4G看需求,不是所有场景都需要。
经验之谈:CAN总线的终端电阻一定要加,120Ω,位置在总线两端。我见过有人偷懒没加,结果通信时好时坏,查了三天才找到原因。另外,CAN的共模扼流圈也建议加上,能有效抑制共模干扰。
2.5 功能模块划分:把复杂问题拆简单
做系统设计,我习惯把功能拆成独立的模块。每个模块职责清晰,接口明确。这样调试、维护、升级都方便。
SCMS的功能模块,我一般这么分:
- 数据采集模块:负责AFE驱动、数据读取、滤波、校准
- 状态估算模块:负责SOC、SOH、SOE(能量状态)估算
- 均衡管理模块:负责均衡策略、均衡开关控制
- 故障诊断模块:负责异常检测、故障记录、报警输出
- 通信管理模块:负责协议解析、数据打包、心跳、重连
- 存储管理模块:负责参数存储、历史数据记录、日志
- 电源管理模块:负责系统供电、低功耗管理、看门狗
每个模块之间通过消息队列或共享数据结构通信。我建议用状态机来管理每个模块的工作流程,这样逻辑清晰,不容易出bug。
模块化设计的好处:
- 单个模块出问题,不影响其他模块
- 升级某个模块,不用动整个系统
- 团队协作时,每人负责一个模块,效率高
- 代码复用性好,下一个项目可以直接拿来用
好了,系统架构这块儿就聊到这儿。记住一句话:架构设计不是一蹴而就的,它是在不断踩坑、填坑中迭代出来的。你设计的第一个版本可能不完美,没关系,先跑起来,再优化。