simulink生成C代码.docx
- 文档编号:23716662
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:10
- 大小:721.36KB
simulink生成C代码.docx
《simulink生成C代码.docx》由会员分享,可在线阅读,更多相关《simulink生成C代码.docx(10页珍藏版)》请在冰豆网上搜索。
simulink生成C代码
MATLAB控制系统仿真与嵌入式系统算法设计(原创)
2009-01-2213:
25:
25| 分类:
嵌入式系统与MATL|字号 订阅
摘要:
在控制类产品设计中,从仿真到工程实现一直是工程师追求的目标,本文将用几个实列来讨论这一过程,因为相当一部分工程师对单片机系统、Keil比较熟练,因此我采用对项目Simulink建模仿真后,就如何生成C代码,然后配合Keil环境,从而以很小的工作代价把一些复杂的算法集成到单片机系统或嵌入式系统里运行,例子中包含有查询表、信号处理、模糊控制、神经网络、PID控制算法等。
我将一个一个列子的来叙述.
关键词:
模糊控制、查询表
1. 引言
2.在Simulink环境下把查询表转化为8051兼容C代码
在我的文章如何在MATLAB下把模糊推理系统转化为查询表(原创) 里,已获得一水位模糊控制系统的查询表模型名叫Fuzzylookup,样子如下:
图1-1模糊逻辑生成的查询表模型
2.1设置Real-TimeWorkshop环境
点击Simulink\Tools\Real-TimeWorkshop\Options…,
图1-2Real-TimeWorkshop设置1
在上图的设置窗中,选择Real-TimeWorkshop项按上图设置,设置好后,选择HardwareImplement…,设置如下,点击Apply。
图1-3Real-TimeWorkshop设置2
选择Solver项,设置如下,点击Apply。
图1-4Real-TimeWorkshop设置3
1.2生成8051兼容C代码并查看生成报告
点击Simulink\Tools\Real-TimeWorkshop\BuildModel…,过几秒后,看到代码生成报告如下样子的界面:
图1-5Real-TimeWorkshop代码生成报告
1.3把生成8051兼容C代码放入Keil环境里编译成51可执行的代码
在Keil下创建一个项目,命名为LookupTable.Uv2,把上一步生成的所有代码文件拷贝到与LookupTable.Uv2同一个目录下,这个例子中需要把rtlibsrc.h从MATLAB安装目录下搜查出来也考到这个目录下,然后在Keil环境内,打开LookupTable.Uv2项目,把以上文件全部添加到SourceGroup1内,样子如下:
图1-6Real-TimeWorkshop生成的代码导入Keil里
1.4稍修改生成的51代码和设置Keil环境为编译做准备.
修改代码和设置Keil环境的目的是让Keil能顺利编译文件,并能运行程序做测试,下面是代码修改的几个地方。
1. ert_main.c内的主函数修改成如下样子:
图1-7修改后的main()
2. ert_main.c内的rt_OneStep()修改成如下样子:
图1-8修改后的rt_OneStep()
3.修改Fuzzylookup.c里的fuzzylookup_step函数,程序里增添了两行代码:
fuzzylookup_U.In1=-0.92;
fuzzylookup_U.In2=-0.06;
模拟传感器器送入的信号,用于测试是否程序执行后是否查询表输出值是正确的,样子如下:
图1-9修改后的fuzzylookup_step(void)
4.keil环境设置,因为查询表格的尺寸较大,所以单片机存储器模式设置成下面的样子,MemoryModel:
Large:
variablesinXDATA。
图1-10单片机存储模式设置
5. 编译项目,编译后可以看到项目占用的资源情况,这里暂时不考虑代码优化问题。
图1-11Keil编译结果
6. 执行程序测试。
图1-12程序运行测试结果
7.结论
以上的步骤就完成了一个MATALB下查询表转化为8051处理器可执行的代码.
SIMULINK里做嵌入式设计的流程(小结)
Simulink与嵌入式代码自动化生成
终于可以在实物上实践了各种控制算法了使用图像识别技术的水位模糊控制装置1(构思)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- simulink 生成 代码