基于Modelica的能量管理模块设计

一种基于规则的能量管理系统设计

要点

  1. 对于混合动力系统来说,子系统的功率分配尤为重要;
  2. 本研究是一个PEMFC系统和锂电池的组合,采用主动并联结构,增强系统功率输出稳定性和长续航能力;
  3. 一般来讲,为了保护锂电池而将其SOC限制在[0.2, 0.8]之间;
  4. 燃料电池的额定功率为8kW,锂电池的容量为10Ah,放电倍率为25C,采用12S结构,同时锂电池的最大充电功率和放电功率分别是2kW和8kW;
    系统结构如下图:
    在这里插入图片描述
  5. 在Dymola中设计能量管理程序:
    在这里插入图片描述
model EMS01 "基于三路功率和锂电池SOC的能量管理模块"
  Modelica.Blocks.Interfaces.RealInput P_Load "负载功率输入,0kW~4kW"
    annotation (Placement(transformation(extent={{-140,20},{-100,60}})));
  Modelica.Blocks.Interfaces.RealInput SOC
                                          "锂电池剩余电量"
    annotation (Placement(transformation(extent={{-140,-60},{-100,-20}})));
  Modelica.Blocks.Interfaces.RealOutput P_FC
                                            "指定燃料电池提供的功率"
    annotation (Placement(transformation(extent={{300,40},{320,60}})));
  Modelica.Blocks.Interfaces.RealOutput P_LiPo
                                              "指定锂电池提供的功率"
    annotation (Placement(transformation(extent={{300,-60},{320,-40}})));
  parameter Real Li_P_Di_Max(unit = "W")=8000
                                            "锂电池的最大放电功率";
  parameter Real Li_P_Ch_Max(unit = "W")=200
                                            "锂电池的最大充电功率";
  parameter Real FC_P_Nom(unit = "W")=8000
                                         "燃料电池的额定功率";
  parameter Real FC_P_Max(unit = "W")=8200
                                         "燃料电池的最大功率";

algorithm 
  if SOC < 0.2 then //锂电池充电阶段

    if P_Load < FC_P_Nom then //燃料电池额定功率满足负载运行

      if FC_P_Nom - P_Load > Li_P_Ch_Max then

        P_LiPo :=-(Li_P_Ch_Max);

        P_FC :=-P_LiPo + P_Load;
      else
        P_LiPo :=-(FC_P_Nom - P_Load);

        P_FC :=FC_P_Nom;

      end if;

    else //燃料电池额定功率不满足负载运行

      P_LiPo :=0;

      P_FC :=0;

      exit();

    end if;

  else //SOC >= 0.2 放电阶段

    if SOC > 0.8 then //锂电池电量大于80%

      if P_Load < FC_P_Nom then //燃料电池功率支持负载运行

        P_FC :=P_Load;

        P_LiPo :=0; //锂电池不充电也不放电

      else //燃料电池功率不支持负载运行

        P_LiPo :=P_Load - P_FC;

        if P_LiPo > Li_P_Di_Max then

          P_LiPo :=0;

          P_FC :=0;

          exit(); //负载功率过大,锂电池达到最大放电功率也不能支持负载运行

        else

          P_FC :=FC_P_Nom;

          P_LiPo :=P_Load - P_FC; //锂电池放电

        end if;

      end if;

//       P_FC = FC_P_Nom;
//
//       P_LiPo = 0;

    else //锂电池电量介于20%~80%之间

      if P_Load < FC_P_Nom then //燃料电池功率支持负载运行

        P_FC :=FC_P_Nom;

        P_LiPo :=-(FC_P_Nom - P_Load); //锂电池充电

      else
        if (P_Load - FC_P_Nom) > Li_P_Di_Max then

          P_LiPo :=0;

          P_FC :=0;

          exit();

        else

          P_FC :=FC_P_Nom;

          P_LiPo :=P_Load - FC_P_Nom;

        end if;
      end if;
    end if;

  end if;
  annotation (
    Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{300,100}}),
        graphics={Rectangle(
          extent={{-100,100},{300,-100}},
          lineColor={0,0,0},
          fillPattern=FillPattern.Forward,
          fillColor={28,108,200}), Text(
          extent={{16,48},{196,-44}},
          textColor={255,255,255},
          textString="EMS")}),
    Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{300,
            100}}), graphics={Rectangle(
          extent={{-100,102},{300,-98}},
          lineColor={0,0,0},
          fillPattern=FillPattern.Forward,
          fillColor={28,108,200}), Text(
          extent={{16,50},{196,-42}},
          textColor={255,255,255},
          textString="EMS")}),
    uses(Modelica(version="4.0.0")));
end EMS01;

  1. 实验结果


实验结果可以看出燃料电池和锂电池的响应和锂电池SOC变化;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ardalion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值