【问题标题】:Can't make the pump in Modelica standard library working无法使 Modelica 标准库中的泵工作
【发布时间】:2019-05-17 12:20:01
【问题描述】:

我想通过抽水系统 (Pompa) 从水源 (Pozzetto) 中抽取水来填充开放式水箱 (bacinella2)。问题很简单,但我无法在 openmodelica 中实现。

我试图去掉pump,直接连接tubo1和tubo2这两个管道,系统正常工作,所以我认为bug在pump对象中。

model Pompaggio


Modelica.Fluid.Machines.ControlledPump Pompa(
    redeclare package Medium = Modelica.Media.Water.StandardWater,
    //N_nominal=1500,
    use_T_start=true,
    T_start=Modelica.SIunits.Conversions.from_degC(40),
    m_flow_start=0.1,
    control_m_flow=true,
    allowFlowReversal=false,
    p_a_start=110000,
    p_b_start=130000,
    p_a_nominal=110000,
    p_b_nominal=130000,
    m_flow_nominal=0.1
    );


  Modelica.Fluid.Sources.Boundary_pT Pozzetto(redeclare package Medium = Modelica.Media.Water.StandardWater,
    nPorts = 1, T=Modelica.SIunits.Conversions.from_degC(40), p = 101325  );

  Modelica.Fluid.Vessels.OpenTank bacinella2(redeclare package Medium = Modelica.Media.Water.StandardWater,
    crossArea = 4, height = 100, level(start = 0.01), nPorts = 1,
    portsData = {Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter = 0.1)}, use_portsData = true);

  Modelica.Fluid.Pipes.StaticPipe tubo1(redeclare package Medium = Modelica.Media.Water.StandardWater,
    allowFlowReversal = true, diameter = 0.1, height_ab = 0, isCircular = true, length = 200, nParallel = 1);

  Modelica.Fluid.Pipes.StaticPipe tubo2(redeclare package Medium = Modelica.Media.Water.StandardWater,
    allowFlowReversal = true, diameter = 0.1, height_ab = 0, isCircular = true, length = 200, nParallel = 1);

equation
  connect(Pozzetto.ports[1], tubo1.port_a);
  connect(Pompa.port_a, tubo1.port_b);
  connect(Pompa.port_b, tubo2.port_a);
  //connect( tubo1.port_b, tubo2.port_a);
  connect(bacinella2.ports[1], tubo2.port_b);


end Pompaggio;

有人可以帮助我吗?谢谢

【问题讨论】:

    标签: modelica openmodelica


    【解决方案1】:

    该模型的工作原理与 Dymola 中的一样。它给出了一些警告,导致 OpenModelica 中的问题得到解决。该模型实际上存在两个“问题”:

    1. bacinella2 的起始值:将值设置为T_start(start=293.15)ports(p(start={101422.89174430574}))) 可避免介质中压力过低的警告。但实际上这不应该解决翻译过程中出现的原始模型的问题。
    2. stateSelectPompa.medium 中的设置。 Dymola 会输出警告,指出它将设置从 StateSelect.prefer 更改为 StateSelect.default,因为它们无法区分。这是为Pompa.medium.hPompa.medium.p 完成的。 OpenModelica 似乎无法自动执行此操作,因此似乎需要手动更改。

    下面的代码是对您的示例进行了上述两个更改的扩展。在 OpenModelica 1.13.2(64 位)中测试,运行良好。

    model Pompaggio_modified
    
    Modelica.Fluid.Machines.ControlledPump Pompa(
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        medium(h(stateSelect = StateSelect.default), p(stateSelect = StateSelect.default)),
        use_T_start=true,
        T_start=Modelica.SIunits.Conversions.from_degC(40),
        m_flow_start=0.1,
        control_m_flow=true,
        allowFlowReversal=false,
        p_a_start=110000,
        p_b_start=130000,
        p_a_nominal=110000,
        p_b_nominal=130000,
        m_flow_nominal=0.1);
        //N_nominal=1500,
    
      Modelica.Fluid.Sources.Boundary_pT Pozzetto(redeclare package Medium = Modelica.Media.Water.StandardWater,
        nPorts = 1, T=Modelica.SIunits.Conversions.from_degC(40), p = 101325);
    
      Modelica.Fluid.Vessels.OpenTank bacinella2(redeclare package Medium = Modelica.Media.Water.StandardWater,
        crossArea = 4, height = 100, level(start = 0.01), nPorts = 1,
        portsData = {Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter = 0.1)}, use_portsData = true,
        T_start(start=293.15),
        ports(p(start={101422.89174430574})));
    
      Modelica.Fluid.Pipes.StaticPipe tubo1(redeclare package Medium = Modelica.Media.Water.StandardWater,
        allowFlowReversal = true, diameter = 0.1, height_ab = 0, isCircular = true, length = 200, nParallel = 1);
    
      Modelica.Fluid.Pipes.StaticPipe tubo2(redeclare package Medium = Modelica.Media.Water.StandardWater,
        allowFlowReversal = true, diameter = 0.1, height_ab = 0, isCircular = true, length = 200, nParallel = 1);
    
    equation 
      connect(Pozzetto.ports[1], tubo1.port_a);
      connect(Pompa.port_a, tubo1.port_b);
      connect(Pompa.port_b, tubo2.port_a);
      //connect( tubo1.port_b, tubo2.port_a);
      connect(bacinella2.ports[1], tubo2.port_b);
    
      annotation (uses(Modelica(version="3.2.3")));
    end Pompaggio_modified;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      • 2014-03-24
      • 2017-05-04
      • 1970-01-01
      相关资源
      最近更新 更多