Доступ к системным переменным FMU во время симуляции - PullRequest
1 голос
/ 03 мая 2019

У меня есть FMU, который я пытаюсь смоделировать в JModelica. Параметр input должен ссылаться на текущее состояние некоторых переменных в моделировании FMU JModelica. Однако у меня возникают проблемы с доступом к ним.

Читая документацию, мне бы хотелось поверить, что функции .get_variable_nominal() или .get() обеспечат доступ к ним, но это не так.

Основная структура кода выглядит следующим образом:

from pyfmi import load_fmu
model = none

def inputFunction(t):
   global model
   # Get current state of desired variable(s)
   variable = model.some_function("object.variable_name")
   # Do some mathematical process to get input value
   input_value = foo(variable)
   return input_value

def main():
    global model
    # FMU's input variables
    inputs = ["list", "of", "input", "variables"]
    # Get model from FMU file
    model = load_fmu("model_name.fmu")
    # Create input object for simulation method
    inputObj = (inputs, inputFunction)

    # Do some simulation
    opts = model.simulate_options()
    results = model.simulate(start_time=0, final_time=100.0, input=inputObj, options=opts)

if __name__ == "__main__":
    main()

Если вместо .some_function("object.variable_name") я использую .get_variable_nominal("object.variable_name"), функция возвращает значение с плавающей запятой 1.0 (мне кажется, я получаю разные произвольные значения, если я указываю другую переменную FMU). Тогда как с .get("object.variable_name") возвращается ошибка FMUException: Failed to get the Real values.. Значение, которое я ожидаю в начале симуляции, представляет собой значение float приблизительно 303.

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

Спасибо всем, кто может помочь мне понять, что здесь происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...