蓄电池充放电系统双环PI控制:恒流恒压切换与仿真调试要点

📅 发布时间:2026/10/20 7:53:25
蓄电池充放电系统双环PI控制:恒流恒压切换与仿真调试要点
之前做储能变换器方案验证时我在仿真模型里被一个问题反复折磨电池充电到中后期恒流值明明没超端电压却一路往上顶稍不留神就碰到过充保护点。后来把整个充放电系统的控制逻辑拆开从头捋了一遍才反应过来——问题不在某个PI参数是否最优而是三阶段的控制策略从一开始就没理清楚。这篇博文就基于一个蓄电池充放电系统仿真项目围绕PI电压电流双环控制重点讲恒流充电、恒压充电、恒压放电三种工作模式的设计逻辑、切换实现和调试心得。内容覆盖控制思路、无扰切换、参数整定流程以及我实际调试时趟过的一些坑适合正在做电池充放电模拟、储能变换器控制或者充电电源设计的同行参考。1. 三种工作模式背后的电池特性与场景逻辑领导或需求方常问一个问题既然有电流环又有电压环为什么不直接给定一个电压参考靠调节器自动限流这里的关键在于三模式的划分不是控制器自己的需求而是电池这个“被控对象”本身的物理特性决定的。电池不是普通电阻负载端电压会随充放电深度漂移内部极化、温升都在影响特性。如果只用一个恒压参考去“怼”它早期阶段电流很容易失控。所以搞清楚三种模式的来源是后续控制器设计的前提。1.1 恒流充电低SOC阶段为什么要锁住电流刚接上电池时SOC低端电压低、内阻也小。此时以恒压源直接充电初期电流可能远超电池能承受的倍率。电池充放电能力一般用C倍率衡量比如1C对容量1Ah的电池就是1A电流。超出额定倍率轻则发热加剧重则诱发析锂锂电或析气鼓包铅酸。恒流充电阶段就是把充电电流钉在安全值上比如0.5C或1C让端电压随充电进度自然上升。这个阶段占整个充电过程的电量比例非常大。一般锂电池充电流程就是CC-CV前面近80%的电量都是在恒流阶段灌进去的。在控制上恒流充电意味着电流环给定一个固定参考值电压环在旁待命。仿真里直接把这个阶段的电流参考写死很容易验证启动瞬间电感电流会有一段爬升控制器只要把PI调稳电流基本就是一条直线。要注意的是恒流给定值不能超过电池允许的倍率否则后面即便到了恒压段电池也已经吃了暗亏。1.2 恒压充电电压环接管的意义电池充到一定SOC后端电压接近阈值。此时继续恒流端电压会越过过充保护点电化学体系内部副反应加剧。所以恒流阶段走到末端必须把控制量换成电压设定一个恒压目标让充电电流按照电池吸收能力自然衰减。这个过程在示波器上会看到电流曲线从恒流值往下掉形成一个很典型的“膝盖形”过渡也就是CC-CV切换点。恒压充电阶段的电流自然衰减其实非常契合电化学特性越接近满电充电速率本就该降下来。在仿真模型中电压环需要实时检测电池端电压输出一个电流参考给内环。随着电流衰减到某个截止值比如0.05C就可以判充结束。恒压模式最怕的是电压参考设定过高一旦超过电池最高电压即使有电压闭环也存在长期浮充析气的风险。因此仿真里保护逻辑分两个层次一个由电压环闭环控制一个由比较器直接强制切断或报警。1.3 恒压放电母线稳压才是真需求恒压放电听起来像“把电池电压放恒定”实际不是。电池端电压在放电过程中本来就会下降不可能靠控制把它顶住——否则违反物理规律。这里的恒压指的是变换器输出侧比如直流母线、负载端电压保持恒定。储能系统放电给逆变器或负载供电时母线电压如果大幅波动后级设备没法正常工作。所以这个模式下电压环反馈的是母线电容电压参考值是母线目标电压内环电流方向反转成放电方向能量从电池流向母线。跟恒压充电放在一起对比能看出同一个“恒压”词义下反馈点完全不同充电恒压反馈电池端电压放电恒压反馈母线/输出电容电压。在仿真模型里这两个电压环不能简单共用一个调节器否则反馈信号接错方向直接反掉。常见做法是通过模式标志切换反馈源和参考值恒压放电时电压环输出限幅为最大放电电流符号取负相对充电方向。工作模式电压环反馈电压环参考电流环参考来源电流方向恒流充电不参与或限幅无直接给定恒定电流参考正向电池吸收恒压充电电池端电压电压目标值电压环输出正向电池吸收恒压放电母线电压母线目标值电压环输出反向电池释放2. 双环PI控制的结构逻辑与参数划分三种模式确认后控制器怎么搭的问题就摆上来了。蓄电池充放电系统里最经典的做法是电压电流双环PI控制。为什么不是单电压环或者单纯电流环这得从电池这个被控对象的特性说起。2.1 电压外环加电流内环两个环各管什么如果只用电流环电流可以稳定但电压没法控制恒压模式做不了。如果只用电压环问题更明显电压直接调节占空比中间少了电流这个约束负载瞬变时电流尖峰根本拦不住。蓄电池对电流冲击很敏感过流一次就伤一次寿命。双环架构的本质是“用内环保护电流用外环满足电压/电流精度需求”。实际信号流里内环是电流PI调节器它接收电流参考值输出占空比控制变换器。外环是电压PI调节器它接收电压参考输出电流参考给内环。电压环可以把电池看成“会漂移的容性负载”来整定电流环则直接用占空比控制电感电流。整个控制形成一个链条电压参考 - 电压环 - 电流参考 - 电流环 - 占空比 - 变换器 - 电压反馈。这层关系理清后仿真建模才不容易把信号线接乱。打个比方电压环相当于项目管理层只关心“最终电压是不是稳在目标附近”电流环相当于现场执行团队关心“流过的电流是不是严格按指令走”。管理层下目标执行层保安全这套架构的基本逻辑就是“各管一段”。2.2 带宽划分原则内环快外环稳双环控制能不能稳定工作一个关键指标是带宽划分。电流内环要快这样才能快速抑制输入扰动、限制电流尖峰电压外环不需要也不应该比电流环快否则外环一感到电压误差就给内环猛加电流参考内环还没跟上整个回路就容易振荡。工程上常用经验值是电流环带宽取开关频率的1/5到1/10电压环带宽取电流环的1/3到1/5。比如开关频率20kHz时电流环带宽可以取2kHz电压环带宽取400Hz到600Hz。这个比例不是拍脑袋定的本质是保证两个环在工作频率附近不会产生明显耦合——内环已经“消化”了高频扰动外环看到的被控对象近似成一个低带宽的受控电流源外环设计自然就简化了。仿真调试时如果发现系统出现低频振荡第一怀疑对象就是带宽比。我遇到过的情况是母线电压低频摆动后来发现外环带宽跟内环拉得太近两个环在相近频段抢主导权振荡就来了。把外环带宽降下来之后系统立马消停。这条排查链可以作为双环调试的“一号排查项”。2.3 PI参数初值怎么估算很多人仿真时直接盲目给PI参数——随机试然后看波形调。其实可以先做一版合理初值估算再进仿真精调。以双向Buck-Boost为例电流内环的被控对象是电感电流对占空比的传递函数近似由电感L、电阻R和母线电压决定。要设计穿越频率为f_ci的电流环Kp可以按 L乘2π乘f_ci再除输入输出电压增益这个思路估算Ki则取Kp除以一个较大的时间常数保证低频增益够高。至于电压外环它控制的是电容电压或电池端电压在电流内环已经闭环的前提下被控对象很像一个“受控电流源给电容充电”的模型。因此电压环的Kp可以按 C乘2π乘f_cv 估算Ki同样给一个相对小的初值。具体数值不同拓扑会差不少但仿真里完全可以把估算值当起点之后扫Kp和Ki观察阶跃响应、超调和恢复时间。这里有个小技巧调参顺序务必是“先内环后外环”。先把电流环单独闭环给恒定电流参考调好电流波形再把外环接上逐步加大电压环增益。顺序反了会非常难定位问题——波形乱了根本分不清是内环没稳还是外环叠加出来的。我见过不少同行直接在双环全开状态下调整参数结果改来改去都是在给错误耦合打补丁。3. 模式切换的衔接逻辑与无扰实现三种模式分别能稳定工作只算走完了第一步。真正的难点在切换恒流转恒压、恒压转放电、放电转回充电任何一个切换点处理不好都会在波形上留下电流尖峰或电压过冲。这部分我在仿真实操里花的时间比搭主电路还多。3.1 最容易被忽略的“切换跳变”问题用状态机直接切换模式看起来很简单模式标志一变PI参考和反馈都换掉。但对仿真里的蓄电池来说这种粗暴切换往往伴随瞬间冲击。原因是切换前调节器的积分器里存了不少“账”比如恒流充电阶段电压环积分器因为电压误差长期为正输出早就顶到限幅切到恒压模式那一刻这个积分数值还会顺着新参数参与调节直接导致电流参考跳变。现实中这种跳变轻则引起电压过冲重则触发保护。所以做模式切换的目标早就不是“切得对”而是“切得没感觉”——学名叫无扰切换bumpless transfer。实现手段从两个维度下手一是对调节器输出和积分器做限幅与处理二是设计自动切换逻辑让切换点在控制环路内部自然发生而不是靠外部硬切。仿真时可以在切换瞬间打一个示波器光标重点看电流参考和实际电流有没有阶跃毛刺。3.2 恒流转恒压的min取小自动切换恒流转恒压这个切换点其实可以做到完全不需要外部信号仲裁。经典做法是用一个取最小函数电流参考 min(最大充电电流, 电压环输出)。恒流阶段电池电压还没到目标值电压环拼命往上积分输出被限幅钳在最大电流附近min取到的是最大充电电流系统表现为恒流。随着电压逼近目标电压环输出逐渐回落到最大电流之下min自然改选电压环输出系统平滑转为恒压。整个过程没有切换标志、没有模式跳变完全靠信号大小关系自动完成。这也是工业充电模块“恒流恒压自动切换”的标准做法。要让这个机制稳定电压环必须配抗积分饱和否则恒流阶段电压环积分器会长时间饱和在最大电流附近等到电压真正到达目标时积分器还会按旧轨迹“冲”一段导致过冲。通常做法是给电压环输出加限幅并让积分器在输出限幅时停止积分或者采用反馈抗饱和结构。仿真里我一般直接在调节器模块中勾选限幅和抗饱和选项再配合一点开关逻辑做兜底实测下来从恒流切到恒压的波形平滑很多。3.3 充放电方向反转与状态机建模恒压放电和充电的切换不像CC-CV这么“自动化”因为电流参考方向要反转电压环反馈点也要换充电反馈电池端电压放电反馈母线电压。我的做法是搭一个模式状态机模式标志决定两件事一是电压环的反馈信号源和参考值二是电流参考限幅的符号。恒压放电模式下电压环参考为母线目标电压反馈为母线电容电压采样输出限幅到最大放电电流且方向取负。此时电流环参考为负能量自动从电池侧流向母线侧。仿真建模上状态机可以用逻辑模块组合实现也可以直接用状态流工具。关键点是切换瞬间处理好两个状态之间的信号连续性。我通常会让切换动作分两步第一步先让电流参考降到一个很小值比如0.01倍额定等电流环执行到位后第二步再做反馈源和限幅方向的切换。这样虽然多一个节拍但换来的是母线电压和电感电流都不跳变对后续硬件移植更友好。如果一味追求“一步到位”你得花大量精力去调切换时刻的积分器初值反而得不偿失。4. 仿真建模要点与调参实操流程控制策略讲清楚后开始说模型本身。我用的仿真环境是MATLAB/Simulink元件库自带的电力电子模型足够搭建验证系统。搭建过程中的很多细节会直接影响控制效果值得逐一说明。4.1 主电路拓扑与关键器件参数主电路采用双向Buck-Boost也叫两象限半桥变换器结构简单适合做电池侧电压和母线电压之间的双向变换。仿真参数上我建议一开始不要追求高开关频率先用20kHz这种常规频率把控制逻辑验证通逻辑跑通了再考虑工程化。一组可复用的初值如下电池侧电感L取1mH母线电容C取1mF开关频率20kHz仿真步长建议设到开关周期的1/10以内比如5e-6秒既能控制仿真时间又不至于丢失PWM细节。双向变换器的PWM驱动有互补逻辑充电和放电对应的占空比路径不同但控制层面只需要让电流环输出落到调制模块的占空比信号上。高侧和低侧开关的互补死区在仿真里可以设置一下虽然仿真模型不像硬件那么容易直通但养成习惯对后续硬件化有好处。4.2 电池模型的化简与SOC计算蓄电池建模不需要太复杂。仿真验证控制策略时用受控电压源加内阻的简化模型就足够开路电压OCV随SOC变化查表或线性近似内阻按电池规格给一个常数再叠加简单的SOC积分计算SOC等于初始SOC减去对时间积分的电流除以额定容量。电池电压随SOC缓慢变化这个特性恰恰是验证CC-CV切换是否生效的关键——如果用一个电压固定的理想电池电压闭环永远不会有误差恒流转恒压的切换逻辑也无法触发。另一个细节是电池模型的内阻不能忽略。不同SOC下内阻变化、充放电极化等因素会造成端电压与OCV之间有偏差这种偏差正是恒压模式需要闭环消除的对象。仿真时可以在电池端电压反馈通道上加一个一阶低通滤波滤除开关纹波避免电压环因为纹波过大而误动作。滤波时间常数要比电流环时间常数小一个数量级不然会给双环串入额外相移。4.3 从内环到外环的整定流程调参我坚持三步走每一步都有明确的验证标准。第一步内环单闭环。断开电压环给电流参考一个阶跃从0.2倍额定跳到0.8倍额定观察电感电流阶跃响应。目标是电流超调小于5%上升时间在5到10个开关周期左右。这一步如果调不好后面外环加上去一定乱。第二步接上电压环但只做恒压充电模式。给定电压参考阶跃观察电池端电压跟踪响应。此时检查重点不是快速到达目标而是不能有明显超调——电池电压一旦超调超过阈值保护逻辑就会切断系统。电压环的Kp从这个位置开始逐步加大每加大一次观察有没有振荡直到带宽接近设计值为止。第三步三模式级联。恒流给定固定值跑一段等电池电压到达CC-CV切换点自动转恒压然后切除充电源切换放电模式看母线电压在带载阶跃下的恢复情况。整体波形符合预期后再回来微调外环Ki把稳态误差消掉。调节器初值方向主要影响调试优先级电流环Kp估算后取小电流响应快慢1电流环Ki小值起步电流稳态误差2电压环Kp估算后取小电压环带宽3电压环Ki小值起步电压稳态误差44.4 三种模式级联的验证步骤参数整定完毕我建议做一个完整的工况验证脚本把三种模式按时间序列串起来跑0到2秒恒流充电电池电压从低SOC区往上爬2秒左右电压达到CC-CV切换阈值自动切恒压充电4秒时切断充电回路切换恒压放电模式带一个阶跃负载观察5秒内母线电压恢复情况。这个脚本可以在一次仿真里把三个模式从头到尾验证一遍。验证时不要只盯稳态波形重点看三个时刻CC切CV的瞬间电流参考是否平滑充电切放电的瞬间电感电流方向是否快速反转且没有尖峰放电带载阶跃的瞬间母线电压跌落幅度和恢复时间是否符合设计指标。这三个时刻几乎覆盖了所有容易出问题的地方每次改动参数跑同一套脚本对比效率很高。5. 调试中踩过的坑与排查链路下面几个问题都是我在这个仿真系统上实际遇到过、并且花了时间才定位的。写出来给同行做个参照遇到类似波形不用从头试。5.1 双环带宽重叠导致的低频震荡现象是恒压充电模式下电池端电压和电感电流上叠加了一个大约100Hz到200Hz的低频振荡幅值不小像呼吸一样来回波动。一开始怀疑是电池模型的问题换了更精细的模型依旧如此。排查链路是这样的第一把外环断开给内环固定参考电流波形非常干净说明内环没问题第二把外环接上但外环Kp大幅减小振荡消失说明根源在外环参与后第三对比内外环带宽发现电流环取3kHz电压环取2.5kHz两个环在相近频段都把手伸得很长耦合之后产生了拍频性质的振荡。把电压环带宽降到600Hz振荡立刻消失。这个案例给我最大的印象是双环控制中带宽比不是单纯的理论要求它是实实在在的稳定性边界。内环必须比外环快一个量级以上外环才有资格把内环看成“理想电流源”。5.2 恒流转恒压瞬间的电压过冲现象是恒流充电阶段一切正常到CC-CV切换点后电池端电压在切换瞬间冲过了设定值过冲幅度接近500mV然后才慢慢回落。这是典型的切换瞬间控制连续性被破坏。排查下来发现恒流阶段电压环因为电压误差长期存在积分器一直在累积即便输出被限幅钳住积分器本身没有停下来。切换那一刻积分器里存了很大的“势能”退出恒流模式时它继续作用把电流参考推到了一个过大的值电压自然蹿上去。处理方法是给电压环开抗积分饱和我用的方案是把限幅后的实际输出与原积分器输出做差值反馈回去抑制积分这样输出钳在最大电流时积分器就自动停止累加。同时在模式切换使能信号上加了积分器初值重置两者一起作用后过冲从接近500mV降到50mV以内。这个案例再次印证min取小自动切换只是手段如果调节器本身没有抗饱和能力切换逻辑再漂亮也白搭。5.3 放电启动瞬间的母线跌落现象是恒压放电模式下负载从空载切换到满载的瞬间母线电压跌落了差不多10%恢复时间接近几十毫秒这在恒压源要求高的场合不能接受。排查链路先看电流环负载阶跃瞬间电流环能快速跟上说明内环没问题再看电压环母线电容电压在阶跃瞬间跌落后电压环输出电流参考但要经过一个不小的电容充电过程才能把母线电压顶回来。本质是电压环响应速度受限于带宽。解决思路有两层一是适度提高电压环带宽但要保持在内外环带宽比的安全范围内二是做负载电流前馈——把负载电流信号直接加到电流环参考上让内环在母线电压还没明显跌落前就预先补上电流。仿真结果表明前馈对跌落深度和恢复时间都有明显改善。这个做法在实际产品里也常用仿真阶段验证清楚后后面移植到硬件会省很多事。最后说一点个人体会。做这个仿真项目我对三模式切换最大的感受是控制策略的价值往往不在单一模式下的稳态精度而在于不同模式之间衔接的平顺度。波形上看起来只是一小段过渡背后却隐藏着积分器状态、限幅逻辑、带宽划分和反馈选通的一整套配合。如果你的仿真模型也卡在某个切换点上反复振荡不妨按这个顺序自查先看带宽比再看抗积分饱和再确认切换时的反馈源多数问题都出在这三处。下一步我打算把这套策略扩展到更多模式比如脉冲充电或功率限制模式并在硬件平台上验证进度合适再来分享。