medium-Modelica的der()函数中的起始值问题

medium-Modelica的der()函数中的起始值问题,modelica,Modelica,我正在Ansys Twin builder中使用Modelica建模。虽然我给出了初始化值,但在编译代码时遇到了初始化错误。误差如下 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

我正在Ansys Twin builder中使用Modelica建模。虽然我给出了初始化值,但在编译代码时遇到了初始化错误。误差如下

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;
    Real dummyStart_V_hochdrucktank(start=0);
    Real dummyStart_V_niederdrucktank(start=0);
    Real dummyStart_h_sweptvolume(start=0);
    Real dummyStart2(start=0);
    Real dummyStart3(start=0);
    //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)},
        h_start = 100,
        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)},
        h_start = 100,
        V(start = 100));
    Modelica.Mechanics.Translational.Sources.Position Posit1 (exact = true);
    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);
    Modelica.Blocks.Sources.Sine Sine1 (amplitude = 0.000000629669, freqHz = 46.6666, offset = 0.00000313588);


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;
    dummyStart_V_hochdrucktank=der(Hochdrucktank.V);
    dummyStart_V_niederdrucktank=der(Niederdrucktank.V);
    dummyStart2=der(Hochdrucktank.medium.h);
    dummyStart3=der(Niederdrucktank.medium.h);
    dummyStart_h_sweptvolume=der(Swept1.medium.p);
    //Connection(s)
    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]);
    connect(Sine1.y, Posit1.s_ref);
end  Hochdruckreiniger2;
迭代变量“der(Hochdrucktank.medium.h)”缺少开始 价值

迭代变量“der(Niederdrucktank.medium.h)”缺少开始 价值

迭代变量“der(Swept1.medium.p)”缺少起始值

守则如下:

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;
    Real dummyStart_V_hochdrucktank(start=0);
    Real dummyStart_V_niederdrucktank(start=0);
    Real dummyStart_h_sweptvolume(start=0);
    Real dummyStart2(start=0);
    Real dummyStart3(start=0);
    //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)},
        h_start = 100,
        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)},
        h_start = 100,
        V(start = 100));
    Modelica.Mechanics.Translational.Sources.Position Posit1 (exact = true);
    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);
    Modelica.Blocks.Sources.Sine Sine1 (amplitude = 0.000000629669, freqHz = 46.6666, offset = 0.00000313588);


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;
    dummyStart_V_hochdrucktank=der(Hochdrucktank.V);
    dummyStart_V_niederdrucktank=der(Niederdrucktank.V);
    dummyStart2=der(Hochdrucktank.medium.h);
    dummyStart3=der(Niederdrucktank.medium.h);
    dummyStart_h_sweptvolume=der(Swept1.medium.p);
    //Connection(s)
    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]);
    connect(Sine1.y, Posit1.s_ref);
end  Hochdruckreiniger2;

你知道如何解决这个问题吗?提前感谢您的帮助

这回答了你的问题吗?不,它不回答。我发布了这个问题,因为不在评论中而是在新的帖子中提问更合适。