【问题标题】:Redundant Connection of Arrayed Component阵列元件的冗余连接
【发布时间】:2019-06-14 00:50:14
【问题描述】:

收到警告称我有“冗余连接(由于其他连接)”。我将一个HeatPort 链接到几个通过使用数组进行扩展的组件。请参阅下面的代码段。

each 的使用似乎不起作用,或者我没有正确使用它。

Redundant connection(s) (due to other connections):
connect(topFrontExteriorConvection.solid, module3_PipeComponents[2].port_a);
connect(topFrontExteriorConvection.solid, module3_PipeComponents[3].port_a);
connect(topFrontExteriorConvection.solid, module3_PipeComponents[4].port_a);
connect(topFrontExteriorConvection.solid, module3_PipeComponents[5].port_a);
connect(topFrontExteriorConvection.solid, module3_PipeComponents[6].port_a);
in the connection set.
ecoCeramicRadiation.T =module3_PipeComponents[1].port_a.T =module3_PipeComponents[2].port_a.T =module3_PipeComponents[3].port_a.T =module3_PipeComponents[4].port_a.T =module3_PipeComponents[5].port_a.T =module3_PipeComponents[6].port_a.T =topFrontExteriorConvection.solid.T
Note that this is not an actual error, and the redundancy can be removed in several ways.

.solid.port_a 之间的热量平衡在数学上应该是正确的,但我可能没有在 Modelica 中正确设置平衡。请让我知道是否有一种方法可以创建这些连接而不会使它们变得多余。虽然这只是一个警告,但我收到了基于这些警告的以下错误。

Edit 1我设置了一个辅助模型,其中组件不再排列,而是在模型中复制了几次。热端口连接到其他几个热端口,但我仍然收到上述消息。连接如下所示:

连接方式有问题吗?

Edit 2添加代码sn-ps。以下是冗余连接警告的相关代码。此模型有更多代码,但为简洁起见已将其删除。

  parameter Integer numPipes=6 "Number of repeating pipes.";

  Buildings.HeatTransfer.Convection.Exterior topFrontExteriorConvection(
    hFixed=exteriorConvectionCoefficientFixed,
    conMod=extMode,
    azi=Azimuth,
    til=ecoCeramicTopPanelTilt,
    A=surfaceAreaTop);

  Components.Module3_PipeComponents module3_PipeComponents[numPipes](
    each segmentLength=segmentLength,
    each thicknessEco=thicknessEco,
    each pipeVolume=pipeVolume,
    each fluidFlow=fluidFlow,
    each initialFluidTemp=initialFluidTemp,
    each fluidDensity=fluidDensity,
    each pipeDiameter=pipeDiameter,
    each pipeLength=pipeLength,
    each surfaceAreaTop=segSurfaceArea);

equation
  connect(fluidInlet, module3_PipeComponents[1].flowPort_a);
  for i in 1:numPipes - 1 loop
    connect(module3_PipeComponents[i].flowPort_b, module3_PipeComponents[i+1].flowPort_a);
  end for;
  for i in 1:numPipes loop
    connect(ecoCeramicRadiation, module3_PipeComponents[i].port_a);
    connect(topFrontExteriorConvection.solid, module3_PipeComponents[i].port_a);
    connect(module3_PipeComponents[i].port_b, topInsulationConduction.port_a);
  end for;
  connect(module3_PipeComponents[numPipes].flowPort_b, fluidOutlet);

【问题讨论】:

  • 您能否提供模型的文本,因为通常很难从图表中看到所有内容。对于数组组合的连接,则更加困难,因为其中可能存在带有连接的 for 循环,并且它们根本没有显示在图中。
  • 你好@HansOlsson,谢谢你的建议。我添加了一个代码段。

标签: modelica dymola fmi


【解决方案1】:

问题在于以下几行:

for i in 1:numPipes loop
    connect(ecoCeramicRadiation,              module3_PipeComponents[i].port_a);
    connect(topFrontExteriorConvection.solid, module3_PipeComponents[i].port_a);
...
end for;

这意味着涉及 numPipes+2 个连接器的 numPipes*2 连接,如果 numPipes 足够大,则意味着冗余连接。

避免这种情况的一种方法是:

for i in 1:numPipes loop
    connect(ecoCeramicRadiation,              module3_PipeComponents[i].port_a);
...
end for;
connect(ecoCeramicRadiation, topFrontExteriorConvection.solid);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 2011-04-16
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多