微软公司宣布不再支持你正在使用的 IE浏览器,这会严重影响浏览网页,请使用微软最新的Edge浏览器
厂商专区
产品/技术
应用分类

交互式应用一举两得 实时仿真与嵌入式系统并构

2013-12-16 10:17 来源:电源网 编辑:娣雾儿

1、前言

对于程序开发和许多交互式应用来说,UNIX和Windows可以算是优秀的操作系统。然而,它们都不适于实时应用。Tornado是美国 WindRiver公司为用户提供的嵌入式开发平台,VxWorks是Tornado的运行期组件,也是嵌入式行业应用最为广泛的实时操作系统。 VxWorks的实时性做的非常好,其系统本身的开销很小,任务调度、任务间通信和中断处理等系统公用程序精炼而高效,他们造成的延迟很短。 VxWorks提供的多任务机制对任务的控制采用了优先级抢占调度和轮转调度机制,也充分保证了可靠的实时性,使同样的硬件配置能够满足更强的实时性要求,为应用的开发留下更大的余地。

RTW(Real-Time Workshop)是Matlab图形建模和仿真环境Simulink的一个重要的补充功能模块,它是一个基于Simulink的代码自动生出环境,它能直接从Simulink的模型中产生优化的、可移植的和个性化的代码,并根据目标配置自动生成多种环境下的程序。

RTW提供了几个快速原型化的目标,其中包括提供了从Simulink模型到VxWorks应用代码的自动转换接口Tornado Real-Time Target,可以让用户的模型在VxWorks上执行。

2、Tornado(VxWorks)实时目标运行时结构

开发VxWorks实时应用系统的典型配置,如图1所示:

仿真1

图1 VxWorks实时应用开发的经典配置

实时代码在主机上,用Tornado提供的交叉编译器编译。通过RTW的Tornado实时目标生成目标文件(vxmodel.lo),可通过 Tornado集成开发环境的WindSh下载到VxWorks目标机。实时程序在VxWorks目标机上执行,通过IO设备和外部硬件交换数据,并保持和主机之间的相互通信。

实时程序运行在VxWorks目标机上,而Simulink运行在主机上。Simulink需要VxWorks目标机上运行的任务来处理通信过程。 Tornado(VxWorks)Real-Time Tartget生成如下VxWorks任务:一个用于和Simulink通信,其他用于完成模型功能[2]。

3、Tornado(VxWorks)实时目标的实现过程

3.1 实验环境

我的实验环境如下表:

仿真2

表1 实验环境


3.2 实时目标的具体实现步骤

为了通过Real-Time Workshop实现和运行一个基于VxWorks的实时程序,用户可按如下的步骤进行:

(1) 在Matlab/Simulink下建立一个模型,这里以一个经典的PID模型为例:

仿真3

图2 实验所采用的经典PID模型

模型采用外部工作模式(External Mode),并设置Simulink Parameters对话框中的参数:

仿真5

图3 仿真参数Solver设置

仿真6

图4 仿真参数Real-Time Workshop设置

仿真7

图5 仿真参数code generation options设置


(2) 配置模板联编连文件tornado.tmf,该文件位于%matlabroot%/rtw/c/tornado目录下,要对这个文件作如下修改:

#------------ Macros read by make_rtw -------------

MAKECMD = C:Tornado2.2hostx86-win32 inmake

HOST = PC

#-------------Tool Locations-----------------------------

WIND_BASE= C:Tornado2.2

WIND_REGISTRY=$(COMPUTERNAME)

WIND_HOST_TYPE=x86-win32

#------------Vxworks Configuration------------------

VX_TARGET_TYPE = pentium

CPU_TYPE = PENTIUM2

#-------------Macros for Downloading to Target-----

TARGET=target

TGTSVR_HOST=host

VX_CORE_LOC = $(WIND_BASE)/target/config/ pcPentium3/vxWorks

(3) 程序的生成、编译、连接

设置完参数,保存后,开始创建程序,单击上图中的Build按钮,开始编译程序,成功后可在当前的目录中产生了一个 vxmodel_tornado_rtw的文件夹和一个目标文件vxmodel.lo。

(4) 手动下载和运行可执行文件

现在可以将实时程序下载到目标机中,具体的方法是在Tornado集成开发环境中启动WindSh,在WindSh窗口执行如下命令:

 ld<vxmodel.lo

请注意要保证lo文件在WindSh的工作路径下。VxWorks实时程序定义了一个函数rt_main(),用来创建和执行模型代码、完成与 Simulink的通信(如果选择了外部模式方式)。rt_main函数在文件rt_main.c中定义,这个文件位于目录%matlabroot% twc ornado中。

在WindSh窗口中调用rt_main函数,开始运行程序:sp(rt_main,vxmodel,"-tf 100 -w ","*",0,30,17725)

参数的含义分别是:

rt_main()是实时程序定义的函数,用来产生任务执行代码和与Simulink进行通信;

-tf用于指定仿真时间,此处设为100秒;

-w表示在外部模式时,运行前等待来自Simulink消息的触发;

“*”为安装所有的信号;

0表示使用各自的模块名;

30表示使用默认作为tBaseRate优先级;

17725为TCP默认端口号(可以设置在256~65535之间)。

运行后我们可以看到目标机上的屏幕上显示:

waiting for start message from host


(5) 建立连接

在External Target Interface对话框中的MEX-file arguments指定目标机的IP、冗长度和TCP端口号,如图6所示,就可以建立连接了。

仿真8

图6 External Target Interface对话框设置

打开External Mode Control Panel,如图7所示。点击Connect按钮,执行Start real-time code,可以看到Scope上的图形输出。此时,可以改变模型的参数(如增益的数值),参数下载后Scope的曲线将随之改变。仿真时间结束以后,可以看到产生了一个external.mat文件,由目标机会传到主机,放在Tornado的安装根目录下。

仿真9

图7 External Mode Control Panel对话框

4、结论

针对Matlab的仿真特性和VxWorks操作系统的实时特点,本文介绍了RTW面向Tornado(VxWorks)实时目标的运行结构,并且较为详细的阐述了Tornado(VxWorks)实时目标的具体实现流程,实现了Simulink在Tornado(VxWorks)实时目标下的仿真在结合相关文档的同时,加入亲身实验的经验,增补了一些必要的内容,完善了实验的具体步骤,降低了今后实验的调试难度。

声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。

相关阅读

微信关注
技术专题 更多>>
研发工程师的工具箱
智慧生活 创新未来

头条推荐

电子行业原创技术内容推荐
客服热线
服务时间:周一至周五9:00-18:00
微信关注
获取一手干货分享
免费技术研讨会
editor@netbroad.com
400-003-2006