问题标签 [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.
modelica - 如何使用 SMPM 和逆变器修复“模型未全局平衡”
根据示例Modelica.Electrical.Machines.Examples.SynchronousInductionMachines.SMPM_VoltageSource
,我正在尝试使用逆变器Modelica.Electrical.PowerConverters.DCAC.MultiPhase2Level
来为 SMPM 供电。不幸的是我得到了错误
仿真模型不是全局平衡的,有 337 个变量和 335 个方程
但我无法弄清楚缺少哪两个方程。
更让我困惑的是,如果我删除和源signalPWM
,模型是平衡的。inverter
constantVoltage
有人可能知道如何解决这个问题,以便我可以运行这个模型吗?
任何帮助将不胜感激!
modelica - 如何为 Wolfram SystemModeler 编写脚本以运行多个模拟?
我想用我的模型改变两个参数运行大约 100 次模拟,f
并TLoad
跟踪相电流currentSensor.i[1]
等的变化。
现在我坚持使用 Wolfram 网站上的文档,因为没有明确说明如何使用 SystemModeler 编写脚本。例如,我在 Wolfram 网站上找到了这个链接,其中包含一些代码,但没有解释我应该在哪个命令行中使用它。
我下载了 WolframScript 程序并尝试用它打开我的模型,wolframscript -file SMPM_VoltageSource_Inverter.mo
但它说ToExpression::sntx: Invalid syntax in or before ...
我的模型模拟完全正常并且在 SimulationCenter 中没有任何错误。
有人可以向我解释一下:
- 是否可以编写脚本?
如果是:
- 如何模拟我的模型?
- 如何对
f
和进行参数扫描TLoad
?是否如链接中所述? - 是否可以将数据导出
currentSensor.i[1]
为 csv 文件?怎么做?
感谢您的任何帮助!
modelica - Modelica 中的逆变器和 PMSM 的 PI-Controller 未达到参考值
我正在尝试研究 Modelica 示例Modelica.Electrical.Machines.Examples.SynchronousInductionMachines.SMPM_VoltageSource
,但我用signalVoltage
一个逆变器和一个signalPWM
基于Modelica.Electrical.PowerConverters.DCDC.Control.SignalPWM
. 因此,我想研究 PWM 调制电压,而不是正弦电压。问题是由于控制器的积分部分,控制器不断线性增加其输出,因为它从未达到所需 q 电流的参考值。此外,它输出voltageController.y[1]
[24E3,...,150E3] 范围内的奇怪值,这可能是问题所在。
不幸的是,我不明白为什么控制器可以在正弦电压下正常工作,而不能在 PWM 电压下正常工作。
下面是我的主要模型:
和信号PWM模型:
编辑:我已经降低了所需的 q 电流从Idq={0,84} A
toIdq={0,10} A
和负载从TLoad = 120 Nm
toTLoad = 5 Nm
并且仍然从voltageController
.
- 有人可能知道如何解决控制器的问题,以便我获得适当的模拟结果?
- 为什么无法达到 MSL 示例中的参考值?PWM 模块有那么大的问题吗?
- 模拟的这种行为让我感到困惑,因为我使用的是真正的电机和 PWM 控制,并且它在类似的配置下也能正常工作。
任何帮助将不胜感激!
modelica - 不同的 Modelica 仿真环境有什么区别?
有不同的 Modelica 仿真环境,包括 Dymola、Wolfram SystemModeler、OpenModelica 和 Jmodelica。所以,我尝试加载一个热流体库(ThermoSysPro https://github.com/Dwarf-Planet-Project/ThermoSysPro),但除了 Dymola,其他软件上的结果都以错误结束。
如果库和仿真环境都基于 Modelica 规范标准,为什么会出现兼容性问题?我认为该库可能包含一些仅由 Dymola 支持的功能。谁能澄清这些模拟环境之间的区别?
modelica - Modelica 变量未在此范围内声明
下面的 Modelica 模型通过了验证:
但是当我尝试模拟它时,编译代码中出现错误:
一定有一些基本的东西我不理解,为什么这个循环不模拟?如果我删除 h 值的第二个子句并使其简单地h[j] := has_heater[j]
模拟工作。
function - 默认表达式可以引用函数声明中的其他输入吗?
在 Modelica中,我想实现一个function
clip
Clip
与 Wolfram 语言类似的调用。也就是说,该函数将获取一个值列表x
并返回一个相同长度的向量y
,其中对于每个组件,我们都有一个分段函数:
所以我们应该看到以下结果:
我的方法如下:
请注意,这里的默认表达式extremes
引用x_range
本身具有默认表达式的输入{-1, 1}
。
不幸的是,我在 Wolfram SystemModeler 12.0 和OpenModelica (OMEdit v.1.13.2)中得到了错误的结果,它甚至无法编译。
我的问题是:
- 根据规范,上述功能是否合法 Modelica 代码?
- 不管(1.)是否有另一种方法可以做到这一点?
modelica - 重新声明数组组件的可替换参数的正确语法
我开发了一个相当广泛地使用可替换记录的模型。参数被传递给组件数组。我尝试了两种方法来做到这一点,但它们都不能在我所有的测试环境 SimulationX (SimX)、OpenModelica (OM)、Dymola 和 Wolfram SystemModeler (WSM) 中工作。
让我们考虑一个简化的包来说明我的问题。根据所选的 sumbodel,模型计算可替换记录参数的总和或乘积。我尝试了两种方法来更改子模型中的记录。
- 方法一:通过修改重新声明子模型记录(MOD)
- 方法二:重新声明对应的内部记录,改变子模型(IO)内的外部记录
该软件包包含一个示例,其中包含 4 个模型,每个模型具有不同的 MOD 和 IO 记录/子模型组合。
- 这两种方法在 SimX 中都能正常工作
- Dymola 使用 MOD 方法正确模拟,但会产生 IO 错误
- OM 可以模拟模型,但不能为所有场景产生正确的结果
- WSM 会生成有关我提到的记录的警告消息,但会模拟正确的结果。
为了便于阅读,我从显示的代码中删除了示例和注释,但可以在此处下载完整的包:https ://hessenbox.tu-darmstadt.de/getlink/fiEgNjMEBZpSyJWHKafmoYYS/RedeclareTestPackage.rar
OM 中的错误消息为:
翻译警告 [RedeclareTestPackage: 39:3-39:84]:找不到外部组件 subModelDataset 的内部声明并自动生成。
奇怪的是,只有重新声明数据集和带有内部/外部的子模型的组合才会产生消息并且无法正确模拟。其他一切正常。
WSM 会为这两种方法生成错误消息。MOD方法产生例如:
警告:在变量或组件“MOD_ADD_1and2.submodel.subModelDataset”中:重复修改元素 =(无类型)1.0 和每个 =(类型)1.0 DAE.PROP(Real,C_CONST),值:组件上的 1.0 无论如何。
警告:重复修改元素 =(untyped) 1.0 和 each = (typed)1.0 DAE.PROP(Real, C_CONST), value: 1.0 on component 不管。
IO 方法的 WSM 示例如下:
警告:忽略外部元素的修改: IO_ADD_1and2.submodel[1,1].subModelDataset 。
不过,所有模型都在 WSM 中模拟了正确的结果。Dymola 仅适用于修改示例,内部/外部重新声明会产生如下错误:
Replaceable 必须是约束类的子类型。但是组件 subModelDataset 的内部/外部限定符不同。在组件 subModelDataset 的声明中:文件:C:/.../RedeclareTestPackage/RedeclareTestPackage.mo,第 39 行 subModelDataset 的原始声明:文件:C:/.../RedeclareTestPackage/RedeclareTestPackage.mo,第 39 行上下文:RedeclareTestPackage.partialSubModelType_innerOuter .subModelDataset
如果有人能启发我,我将不胜感激。我的实际模型在 SimX 中运行良好,但在我看来,Modelica 的主要原因之一是开发独立于供应商的模型,以便能够与大型社区共享它们。
最好的问候朱利安
wolfram-mathematica - Dymola 是否有类似 Wolfram 系统建模器的“方程浏览器”功能?
Wolfram 系统建模器有一个叫做“方程浏览器”的功能,这里的 youtube 视频(20:58)给出了关于“方程浏览器”的介绍,我想知道 Dymola 是否有同样的功能,它对调试非线性系统会有帮助。
此外,欢迎使用其他一些解决方法,例如使用 python 来可视化方程结构。
modelica - 如何拥有可更换类型的因果连接器?
虽然高级 Modelica 教程:开发 Modelica 库是从 2003 年开始的,但我仍然相信第 29 页中的代码会给出一个因果关系connector
( RealPort
) 和replaceable type
:
虽然此代码在 Wolfram 的当前版本中有效SystemModeler
,但Open Modelica v1.16.0-dev.03 (64-bit)
抱怨并给出以下错误:
'extends SignalType' 中的类 'SignalType' 是可替换的,基类名称必须是可传递不可替换的。
那么,关于这里的传递不可替换性以及如何正确地做到这一点,谁是正确的?
参考:
modelica - 为什么在函数中使用灵活的数组输入会在 OpenModelica 中引发翻译错误?
在我看来,以下简单function
的 Modelica 代码是完全合法的:
使用Check Model
inOpenModelica v1.16.2 (64-bit)
会引发错误:
Modelica 代码有问题还是 OME 问题?
编辑
只是为了表明,这实际上不是一个明确的案例:
这是foo
在 Wolfram System Modeler 12.2 中验证时得到的消息:
[3] 10:59 验证函数 foo
验证函数 foo 成功完成。