2013-04-22 2 views
0

я столкнулись с проблемой при попытке имитации модели с помощью файла FMU в Simulink:Инициализация Dymola FMU в Simulink

Я использую набор инструментов Modelon FMI для интерфейса Dymola/Simulink импортировать модельно Файл fmu типа Exchange (версия 1.0) в модель Simulink. У меня есть m-файл Matlab, который программно имитирует модель последовательно, сохраняя окончательные внутренние состояния модели для инициализации в следующей симуляции. Первая итерация моделирования выполняется без ошибок, но на вторую итерации, 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 являются вверх к -Дата.

Вызов моделирования в м-файле:

simOut_itr = sim(model, model_cs); 

Где «модель» в Simulink .slx файл модели и «model_cs» является установка переменной конфигурации Simulink. Я установил конфигурацию таким образом, что модель загружает начальные состояния из рабочей области, и я сохранил предыдущие итерации конечных состояний этой переменной рабочего пространства. Это действие происходит и для первой итерации, хотя начальные состояния совпадают с начальными состояниями по умолчанию в файле fmu. Я подозреваю, что первая итерация выполняется без проблем, поскольку инициализация совпадает с значением по умолчанию, но последующая итерация имеет другое значение инициализации, которое не согласуется с блоком fmu.

Мне известно о возможности имитации файла fmu в Matlab с использованием функций fmi, но эти методы не позволяют обеспечить столько прозрачности в состояниях системы, что препятствует последовательной симуляции. Однако я открыт для любых методов, которые допускают такой симулятор.

Любые предложения относительно инициализации состояний системы в файлах fmu в Matlab/Simulink очень ценятся. Спасибо.

+0

Как выясняется, проблема не имела ничего общего с начальными состояниями, но входной сигнал к модели был плохо приспособлен к симуляции, которую я пытался запустить. Для всех, кто сталкивается с этой проблемой, также проверяйте входы моделирования, даже если это может показаться, что виноваты переменные инициализации. –

ответ

0

Я думаю, что я столкнулся с этой ошибкой раньше, но не с помощью FMI Toolbox.

У меня возникли проблемы с инициализацией FMU, сгенерированной Dymola, более одного раза в цикле, очень похожим на то, что вы описали выше, с выходом одной инициализации в качестве входа для следующего.

Дайте несколько случайных (но достаточно хороших значений) и инициализируйте модель только один раз, чтобы инициализация была не такой, как значение по умолчанию.

Если это работает, то, по всей вероятности, проблема может быть в нескольких инициализациях. Возможно, вы можете выгрузить модель в конце каждой инициализации, а затем загрузить ее снова в начале каждого цикла?

Если ничего не работает, возможно, вы можете использовать JModelica.org (платформа с открытым исходным кодом от Modelon), чтобы получить вывод этих инициализаций в файл-мат, а затем использовать его в MATLAB для последующей работы. Я знаю, что это не идеально, но может сэкономить вам некоторое время, пока вы ждете ответа.

+0

Немного рандомизированные начальные значения выполняются на первой итерации, так что это доказывает, что инициализация не является точной проблемой. Однако использование команды close_system (model) и load_system (model) не разрешает проблему. –

 Смежные вопросы

  • Нет связанных вопросов^_^