如何使用FMPy获取字符串输出变量?

时间:2019-04-03 14:05:07

标签: python fmi

我正在使用FMPy来模拟一些具有String输出变量的FMU,但是这些在模拟结果中不可用(simulate_fmu(filename)返回的对象)。

这些变量是否以其他方式处理?如果是这样,我该如何访问它们?

谢谢。

编辑1:

我使用values.fmu运行了一个模拟,该模拟具有String输出变量(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 String。

系统详细信息:

Python version: 3.7.3

FMPy version: 0.2.10

1 个答案:

答案 0 :(得分:1)

仅支持将字符串作为参数使用(从FMPy 0.2.10开始)。如果您需要字符串作为输入或输出,则可以构建一个自定义的模拟循环并直接使用fmu.setString()fmu.getString()函数。

您可以使用custom_input.py example作为起点。