☰
光伏储能充电双闭环PI控制仿真与参数整定详解
2026/10/20 17:00:36 网站建设 项目流程

光伏储能充电系统有个让人头疼的共性毛病:光伏阵列的输出天生不听话。早上的辐照度缓慢爬升、午后的云层遮挡瞬间掉落、傍晚的快速衰减,都在让发电端的电压和功率不断跳动。你可以直接看光伏板的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)

这里忽略了输出电容的并联效应和电感的寄生电阻。代入L=2mH、V_bat=54V:

G_id(s) ≈ 54 / (0.002s) = 27000 / s

这是一个积分环节,相位裕量天然充足。配上PI控制器,开环传递函数为:

T_i(s) = (Kp_i + Ki_i / s) * 27000 / s

为了让内环闭环带宽到1kHz,开环增益穿越频率设在1kHz附近。系统中频段要考虑相位裕量不小于45°,我取Kp_i=0.18、Ki_i=250。实际的阶跃响应测试显示,电流环上升时间约1ms,超调约5%,在可接受范围内。

电压外环的控制对象是"电流到电压"的过程。粗略地,电池端电压变化可以看成是对电流的积分:

G_vi(s) ≈ 1 / (C_bat * s)

取等效电容C_bat=2F,则:

G_vi(s) ≈ 0.5 / s

电压外环带宽我定为内环带宽的1/10,即100Hz。电流内环闭环之后等效为一个一阶低通,电压外环叠加这个低通之后,我通过波特图检查开环增益,选定Kp_v=0.45、Ki_v=12。

参数整定不是一次成功的。我习惯先把积分项调小,只调比例项,让系统稳定后再加积分项消除稳态误差。每调一组参数就跑一次阶跃响应,记录超调量和调整时间,再根据响应形态修改参数,而不是盲目套公式。

4. 仿真结果与分析:辐照度突变下的控制表现

4.1 辐照度阶跃:电流内环先出力,电压外环随后跟上

我在仿真里做了一个很典型的实验:t=3s时,辐照度从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改进算法或者前馈补偿,但基础一定是双闭环架构先立住。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询