基于Matlab/Simulink实现了以下功能,搭建了储能系统变换模型以及钒液流电池模型,仿真效果较好,系统充放电正常。 下图为系统模型图,电池输出电压电流以及SOC波形。 1.钒液流电池本体建模 2.储能变换器建模 3.双向DC变换 4.恒定功率控制

最近在研究储能系统相关的项目,使用Matlab/Simulink搭建了储能系统变换模型以及钒液流电池模型,整体仿真效果还不错,系统充放电都能正常进行,在这里和大家分享一下具体的实现过程。

钒液流电池本体建模

钒液流电池作为储能系统中的关键部分,其准确建模十分重要。在Matlab/Simulink中,我们可以通过一系列模块来模拟其特性。

比如,我们可以利用“State - Space”模块来构建钒液流电池的等效电路模型。假设我们有如下的状态空间方程来描述电池:

\[ \dot{x} = Ax + Bu \]

\[ y = Cx + Du \]

在Matlab代码中,可以这样设置“State - Space”模块的参数:

A = [ -1/RC 0; 0 -1/(R0C0) ];
B = [ 1/R; 0 ];
C = [ 1 0 ];
D = 0;
sys = ss(A,B,C,D);

这里A矩阵描述了系统状态的变化率与状态变量之间的关系,B矩阵描述了输入对状态变量的影响,C矩阵用于将状态变量转换为输出,D矩阵描述了直接的输入 - 输出关系。通过这样的设置,我们可以初步模拟钒液流电池在不同输入(如充放电电流)下的输出特性(如电压)。

储能变换器建模

储能变换器是连接钒液流电池与外部电路的关键环节,它需要实现电能的双向转换。

基于Matlab/Simulink实现了以下功能,搭建了储能系统变换模型以及钒液流电池模型,仿真效果较好,系统充放电正常。 下图为系统模型图,电池输出电压电流以及SOC波形。 1.钒液流电池本体建模 2.储能变换器建模 3.双向DC变换 4.恒定功率控制

在Simulink中,我们可以使用“Power Electronics Blockset”中的模块来搭建变换器模型。以双向DC - DC变换器为例,我们可以使用“Boost - Buck Converter”模块,并对其参数进行设置以满足我们的需求。

比如,设置开关频率为10kHz,占空比根据充放电状态动态调整。在代码层面,虽然Simulink主要是图形化建模,但我们可以通过编写S - Function来实现更复杂的控制逻辑。以下是一个简单的S - Function示例,用于根据电池SOC调整变换器的占空比:

#include "simstruc.h"

#define SOC_IN  (ssGetInputPortSignal(S,0)[0])
#define DUTY_OUT (ssGetOutputPortSignal(S,0)[0])

#define SOC_THRESHOLD_1 0.2
#define SOC_THRESHOLD_2 0.8

static void mdlOutputs(SimStruct *S, int_T tid)
{
    if(SOC_IN < SOC_THRESHOLD_1) {
        DUTY_OUT = 0.9; // 高占空比充电
    } else if(SOC_IN > SOC_THRESHOLD_2) {
        DUTY_OUT = 0.1; // 低占空比放电
    } else {
        DUTY_OUT = 0.5; // 平衡状态
    }
}

上述代码根据输入的电池SOC值,输出不同的占空比,以控制双向DC - DC变换器的工作状态。

双向DC变换

双向DC变换是整个储能系统能够实现充放电功能的核心。除了前面提到的使用“Boost - Buck Converter”模块搭建硬件结构外,还需要设计合适的控制策略。

在控制策略方面,我们可以采用双闭环控制,即电流内环和电压外环。在Simulink中,可以使用“PI Controller”模块来实现。以下是简单的PI控制器参数设置代码示例:

Kp = 0.5;
Ki = 0.1;
num = [Ki Kp];
den = [1 0];
piController = tf(num,den);

这里设置了比例系数Kp和积分系数Ki,通过调整这两个参数,可以优化系统的动态响应和稳态精度。电流内环用于快速跟踪电流参考值,电压外环则用于维持输出电压的稳定。

恒定功率控制

为了确保储能系统在充放电过程中按照预定的功率进行,我们采用恒定功率控制策略。在Simulink中,可以通过检测电池的端电压和充放电电流,利用“Product”模块和“Subtract”模块构建功率计算和比较环节。

假设功率参考值为Pref,实时计算得到的功率为P,通过比较PrefP的差值,再经过PI控制器调整占空比,从而实现恒定功率控制。代码层面,我们可以这样实现功率计算:

voltage = getVoltage(); // 假设这个函数获取电池端电压
current = getCurrent(); // 假设这个函数获取充放电电流
P = voltage * current;

然后将计算得到的PPref进行比较,通过PI控制器调整占空比,实现对功率的精确控制。

通过以上对钒液流电池本体建模、储能变换器建模、双向DC变换以及恒定功率控制的实现,我们成功搭建了储能系统变换模型以及钒液流电池模型,并且通过仿真验证了系统充放电的正常运行。希望这篇博文能对同样在研究储能系统相关内容的小伙伴们有所帮助。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐