fmi2GetFMUState / fmi2SetFMUState поддерживается для генерируемых Matlab / OpenModelica FMU? - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь протестировать простую fmu для сохранения и восстановления состояний.

Например, openmodelica:

model modelicatest
input Real In1;
output Real Out1(start=0, fixed=true);
equation
der(Out1) = In1;
end modelicatest;

Также для simulink:

enter image description here

Я использую FMPy для имитации сгенерированных FMU.

Но для FMU, сгенерированного OpenModelica v1.14.1, я получаю следующую ошибку при вызове getFMUState из FMPy:

Exception: fmi2GetFMUstate failed with status 3

Для FMU, сгенерированного Simulink (2019b), с использованием встроенного экспортер, состояние FMU не сбрасывается (то есть выходное значение), когда я запускаю setFMUState.

Просто интересно, эти функции поддерживаются для FMU, генерируемых OpenModelica и Simulink? или это проблема FMPy?

1 Ответ

2 голосов
/ 12 января 2020

В отношении fmi2GetFMUstate / fmi2SetFMUstate, Спецификация FMI , раздел 2.1.8. состояния:

Эти функции поддерживаются только FMU, если для флага необязательной возможности <fmiModelDescription> <ModelExchange / CoSimulation canGetAndSetFMUstate in = "true"> в файле XML явно установлено значение true (см. разделы 3.3. 1 и 4.3.1).

Вы можете разархивировать файл fmu и взглянуть на файл modelDescription. xml, чтобы узнать, установлен ли флаг: Если это false или не установить все, функции get и set не поддерживаются.

...