为什么Modelica.Blocks.Continously.Derivative输入不能将Modelica.Blocks.Sources.CombiTimeTable作为输入?

问题描述 投票:0回答:1

我是 Modelica 新手。

我使用 OpenModelica 连接编辑器完成了此操作。

使用以下代码

model chariot_portique
  Modelica.Blocks.Sources.CombiTimeTable combiTimeTable(extrapolation = Modelica.Blocks.Types.Extrapolation.HoldLastPoint, table = [0, 0; 4, 3; 8, 3; 12, 0; 16, 0; 20, -3; 24, -3; 28, 0], tableOnFile = false) annotation(
    Placement(transformation(extent = {{-80, 20}, {-60, 40}})));
  Modelica.Blocks.Continuous.Derivative derivative(T = 1, k = 1)  annotation(
    Placement(visible = true, transformation(origin = {-26, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
  connect(combiTimeTable.y, derivative.u) annotation(
    Line(points = {{-58, 30}, {-38, 30}}, color = {0, 0, 127}));
  annotation(
    experiment(StopTime = 20),
    uses(Modelica(version = "4.0.0")));
end chariot_portique;

不幸的是验证这个模型会引发

The type of variables combiTimeTable.y and derivative.u are inconsistent in connect equations.

如何修复?

我尝试在 CombiTimeTable 和 Derivative 之间插入 SISO 或 DiscreteSISO 块。但没有成功。

modelica derivative openmodelica
1个回答
0
投票

y
的输出
CombiTimeTable
是一个向量,但导数块需要标量输入。您必须向连接语句添加索引并指定应使用输出向量的哪个元素。

您有一个包含 2 列的表,因此

y
的大小为 1(第一列始终是时间,所有其他列都是输出值)。因此,您必须在连接中添加
[1]

  connect(combiTimeTable.y[1], derivative.u) annotation (...);
© www.soinside.com 2019 - 2024. All rights reserved.