调到级联H桥储能变流器项目上的人,迟早都会撞上同一样东西:屏幕上几十条SOC曲线像炸开的梳子,A相第3簇还顶着72%在放电,B相最差的那簇已经报到58%。你要是不管,顶多几分钟,最弱的那一簇就会先触底,整机直接保护性停机,其余电池的容量全部作废。这个“储能电池SOC不一致”的问题,在我们工程师自己的问题清单里就是1号问题,不解决它,级联H桥这套拓扑的中高压直挂优势根本发挥不出来。
我之前在调试一台10kV/2MW级联H桥储能样机的时候,把SOC均衡分成“相内”和“相间”两层来做,并且故意把两个控制环的投入和刷新时序错开——相内控制按0.3s周期刷新,相间控制按0.7s周期刷新。这套策略收敛效果很干净,没有出现两个均衡环互相拉扯的振荡。下面把这套方案的原理、控制参数、整定步骤和调试里踩过的坑完整写出来,给做同类PCS、储能变流器的同行一个参考。
1. 级联H桥SOC不一致为什么是“1号问题”:拓扑根源与连锁反应
1.1 拓扑决定命运:N条独立的“背包带”
先把这个拓扑的基本盘说清楚。级联H桥储能变流器,每一相由N个H桥功率模块串联而成,每个H桥的直流侧各自接一组独立的电池簇,三相再按星形或者三角形连接后直接挂到中高压电网上。这样做最大的好处就是省掉了工频变压器,功率模块耐压等级不用做得很高,却能通过串联叠加输出10kV、35kV甚至更高电压。
但代价也很直接:每个H桥模块的直流母线是完全电气隔离的,没有公共直流母线可以互相吞吐能量。你可以把它理解成一支登山队,每个人各背一袋干粮,路线一样、步伐一样,但每个人消耗速度不一样,走到后半程必然有人饿肚子、有人还有余粮。电池簇之间的SOC差异就是这么来的,而且是天然存在的,不是靠好一点的电池就能抹平的。
两电平变流器不存在这个问题,因为它所有电池都并联在同一条直流母线上,谁高谁低通过母线自然就拉平了。级联H桥把这条母线拆成了N段,等于把“统筹全局”的可能性从物理层面切断了,只能在控制层想办法。
1.2 SOC不一致的连锁反应,比你想的严重
SOC不一致最直观的后果是可用容量缩水。放电的时候,系统不是等所有模块都放到下限才停机,而是任何一个模块先触底下限,整机立刻保护。这就是典型的“木桶效应”——最短的那块板决定了整个桶能装多少水。
举个例子,一套10kV/2MW的系统,如果相内最大SOC偏差到15%,放电时最弱模块先到10%保护,其余模块可能还剩下25%以上的电量,这些容量全部被锁死,系统实际可用能量直接打七折。充电方向也一样,只是换成了最高SOC模块先到上限。
更深一层的问题是安全风险。SOC偏高的模块,开路电压也偏高,反映在直流侧就是电容电压偏高。级联H桥里各模块输出电压串联叠加,某个模块直流电压过高,意味着它的调制比余量变小,容易出现过调制,甚至触发直流过压保护。我做故障记录分析的时候发现,级联系统里模块IGBT损坏、直流电容鼓包,有不少都发生在SOC极端不一致的工况下。
所以业内做故障分级的时候,SOC不一致被标成1号问题一点不夸张。它直接影响系统能不能继续运行,而不是简单的“效率低一点”而已。这也是为什么所有级联储能PCS的控制策略里,SOC均衡环的地位跟电流内环、电压外环平起平坐。
2. 双层SOC均衡的整体设计思路:相内和相间,各管各的维度
2.1 相内不均与相间不均,控制维度根本不是一回事
很多刚接触这拓扑的人会把SOC均衡想成一件事,以为做个总环往下分配就行。实际拆开看,“相内”和“相间”是两个完全不同的控制维度。
| 对比项 | 相内SOC均衡 | 相间SOC均衡 |
|---|---|---|
| 控制对象 | 同一相串联的N个模块之间 | A/B/C三相整体之间 |
| 物理本质 | 各模块共享同一个交流电流,靠调节模块输出电压来改变各自有功功率分配 | 通过零序电压改变三相电压矢量与电流矢量的夹角,实现三相有功功率转移 |
| 核心执行量 | 各模块调制波幅值微调量Δm_i | 注入零序电压的幅值V0和相位φ0 |
| 带宽需求 | 较高,模块直流电压安全受直接影响 | 较低,动态过猛会影响并网电能质量 |
| 硬件依赖 | 无额外要求 | 需要零序通路(隔离变中性点或独立中性点引出) |
相内均衡的关键在于:同一相里N个模块串联,流过它们的电流是同一个,你没法单独改变某一个模块的电流,只能通过调节该模块输出电压的基波分量,来改变它分到的有功功率。说白了就是把“谁多出力、谁少出力”在模块之间重新分配。
相间均衡就不一样了。三相的电压电流都是独立的,控制动作是给中性点注入一个零序电压分量。这个零序电压在三相三线制下不产生零序电流,但它会改变每一相电压矢量和电流矢量的相对位置,从而重新分配三相的有功功率。这个维度上的动作,不会直接影响单模块的直流电压安全,主要影响并网电流质量,所以带宽可以放慢。
2.2 0.3s和0.7s的时标设计,三层依据
标题里“0.3s投入相内控制,0.7s投入相间控制”这两个时间点,我在工程上倾向于按“控制环刷新周期+分时投入时刻”双重理解来落地。也就是说,相内均衡环每0.3s计算一次并更新输出,相间均衡环每0.7s计算一次并更新输出,两个环一个快一个慢,天然错峰。
这样设计有三层依据。
第一层,是控制优先级。相内SOC差异直接威胁到各模块直流电压的安全边界,属于“保命”级别的控制,必须响应更快。相间SOC差异更多影响三相能量分配和电网电流对称性,属于“优化”级别,慢半拍没问题。
第二层,是解耦。如果两个均衡环都用同一个高频周期刷新,相内环在做零均值化处理的时候,会轻微扰动整相的有功功率输出,正好撞上相间环的计算窗口,两个环路就会互相拖拽,表现为SOC曲线来回抖动、收敛极慢。把时间错开后,相内环的动作在相间环眼里相当于被低通滤掉了,互不干扰。
第三层,是与SOC动态特性匹配。电池SOC的变化率很慢,0.5C充放时的最大变化率也就每分钟0.8%左右,秒级的控制刷新完全够用。0.3s和0.7s加起来正好是1s,可以在一个基本控制周期内完成两类均衡的调度,数字控制器的定时器也容易实现。
实际样机调试时,我是先做相内,再做相间,确认相内环稳定运行后再开启相间环。两个环都运行之后,整体SOC离散度从起初的14%左右,在15分钟内收敛到3%以内,效果非常明显。
3. 相内SOC均衡控制:公式、参数与实操避坑
3.1 控制器结构与零均值化处理
相内SOC均衡的输入是滤波后的各模块SOC,输出是调制波微调量。控制目标是把每一个模块的SOC往相内平均值上拉,SOC高的模块在放电工况多出力、在充电工况少吸功率,SOC低的模块反过来。
误差定义写出来就是:
e_i = SOC_avg_phase - SOC_i
SOC_avg_phase是当前相N个模块SOC的平均值,SOC_i是第i个模块的值。当SOC_i低于平均值时,e_i为正,控制器会让模块i在放电时少输出,在充电时多吸收,从而拉高它的SOC,方向是对的。
修正量用PI控制器生成:
Δm_i = k_p × e_i + k_i × ∫e_i dt
这里的Δm_i是调制波的相对调节系数。工程上我一般限制在±5%以内,超过这个范围,模块输出电压的谐波会明显增大,并网电流THD容易超标。
相内所有模块的Δm_i不能直接丢到各自的调制波上,因为N个Δm_i的算术平均如果不为零,等于给整相电压叠了一个额外的同相分量,整相的有功功率就会无谓偏移。必须做零均值化处理:
Δm_i' = Δm_i - (1/N) × ΣΔm_i
最终第i个模块的调制波为:
m_i = m_base × (1 + Δm_i')
m_base是原来电流环输出的基础调制波。这样修正之后,ΣΔm_i'恒等于零,整相总输出电压与指令一致,各模块之间的有功功率分配却悄悄发生了变化。
3.2 相内环的工程参数与三个坑
我在这台10kV/2MW样机上用的参数,相内环的SOC滤波时间常数是5s,控制周期0.3s,比例系数k_p=0.008,积分系数k_i=0.0005,限幅±5%。k_p=0.008的意思是,1%的SOC偏差对应0.8%的调制波调节量。按这个参数,SOC偏差5%时调节量约4%,基本到了限幅边缘,收敛速度大概5到10分钟一个台阶。
第一次做相内均衡的时候,我踩了三个坑,写在这里。
第一个坑是SOC信号直接进控制器。电池SOC本身就有估算误差,加上并网功率二倍频脉动会反映到直流电流上,SOC原始信号毛刺很大,直接进PI环,调制波会跟着抖,并网电流里出现明显的间谐波。后来在SOC采样后加了一阶低通滤波器,时间常数5s,问题立刻缓解。
第二个坑是充放电方向的符号处理。充电工况下,高SOC模块应该少吸收功率而不是多吸收,如果你直接把误差定义和PI输出符号按放电工况设定,充电时均衡方向会完全反过来。我在程序里加了一个工况标志位,检测到整相有功功率方向变化时,把PI输出的符号取反,才把这个问题解决。
第三个坑是抗积分饱和。当SOC偏差特别大时,PI积分项容易冲顶,偏差回落之后控制器还在满输出,导致过调。我给积分项单独加了限幅,并且只在输出没到限幅时才允许积分累加,也就是标准的条件积分法。
下面是一段简化的相内均衡控制伪代码,方便参考:
# 相内SOC均衡示例,每0.3s执行一次 soc_avg = mean(soc_filt) # 本相N个模块滤波后的SOC均值 for i in range(N): err = soc_avg - soc_filt[i] # 误差,高模块为负 dm_raw = kp * err + ki * integ[i] dm_raw = clamp(dm_raw, -0.05, 0.05) # 限幅±5% if not saturated(dm_raw): integ[i] += err * 0.3 # 条件积分,0.3s刷新周期 dm[i] = dm_raw dm_avg = mean(dm) # 零均值化 for i in range(N): m_out[i] = m_base * (1 + dm[i] - dm_avg)4. 相间SOC均衡与零序电压注入的配合
4.1 零序电压是怎么“搬运”三相有功的
相间SOC均衡的物理机制,靠的是零序电压注入。三相三线制系统里,中性点电压可以相对电网中性点偏移,这个偏移电压就是零序电压。它不会产生零序电流,但会改变每一相电压矢量和电流矢量之间的夹角,从而改变该相的有功功率。
关键的一点是:零序电压注入造成的三相附加有功功率相加正好为零,也就是说,某相多出来的有功功率,一定来自另外两相的有功转移。这是零序注入能用于相间SOC均衡的根本原因。
实现上,先把三相各模块SOC分别求出本相平均值,得到SOC_a、SOC_b、SOC_c,再算总平均SOC_avg_all。三相平均SOC与总平均SOC的偏差,经过一个慢速PI控制器,输出零序电压的幅值和相位指令。这个环路每0.7s刷新一次,比相内环慢一倍,目的就是让它不干扰相内环的动作。
4.2 零序电压的限幅与过调制保护
零序电压注入不是想加多少就加多少。V0幅值过大的直接后果是某相电压矢量被顶到调制比上限之外,出现过调制,电流波形瞬间恶化。我实测下来,V0限制在相电压额定值的3%到5%是安全区间,超过5%就要仔细检查调制比。
控制器设计上,我用的是d-q坐标系下的零序分量合成。先把三相SOC偏差做坐标变换,得到d轴和q轴偏差量,分别经过PI控制器,合成零序电压指令的幅值和相位。这样做的好处是可以与已有的d-q电流环共用一套坐标变换逻辑,代码复用方便。
限幅逻辑要同时照顾幅值和变化率。幅值限在5%,变化率限在每秒2%。这样即使相间SOC偏差很大,V0也是缓慢爬上去的,不会给并网电流造成冲击。
参数上,相间环k_p=0.005,k_i=0.0002,采样周期0.7s。相当于1%的三相平均SOC偏差,对应0.5%的零序电压标幺值。这台样机上,三相SOC最大偏差从8%收敛到1%以内,大约需要10分钟。
另外要注意硬件层面:零序电压注入需要一个零序通路。如果系统用了隔离变压器,直接从中性点引出即可;如果是无变压器直挂方案,变流器中性点与电网中性点之间要有通路,通常是通过一个接地电抗器或第三绕组实现。没有这个通路,相间均衡就是空中楼阁。
4.3 两层环路的投入顺序与实测观察
整个启动时序我是这么安排的:并网成功后前0.3s,只让电流内环和功率环先站稳;第0.3s开始,相内SOC均衡环投入运行;第0.7s开始,相间SOC均衡环投入运行。每个环投入的瞬间,输出从零开始斜坡递增到目标值,斜坡时间设成2s,避免切换冲击。
有个细节值得说一下:相内环投入后,各模块SOC会先向本相平均值收拢;但这时的三相平均值可能仍然是分叉的,A相平均58%,B相平均62%这种。等0.7s相间环一投入,三条平均SOC曲线才开始互相靠拢。两个阶段的收敛特征非常清晰,一个管“内部分化”,一个管“整体偏移”,各司其职。
实测波形上,相内环投入后,同一相内模块SOC的离散度开始收窄,但三相平均值基本不动;相间环投入后,三条平均曲线以很慢的速度汇合,过程中没有出现调制波突变或者电流波形毛刺。
5. 常见问题与排查技巧实录
5.1 SOC估算不准,均衡环做得再精细也是白搭
再好的均衡控制,输入SOC不准就全部失效。SOC估算的误差来源有几个:电流传感器零点漂移会导致库仑积分累积误差;温度变化影响电池可用容量,但SOC算法不一定补偿;二倍频功率脉动会让直流电流采样带上交流分量,直接积分会把脉动算成有效容量变化。
解决办法:一是电流采样做零点校准和低通滤波;二是SOC滤波时间常数设到5s以上,把二倍频脉动滤掉;三是条件允许的情况下定期做OCV校准,至少每天一次;四是用带温度修正的在线估算算法,不要裸用电流积分。
我遇到过一种很隐蔽的情况:某个模块的SOC显示比实际低3%,均衡环判断它“饿”,给它分配了更多的充电功率,结果真正充进去的不多,反而因为这个模块的电压偏高,拉低了整体充电电流。查了很久,最后发现是采样板基准电压漂移导致电流测量偏大,换了基准芯片后SOC显示恢复正常。
5.2 均衡环投入后并网电流谐波变大
这个现象多半不是均衡算法本身的问题,而是执行环节太粗暴。典型原因有三个:Δm_i限幅太宽,导致个别模块过调制;SOC信号没滤波,调制波高频抖动;相内零均值化没做或者做错了,整相电压被叠了一个错误分量。
排查顺序我一般是这样:先看SOC滤波后的波形,毛刺大不大;再看各模块Δm_i是否都在限幅以内;然后看零均值化之后的整相调制波与m_base偏差大不大。最后还有一个容易漏的,就是相间V0注入是否把某相电压矢量顶到调制极限附近。定位到具体环节之后再对症处理,千万别一上来就收窄限幅,那样SOC收敛速度会变得很慢。
5.3 参数整定顺序与调试速查表
参数整定我强烈建议按“先相内、后相间、先比例、后积分、限幅从小到大”这个顺序来。
接好线、并上网之后,先把相内环和相间环全部放在手动关闭状态,把基础功率环调稳。然后只开相内环,k_p从0.002开始往上加,观察SOC离散度是否单调收窄;如果出现振荡就减半。稳定后加上k_i,k_i先从k_p的十分之一开始。相内环确认没问题,再开相间环,同样顺序来。
我把调试中常见的参数现象整理成一张速查表:
| 现象 | 可能原因 | 处置方法 |
|---|---|---|
| SOC收敛太慢,几分钟没变化 | k_p太小或SOC滤波时间常数过大 | k_p提升50%,滤波常数减半试试 |
| 调制波周期性抖动 | SOC信号毛刺大 | 加大滤波时间常数,检查采样屏蔽 |
| 模块间SOC先收敛后发散 | 积分项过冲 | 检查积分限幅,改用条件积分 |
| 三相平均SOC来回摆 | 相间环k_p偏大 | k_p减半,观察3到5分钟 |
| 投入均衡瞬间电流跳动 | 输出没有加斜坡 | 所有均衡输出加2s斜坡过渡 |
| 某模块过调制报警 | 限幅宽度太大或V0幅值过大 | 限幅收紧到3%,检查V0是否超限 |
附表里的每一项我都在样机调试中实际碰到过。特别是“SOC先收敛后发散”这个现象,早期让我困惑了很久,看起来均衡环在工作,但过一会儿又散开。后来定位到积分项饱和,把条件积分逻辑加上之后,这个现象就消失了。
这套双层SOC均衡方案,从控制层到执行层,核心思路就一句话:把相内和相间拆成两个时标上的独立环路,用0.3s和0.7s的错峰刷新换取解耦,用零均值化和斜坡过渡保证执行干净。我个人经验是,SOC均衡的本质不是把每簇电量调到一模一样,而是在保证并网安全和器件安全的前提下,把电池组可用容量尽量榨出来。真要追求极致均衡度,k_p可以继续往上加,但并网电流谐波、IGBT应力都会跟着上来,性价比不高。后来再做别的级联储能项目,我都是先把这套时标和参数带过去,再根据实际功率等级和模块数量微调一版,基本上两三天就能把SOC离散度压到5%以内,省掉了大量现场磨合的时间。