未连接 RealInput 的默认值

Pri*_*nka 3 connector default-value modelica

我有一个带有RealInput连接器的 Modelica 模型。通常,值为 0 的恒定源模块连接到该输入,但有时(不经常)使用不同的值或时变信号。

如果没有信号到来(即 RealInput 未从外部连接) ,是否有可能/解决方案不连接恒定源块并将模型更改为使用默认值?目前,我收到一条警告:如果 RealInput 未从外部连接,则模型不平衡。

我正在寻找类似的解决方案,例如 Modelica 函数,其中可以为输入或参数定义默认值,如果没有指定其他内容,则可以有默认值。

mar*_*rco 5

使输入有条件,并使用内部常量块(如果其未激活)。

下面是一个最小的示例(没有图形注释,以使代码更简洁):

block ConditionalInput
  import Modelica.Blocks;

  parameter Boolean useInput = false "true: use input connector for source signal. false: use 0";
  Blocks.Interfaces.RealInput u if useInput  "Variable input value";

  // Output only needed for exemplary equation
  Blocks.Interfaces.RealOutput y "Output value";

protected 
  Blocks.Interfaces.RealOutput val "Helper to access the actual value";
  Blocks.Sources.Constant const(k=0) if not useInput;

equation 
  connect(const.y, y);
  connect(u, y);

  // Exemplary equation
  y = val * 3;

end ConditionalInput;
Run Code Online (Sandbox Code Playgroud)

您可以简单地实例化该块,它将使用 0 val。在需要输入的情况下,通过设置 激活它useInput=true

注意:此示例使用条件组件。Modelica 标准仅允许在 connect 语句中使用它们。u不允许以正则方程进行访问,因此RealOutput val包含受保护的方程。

换句话说:不允许写

y = if useInput then u else 0;
Run Code Online (Sandbox Code Playgroud)

因此需要受保护的Constant源代码块、RealOutput和语句。connect