我曾经遇到过一个问题,而试图利用Simulink中的FMU文件来模拟模型:初始化在Simulink
我使用FMI毛涤纶工具箱的Dymola的/ Simulink的界面导入一个模型 - 将类型fmu文件(版本1.0)交换到Simulink模型中。我有一个Matlab m文件,它可以按顺序模拟模型,保存模型的最终内部状态,以便在下一次模拟中进行初始化。模拟的第一次迭代运行没有错误,但在第二次迭代,MATLAB在呼吁模拟返回以下错误:
module = partial_run_sim2/BasicModels.System_model_final_Sim, log level = ERROR: [][FMU status:Error] fmiInitialize: dsblock_ failed, QiErr = 1
module = partial_run_sim2/BasicModels.System_model_final_Sim, log level = ERROR: [][FMU status:Error] Possible errors (non-exhaustive): 1. The license file was not found. Use the environment variable "DYMOLA_RUNTIME_LICENSE" to specify your Dymola license file. 2. The model references external data that is not present on the target machine, at least not with the same location. Error reported by S-function 'sfun_fmu_me_1_0' in 'partial_run_sim2/BasicModels.System_model_final_Sim': fmiInitialize returned with an error in initialize_fmu_model_first_time. See the Command Window for more information printed by the FMU model.
我知道,我的Dymola的和FMI工具箱许可证是对-日期。
在M文件模拟电话是:
simOut_itr = sim(model, model_cs);
当“模特”是的Simulink .slx模型文件和“model_cs”是Simulink的配置设置变量。我已经设置了配置,以便模型从工作空间加载初始状态,并且我已经将以前的迭代最终状态保存到该工作空间变量中。尽管初始状态与fmu文件中的默认初始状态相同,但第一次迭代也会发生此操作。我怀疑第一次迭代运行没有问题,因为初始化与默认值相同,但后续迭代具有不同的初始化值,这与fmu块不一致。
我知道使用fmi函数在Matlab中模拟fmu文件的能力,但是这些方法不允许系统状态的透明度太高,这妨碍了顺序模拟。但是,我愿意接受任何允许这种模拟的方法。
有关初始化Matlab/Simulink中fmu文件中系统状态的任何建议,我们都非常感谢。谢谢。
事实证明,这个问题与初始状态无关,而是模型的输入不适合我试图运行的模拟。对于遇到此问题的其他人,也要检查模拟输入,尽管看起来初始化变量可能是责任。 – 2013-04-24 00:44:13