Pri*_*nka 3 connector default-value modelica
我有一个带有RealInput连接器的 Modelica 模型。通常,值为 0 的恒定源模块连接到该输入,但有时(不经常)使用不同的值或时变信号。
如果没有信号到来(即 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;
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
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |