【问题标题】:Nonlinear system solver could not converge非线性系统求解器无法收敛
【发布时间】: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


【解决方案1】:

我对该模型进行了更深入的研究,但我不知道为什么其中任何一个实际上都适用于您的系统。我试图模拟模型EV_LT 并遇到了结构奇点,这在系统上非常明显。

您定义了方程port_e.dbM + port_s.dbM = 0.0;,因为port_eport_s 都没有连接到任何东西,所以生成了方程port_e.dbM = 0.0port_s.dbM = 0.0(对于未连接的连接器,流量设置为零)。这是三个方程,只有 2 个未知数 -> 结构奇点。编译器实际上试图通过区分这些(索引减少)来解决这个问题,但正如您可能想象的那样,这不会产生任何额外的信息。

你确定你模拟了上面所说的精确模型吗?

如果您只讨论控制器的模拟,那确实有效,但非常令人兴奋,因为它根本不依赖于时间。

编辑:你能提供你正在使用的 omc 版本吗?我用 1.14 和 1.16~dev 对其进行了测试。也许你有一个旧版本,应该升级。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 2019-09-22
    • 2013-11-14
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    相关资源
    最近更新 更多