带条件连接器的方程式

时间:2018-07-25 07:35:53

标签: modelica dymola openmodelica

我试图计算两个连接器之间的压力差,但是其中一个条件是参数calc_dp的条件。仅当calc_dp为true时才计算dp。

我尝试过这样的事情:

equation

if calc_dp then

  inlet.p - outlet.p = dp;

else

  dp = 0;

end if; 

这不起作用,我收到一条错误消息,说由于移除连接器而导致方程的一部分丢失。

1 个答案:

答案 0 :(得分:4)

问题是端口optipng可能有条件存在。如果存在outlet,则这些方程应该很好。否则,变量outlet不存在,因为outlet.p未实例化。

以下变通办法实际上来自outlet

Modelica.Electrical.Analog.Interfaces.ConditionalHeatPort

更多说明:由于Modelica模型不是因果关系,因此强烈建议使用package ConditionalPort connector Port Modelica.SIunits.Pressure p "Pressure"; end Port; model ConditionalTwoPort parameter Boolean useOutlet = false "Enable outlet, if true"; Port inlet "Port" annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); Port outlet(p=pOutlet) if useOutlet "Conditional port" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); Modelica.SIunits.Pressure dp "Pressure difference"; Modelica.SIunits.Pressure pOutlet "Pressure of conditional port, if present"; equation if not useOutlet then pOutlet = 0; end if; dp = inlet.p - pOutlet; end ConditionalTwoPort; end ConditionalPort; port_a而不是port_binlet