HEATS 发表于 2010-9-13 22:20:04

实时仿真与嵌入式系统

<STRONG>1、前言</STRONG>
<P>&nbsp;&nbsp;&nbsp; 对于程序开发和许多交互式应用来说,UNIX和Windows可以算是优秀的操作系统。然而,它们都不适于实时应用。Tornado是美国WindRiver公司为用户提供的嵌入式开发平台,VxWorks是Tornado的运行期组件,也是嵌入式行业应用最为广泛的实时操作系统。VxWorks的实时性做的非常好,其系统本身的开销很小,任务调度、任务间通信和中断处理等系统公用程序精炼而高效,他们造成的延迟很短。VxWorks提供的多任务机制对任务的控制采用了优先级抢占调度和轮转调度机制,也充分保证了可靠的实时性,使同样的硬件配置能够满足更强的实时性要求,为应用的开发留下更大的余地。</P>
<P>&nbsp;&nbsp;&nbsp; RTW(Real-Time Workshop)是Matlab图形建模和仿真环境Simulink的一个重要的补充功能模块,它是一个基于Simulink的代码自动生出环境,它能直接从Simulink的模型中产生优化的、可移植的和个性化的代码,并根据目标配置自动生成多种环境下的程序。</P>
<P>&nbsp;&nbsp;&nbsp; RTW提供了几个快速原型化的目标,其中包括提供了从Simulink模型到VxWorks应用代码的自动转换接口Tornado Real-Time Target,可以让用户的模型在VxWorks上执行。</P>
<P><STRONG>&nbsp;&nbsp;&nbsp; 2、Tornado(VxWorks)实时目标运行时结构</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 开发VxWorks实时应用系统的典型配置,如图1所示:</P>
<P align=center><IMG src="http://www.chmcw.com/upload/news/RCL/13220_mfa0uq200741495543.gif"></P>
<P align=center><STRONG>图1 VxWorks实时应用开发的经典配置</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 实时代码在主机上,用Tornado提供的交叉编译器编译。通过RTW的Tornado实时目标生成目标文件(vxmodel.lo),可通过Tornado集成开发环境的WindSh下载到VxWorks目标机。实时程序在VxWorks目标机上执行,通过IO设备和外部硬件交换数据,并保持和主机之间的相互通信。</P>
<P>&nbsp;&nbsp;&nbsp; 实时程序运行在VxWorks目标机上,而Simulink运行在主机上。Simulink需要VxWorks目标机上运行的任务来处理通信过程。Tornado(VxWorks)Real-Time Tartget生成如下VxWorks任务:一个用于和Simulink通信,其他用于完成模型功能。</P>
<P>&nbsp;<STRONG>&nbsp;&nbsp; 3、Tornado(VxWorks)实时目标的实现过程</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 3.1 实验环境</P>
<P>&nbsp;&nbsp;&nbsp; 我的实验环境如下表:</P>
<P align=center><STRONG>表1 实验环境<BR></STRONG></P>
<P align=center><IMG src="http://www.chmcw.com/upload/news/RCL/13220_0ujzzb200741495654.gif"></P>
<P>&nbsp;&nbsp;&nbsp; 3.2 实时目标的具体实现步骤</P>
<P>&nbsp;&nbsp;&nbsp; 为了通过Real-Time Workshop实现和运行一个基于VxWorks的实时程序,用户可按如下的步骤进行: </P>
<P>&nbsp;&nbsp;&nbsp; (1) 在Matlab/Simulink下建立一个模型,这里以一个经典的PID模型为例:</P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_wkevpb200741410153.gif"></STRONG></P>
<P align=center><STRONG>图2 实验所采用的经典PID模型</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 模型采用外部工作模式(External Mode),并设置Simulink Parameters对话框中的参数:</P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_xjpmrf200741410236.gif"></STRONG></P>
<P align=center><STRONG>图3 仿真参数Solver设置</STRONG></P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_c255te200741410254.gif"></STRONG></P>
<P align=center><STRONG>图4 仿真参数Real-Time Workshop设置</STRONG></P>
<P align=center><STRONG><IMG src="http://www.chmcw.com/upload/news/RCL/13220_tphoag200741410318.jpg"></STRONG></P>
<P align=center><STRONG>图5 仿真参数code generation options设置</STRONG></P>
<P>(2) 配置模板联编连文件tornado.tmf,该文件位于%matlabroot%/rtw/c/tornado目录下,要对这个文件作如下修改: </P>
<P></P>
<P>&nbsp;&nbsp;&nbsp; #------------ Macros read by make_rtw -------------<BR>&nbsp;&nbsp;&nbsp; MAKECMD = C:Tornado2.2hostx86-win32 inmake<BR>&nbsp;&nbsp;&nbsp; HOST = PC<BR>&nbsp;&nbsp;&nbsp; #-------------Tool Locations-----------------------------<BR>&nbsp;&nbsp;&nbsp; WIND_BASE= C:Tornado2.2<BR>&nbsp;&nbsp;&nbsp; WIND_REGISTRY=$(COMPUTERNAME)<BR>&nbsp;&nbsp;&nbsp; WIND_HOST_TYPE=x86-win32<BR>&nbsp;&nbsp;&nbsp; #------------Vxworks Configuration------------------<BR>&nbsp;&nbsp;&nbsp; VX_TARGET_TYPE = pentium<BR>&nbsp;&nbsp;&nbsp; CPU_TYPE = PENTIUM2<BR>&nbsp;&nbsp;&nbsp; #-------------Macros for Downloading to Target-----<BR>&nbsp;&nbsp;&nbsp; TARGET=target<BR>&nbsp;&nbsp;&nbsp; TGTSVR_HOST=host<BR>&nbsp;&nbsp;&nbsp; VX_CORE_LOC&nbsp;&nbsp;&nbsp; = $(WIND_BASE)/target/config/ pcPentium3/vxWorks</P>
<P>&nbsp;&nbsp;&nbsp; (3) 程序的生成、编译、连接</P>
<P>&nbsp;&nbsp;&nbsp; 设置完参数,保存后,开始创建程序,单击上图中的Build按钮,开始编译程序,成功后可在当前的目录中产生了一个vxmodel_tornado_rtw的文件夹和一个目标文件vxmodel.lo。</P>
<P>&nbsp;&nbsp;&nbsp; (4) 手动下载和运行可执行文件</P>
<P>&nbsp;&nbsp;&nbsp; 现在可以将实时程序下载到目标机中,具体的方法是在Tornado集成开发环境中启动WindSh,在WindSh窗口执行如下命令:</P>
<P>&nbsp;&nbsp;&nbsp; ld<vxmodel.lo</P>
<P>&nbsp;&nbsp;&nbsp; 请注意要保证lo文件在WindSh的工作路径下。VxWorks实时程序定义了一个函数rt_main(),用来创建和执行模型代码、完成与Simulink的通信(如果选择了外部模式方式)。rt_main函数在文件rt_main.c中定义,这个文件位于目录%matlabroot% twc ornado中。</P>
<P>&nbsp;&nbsp;&nbsp; 在WindSh窗口中调用rt_main函数,开始运行程序:sp(rt_main,vxmodel,"-tf 100 -w ","*",0,30,17725)</P>
<P>&nbsp;&nbsp;&nbsp; 参数的含义分别是:</P>
<P>&nbsp;&nbsp;&nbsp; rt_main()是实时程序定义的函数,用来产生任务执行代码和与Simulink进行通信;<BR>&nbsp;&nbsp;&nbsp; -tf用于指定仿真时间,此处设为100秒;<BR>&nbsp;&nbsp;&nbsp; -w表示在外部模式时,运行前等待来自Simulink消息的触发;<BR>&nbsp;&nbsp;&nbsp; “*”为安装所有的信号;<BR>&nbsp;&nbsp;&nbsp; 0表示使用各自的模块名;<BR>&nbsp;&nbsp;&nbsp; 30表示使用默认作为tBaseRate优先级;<BR>&nbsp;&nbsp;&nbsp; 17725为TCP默认端口号(可以设置在256~65535之间)。</P>
<P>&nbsp;&nbsp;&nbsp; 运行后我们可以看到目标机上的屏幕上显示:<BR>&nbsp;&nbsp;&nbsp; waiting for start message from host</P>
<P>&nbsp;&nbsp;&nbsp; (5) 建立连接</P>
<P>&nbsp;&nbsp;&nbsp; 在External Target Interface对话框中的MEX-file arguments指定目标机的IP、冗长度和TCP端口号,如图6所示,就可以建立连接了。</P>
<P align=center><IMG src="http://www.chmcw.com/upload/news/RCL/13220_ut0g3j20074141063.gif"></P>
<P align=center><STRONG>图6 External Target Interface对话框设置</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 打开External Mode Control Panel,如图7所示。点击Connect按钮,执行Start real-time code,可以看到Scope上的图形输出。此时,可以改变模型的参数(如增益的数值),参数下载后Scope的曲线将随之改变。仿真时间结束以后,可以看到产生了一个external.mat文件,由目标机会传到主机,放在Tornado的安装根目录下。</P>
<P align=center><IMG src="http://www.chmcw.com/upload/news/RCL/13220_3zpi3p200741410627.gif"></P>
<P align=center><STRONG>图7 External Mode Control Panel对话框</STRONG></P>
<P><STRONG>&nbsp;&nbsp;&nbsp; 4、结论 </STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 针对Matlab的仿真特性和VxWorks操作系统的实时特点,本文介绍了RTW面向Tornado(VxWorks)实时目标的运行结构,并且较为详细的阐述了Tornado(VxWorks)实时目标的具体实现流程,实现了Simulink在Tornado(VxWorks)实时目标下的仿真。</P>
<P>&nbsp;&nbsp;&nbsp; 在结合相关文档的同时,笔者加入了亲身实验的经验,增补了一些必要的内容,完善了实验的具体步骤,降低了为读者今后实验的调试难度。</P>
               
页: [1]
查看完整版本: 实时仿真与嵌入式系统

中国磨床技术论坛
论 坛 声 明 郑重声明:本论坛属技术交流,非盈利性论坛。本论坛言论纯属发表者个人意见,与“中国磨削技术论坛”立场无关。 涉及政治言论一律删除,请所有会员注意.论坛资源由会员从网上收集整理所得,版权属于原作者. 论坛所有资源是进行学习和科研测试之用,请在下载后24小时删除, 本站出于学习和科研的目的进行交流和讨论,如有侵犯原作者的版权, 请来信告知,我们将立即做出整改,并给予相应的答复,谢谢合作!

中国磨削网