未连接 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
源代码块、RealOutput
和 connect
语句。
我有一个带有 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
源代码块、RealOutput
和 connect
语句。