【发布时间】:2019-11-19 13:16:32
【问题描述】:
我正在使用默认的 dassl 积分器。在我的模型中,使用布尔值控制音量以打开或关闭 4 个阀门(2 个一起工作)。在布尔值状态变化(从 1 到零)以毫秒为单位后,我收到以下错误消息:
有什么方法可以进一步了解导致问题的原因吗?
model CONTROLLER
Modelica.Blocks.Interfaces.RealInput V_LT_min;
Modelica.Blocks.Interfaces.RealInput V_LT_max;
Modelica.Blocks.Interfaces.RealInput V_LT_lev;
Modelica.Blocks.Interfaces.BooleanOutput open1(start=true);
Modelica.Blocks.Interfaces.BooleanOutput open2(start=false);
equation
when (V_LT_lev <= V_LT_max) then
open1 = true;
elsewhen (V_LT_lev < V_LT_min) then
open1 = false;
end when;
open2 = not open1;
end CONTROLLER;
model EV_LT
package SI = Modelica.SIunits;
package Medium = Modelica.Media.Water.WaterIF97_ph;
Thermofluid_connector port_e;
Thermofluid_connector port_s;
parameter Real Kv=3.79;
Modelica.Blocks.Interfaces.BooleanInput open;
Real dbM;
Real delta_p;
equation
//dbM=port_e.dbM;
delta_p = (port_e.p - port_s.p)/10^5;
if (delta_p >= 10^(-5)) then
dbM = Kv*sqrt(delta_p)*1000/3600;
else
dbM = 0;
end if;
port_e.dbM = if open then dbM else 0;
port_e.dbM + port_s.dbM = 0;
port_s.dbH = port_s.dbM*port_s.h;
port_e.h = port_s.h;
end EV_LT;
connector Thermofluid_connector
package SI = Modelica.SIunits;
SI.AbsolutePressure p;
flow SI.MassFlowRate dbM;
SI.SpecificEnthalpy h;
flow SI.EnthalpyFlowRate dbH;
equation
end Thermofluid_connector;
【问题讨论】:
-
您是否直接影响阀门状态的导数?如果将其设置为零,则可能是问题所在。您可能已经创建了一个需要以不同方式建模的具有动态差分索引的系统。如果您能提供示例代码会有所帮助。
-
我添加了正在使用的控制器型号
-
阀门质量流量公式为:port_e.dM=if open dbM else 0;其中 dbM=Kvdelta_p*rho
-
如果您可以提供 TEXT 形式的示例模型会有所帮助,以便其他人可以将其复制并粘贴到他们的工具中并运行它。在您提供的图片中,您在两种情况下都使用
-
我添加了阀门模型和控制阀门状态开/关的控制器模型,感谢@matth
标签: modelica openmodelica