matlab - 如何在 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。
但实际上,FMIKit 生成的 FMU 仍然是 64 位二进制 FMU。
我的猜测是 FMIKit 在编译和链接过程中自动选择了 64 位编译器。我需要做什么来修改 FMIKit 配置文件(例如 .tlc 文件或其他文件)或 Matlab / Simulink 以生成 32 位二进制 FMU?
解决方案
您应该使用 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。
推荐阅读
- php - Laravel - 如何找到外键值
- r - R列表存储为字符串
- java - java javax.net.ssl.SSLHandshakeException:不存在主题替代名称
- python - 从 Pandas 中删除列中的重复信息
- c++ - 使用 bsearch() 获取多个 key 实例
- c++ - 是否可以使用不同的枚举类型作为非类型模板参数
- django - 基于模型数据作为初始数据的选择填充 django 表单
- posix - 发生 ctrl+c 时如何优雅地退出 D 程序?
- macos - 如何在 OSX 的 Sublime Text 3 中打开包含文件的文件夹?
- django - Django 调试工具栏 - java 错误找不到 djdt