我有一个正在尝试在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
的{{1}}值。
请注意,如果使用固定的输入值运行FMU仿真,则行为正确,因此正确的值确实存储在模型中。
感谢您能帮助我了解这里发生的事情的人。