Thiếu giá trị bắt đầu
Oct 23 2020
Đây là một câu hỏi tiếp theo . Sau khi tôi giải quyết lỗi kỳ dị cấu trúc. Nó ném cho tôi một lỗi mới nói rằng
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!
Mặc dù tôi cung cấp các giá trị bắt đầu trong quá trình khởi tạo và khởi tạo các phần phụ, tôi vẫn gặp lỗi này. Bạn có thể cho tôi một gợi ý về việc giải quyết vấn đề này?
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;
Trả lời
2 HansOlsson Oct 23 2020 at 13:07
Để giới thiệu giá trị phỏng đoán cho một phái sinh, bạn phải thực hiện một số việc như sau trong Modelica:
Real dummyStart(start=...);
equation
dummyStart=der(Hochdrucktank.V);
hoặc có thể:
Real dummyStart(start=...)=der(Hochdrucktank.V);
Trong một số trường hợp, một biến bổ sung là không cần thiết vì đã tồn tại một biến như vậy và việc tìm ra nó chỉ là vấn đề.