Matlab和VxWorks是当今工业流行的仿真软件和嵌入式操作系统,二者之间的结合极大的方便了程序在嵌入式平台上的仿真。本文介绍了Matlab中RTW面向VxWorks实时目标的实现的方法和具体流程。
1、前言
对于程序开发和许多交互式应用来说CONTROL ENGINEERING China版权所有,UNIX和Windows可以算是优秀的操作系统。然而,它们都不适于实时应用。Tornado是美国WindRiver公司为用户提供的嵌入式开发平台www.cechina.cn,VxWorks是Tornado的运行期组件,也是嵌入式行业应用最为广泛的实时操作系统。VxWorks的实时性做的非常好,其系统本身的开销很小,任务调度、任务间通信和中断处理等系统公用程序精炼而高效控制工程网版权所有,他们造成的延迟很短。VxWorks提供的多任务机制对任务的控制采用了优先级抢占调度和轮转调度机制,也充分保证了可靠的实时性,使同样的硬件配置能够满足更强的实时性要求,为应用的开发留下更大的余地。
RTW(Real-Time Workshop)是Ma
tlab图形建模和仿真环境Simulink的一个重要的补充功能模块,它是一个基于Simulink的代码自动生出环境,它能直接从Simulink的模型中产生优化的、可移植的和个性化的代码,并根据目标配置自动生成多种环境下的程序。
RTW提供了几个快速原型化的目标,其中包括提供了从Simulink模型到VxWorks应用代码的自动转换接口Tornado Real-Time Target,可以让用户的模型在VxWorks上执行。
2、Tornado(VxWorks)实时目标运行时结构
开发VxWorks实时应用系统的典型配置,如图1所示:
图1 VxWorks实时应用开发的经典配置 实时代码在主机上,用Tornado提供的交叉编译器编译。通过RTW的Tornado实时目标生成目标文件(vxmodel.lo),可通过Tornado集成开发环境的WindSh下载到VxWorks目标机。实时程序在VxWorks目标机上执行,通过IO设备和外部硬件交换数据www.cechina.cn,并保持和主机之间的相互通信。 实时程序运行在VxWorks目标机上,而Simulink运行在主机上。Simulink需要VxWorks目标机上运行的任务来处理通信过程。Tornado(VxWorks)Real-Time Tartget生成如下VxWorks任务:一个用于和Simulink通信,其他用于完成模型功能[2]。 3、Tornado(VxWorks)实时目标的实现过程 3.1 实验环境 我的实验环境如下表: 表1 实验环境 3.2 实时目标的具体实现步骤 为了通过Real-Time Workshop实现和运行一个基于VxWorks的实时程序,用户可按如下的步骤进行: (1) 在Matlab/Simulink下建立一个模型,这里以一个经典的PID模型为例: 图2 实验所采用的经典PID模型 模型采用外部工作模式(External Mode),并设置Simulink Parameters对话框中的参数: 图3 仿真参数Solver设置 图4 仿真参数Real-Time Workshop设置 图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 #------------Vxw