问题标签 [systemmodeler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
156 浏览

modelica - 作为除数的导数在 Dymola 的初始化期间除以零

我构建了一个包含 的导数的模型dy/dx=5,如以下部分所示,但该模型在 Dymola 初始化期间失败,在另一个问题中,它已得到解答。原因是在time=0时,der(x)和的值der(y)都是0,所以会出现除以0的错误。

这是 Dymola 中的结果:
在此处输入图像描述

但是当我在 Wolfram System Modeler 和 OpenModelica 中尝试相同的模型时,模型运行良好。
在 Wolfram System Modeler 中,它der(y)/der(x)=5直接使用方程.

我的问题是:

  1. 为什么相同的模型会在 Dymola 中失败?
  2. Dymola 是否没有能力进行自动符号操作来将这个方程der(y)/der(x)=5转换为der(y)=5*der(x)
  3. 还是 Dymola 中的数值求解器无法处理这种情况? 在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
74 浏览

modelica - Dymola中求解DAE的过程

我试图了解在 Dymola 中解决 DAE 的过程。根据 Dymola 的帮助文档第 13.8 章,Dymola 会首先使用索引缩减算法将原始 DAE 转换为 ODE,然后经过分区和撕裂后得到 BLT 形式,因此 Dymola 可以像 DASSL 一样使用 BDF 方法解决 ODE。

这是 Dymola 的帮助文档的屏幕截图。 在此处输入图像描述

我还从Wolfram mathematica中找到了一些关于如何解决 DAE 的资料,如下图所示,不同阶段可能有不同的策略,我标记了我认为在 Dymola 中采用的方法。我的问题是:

  1. Dymola 是否只是采用我标记的方法?
  2. 或者 Dymola 也采用了 Wolfram Mathematica 的方法,在不同的阶段使用不同的方法?如果是这样,Dymola 如何确定使用哪种方法? 在此处输入图像描述
0 投票
1 回答
77 浏览

modeling - 在“modellica方法”中建模电流控制电机的数学块模型

对于我的一个项目,我用它自己的电流控制器控制一个 BLDC 电机。

为了设计电机控制器,我为流动函数安装了一些时间跟踪:

捕捉整个系统的动态,即电机、电流控制器/驱动器和负载。

J是转子惯量,[kg*m^2]

r阻尼常数(线性摩擦)

tau是扭矩常数 [Nm/A]

u[t]当前输入

der(der(phi))是角加速度

der(phi)角速度

拟合值表示整个系统对于电机、负载和电机的电流控制器/驱动器的“连续”近似来说已经足够好了。在控制方案中,我给出了一个以安培为单位的信号 u(t),我期望一个扭矩和一个角速度作为输出。当时我只需要角速度,但我离题了,这种方法效果非常好,但在数学中进行了拟合和设计。

我想在 modelica 中构建一个更大、更复杂的机器人系统(特别是 Systemmodeler,但是,modelica library 3.2.x),但是我遇到了一些问题。

我的第一次尝试是:

在此处输入图像描述

但是,当使用另一个外部负载(外部模型)进行模拟时,我遇到了很多问题,一些比我更有经验的人告诉我,这种建模形式是“单向”而不是“modelica 方法”,而是更多的simulink形式。

也就是说,它应该是双向的,而不仅仅是数字输出,以便正确地与多体外部模型做出反应,这将连接到。

我的第二次尝试是:

在此处输入图像描述

当连接到我更大的多体模型时,它确实更像预期的那样工作,当施加外部扭矩/负载时,这个模型会产生反应。然而,当模拟这个模型以查看它与纯块模型相比的公平性时,它们无论如何都不相同。我不得不花费大量时间尝试拟合惯性和摩擦数据以获得相似的结果。

所以我的问题是,什么是最好的方法,将纯块模型(数学模型)或至少,我的纯块模型,变成一个更现实的模型,或者至少,将连接输出变成更现实,或者我猜是“非正式”的.

我不想使用我的第二次尝试,因为与我的第一个模型相比,我不能相信与块相比我必须调整的值实际上是正确的,因为它们不适合真实世界数据的值。

0 投票
0 回答
57 浏览

simulation - 在 Modelica 中限制球面关节角度

我想模拟一个连接到球形关节的身体,该关节只能在特定角度范围内自由移动,例如,每个自由度,在 +/- 45 度之间。

我想尝试模拟一个身体的影响(比如说像块站在它的边缘或角落)然后它掉到地板上。身体不应该滑动,但我希望它在球形关节的受限弧线上“反弹”,

盒子 街区

我在系统建模师教育示例中找到了这个弹跳球示例

但是我不适合将其修改为代码,或者我可以找出为此创建块的最佳方法。最后,我想要一个地平面,因为事实证明 systemmodeler 中的地面只是为了外观。

那么问题是如何模拟这个箱体与地平面的坠落和撞击?如果这超出了复杂性,如何将所有自由度的球形关节的角度限制为任意 +/- 角度?

0 投票
0 回答
72 浏览

modelica - Modelica v4.0.0 展示台坏了

我最近迁移到 modelica 版本 4.0.0,我遇到了一些问题,结果是SignalArrow和传感器的一些可视化设置,例如删除absoluteSensor了它们的设置,diameter

Modelica 版本 4 的变化

即:

还有很多其他的事情。这有点令人沮丧,但是我设法发现这些缺失的设置已被移入world课堂,

在这里看到

然而,这些变化不会影响来自传感器和可视化器的这些箭头的直径大小。

例如,在这张图片中,黄色和粉色箭头应该是 5mm(与黑色坐标箭头的直径相同),而不是 modelica 计算出来的。

在此处输入图像描述

我尝试删除所有可视化工具并重新插入它们,禁用然后重新启用它们以及我能想到的所有其他东西。它们的直径是从某个地方计算出来的。然而,我似乎找不到它。

如何解决这个问题,或者这只是在 4.0.0 中被破坏了?

添加代码 v 3.2.3

例子

迁移到 v4.0.0

版本 4 箭头