首页 > 解决方案 > 如何在 64 位 Matlab / Simulink 中使用 FMIKit 生成 32 位二进制 FMU?

问题描述

我已经在64位Matlab/Simulink(Matlab2017a)中成功使用FMIKit2.7(来自[ https://github.com/CATIA-Systems/FMIKit-Simulink])生成64位二进制FMU,确实很有用. 不过现在其他仿真工具需要使用32位二进制FMU进行协同仿真,我按照如下方式:[ https://ww2.mathworks.cn/help/coder/ug/build-32-bit-dll- on-64-bit-windows(r)-platform-using-msvc-toolchain.html?s_tid=srchtitle] 为 64 位 Matlab 添加了 32 位编译器工具链。另外,Hardware Implementation选择了Intel-> x86-32 (Windows32),System Target File选择了rtwsfcnfmi.tlc。FMI 选项将输出设置为协同仿真类型的 FMU。

硬件实现

系统目标文件

FMI 选项

但实际上,FMIKit 生成的 FMU 仍然是 64 位二进制 FMU。

我的猜测是 FMIKit 在编译和链接过程中自动选择了 64 位编译器。我需要做什么来修改 FMIKit 配置文件(例如 .tlc 文件或其他文件)或 Matlab / Simulink 以生成 32 位二进制 FMU?

标签: matlabdllsimulinkfmi

解决方案


您应该使用 rtwsfcn.tlc 目标的 grtfmi.tlc 目标。然后,您可以设法将 cmake-build 配置为直接生成 32 位 FMU。(我对此并不熟悉。但是为不同的 VisualStudio 版本提供了不同的 cmake 生成器,其中一些名称中有 64。其他的也是 32 位的吗?) 在此处输入图像描述

作为替代方案:选中“在 FMU 中包含源”

在此处输入图像描述

然后,您可以随后使用 32 位 python 版本的 fmpy(命令行或 gui --> 帮助 --> 添加平台二进制文件)编译 FMU。您不能将 Anaconda 安装用于 32 位的最新 fmpy 版本,请参阅https://github.com/CATIA-Systems/FMPy/issues/64


推荐阅读