- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《机电控制系统仿真和软件设计》
机械与车辆学院
《机电控制系统仿真与软件设计》
报告
(2014-2015学年第一学期)
课程设计题目:水塔水位机电控制系统设计与仿真
一、课程设计性质和目的_ert_rtw的文件夹,在该文件夹下,建立 如图所示的proteus仿真模型,取名为test;并建立名为test的keil新工程,芯片选择ATMEL公司的AT89C51,接下来要将rtw编译所得到的C源文件导入keil中修改并进行编译生成单片机可执行的.hex文件。
六、嵌入式C代码
描在simulink菜单中Tools选择Real-time?Workshop下的Build?Model,在matlab命令窗口command?window中可以看到详细的编译步骤,编译成功后,simulink文件所在文件夹会出现名为untitled_ert_rtw的文件夹。在该文件夹下,建立如附录3所示的proteus仿真模型,取名为水塔电路图;并建立名为untitled的keil新工程,芯片选择ATMEL公司的AT89C51,接下来要将rtw编译所得到的C源文件导入keil中修改并进行编译生成单片机可执行的.hex文件。?
在keil工程中,Source?Group?1导入rtw编译所得到的C源文件,共有3个,一个为ert_main.c、一个为untitled.c还有rt_zcfcn.c,ert_main.c为主程序,里面要设定输入输出端口,untitled.c为功能程序。?
图7 导入C源文件
(1)如果不进行修改,直接编译会报错,不能编译通过。主要是要修改ert_main.c文件,打开后在头文件处加入#includereg51.h,并对所到的管脚进行定义。如图所示。
图8 修改头文件和加入管脚定义
(2)接下来设定模型输入输出管脚,如图所示。
图9 添加模型输入输出管脚
(3)其中输入输出管脚的名称,可以在test.c中查找得到,必须保持一致。接下来,要对main函数进行修改。
改成
(4)将如下程序段屏蔽或者删除。
在while循环体中添加rt_OneStep();
即变成
将程序中的(void)(argc);fflush((NULL));程序段屏蔽如图所示。
(5)进行编译,会提示找不到solver_zc.h文件,解决办法为:在matlab安装目录下,搜索查找solver_zc.h,将找到的这个文件,复制到test_ert_rtw的文件夹即可,然后右键点击keil工程中Target 1,选择Options for Target ‘Target 1’中Output,选择Creat HEX file,设定好了后,点击编译,成功编译后,便得到test.hex文件,再打开proteus仿真模型,双击AT89C51芯片,加载test.hex文件,运行便得到了任务要求的效果。
七、调试运行及分析
修改完,经过编译正确,将编译好的hex文件导入proteus软件中进行仿真,?见图4。当水位低于下限?,B、C?未触发时?,抽水电机运行抽水?,指示灯点亮。当水位高于下限低于上限,B触发,C?未触发时?,抽水电机运行抽水?,指示灯点亮。当水位上升至上限?,B、C?均触发时?,抽水电机停止抽水?,指示灯灭。出现错误时,电机停止运转,指示灯闪烁。
图10 proteus仿真模型
八、心得体会
(1)在第一次设计与仿真练习过程中遇到了许多的问题其中:在改写嵌入C语言编译时因为没有屏蔽原程序中的void)(argc);fflush((NULL));语句导致程序无法编译。
(2)在第一次的仿真控制8个LED灯时,8个LED灯全都点亮。开始时以为是程序模型的错误,经过多次的检查证实了程序模型没有错误。最后在同学的帮助下,发现了是在嵌入C语言编译中,rt_OneStep();没有放入主函数中。
(3)在水塔水位机电系统设计与仿真实验中:仿真时发现了proteus仿真模型的运行状态不正确,通过多次的检查发现了在stateflow建模时有一个输入端口没有大写,导致输入端口的信号不能与模型连接。
(4)通过本次水位控制系统的Matlab机电控制系统设计与仿真,?使我Matlab的应用有了一个深刻的认识,也有了一个全面的提高。这主要得益老师耐心的教诲与同学们提供资料与帮助的结果。?
通过这次课程设计,我学到了一个全新的软件,让自己在理论知识和软件操作能力方面都得到了很好的训练!还学会了充分利用网络资源等一切可以利用的资源
九、参考文献
[1] 王静霞.单片机应用技术,电子工业出版社.2009.????
[2] Mathworks?Corp.?Stateflow?Users?Guide?R2013a[Z].201
文档评论(0)