FMU-модуль, метод get_states_list ()

Я обнаружил ограничение метода FMU-модуля get_states_list (). Этот метод, кажется, приносит список только состояний непрерывного времени, а не состояний дискретного времени. Я обычно делаю модели, которые содержат как непрерывные, так и дискретные временные подмодели, описывающие процесс и систему управления, и мне очень интересно иметь возможность получить список ВСЕХ состояний в системе.

Одной из возможностей могла быть get_fmu_state (), но я получаю текст исключения «Этот FMU не поддерживает получение и установку FMU-состояния».

Другой возможностью, возможно, было бы вывести более крупный список всех переменных с использованием и отсортировать те переменные, которые содержатся в объявлении «fixed = true», но я не знаю, как выделить этот атрибут, хотя другие атрибуты можно вывести, например min, max, nominal Метод get_model_variables (), возможно, может помочь, но я получаю только некоторый адрес, связанный с переменной….

Что делать?


person janpeter    schedule 17.10.2018    source источник
comment
Каково определение дискретного состояния в контексте ИФР?   -  person Christian Winther    schedule 18.10.2018
comment
Я бы сказал, что определение состояния дискретного времени такое же, как и для непрерывного времени. Таким образом, что-то вроде: минимум информации, необходимой для прогнозирования развития системы с течением времени. Если есть входные сигналы, их, конечно, нужно знать. Для получения дополнительной информации см .: en.wikipedia.org/wiki/Dynamical_system. В коде Modelica я установил атрибут fixed = true для переменных, которые у меня есть в качестве состояний, будь то непрерывное или дискретное время. Таким образом их легко узнать.   -  person janpeter    schedule 19.10.2018


Ответы (1)


Метод get_states_list - это обратная связь со спецификацией FMI, которая включает только состояния непрерывного времени. Так что это задумано.

person Christian Winther    schedule 18.10.2018
comment
Трудно поверить, что спецификация FMI не справляется с этим лучше! Я хочу решить следующую проблему. У меня есть модель Modelica, которая содержит как процесс в непрерывном времени, так и регулятор в дискретном времени. Если вы хотите смоделировать определенное время, изменить какой-либо параметр вручную, а затем продолжить моделирование, вам необходимо считать состояние и сохранить его, повторно загрузить модель, ввести конечное состояние из предыдущего моделирования и использовать его в качестве начального условия перед вы снова запускаете симуляцию. Сегодня у меня есть сценарий Python, который для состояний дискретного времени должен быть адаптирован для каждой модели. - person janpeter; 19.10.2018
comment
Чтобы правильно обрабатывать временные задержки (непрерывное время) в этой процедуре, описанной выше, у меня тоже нет никакого решения. Я понимаю, что это будет зависеть от используемой процедуры численного интегрирования. - person janpeter; 19.10.2018