未连接 RealInput 的默认值

default value for not connected RealInput

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

是否有 possibility/solution 到 不连接 常量源块并更改模型以使用 默认值 如果没有信号(即 RealInput 从外部未连接)?目前,如果 RealInput 没有从外部连接,我会收到一个模型不平衡的警告。

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

使输入有条件并在其未激活时使用内部常量块。

下面是一个最小的例子(没有图形注释,使代码更流畅):

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;

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

激活它

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

也就是说:不允许写

y = if useInput then u else 0;

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