需要实现Unity与Simulink的通信,这里采用Simulink生成C语言代码并由VS2019生成DLL让Unity调用DLL的方式实现通信功能
1、Simulink生成C语言代码(MATLAB版本2020a)
Simlink自动生成C语言代码的相关内容网上有很多这里写一下自己的根据网上内容的实现过程并记录一些问题
1.1生成Simulink模型
Subsystem内容:1.2Simulink设置
Slover选择Fixed-step固定步
hardware implementation里选择对应的硬件平台这里选择我用的Inter,由于Unity只支持64位,所以选择x86-64(windows64)
Code Generation选择ert_shrlib.tlc或者ert.tlc;ert.tlc只会生成C语言文件,ert_shrlib.tlc除了自动生成C语言文件外还会生成一个dll和lib文件来给外部调用,但是本人使用中dll的函数无返回值,本人不知道应该如何访问函数内部的东西,因此自己使用VS2019更改一部分自动生成的C语言文件内容后手动生成dll。
如果系统中有连续模块则移动要勾选Continuous time选项否则一定会报错编译失败;以上设置完毕之后点击Apply,OK后退出。
1.3添加自定义变量
在MODELING里选择BaseWorkSpace,在BaseWorkSpace里点Add,选择AddCustom添加新的变量,并输入变量名Object Class选择mpt,Singnal。
定义好变量后在模型界面为输入和输出信号赋一个变量,Signal name填之前定义的变量名称,不能填错否则无效,同时需要勾选如上图选项,然后确认。
回到Simulink模型页面后使用快捷键Ctrl+B进行编译生成C语言代码。
2、VS2019生成DLL
2.1VS编译Simulink生成的C语言文件
打开VS2019,选择文件-新建-从现有代码生成,选择Simulink生成的C语言文件的文件夹,一直确定即可