medium-Modelica的der()函数中的起始值问题
我正在Ansys Twin builder中使用Modelica建模。虽然我给出了初始化值,但在编译代码时遇到了初始化错误。误差如下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
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;
你知道如何解决这个问题吗?提前感谢您的帮助 这回答了你的问题吗?不,它不回答。我发布了这个问题,因为不在评论中而是在新的帖子中提问更合适。