通过PyFMI读取FMU文件及PyFMI的安装教程
一、fmu/fmi介绍
用于支持动态模型的交互以及联合仿真,解决模型相互操作问题
a)FMI
功能打样接口(functional Mock-up Interface)是一个工具独立的标准,通过xml文件与编译的c代码的融合来支持动态模型的交互和联合调试。

b)FMU
FMU是一个压缩文件,包含了xml格式接口数据描述和功能,FMU就是采用FMI接口而开发的软件组织
fmu文件在解压后如下图:
在文件夹中包含三个binaries、resources、sources三个文件夹,以及一个xml文件和一个.log文件。
二、使用PyFMI对fmu的读取
from pyfmi import load_fmu
import pandas as pd
import cufflinks as cf
import matplotlib.pyplot as plt
# 通过pyfmi读取fmu对象,将fmu文件放置于统一目录下
model = load_fmu('NewtonCooling.fmu')
# 获取模型中的变量,并打印出来
model.get_model_variables()
# 将模型中的第三个值设置为200,也可以使用 model.set('A', 0.1) 的方式来设置变量的值,其中'A'是变量名
model.set_real([3], [200])
# 对模型进行仿真,同时设置了仿真开始时间和结束时间
res = model.simulate(start_time=0, final_time=10)
# 获取变量c_p的值并打印
print(model.get('c_p'))
print(model.get_real([0, 1, 2, 3, 4, 5, 6, 7]))
print(res.final('T'))
# 结果图形的绘制
df_T = pd.DataFrame({"T": res["T"]}, index=res["time"])
print(df_T)
df_T.plot()
plt.show()
程序运行后的结果如下:


三、PyFMI包的安装教程
python的安装教程就不赘述了,在命令行中可以使用python命令就没有问题。
然后是安装PyFMI包的教程。
我在安装的过程中发现直接使用pip进行安装pyfmi包是不可取的,会弹出缺少很多东西,目前也没有成功使用pip安装这个包。
我使用的方法是通过anaconda安装pyfmi,首先是安装anaconda,记得中间选择配置进path,这样可以使用系统的cmd调用anaconda的命令。当然也可以不配置进入path,这样只能使用anaconda带的命令行进行命令的输入。
然后就是安装pyfmi了,在anaconda中输入conda install -c conda-forge pyfmi
就可以完成安装了。
然后就是在pycharm中配置anaconda
a)第一步
选择新建项目,然后选择Pure Python

其中location是项目的保存地址,自行选择就可以
然后第二个红框内选择Previously configured interpreter
,然后 点击后面的三点
b)第二步
选择Conda Environment
,在conda中点击小三点


选择anaconda安装根目录下的python.exe
,不要选错文件夹,这时候第二个文件夹选项中的路径应该为anaconda根目录\Scripts\conda.exe
然后点击ok,可以完成创建了。
ps
在项目如果用到什么包提示不存在,建议是在pycharm中使用pip进行安装第三方库,若该方法不成功,可以使用其他安装方法进行尝试。