我有一个试图在 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 模拟,则其行为正确,因此正确的值确实存储在模型中。
感谢任何可以帮助我了解这里发生了什么的人。