gpt4 book ai didi

modelica - Modelica 中的抽象开关

转载 作者:行者123 更新时间:2023-12-02 20:17:22 29 4
gpt4 key购买 nike

我想提出一个我之前问过的关于 Modelica array of partial model 的问题。 。考虑以下两个 Controller 之间的切换模型。

model Switch
input Real u;
input Integer sel;
output Real y;
protected
Real x;
equation
if sel == 1 then
y = 0.1 * (0 - u);
der(x) = 0;
else
y = 0.1 * (0 - u) + 0.2 * x;
der(x) = 0 - u;
end if;
end Switch;

让我们忽略这样一个事实:由于 x 的发散,PI Controller 在一段时间内未选择时可能会中断。 。这可以通过重置 x 来修复当选择 PI Controller 时。不过,这不是重点。

我想用两种方式抽象这个开关。首先,在多个参数 Controller 之间进行切换。其次,使用部分模型来抽象 Controller 。让Ctrl是 Controller 的部分模型。

partial model Ctrl
input Real u;
output Real y;
end Ctrl;

我们可以实例化交换机中嵌入的两个 Controller ,如下所示。

model P extends Ctrl;
equation
y = 0.1 * (0 - u);
end P;

model PI extends Ctrl;
protected
Real x;
equation
y = 0.1 * (0 - u) + 0.2 * x;
der(x) = 0 - u;
end PI;

开关的抽象版本应该是这样的:

model Switch
parameter Integer N(min=1);
Ctrl c[N];
input Real u;
input Integer sel(min=1, max=N);
output Real y;
equation
for i in 1:N loop
c[i].u = u;
end for;
y = c[sel].y;
end Switch;

但是,这个模型有一些问题。首先,尚不清楚如何实例化该模型,例如与一个P和一个PI Controller 。其次,我收到一条令我惊讶的警告,即:以下输入缺少绑定(bind)方程:c[<a href="https://stackoverflow.com/questions/29424371/modelica-array-of-partial-model" rel="noreferrer noopener nofollow">1</a>].u

是否可以在 Modelica 中以某种方式表达这个抽象开关?

最佳答案

这不适用于模型数组,因为您无法通过修改将其绑定(bind)到不同的模型。您需要指定 GenericSwitch 内的所有 Controller 。如果需要,您可以自动生成 GenericSwitch 和 Switch 模型。

partial model Ctrl
input Real u;
output Real y;
end Ctrl;

model P
extends Ctrl;
equation
y = 0.1 * (0 - u);
end P;

model PI
extends Ctrl;
protected
Real x;
equation
y = 0.1 * (0 - u) + 0.2 * x;
der(x) = 0 - u;
end PI;

model GenericSwitch
replaceable model MyCtrl1 = Ctrl;
replaceable model MyCtrl2 = Ctrl;
MyCtrl1 c1(u = u);
MyCtrl2 c2(u = u);
input Real u;
input Integer sel;
output Real y;
equation
y = if sel == 1 then c1.y else c2.y;
end GenericSwitch;

model Switch = GenericSwitch(
redeclare model MyCtrl1 = P,
redeclare model MyCtrl2 = PI);

关于modelica - Modelica 中的抽象开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29715165/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com