You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将Python模型转为FMU并在Dymola中仿真?求转换方法

在Dymola中通过FMU仿真Python模型的可行性与实现方法

一、可行性确认

完全可行。Dymola支持加载符合FMI(Functional Mock-up Interface)标准的FMU,尤其是Co-simulation(协同仿真)类型的FMU,非常适合集成Python编写的动态模型。只要Python模型能封装为符合FMI规范的FMU,就能在Dymola中完成联合仿真。

二、将Python脚本转换为FMU的实用方法

方法1:使用pythonfmu库(推荐)

这是专门用于创建Python-based FMU的工具,步骤清晰:

  1. 安装依赖:
    pip install pythonfmu pythonfmu-export
    
  2. 编写Python模型类,继承pythonfmu.Fmi2Slave并实现核心FMI接口方法,示例框架:
    from pythonfmu import Fmi2Slave, Fmi2Causality, Fmi2Variability
    
    class PythonModel(Fmi2Slave):
    
        def __init__(self, instance_name, resources=None, visible=False, log_level='info'):
            super().__init__(instance_name, resources, visible, log_level)
            # 定义输入输出变量
            self.input_var = 0.0
            self.output_var = 0.0
            self.register_variable("input_var", causality=Fmi2Causality.input, variability=Fmi2Variability.continuous)
            self.register_variable("output_var", causality=Fmi2Causality.output, variability=Fmi2Variability.continuous)
    
        def doStep(self, current_time, step_size):
            # 写入你的Python模型逻辑,比如根据输入计算输出
            self.output_var = self.input_var * 2 + current_time
            return True
    
  3. 导出FMU:创建导出脚本指定模型类与输出路径:
    from pythonfmu import export_fmu
    
    export_fmu(PythonModel, "PythonModel.fmu", version="2.0", fmi_type="co-simulation")
    
    执行脚本后会生成符合FMI 2.0标准的协同仿真FMU。

方法2:排查FMPy无法导出的问题

FMPy的核心定位是加载、验证与仿真FMU,本身不支持直接从Python脚本导出FMU。你之前的尝试属于工具定位混淆,改用pythonfmu即可解决导出需求。如果需要验证生成的FMU正确性,可再用FMPy进行仿真测试。

三、在Dymola中加载FMU的步骤

  • 打开Dymola,通过File > Import > FMU导入生成的FMU文件;
  • 在模型库中找到导入的FMU模块,拖拽到建模画布;
  • 连接FMU的输入输出端口与其他Dymola模型组件;
  • 设置仿真参数后运行仿真即可。

内容的提问来源于stack exchange,提问作者Rubén Garayoa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:07:09