Modelica Dymola_InlineAfterIndex还原

Modelica Dymola_InlineAfterIndex还原,modelica,dymola,Modelica,Dymola,这个问题与我在玩一些积木时遇到的一个问题有关。这是我的模型 如您所见,有两种类型的连接,第一个连接的输入(从上到下)是u[1]、u[2]、u[3],其他块都是自解释的(除了步骤输入块的startTime=5) 据我所知,第一种连接只输出角速度,而不输出角和角加速度(它们都是零),这有点不现实(我会解释为什么我会这样做)。第二个连接也输出角速度 我的问题是,在第二次连接中,离合器似乎工作正常(5秒后离合器接合(相对角速度w_rel=0) 但是,第一个连接的行为完全不同。我们可以看到,它们都是法兰连

这个问题与我在玩一些积木时遇到的一个问题有关。这是我的模型

如您所见,有两种类型的连接,第一个连接的输入(从上到下)是
u[1]、u[2]、u[3]
,其他块都是自解释的(除了步骤输入块的
startTime=5

据我所知,第一种连接只输出角速度,而不输出角和角加速度(它们都是零),这有点不现实(我会解释为什么我会这样做)。第二个连接也输出角速度

我的问题是,在第二次连接中,离合器似乎工作正常(5秒后离合器接合(相对角速度
w_rel=0

但是,第一个连接的行为完全不同。我们可以看到,它们都是法兰连接,角速度都是根据
法兰a/b.phi
计算得出的,因此我们应该预计,无论输入(realexpersion1)是什么,离合器中都没有角速度差。但有趣的是,当我模拟模型时,离合器的左法兰没有移动,而右法兰在旋转。下面是我的两个结果图

连接1

连接2


实际上,我应该期望看到法兰a.phi法兰b.phi都是零,然后我意外地删除了移动块中的注释
\uu Dymola\u InlineAfterIndexReduction=true
,然后模型的行为与我预期的一样。如果有人能帮我解释我所看到的,我将不胜感激。非常感谢

移动模型的文档清楚地说明

用户必须保证输入信号与 彼此

在你的情况下,它们并不一致。所以我对你得到一个奇怪的答案并不感到惊讶。我不清楚你为什么要走这条路。你在信息中暗示你会解释原因,但我确实不理解你的动机。我怀疑
Move
模型的存在是为了允许用户提供他们自己的位置、速度和加速度的显式函数,Dymola将在索引缩减期间使用这些函数,而不是从基本方程生成这些函数。除非您可以提供一致的函数,否则您真的不应该使用这个块


你应该使用一个只指定位置、速度和加速度的源。如果这是不可能的,那么恐怕您必须解释原因,以便我们能够尝试了解您在这里真正想要实现的目标。

移动模型的文档清楚地说明了这一点

用户必须保证输入信号与 彼此

在你的情况下,它们并不一致。所以我对你得到一个奇怪的答案并不感到惊讶。我不清楚你为什么要走这条路。你在信息中暗示你会解释原因,但我确实不理解你的动机。我怀疑
Move
模型的存在是为了允许用户提供他们自己的位置、速度和加速度的显式函数,Dymola将在索引缩减期间使用这些函数,而不是从基本方程生成这些函数。除非您可以提供一致的函数,否则您真的不应该使用这个块


你应该使用一个只指定位置、速度和加速度的源。如果这是不可能的,那么我恐怕你必须解释为什么,这样我们才能试着了解你在这里真正想要实现的目标。

谢谢Micheal的回答,我认为我没有很好地解释我的问题,所以很难理解我所说的重点。对不起~。但我真的很感激你回答了Dymola没有使用基本方程,而是使用指数缩减后的“方程”。我提出的模型只是我在真实模型基础上构建的一个示例。人们使用移动块(相同的代码)作为滤波器,并强制u[2],u[3]为零,因此它只输出准静态信号。它是通过离合器传递的,这使得我的东西不起作用。谢谢Micheal的回答,我想我没有很好地解释我的问题,所以很难理解我所说的要点。对不起~。但我真的很感激你回答了Dymola没有使用基本方程,而是使用指数缩减后的“方程”。我提出的模型只是我在真实模型基础上构建的一个示例。人们使用移动块(相同的代码)作为滤波器,并强制u[2],u[3]为零,因此它只输出准静态信号。它通过离合器传递,使我的东西不能工作。