如何使用 FMPy 获取字符串输出变量?
How to get String output variables with FMPy?
我正在使用 FMPy 模拟一些具有字符串输出变量的 FMU,但这些在模拟结果中不可用(simulate_fmu(文件名)返回的对象)。
这些变量的处理方式不同吗?如果是这样,我该如何访问它们?
谢谢。
编辑 1:
我运行使用values.fmu进行了模拟,它有一个字符串输出变量(string_out
)。
最小示例:
import fmpy
# fmu path
fmu_name = "C:\fmusdk\fmu20\fmu\cs\x64\values.fmu"
# Simulate
res = fmpy.simulate_fmu(fmu_name, stop_time=2., debug_logging=False)
# Results
print('Results names and types: ' + str(res.dtype))
注意:对于运行示例,您必须下载并安装fmusdk,这需要Microsoft Visual Studio 2005 (VS8)、2008 (VS9)、2010 (VS10)、2012 ( VS11)、2013 (VS12) 或 2015 (VS14)。
输出:
Results names and types: [('time', '<f8'), ('int_out', '<i4'), ('bool_out', '?')]
预计:
我预计 res
包含输出变量 string_out
。
使用debug_logging:
我意识到 fmi2GetString
从未被调用过 ,因此输出不可能具有 string_out
的值。 因此我不确定 FMPy 是否支持 TypeDefinitions 字符串。
系统详细信息:
Python version: 3.7.3
FMPy version: 0.2.10
仅支持字符串作为参数(从 FMPy 0.2.10 开始)。如果您需要字符串作为输入或输出,您可以构建自定义模拟循环并直接使用 fmu.setString()
和 fmu.getString()
函数。
您可以使用 custom_input.py example 作为起点。
我正在使用 FMPy 模拟一些具有字符串输出变量的 FMU,但这些在模拟结果中不可用(simulate_fmu(文件名)返回的对象)。
这些变量的处理方式不同吗?如果是这样,我该如何访问它们?
谢谢。
编辑 1:
我运行使用values.fmu进行了模拟,它有一个字符串输出变量(string_out
)。
最小示例:
import fmpy
# fmu path
fmu_name = "C:\fmusdk\fmu20\fmu\cs\x64\values.fmu"
# Simulate
res = fmpy.simulate_fmu(fmu_name, stop_time=2., debug_logging=False)
# Results
print('Results names and types: ' + str(res.dtype))
注意:对于运行示例,您必须下载并安装fmusdk,这需要Microsoft Visual Studio 2005 (VS8)、2008 (VS9)、2010 (VS10)、2012 ( VS11)、2013 (VS12) 或 2015 (VS14)。
输出:
Results names and types: [('time', '<f8'), ('int_out', '<i4'), ('bool_out', '?')]
预计:
我预计 res
包含输出变量 string_out
。
使用debug_logging:
我意识到 fmi2GetString
从未被调用过 ,因此输出不可能具有 string_out
的值。 因此我不确定 FMPy 是否支持 TypeDefinitions 字符串。
系统详细信息:
Python version: 3.7.3
FMPy version: 0.2.10
仅支持字符串作为参数(从 FMPy 0.2.10 开始)。如果您需要字符串作为输入或输出,您可以构建自定义模拟循环并直接使用 fmu.setString()
和 fmu.getString()
函数。
您可以使用 custom_input.py example 作为起点。