问题标签 [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 投票
2 回答
1454 浏览

modelica - 在 Modelica (SystemModeler) 中生成白噪声

我正在尝试将测量噪声添加到模拟中。这在例如 Simulink 中是可能的,但在 Modelica 和 SystemModeler 中似乎更难。

关于如何做到这一点的任何想法?

0 投票
1 回答
353 浏览

modelica - 在 Modelica 中限制变量

我正在尝试模拟一个简单的执行器。当我使用以下代码行定义执行器的延伸和缩回长度的限制时,结果是 s_rel 受到限制,但自由法兰无限期移动:

限制连续变量的最佳方法是什么?

0 投票
1 回答
232 浏览

modelica - Modelica - 增量不遵循条件

我正在 Wolfram System Modeler 中创建 Max Per Interval 块。

为了便于解释,我只是将 Max 值设置为 10。

运行时,索引立即增加到无穷大。我觉得我的逻辑有问题,但我想不通。

该代码应该检查我们是否仍在间隔时间中,并且当我们跨入下一个间隔时间时,它将“currentMax”值设置为零。这将重置我在另一个块中实现的最大值。

任何帮助,将不胜感激。谢谢。

编辑:代码部分表单示例。

0 投票
0 回答
184 浏览

wolfram-mathematica - 如何在 Wolfram SystemModeler 4.1 中使用 DESLib

作为 System Modeler 4.1 的新手,我对排队系统很感兴趣,发现了 DESLib,尤其是 ArenaLib。不幸的是,DESLib 1.7 似乎不能在这个环境中工作(版本问题?)。

有谁知道如何下载、安装和测试 DESLib?

问候沃尔克

0 投票
0 回答
138 浏览

modelica - 当 .. elsewhen 方程似乎在 Wolfram Systemmodeler 中反转

当我在 Wolfram Systemmodeler 中尝试这个简单的 modelica 代码时:

结果是 1、2、3、4、5,像这样:Model bug simulatiom。当方程似乎以相反的顺序被激活。

另一方面,将“方程式”更改为“算法”,并且(当然)将“=”更改为“:=”代码变为:

结果和预期的一样,1、5、4、3、2,像这样:Model nobug simulation

这是 Wolfram SystemModeler 实现中相对基本的问题,还是我看不到其他问题?

0 投票
3 回答
207 浏览

modelica - Modelica MultiBody 库中身体位置坐标的动态变化

我对 Modelica 很陌生,几个月前因为我一直在做的一个项目才开始。主要使用标准 Modelica 发行版中包含的 MultiBody 库来处理多体机械系统。

我需要根据模拟期间动态计算的坐标更改身体位置,但我找不到这样做的方法。

这是计算给定系统质心位置的向量变量:

我想在坐标 (CMG[1], CMG[2]) 处放置一个无质量体 (FixedShape),作为在模拟过程中显示质心及其运动的一种方式。

有没有办法做到这一点?

我试图将正文附加到固定的翻译组件,但它需要一个参数 (PARAM) 而不是变量 (VAR),这会导致错误。

使用的软件:Modelica 3.2.2 和 Wolfram SystemModeler 5.0。

0 投票
2 回答
263 浏览

modelica - 在两个法兰之间切换

我目前正在使用标准 Modelica 发行版中包含的 MultiBody 库来处理多体机械系统。

我需要在法兰之间实现切换,以便为给定的关节选择位置或力控制。

但这种方法不起作用,系统不平衡:10 个方程和 12 个变量。

有没有办法做到这一点?

0 投票
2 回答
636 浏览

modelica - OpenModelica 求解器达到最大迭代次数但无法找到根

我正在尝试模拟 3 个滑动体的 1D 系统,正如我在这里解释的那样

在此处输入图像描述

这是我实现的代码:

Wolfram SystemModeler 能够运行模拟直到 t=6 秒,但结果不是我所期望的,正如我在这里解释的那样。当我使用 OpenModelica 解决模拟时,我收到以下错误:

C:/Users/foo/AppData/Local/Temp/OpenModelica/OMEdit/friction.exe -port=64457 -logFormat=xmltcp -override=startTime=0,stopTime=10,stepSize=0.02,tolerance=1e-6,solver =dassl,outputFormat=mat,variableFilter=.* -r=friction_res.mat -jacobian=coloredNumerical -w -lv=LOG_STATS 警告:已达到最大迭代次数但未找到根 警告:已达到最大迭代次数但未找到根 错误在时间 0.2 求解非线性系统 42 的错误 在时间 0.2 求解非线性系统 42 非线性系统 42 失败:在 t=0.2 求解非线性系统 42 在时间=0.2 失败。有关详细信息,请使用 -lv LOG_NLS。模拟过程失败。以代码 -1 退出。

在此处输入图像描述

如果您能帮助我了解问题所在以及如何解决,我将不胜感激?

0 投票
1 回答
129 浏览

modelica - Modelica:层次模型中的方程平衡

我有以下简单的分层模型,其中包括室内的反应。反应模型只是将质量速率设置为质量,并将其连接到包围它的腔室。

现在在我看来,总共有五个变量:massreaction.conn.massreaction.conn.massRateconn.massconn.massRate。并且有五个方程:方程部分中的两个,即。

一个来自反应

和两个来自连接方程:

所以我们有五个变量的五个方程。求解器逻辑可以像这样简单地组合这些方程

并且由于质量被赋予了一个起始值,鲍勃是你的叔叔。mass应该随着时间的推移而增加。但是我的模拟环境(Wolfram|One)说

有人可以解释发生了什么吗?请注意,如果我将反应器放在腔室外(将反应中的符号反转为 give conn.massRate = -conn.mass),它会按预期工作。

0 投票
3 回答
293 浏览

modelica - 如何在 Modelica 中使用模型中的单位属性?

动机

Modelica 确实将测量单位(例如 SI 单位和非 SI 单位)存储为与变量相关的属性。以下是非 SI 单位的示例:

因为对于经济学模型来说,以秒为单位给出比率是相当尴尬的,我想编写一个相当通用的单位转换函数,它允许转换时间单位。因此,理想情况下,转换为另一个时基的函数应该使用三个输入和一个输出:

问题

如果我们假设某个时间值的变量已经具有特定的单位属性(例如“mo”),那么在模型中使用该元信息是有意义的。

问题 1:如何在模型中访问单元等元信息?

理想情况下,以下内容会很棒:

或者

问题 2:如何在函数中分配单元等元信息?

在示例中,我们当然希望以正确的时间单位返回输出值。所以理想情况下,我们希望拥有:

不幸的是,input由于可变性不同,使用 an 会产生错误:单位属性应该具有恒定可变性,但输入变量具有参数可变性。(使用一个函数——这很好——也因为同样的原因而失败。)