资讯动态

光伏储能充电双闭环PI控制仿真与参数整定详解

发布时间:2026/10/20 17:00:40 来源:尧图企业网站定制
光伏储能充电系统有个让人头疼的共性毛病光伏阵列的输出天生不听话。早上的辐照度缓慢爬升、午后的云层遮挡瞬间掉落、傍晚的快速衰减都在让发电端的电压和功率不断跳动。你可以直接看光伏板的I-V曲线——在同一个温度下辐照度从1000W/m²降到400W/m²最大功率点能跌掉一半以上。而储能充电又是个娇贵活锂电池的充电电流和电压必须被控制在一个窄区间内否则循环寿命会明显缩短严重时甚至出现热失控。这两个问题撞在一起做控制的人就得想清楚到底用什么策略把波动的光伏输出变成电池安全充电所需的稳定电流和电压。这篇文章记录了我搭建光伏储能充电系统仿真模型的全过程核心就是PI双闭环控制——外环维持电压、内环跟踪电流两个PI控制器分工协作把光伏输入波动和电池状态变化都消化在可控范围内。内容包括双闭环架构的选型逻辑、PI参数推导、三阶段充电策略的仿真实现以及我在调试中踩过的坑。适合正在做光伏储能控制仿真、准备把仿真模型落地到硬件或者单纯想理解双闭环PI控制怎么应用在电力电子拓扑中的同学。1. 从充电控制需求倒推单环方案为什么撑不住1.1 光伏输出的波动特性逼着你做分层控制光伏阵列本质上是一个非线性电流源不是干净利落的电压源。在标准测试条件下一块250W左右的组件开路电压大概在37~39V短路电流大概8~9A但在真实户外环境下这两个值会随着辐照度和温度大幅偏移。温度每升高1℃开路电压大约降低0.3%~0.4%辐照度一旦被云层挡住短路电流可能瞬间缩水70%。这意味着如果你用定占空比的DC-DC转换器去给电池充电输入侧的扰动会原封不动地传导到输出侧。这也是为什么光伏储能充电的控制不能只靠前级拓扑本身的滤波特性来兜底。电力电子变换器确实能把电压升上去或者降下来但它没有能力自动适应输入侧的大范围、快速波动。要做的是引入闭环负反馈让控制器实时看到输出电压和电流的误差并调整开关管的占空比去修正这个误差。单环控制在理论上可行但实际执行起来问题很多。举个例子如果只做一个电压环电压环的误差信号来自电池端电压采样反馈通道由电池的极化特性和等效电容主导。电池端电压在恒流充电过程中几乎是缓慢爬升的电压误差很长时间都在一个方向上累积PI控制器的积分项越积越大占空比持续摆动电池充电电流纹波明显增大。我在仿真里做过这个实验在恒流阶段单电压环的电流纹波可以达到设定值的15%以上而且出现频率很低的振荡看起来就像控制环路在打嗝。1.2 单纯电流环能稳住电流却管不住电压安全换成只做电流环呢电流内环直接面对的是电感电流控制带宽可以做得很高充电电流确实能被控制得很平滑。但问题在于恒流逻辑放到光伏储能里会失灵。因为光伏板的输入功率是浮动的当辐照度强时可提供的功率很大电流环会一直维持设定电流往外送这部分功率都灌进电池电池电压看似没到截止电压实际上已经在加速极化电压升高速度会比预期快得多。对磷酸铁锂电池这类电压平台较平缓的电池来说电压升幅不算大但内阻上的压降和极化过电压在持续积累一旦错过了恒流转恒压的切换时机电池就处在过充风险的边缘。所以我在一开始就放弃了单环方案原因很简单储能充电同时存在两个约束——电流要按设定值走电压不能越过安全线。一个反馈环在同一个被控对象上很难同时处理两个优先级不同的目标除非引入复杂的模式切换逻辑但那样还会带来模式识别不稳、切换冲击等问题。与其这样不如用双闭环把两个目标分解到两个环路上各管一个互不抢活。2. 双闭环架构拆解电压外环给出指令电流内环负责执行2.1 内外环的串联结构与责任划分我采用的是最常见的电压外环电流内环串联结构。外环的输入是电池端电压采样值和参考电压的误差输出是内环需要跟随的电流参考值内环的输入是该电流参考值和实际电感电流采样值的误差输出是PWM占空比直接驱动变换器的开关管。这个结构的好处在于外环不需要知道光伏板当前是多少瓦也不需要知道占空比具体是多少它只要判断现在电池电压离目标还差多少该给多大的电流指令剩下的交给内环去执行。内环也不关心电压目标它只盯着实际电流和指令电流差多少占空比该怎么调。我在仿真里给这个结构起了个形象的说法外环是方向盘决定往哪个方向开内环是油门决定用多大力气去执行。方向盘转得慢油门响应快二者节奏拉开才能稳定行走。整个信号链路是电池端电压采样 → 与参考电压相减 → 电压PI控制器 → 输出电流参考值并经限幅 → 与电感电流采样相减 → 电流PI控制器 → 输出占空比 → PWM生成 → 开关管动作 → 电感电流变化 → 电池端电压变化。这个链路的顺序非常重要调整任何一个环节都可能改变整体稳定性。2.2 带宽配比与采样时序决定稳定性的关键双闭环能不能稳定很大程度上不取决于PI参数本身有多标准而取决于两个环路的带宽是否拉开了足够的差距。内环面对电感电流。电感电流是电力电子变换器里最快的状态量之一它的时间常数由电感量和等效电阻决定。在典型的Buck变换器里电感取2mH等效电阻0.5Ω电气时间常数不过几毫秒而实际开关周期在50~100μs所以要内环跟上指令带宽至少要几百赫兹到几千赫兹。我在设计时把电流内环的目标带宽定在1kHz附近。电压外环面对的是电池端电压。电池等效电容很大以48V/20Ah的磷酸铁锂电池组为例粗略等效电容可以达到1~3F这么大的电容配合电池内阻形成的极点非常靠近原点电压环的天然带宽就不高因此我把它定在几十赫兹到一百多赫兹。两个带宽拉开十倍左右就能保证内环在瞬态过程时外环毫不知情——外环看到的始终是内环稳定之后的输出。反过来如果内环带宽比外环还低或者接近那么外环的调节指令就会在内环产生明显滞后两个环路叠加出新的低频振荡模式这种振荡在仿真里非常容易观察到表现为电压和电流同步出现周期性的波动。采样时序也需要注意。在数字控制器里如果两个环路的采样频率和PWM的更新时刻没有对齐相位延迟会额外叠加导致实际闭环带宽低于设计值。我通常让电流内环在PWM载波的峰值和谷值同步采样电压外环则做多周期平均采样消除开关纹波对电压反馈信号的干扰。3. 仿真建模实操从光伏板到电池的链路搭建与参数整定3.1 光伏阵列模型与MPPT工况设定接着进入仿真实操。先讲光伏阵列模型。我习惯在仿真环境里自己搭光伏阵列模型虽然很多仿真软件都提供现成模块但自建的好处是能直观控制每个环节的物理意义方便后续替换成自己实测的参数。单二极管模型用五个参数描述I-V关系光生电流、二极管反向饱和电流、串联电阻、并联电阻、二极管理想因子。这组参数在不同辐照度和温度下的变化规律有明确公式仿真中可以通过插值法实时更新。搭完之后要确认I-V曲线和P-V曲线的形状正确。验证方法很简单给定一个辐照度把负载从短路状态往外拉看功率曲线是否呈现单峰特性如果曲线出现双峰或者明显畸变多半是并联电阻或者理想因子设置出了问题。MPPT我用的扰动观察法原因很现实实现简单、调试直观、参考资料多。光伏储能仿真中MPPT的目的是让变换器在MPPT模式下尽可能把光伏板的功率抽取出来但当电池进入恒压阶段后MPPT会限功率运行。所以MPPT并不是一直在最大功率点工作而是会在电池电压约束下退让把输出功率限制在当前允许范围内。这种模式间的配合做起来比单独一个MPPT仿真要复杂因为你要同时考虑最大功率索取和充电电压上限两个目标的优先级。我搭的一个典型工况是光伏组件额定功率300W开路电压约45V短路电流约9A通过Boost变换器升压到60V母线再由Buck变换器给48V电池组充电。也有人用单级结构但双级结构的好处是MPPT和充电控制可以分别设计调参时互不干扰。在仿真里我会设定三档辐照度来测试控制效果满辐照度1000W/m²、中等辐照度600W/m²、低辐照度300W/m²并在不同档位间做阶跃切换模拟云层遮挡和光照恢复的过程。3.2 电池模型与三阶段充电策略的实现电池模型我选用的是Thevenin等效电路一个开路电压源串联内阻再并联一个表征极化的RC网络。开路电压与SOC的关系可以用一条查表曲线描述极化电阻和极化电容由电池类型决定。这个模型精度在5%以内对控制仿真足够用。我把三阶段充电策略写成了状态机状态0预充/涓流。电池电压特别低时以0.05C的小电流给电池建立基本电压平台。状态1恒流充电。电池电压在截止电压以下时电流指令固定为0.2C对20Ah电池就是4A。状态2恒压充电。电池电压接近截止电压外环接管电流指令自动衰减。状态3充电完成/浮充。电流衰减到0.02C以下变换器进入低功耗维持状态。这个状态机的核心问题在恒流到恒压的切换点。如果切换条件只看电压幅值比如电池电压到了55.5V就切换那么在满辐照度下电压采样纹波大可能误判为到达切换点在低辐照度下电压上升慢切换点又会来得晚。我的做法是在电压判断条件之外增加一个电流条件只有在电压到达阈值且电流外环输出已经进入退饱和区间时才真正切换状态。这样切换更平稳也不容易来回抖动。3.3 PI参数推导从传递函数到实际整定参数得知道怎么来的不能只给最终值。先推导电流内环控制对象的传递函数。以Buck型变换器为例连续导通模式下电感电流对占空比的传递函数近似为G_id(s) ≈ V_bat / (L * s)这里忽略了输出电容的并联效应和电感的寄生电阻。代入L2mH、V_bat54VG_id(s) ≈ 54 / (0.002s) 27000 / s这是一个积分环节相位裕量天然充足。配上PI控制器开环传递函数为T_i(s) (Kp_i Ki_i / s) * 27000 / s为了让内环闭环带宽到1kHz开环增益穿越频率设在1kHz附近。系统中频段要考虑相位裕量不小于45°我取Kp_i0.18、Ki_i250。实际的阶跃响应测试显示电流环上升时间约1ms超调约5%在可接受范围内。电压外环的控制对象是电流到电压的过程。粗略地电池端电压变化可以看成是对电流的积分G_vi(s) ≈ 1 / (C_bat * s)取等效电容C_bat2F则G_vi(s) ≈ 0.5 / s电压外环带宽我定为内环带宽的1/10即100Hz。电流内环闭环之后等效为一个一阶低通电压外环叠加这个低通之后我通过波特图检查开环增益选定Kp_v0.45、Ki_v12。参数整定不是一次成功的。我习惯先把积分项调小只调比例项让系统稳定后再加积分项消除稳态误差。每调一组参数就跑一次阶跃响应记录超调量和调整时间再根据响应形态修改参数而不是盲目套公式。4. 仿真结果与分析辐照度突变下的控制表现4.1 辐照度阶跃电流内环先出力电压外环随后跟上我在仿真里做了一个很典型的实验t3s时辐照度从1000W/m²瞬降到400W/m²观察变换器输出端电池侧的电压和电流波形。这个测试模拟的是一片云突然遮住太阳这种最常见的光伏扰动。辐照度下降后光伏板的可用功率几乎腰斩如果不做控制Boost变换器的输入端电压会垮塌中间母线电压下跌Buck变换器的占空比如果不调整输出就会偏离目标。在双闭环控制下我观察到电流内环的反应非常快。辐照度突变后约30ms内电感电流就被拉回电流指令附近稳态误差在2%以内。这是内环高带宽带来的优势——它对输入侧的扰动能迅速做出反应。电压外环的变化则更缓慢、更温和。因为电池端电压本身具有大惯量电压误差变化不剧烈外环只需要小幅修正电流参考值。整个过程中电池电压的波动没有超过额定值的3%。4.2 恒流转恒压切换抗积分饱和的必要性另一个必须记录的测试是充电模式从恒流切到恒压。我在未做任何抗积分饱和处理时先跑了一遍结果电压上冲了约7V这对55V系统来说已经是14%的过冲足以触发电池保护。原因其实不难理解恒流阶段外环看到电池电压一直低于参考值电压PI的积分项在不断累积输出已经顶到电流上限。当电压到达切换阈值时外环突然要接管控制但积分项还保留着之前拼命顶的记忆它会继续把电流参考值顶到最大值附近导致电池电压继续往上冲直到积分项慢慢退出来这个过程需要几百毫秒电压已经超了不少。解决方案是抗积分饱和在控制器输出达到限幅值时冻结积分累加不再继续累积误差。我加入这个逻辑后再跑同一条工况电压上冲从7V降到1.2V以内电流衰减也更平缓。这个操作在硬件实现时同样关键建议写成独立的保护逻辑不要依赖PI控制器本身自觉。4.3 三档辐照度下的充电效率对比为了评估双闭环整体效果我还做了一组稳态对比实验把三种辐照度下的充电功率、变换器效率、充电电流纹波都记录下来。辐照度MPPT输出功率充电电流电流纹波占比变换器效率1000W/m²298W3.8A0.8%93.2%600W/m²178W2.5A1.1%91.7%300W/m²88W1.4A1.5%89.4%可以看到辐照度下降时变换器效率略有下降主要是因为占空比偏离最佳工作点之后电感和开关管的通态损耗占比上升。但充电电流纹波始终在2%以内控制质量基本稳定。这说明双闭环PI在整个输入功率范围内都有不错的控制效果不会因为输入功率降低就急剧恶化。5. 仿真之外从模型到硬件的落差与经验5.1 仿真中容易踩的坑第一个坑是仿真步长与开关频率不匹配。很多人在仿真里把固定步长设到1ms甚至更大结果PWM波形严重失真内环的纹波分析完全看不出规律。我的经验是步长至少取开关周期的1/50比如20kHz的开关频率仿真步长最多取1μs。这样才能在波形上看到真实的纹波和占空比变化。第二个坑是抗积分饱和被忽略。前面已经重点讲过这里再补充一点在仿真环境里PI控制器默认不会自动做限幅处理要么自己在控制器后面加饱和限幅模块要么在积分路径上加条件判断。不加限幅的话恒压切换时会出现看不到的雷。第三个坑是电池模型太理想。如果电池模型里把内阻设为零或者省略极化RC网络那么电压环的相位特性会偏差很大你在仿真里调好的PI参数换到真实电池上之后会发现实际带宽和增益都变了甚至稳定不住。所以电池模型的精度要适当至少要有内阻和极化环节。还有一个容易被忽略的点是采样噪声。真实系统里电压采样必然有噪声和滤波延迟。建议在仿真里加一个低通滤波器模拟真实的反馈通道再把采样滤波器的截止频率设在内环带宽的1/3以下避免环路交互。5.2 数字控制器离散化的注意点如果仿真验证通过接下来要做的是把连续域的PI参数映射到数字控制器。这里最容易犯的错误是直接照搬连续域的Kp和Ki到离散控制代码里结果发现离散化之后相位裕量变小、动态变差甚至不稳定。我一般用双线性变换把连续PI离散化并且保证离散后的控制器在奈奎斯特频率处有足够的衰减。这里要特别注意积分项在离散域的数值溢出问题尤其是电池充电这种长时间运行的系统积分项会随着时间单调累积如果控制器的积分限幅没有跟着做数值溢出之后会出现不可预料的占空比跳动。5.3 关于参数整定的一点个人体会参数整定不要指望一蹴而就更不要抄别人模型的参数就以为能直接跑。每个系统的电感量、电容值、电池SOC状态、开关频率都不一样参数本质上是跟着系统自身特性走的。我先推导传递函数、算出带宽大概范围然后仿真里做阶跃和辐照度突变测试再根据波形微调Kp、Ki。这个过程我大概重复了十几轮才把内环、外环的带宽配合调到满意。我个人还有个习惯把每次调参前后的波特图、阶跃响应截图和参数值整理到一张表里做版本对比。这样当系统行为突然变差时你能很快找到是哪组参数引入的问题而不是凭感觉猜。这个习惯帮我省了不少时间也让我后来复现别人的仿真结果时变得快很多。最后再分享一个小经验如果你正在做光伏储能充电的项目先别急着上复杂的现代控制算法把PI双闭环吃透已经能解决大部分工程问题。把带宽拉开、把抗积分饱和做好、把采样时序理清这套经典方案在仿真里非常稳落地到硬件时也更容易排查问题。如果后续想继续抠性能可以再在这个基础上叠加MPPT改进算法或者前馈补偿但基础一定是双闭环架构先立住。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑