标签: systemmodeler

积分延迟脉冲信号的数值问题(fixedDelay)

我注意到集成脉冲输入的数值问题在Modelica中延迟了一段固定的时间(使用Wolfram System Modeler 4.3):

模型图

model PulseTest "Test FixedDelay with Pulse Input";
    Modelica.Blocks.Sources.Pulse pulse(
        startTime = 1, 
        width = 100, 
        period = 1/32, 
        amplitude = 32, 
        nperiod = 1
    );
    Modelica.Blocks.Nonlinear.FixedDelay fixedDelay( delayTime = 5 );
    Modelica.Blocks.Continuous.Integrator x; // integrator for the undelayed pulse
    Modelica.Blocks.Continuous.Integrator y; // integrator for the delayed pulse
equation
    connect( pulse.y, fixedDelay.u );
    connect( fixedDelay.y, y.u );
    connect( pulse.y, x.u );
end PulseTest;
Run Code Online (Sandbox Code Playgroud)

积分脉冲周期= 1/a,幅度= a,宽度= 100%应该给出1.0.但从图中可以看出,这不是我得到的延迟脉冲:

随着时间的推移,X和Y的情节

只有未延迟的信号使用DASSL给出正确的值.将已经出现的数值积分误差周期= 1/A = 1/8和(自然)成长为一个增长.

什么是最好的补救措施?

precision modelica systemmodeler openmodelica dymola

8
推荐指数
1
解决办法
229
查看次数

在Modelica中生成白噪声(SystemModeler)

我正在尝试将测量噪声添加到模拟中.这可以在例如Simulink中进行,但在Modelica和SystemModeler中似乎更难.

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

modelica systemmodeler

7
推荐指数
2
解决办法
1388
查看次数

Does Dymola have the similar function of "equation browser" like Wolfram system modeler?

Wolfram system modeler has a function called "equation browser", the youtube video here(at 20:58) gives an introduction about "equation browser", I am wondering if Dymola has the same function, it would be helpful to debug nonlinear system.
Also, it is welcome for some other workaround solution, like using python to visualize the equation structures.

这是“方程式浏览器”的屏幕截图。
在此处输入图片说明

wolfram-mathematica modelica systemmodeler dymola

6
推荐指数
1
解决办法
141
查看次数

不同的Modelica仿真环境之间有什么区别?

有不同的Modelica仿真环境,包括Dymola,Wolfram SystemModeler,OpenModelica和Jmodelica。因此,我尝试加载热流体库(ThermoSysPro https://github.com/Dwarf-Planet-Project/ThermoSysPro),但是除了Dymola之外,其他软件上的结果均以错误结尾。

如果库和仿真环境均基于Modelica规范标准,为什么存在兼容性问题?我认为该库可能包含仅Dymola支持的某些功能。谁能澄清这些仿真环境之间的区别?

modelica systemmodeler openmodelica dymola jmodelica

3
推荐指数
1
解决办法
71
查看次数

如何在Modelica中使用模型中的单元属性?

动机

Modelica确实存储测量单位(例如,SI单位和非SI单位)作为关于变量的属性.以下是非SI单位的示例:

type Time_months = Real( quantity = "Time", unit = "mo", displayUnit = "months" )
Run Code Online (Sandbox Code Playgroud)

因为对于经济学中的模型而言,在几秒钟内给出速率是相当不利的,我想写一个相当通用的单位转换函数,它将允许转换时间单位.理想情况下,转换为另一个时基的函数应该使用三个输入和一个输出:

input Real timeValue "the value of time to be converted";
input String timeBaseA "the time base for timeValue, e.g. \"mo\" ";
input String timeBaseB "the time base to convert to, e.g. \"yr\" ";
output Real convertedTimeValue "the result of the conversion";
Run Code Online (Sandbox Code Playgroud)

问题

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

问题1:如何能像元信息单元模型中进行访问?

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

String timeBaseA := timeValue.unit;
Run Code Online (Sandbox Code Playgroud)

要么

String timeBaseA := getUnit( timeValue ) "some function to …
Run Code Online (Sandbox Code Playgroud)

modelica systemmodeler

2
推荐指数
1
解决办法
158
查看次数

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

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

为了设计电机控制器,我为流动函数添加了一些时间轨迹:

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

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

r阻尼常数(线性摩擦)

tau是扭矩常数 [Nm/A]

u[t]当前输入

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

der(phi)角速度

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

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

我的第一次尝试是:

在此处输入图片说明

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

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

我的第二次尝试是:

在此处输入图片说明

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

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

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

modeling modelica systemmodeler openmodelica

1
推荐指数
1
解决办法
55
查看次数