如何使用 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 作为起点。