1

我有一个试图在 JModelica 中模拟的 FMU。input参数需要参考JModelica FMU仿真中部分变量的当前状态。但是,我无法访问这些。

阅读文档,我会相信这些功能.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 模拟,则其行为正确,因此正确的值确实存储在模型中。

感谢任何可以帮助我了解这里发生了什么的人。

4

0 回答 0