simulink 转换成c语言

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了simulink 转换成c语言相关的知识,希望对你有一定的参考价值。

我想把simulink 转换成c语言,用的是RTW来实现,但是产生的C语言程序在VC++6.0中运行却出现错误,Cannot op还有就是用RTW时需要选择C编译器吗?我在matlab中运行mex-setup之后,只显示matlab自带的Lcc,不显示Vc++6.0,所以就不知道改怎么选择,请高手指点一下,小女子不胜感激!
产生的C语言程序在VC++6.0中运行却出现错误,Cannot open include file: 'tmwtypes.h': No such file or directory

混编的时候经常会因为版本啊 非正版啊 之类的出现各种问题。你的VC是正常安装的吗?不会是绿色版吧。
可以尝试输入mex -setup【注意mex和后面的-setup之间要有空格】,首先会提示是否自动寻找安装好的编译器路径,输入n,然后matlab会列出所有该版本支持的compiler,你可以选择Microsoft VC++ 6.0,然后提示是否使用默认路径,你可以选择n然后自己输入路径。
这样尝试一下,看看能否解决搜索不到编译器的问题。

另外就是需要保证你的matlab中其他设置(如你使用dll的话就要设置mbuild)和VC++中工程的有关设置正确。提醒一下,matlab生成的文件要拷贝到工程文件夹下,相应的头文件也要记得include进去。
有时候一些安装上的问题,可以通过【设置环境变量"matlab":<matlab安装路径>;"path"中添加:<matlab的安装路径\bin\win32> 】来解决。据说有时……貌似……能解决在VC++中使用matlab某些库里的函数时找不到头文件的问题。不过这个操作的机理我始终没太搞清楚。

具体请上网查阅有关VC++与matlab混编的有关介绍。
参考技术A 我没用过这种转换软件,不过可以看得出,VC++6.0中没有tmwtypes.h这个库,所以,你内部的所有调用自这个库的函数都用不了,你可以看看能不能上网下到这个库,不过个人觉得可能性不大,一般说来,这种转换的结果都不会很完美,个人建议,可以将涉及到这个库的函数自己编写出来。

Matlab的Simulink非连续模型代码自动生成C语言(简明教程)

本报告为Matlab的Simulink【非连续模型】代码自动生成C语言的实现说明文档。

实现步骤

1.搭建框图

采用Matlab 2018a搭建仿真框图如下,命名为ADD_Test.c

图 1Simulink模型

2.初始设置

选择菜单栏Simulink->ModelConfiguration Parameters,按照下方所示设置参数,设置为固定步长,采用四阶龙格库塔方法解算微分方程,具体步长还可以在后期进行二次设置。

图 2设置求解器参数

系统的目标文件选择为ert.tlc,即采用嵌入形式的C/C++代码生成,其结构更为简洁。生成的语言可选择C或者C++

图 3代码生成的参数设置

接口模块 进行如下设置,需要选中continuoustime选项。至此,参数设置工作完毕,其余设置采用默认设置方式。

图4 接口参数设置

3.代码生成

直接点击代码生成功能键,生成代码成功后会收到如图5所示的提示。此时,在示例文件test.mdl的目录下会出现名为slprjtest_ert_rtw的文件夹,如图6所示,包含了生成的C代码的相关文件。

图 5代码生成成功提示

图 6生成文件

4.代码应用

代码可在Visual Studio2013上运行,通过文件->打开->项目/解决方案,找到test_ert_rtw\\msvc目录下的test.sln文件并添加,添加成功如下所示。

图 6生成文件

如下所示,主文件经过初始化后,在while循环中调用test_step()函数按单步执行,最后通过test_terminate终止。在带有积分环节的模型中,还可以通过找到test_M->Timing.stepSize0重新设置仿真步长。图7显示,每次给输入设置常值,经第五次调用后的输出结果。

图 7代码测试

结论

采用Matlab和C混合编程,设计简单,结构清晰,修改方便,同时大大降低了编程失误带来的风险,为保证项目有效进行提供了保障。

(2)如图所示,在matlab的工作界面输入“mbuild -setup”,选择C++选项;再输入“mex -setup”,选择C++选项;接着输入deploytool命令;

图8 MATLAB飞机本体方程动态链接库转换命令界面

(3)接着会得到如下图的提示,选择Library Complier选项,进入如图所示的Complier界面,选择.NETAssembly,添加相关脚本文件,把类的名字定义为airplane(自定义),确认后选择Package按钮进行打包,即可生成相应dll文件。

图9 `MATLAB`飞机本体方程动态链接库转换`Compiler`界面

图10 `MATLAB`飞机本体方程动态链接库转换操作界面

(4)最后会跳出如下界面,生成的几个文件夹包含了调用到的dll文件。

图11 `MATLAB`飞机本体方程动态链接库转换输出界面

以上是关于simulink 转换成c语言的主要内容,如果未能解决你的问题,请参考以下文章

c语言怎么把UTF-8转换成Unicode

在C语言中,输入一个数值,将它转换成弧度,怎么转换?

怎么把汇编转换成C语言

这段C语言代码如何转换成Python语言?(关于哈希表)

C语言如何把一个字符串转换成数字

c语言怎么将一个年月日转换成秒数