首页 > 解决方案 > 缺少起始值

问题描述

这是一个后续问题。在我解决了结构奇点错误之后。它给我一个新的错误说


Hochdruckreiniger2 : Iteration variable "der(Hochdrucktank.V)" is missing start value!
Iteration variable "der(Hochdrucktank.medium.h)" is missing start value
Iteration variable "der(Niederdrucktank.V)" is missing start value!
Iteration variable "der(Niederdrucktank.medium.h)" is missing start value!
Iteration variable "der(Swept1.medium.p)" is missing start value! 

尽管我在初始化和初始化小节中给出了起始值,但我得到了这个错误。你能给我一个解决这个问题的建议吗?


model Hochdruckreiniger2
    //Declaration(s)
    Real V_max = 0.000003;
    Real V_tod = 0.000002;
    Real pi = 3.14;
    Real N = 2800;
    Real T_per;
    Real f;
    Real opening_NP;
    Real opening_HP;
    //Component(s)
    Modelica.Fluid.Machines.SweptVolume Swept1 (
        pistonCrossArea = 0.0001131,
        clearance = 0.000002,
        portsData = {Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=
        0.1),Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=
        0.1)},
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        nPorts = 2,
        use_portsData = true,
        p_start = 100,
        use_T_start = true,
        T_start = 293.15,
        V(start = 10),
        U(start = 20),
        m(start = 10));
    inner Modelica.Fluid.System system;
    Modelica.Fluid.Vessels.OpenTank Niederdrucktank (
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        nPorts = 1,
        height = 40.84,
        crossArea = 10,
        portsData = {Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=
        0.1)},
        V(start = 10));
    Modelica.Fluid.Vessels.OpenTank Hochdrucktank (
        redeclare package Medium = Modelica.Media.Water.StandardWater,
        nPorts = 1,
        height = 4997,
        crossArea = 10,
        portsData = {Modelica.Fluid.Vessels.BaseClasses.VesselPortsData(diameter=
        0.1)},
        V(start = 100));
    Modelica.Mechanics.Translational.Sources.Position Posit1 (exact = true);
    Modelica.Blocks.Sources.Sine Sine1 (freqHz = 46.72, amplitude = 0.0000005);
    Modelica.Fluid.Valves.ValveIncompressible Hochdruckventile (
        dp_nominal = 66.6175,
        m_flow_nominal = 0.04873,
        rho_nominal = 1019.921,
        opening = opening_HP,
        redeclare package Medium = Modelica.Media.Water.StandardWater);
    Modelica.Fluid.Valves.ValveIncompressible Niederdruckventile (
        dp_nominal = 65.21,
        m_flow_nominal = 0.04873,
        rho_nominal = 998.388,
        opening = opening_NP,
        redeclare package Medium = Modelica.Media.Water.StandardWater);


equation
    T_per=pi/(180*3600*N/60);//Radian  
        f=((V_max-V_tod)/2)*sin((2*pi*time*T_per)+(V_tod+(V_max-V_tod)/2));
          if der(f)>=0 then
            opening_NP=1;
            opening_HP=0;
           else
            opening_NP=0;
            opening_HP=1;
          end if;
    //Connection(s)
    connect(Sine1.y, Posit1.s_ref);
    connect(Posit1.flange, Swept1.flange);
    connect(Hochdrucktank.ports[1], Hochdruckventile.port_a);
    connect(Hochdruckventile.port_b, Swept1.ports[2]);
    connect(Niederdrucktank.ports[1], Niederdruckventile.port_a);
    connect(Niederdruckventile.port_b, Swept1.ports[1]);
end  Hochdruckreiniger2;

标签: modelica

解决方案


要为导数引入猜测值,您必须在 Modelica 中执行以下操作:

  Real dummyStart(start=...);
equation
  dummyStart=der(Hochdrucktank.V);

或者可能:

  Real dummyStart(start=...)=der(Hochdrucktank.V);

在某些情况下,不需要额外的变量,因为已经存在这样的变量,只需找到它即可。


推荐阅读