2. Tornado(VxWorks)实时目标运行时结构
开发VxWorks实时应用系统的典型配置,如图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 实验环境
我的实验环境如下表:
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.2\host\x86-win32\bin\make
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%\rtw\c\tornado中。
在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所示,就可以建立连接了。
图6 External Target Interface对话框设置
打开External Mode Control Panel,如图7所示。点击Connect按钮,执行Start real-time code,可以看到Scope上的图形输出。此时,可以改变模型的参数(如增益的数值),参数后Scope的曲线将随之改变。仿真时间结束以后,可以看到产生了一个external.mat文件,由目标机会传到主机,放在Tornado的安装根目录下。
图7 External Mode Control Panel对话框
4.结论
针对Matlab的仿真特性和VxWorks操作系统的实时特点,本文介绍了RTW面向Tornado(VxWorks)实时目标的运行结构,并且较为详细的阐述了Tornado(VxWorks)实时目标的具体实现流程,实现了Simulink在Tornado(VxWorks)实时目标下的仿真。
在结合相关文档的同时,笔者加入了亲身实验的经验,增补了一些必要的内容,完善了实验的具体步骤,降低了为读者今后实验的调试难度。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。