一个Dymola的FMU Simulink中的初始化(Initialization of a Dym

2019-08-31 19:33发布

我也遇到过,而试图使用FMU文件在Simulink仿真模型的问题:

我现在用的是FMI毛涤纶工具箱的Dymola的/ Simulink的界面导入模型交换型FMU文件(1.0版本)到Simulink模型。 我有一个Matlab m文件以编程模拟模型顺序,保存模型的最终内部状态,在接下来的模拟初始化。 模拟的第一次迭代运行没有错误,但在第二次迭代,MATLAB在呼吁模拟返回以下错误:

模块= partial_run_sim2 / BasicModels.System_model_final_Sim,日志级别= ERROR:[] [FMU状态:错误] fmiInitialize:dsblock_失败,QiErr = 1
模块= partial_run_sim2 / BasicModels.System_model_final_Sim,日志级别= ERROR:[] [FMU状态:错误]可能的错误(非穷举):1.许可证文件没有被发现。 使用环境变量“DYMOLA_RUNTIME_LICENSE”到指定Dymola的许可文件。 2.示范引用不存在在目标机器上,至少不与同一位置的外部数据。 通过S-功能“sfun_fmu_me_1_0”在'partial_run_sim2 / BasicModels.System_model_final_Sim报告错误:fmiInitialize在initialize_fmu_model_first_time返回错误。 查看命令窗口由FMU模型打印的更多信息。

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

在M文件模拟电话是:

simOut_itr = sim(model, model_cs); 

当“模特”是的Simulink .slx模型文件和“model_cs”是Simulink的配置设置变量。 我已经设定该模型从工作区中加载初始状态的配置,我已经保存了以前的迭代最终状态到该工作区变量。 这个动作对于第一次迭代出现为好,尽管最初的状态是一样的FMU文件的默认初始状态。 我怀疑,因为初始化是一样的默认值,但随后的迭代有不同的初始值,它不与FMU块同意第一次迭代没有问题运行。

我知道,模拟使用FMI功能在Matlab中FMU文件的能力,但这些方法不允许尽可能多的透明度系统的状态,这阻碍了连续的模拟。 我打开,使这种模拟的任何方法,但是。

关于初始化在Matlab / Simulink仿真FMU文件系统的状态任何建议都非常赞赏。 谢谢。

Answer 1:

我想我以前也遇到过这种错误,但不与FMI工具箱。

我有一个初始化的问题Dymola的产生FMU不止一次在for循环非常类似于一个初始化的输出作为输入的下一个上述你。

给一些随机的(但相当不错的值)和初始化模型只有一次这样的初始化是不一样的默认值。

如果一切正常,那么在所有的可能性,这个问题可能是在多初始化。 或许,你可以在每个初始化结束卸载模型,然后在每个循环的开始再次加载呢?

如果实在不行,也许ü可以使用JModelica.org(毛涤纶从开源平台)来获取这些初始化的输出到MAT文件,然后用它在MATLAB进行后续工作。 我知道这是不理想的,但是当你等候在这里的一些答案可能会给您节省一些时间。



文章来源: Initialization of a Dymola FMU in Simulink