问题标签 [dymola]

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 回答
1077 浏览

inheritance - Modelica - 在扩展模型中更改默认介质 (Dymola)

我想更改扩展模型中的默认介质,以便新值显示在“文档”选项卡中。例如:

不幸的是,我无法弄清楚为什么模型 C 的文档仍然说 Medium 的默认值是 PartialMedium 或者我如何改变这种行为!当我尝试重新定义模型时,也会发生同样的事情。

(一个例子是继承自 Modelica.Fluid.Pipes.DynamicPipe 的类,它为 Medium 包或 HeatTransfer 和 FlowModel 模型设置不同的默认值)

我需要在模型 (C) 中定义这些值,因为我正在尝试用约 80 根管道对加热回路进行建模,并且不想一遍又一遍地定义这些值。

是否可以以某种方式清理文档?

提前非常感谢!

0 投票
1 回答
2765 浏览

simulink - 在 Simulink 中初始化 Dymola FMU

我在尝试使用 Simulink 中的 fmu 文件模拟模型时遇到了一个问题:

我正在使用 Dymola/Simulink 接口的 Modelon FMI 工具箱将 Model-Exchange 类型的 fmu 文件(1.0 版)导入 Simulink 模型。我有一个 Matlab m 文件,它以编程方式依次模拟模型,保存模型的最终内部状态以在下一次模拟中进行初始化。模拟的第一次迭代运行没有错误,但在第二次迭代中,Matlab 在调用模拟时返回以下错误:

模块 = partial_run_sim2/BasicModels.System_model_final_Sim,日志级别 = 错误:[][FMU 状态:错误] fmiInitialize:dsblock_ 失败,QiErr = 1
模块 = partial_run_sim2/BasicModels.System_model_final_Sim,日志级别 = 错误:[][FMU 状态:错误]可能的错误(非详尽): 1. 未找到许可证文件。使用环境变量“DYMOLA_RUNTIME_LICENSE”来指定您的 Dymola 许可证文件。2. 模型引用了目标机器上不存在的外部数据,至少不在同一位置。'partial_run_sim2/BasicModels.System_model_final_Sim' 中的 S-function 'sfun_fmu_me_1_0' 报告的错误:fmiInitialize 在 initialize_fmu_model_first_time 返回错误。有关 FMU 模型打印的更多信息,请参阅命令窗口。

我知道我的 Dymola 和 FMI 工具箱许可证是最新的。

m文件中的模拟调用是:

其中“model”是 Simulink .slx 模型文件,“model_cs”是 Simulink 配置设置变量。我已经设置了配置,以便模型从工作区加载初始状态,并且我已经将之前的迭代最终状态保存到该工作区变量。此操作也发生在第一次迭代中,尽管初始状态与 fmu 文件中的默认初始状态相同。我怀疑第一次迭代运行没有问题,因为初始化与默认值相同,但随后的迭代具有不同的初始化值,这与 fmu 块不一致。

我知道使用 fmi 函数在 Matlab 中模拟 fmu 文件的能力,但是这些方法不允许对系统状态进行尽可能多的透明度,这阻碍了顺序模拟。但是,我对任何允许这种模拟的方法持开放态度。

非常感谢有关在 Matlab/Simulink 中的 fmu 文件中初始化系统状态的任何建议。谢谢你。

0 投票
2 回答
323 浏览

dymola - Dymola 中的实时优化

我想知道在 Dymola 中使用过优化库的人是否能够在没有明确的植物本构方程输入到标准函数的情况下使用 RealtimeOptimization 函数?具体来说,我试图使用我模型的一些状态作为标准函数,但是当我y[1] := mymodel.state;在状态周围输入带或不带引号时,Dymola 拒绝该函数。任何想法都会非常有帮助。谢谢你。

0 投票
1 回答
2445 浏览

modelica - 如何在 Modelica 仿真期间确定上一个时间步的值?

如何在 Modelica 仿真期间确定上一个时间步的值?我有等式Q=m*c*(Ts2-Ts1-Tr),我需要从中提取Ts2价值Ts1

  • Ts2- 是时间步 2 的值
  • Ts1- 是上一个时间步的值
  • Ts是输入信号,它在时间上有变化。每一步都有不同的价值。在我的情况下,时间步长是 1s。其他值是固定的。

我可以在方程变量中设置time吗?例如:

还是应该在这个模型中输入?

关于 Tymofii

0 投票
2 回答
1495 浏览

dymola - 如何使用 dymola 生成具有 64 位 dll 的 FMU

我需要使用生成带有64-bit-dll 的fmu-file。 条件是: 我使用,但fmu-file32-bit-dll 我搜索了互联网,我发现我应该设置标志 Advanced.CompileWith64=2。但问题是,我找不到设置 Advanced.CompileWith64=2 的位置。 任何人都知道我可以在哪里设置 Advanced.CompileWith64 的值?


0 投票
1 回答
2371 浏览

modelica - 处理 FMU 的 C/C++ 库

你知道是否有一个 C 库来处理 FMU 和运行模拟,包括一个好的求解器?

据我所知有:

  • QTronic 的 FMUSDK
  • Modelon 的 FMI 库

两者都可以打开 FMU,但只允许运行 FMU 以使用简单的欧拉求解器进行联合仿真。

包括处理不连续性但不在 C 中的良好求解器的库是:

  • Modelon 的 PyFMI:对于 Python
  • 来自 Ptolemy 的 JFMY:对于 Java(不确定这是否包括一个好的求解器)
0 投票
2 回答
1355 浏览

dymola - Dymola 标志列表

可以通过在“命令”窗口中设置标志来更改 Dymola 中的某些设置:

Dymola 屏幕截图

标志的一些示例是:

  • Advanced.AutoFormatting
  • Advanced.PedanticModelica
  • Advanced.LogStartValuesForIterationVariables
  • Hidden.PrintFailureToDifferentiate

是否有所有 Dymola 标志的完整列表?
或者,更好的是,打印这样一个列表的命令?
或者,更好的是,像about:configFirefox 中的?

特别是,我想将Save contents in one file复选框的默认设置更改为,Directories - No Questions因为版本控制软件(在我的例子中是 git)更适用于许多小文件。

0 投票
3 回答
334 浏览

controls - 使用 Dymola 控制实施

我在 Modelica/Dymola 中实现内置控制算法 (LQR) 时遇到问题。我创建了一个更简单的模型来显示我遇到的问题。

基本上,我在外部调用 LQR 并向其传递一个矩阵,其中包含一个在每个时间步都发生变化的条目(名为 Ctest)。这个 Ctest 也可以通过一个名为 findC 的外部函数找到。

有趣的是,如果您使 Ctest = 0,Dymola 将运行良好,但是如果您在 if 循环中使 Ctest = 0,它会显示许多看起来像这样的错误: Unsupported: In function Modelica_LinearSystems2.Math.Matrices .dare 变量 AT 用维度“:”声明。这在 dsmodel.c 中尚不支持,如果在模型中调用该函数将失败。

例如,我使用以下代码运行了 3 个不同的案例: 1. 在函数 findC 中,如果您将 C 定义为 0(如下所示),一切运行正常。2. 如果您改为创建 C 仍为 0 的 if 循环,则模型将无法模拟。我复制了下面的 if 循环并将其注释掉。3. 如果你在案例 1 中保留 findC,但只是取消注释“Real tether_l = 151.61;”,它会给出与案例 2 相同的错误。

任何帮助将不胜感激!

函数 findK

函数 findC

非常感谢!:)

0 投票
2 回答
1403 浏览

modelica - 调试 Modelica 代码

我想知道是否有办法“调试”modelica 代码,我的意思是逐行调试代码,您可以看到变量如何变化,诸如此类?

我知道modelica代码被翻译成C,我只是想知道是否有可能以某种方式做到这一点,如果有,我相信这对任何模拟环境都会有很大的改进。谢谢。

HY

0 投票
1 回答
839 浏览

modelica - modelica中的数值抖动

我在 Dymola 中遇到了一个有趣的现象,我认为它的原因可能来自我的模型,但我不知道是什么样的事情可能会导致这种情况。如果有人能给我一点提示,将不胜感激。

我的问题是,模拟将在某个时间“停止”(它正在运行但非常缓慢),当我绘制结果时,一个测试错误是否在容差范围内的块会不断以非常大的频率生成事件。

从“公差范围内”块追溯,它是标准库中的“错误块”,具有 3 个信号

u1 - 传感器数据,u2 - 参考值,y - 输出信号[u1-u2=y]

(不幸的是,由于我的声誉低,我无法上传我的情节)

这是我放大(很多次)这些信号的“尾部”(它们停止运行的地方)时发现的,

对于error.y信号:我可以看到非常微小(1e-10)但在我的 errorTolerance 目标周围出现高频颤动,但仅在模拟开始运行非常缓慢的尾部。它的行为类似于锯齿形信号。

对于u1(传感器数据)信号:我放大到与信号 error.y 相同的比例,但我没有看到任何抖动。

对于u2(参考)信号:始终不变

不知道是什么原因造成的,因为错误块只是一个简单的减法计算,为什么会引起这种颤抖。谢谢!

HY