跳过正文

基于VxWorks的某型飞机机载总线仿真系统

VxWorks Aircraft Simulation
目录
app - 这篇文章属于一个选集。
§ 5: 本文

摘要: 结合某新型飞机,介绍了一种基于嵌入式实时操作系统VxWorks的总线仿真系统设计方法。使用航空机载总线技术,计算机局域网技术,重点是VxWorks技术,论证并设计了虚实结合的机载数据总线的通信仿真系统,构造了具有远程通信能力的飞机内部设备连接、分析、研究、实验、测试的通用平台。

关键字: VxWorks、实时系统、航空电子、总线、仿真系统

引言
#

现代航空工业中,机载航空电子总线系统是连接机载设备的神经中枢,它关系到机载设备之间能否进行正常的通信和共同完成对飞机的控制、操纵、信息综合和通信、导航的任务。因此,对于高可靠性的机载总线系统,要保证飞机机载设备通信的正确性,就必须首先研制总线仿真系统,通过仿真系统的研制和仿真软件的运行,在地面上全面仿真航空电子设备之间的通信,可以缩短航空电子总线研制周期,提高飞机性能。

VxWorks是由美国WRS (Wind River System)公司开发的微内核高性能可裁剪的可用于机载计算机的一种新型嵌入式实时操作系统。它以其良好的可靠性和卓越的实时性被应用在美国的F-16、FA-18战斗机、B-2隐形轰炸机等飞机上。为了提高国家作战飞机的机载计算机水平,与国际接轨达到国际先进水平,我国已经开始进行开发研制并取得一定成绩。本文采用VxWorks开发研制的,基于某型飞机机载总线仿真系统也已获得成功。

实时操作系统与VxWorks
#

实时性与实时操作系统
#

实时操作系统是能够在限定的时间内执行完指定的功能,并能在限定的时间内对外部的异步事件做出响应的操作系统。对一个实时操作系统来讲,系统本身的中断延迟、同步时间和上下文切换时间是3个决定性的因素。

VxWorks简介
#

VxWorks是以高可靠性标准设计的实时操作系统,系统响应时间达微秒,是目前世界上应用最为广泛的实时操作系统之一。VxWorks可以处理多发的而且是并发的随机事件,这是通过多进程(多任务)运行机制来完成的。其高性能的微内核Wind包括多任务调度(采用优先级抢占方式)任务间的同步和进程间通信机制。以及中断处理。看门狗和内存管理机制。Wind使用中断驱动和优先级的方式,它缩短了上下文转换的时间开销和中断的延时,满足更强的实时性要求。

作为嵌入式系统开发,VxWorks开发过程采用主机、目标机体系结构,如图1所示,将开发工具放在主机上,将操作系统的核心模块放在目标机上,操作系统提供对跟踪调试进行支持的手段。VxWorks提供的Tornado Ⅱ集成开发环境十分友好,并提供了多种开发工具和手段,集设计。开发。分析等特性于一体,同时对目标机系统的影响做到最小。

VxWorks Aircraft

系统整体方案
#

依据某型飞机总线标准开发的仿真系统,可以实时截获和分析多种飞机内部的数据流,提供电子系统的检测与故障诊断,为教学、科研以及新机部队提供分析、研究和开发的技术支持。

该仿真系统由带有配套软件系统的RT和服务器以及远程传输设备组成。基本工作原理如图2所示:

VxWorks Aircraft

RT通过SBI/MBI接口卡经过网络与仿真计算机相连,构成实总线系统,用来对飞机内部数据进行实时截获、分析DRT之间还可通过网卡直接相连,构成虚总线系统,用来模拟真实总线上数据的传输并驱动各种仿真设备。仿真计算机与安装有Tornado Ⅱ集成开发环境的标准PC机(主机)相连。同时系统可以进行远程通讯,为部队与院校联合分析、诊断机载设备故障形成了一个有效的数据管理中心。

仿真计算机采用Motorola超级小型机,PowerPC处理器,VxWorks实时操作系统,在主机目标机体系结构中它是作为目标机(Target)该机型是一个松耦合多处理机系统,仿真计算机作为整个飞行仿真系统的核心,主要负责完成输入输出及各节点任务之间的协调、实时数据存储和大量的科学计算,包括飞行方程解算、控制率解算、模型解算等。主机(Host)采用WINDOWS NT4.0操作系统。主机作为管理系统控制台(人机界面),主要负责人机交互,数据监测、数据管理等,目的是为用户提供一个图形化的人机接口。

仿真系统软件主要实现以下功能:

  • 驱动SBI/MBI接口板工作
  • 以数字量或模拟量的形式编辑数据
  • 在实/虚总线间传输数据
  • 数据的数字量和真实值之间的转换
  • 驱动仿真设备
  • 远程数据传输

VxWorks的实际应用
#

在开发过程中主机一方是一台安装有Tornado Ⅱ集成开发环境的标准PC机,它通过网络与目标机(仿真计算机)相连。其开发过程主要可以对照图3加以说明:

VxWorks Aircraft

  1. 在Tornado Ⅱ集成环境的Editor中用C++语言编写应用程序,并利用Diab C++ Compliler嵌入式编译器编译。
  2. 制作引导盘,并配置TargetServer为调试程序做准备TargetServer管理主机一方的,Tornado工具与目标机上,TargetAgent之间的通信,在主机工具能够调试目标机上的应用程序之前必须配置并启动TargetServer。
  3. 用引导盘启动目标机,同时在主机一方启动TargetServer建立主机与目标机的连接,下载源代码编译生成的“,out”文件,这样就可以在主机上通过网络对目标机进行各种调试。从图2可以看到Shell、Debugger、WindView 均可以参与调试,它们完成不同的功能。目前采用的是Debugger,这个高性能的调试器具有最新的提高生产率的图形化特征,可以成组地观察表达式的观察窗口,迅速改变变量、寄存器和局部变量的值,并通过信息归整和分类的方法有效地提供信息。
  4. 程序调试无误后就可以与操作系统合二为一,形成一个VxWorks文件。

问题的解决
#

在系统设计过程中涉及几个典型的问题,其解决方法如下:

多控件的访问
#

仿真软件的界面由42个按钮和,34个文本框组成,用VC++的MFC Class Wizard时,不仅需要对每一个控件生成对象和相应的消息响应函数,还要依次对每一个控件进行消息映射,代码量巨大而且难于管理。

在本系统中,为了方便地访问到每个控件对象,采用了控件数组,对于控件数组的消息映射以及消息响应函数,使用宏ON_COMMAND_SCOPE添加消息映射,对于同一类控件用一个消息响应函数,并给每个控件分配一个ID号,利用消息响应函数OnClickCommand(UNIT id)捕捉用户的按键动作,根据ID触发相应的事件进行处理。

多线程的同步
#

为了协调多个并发线程的同步,采用了VC++6.0的互斥机制,即同步对象CMutex用于访问接收缓冲区。在使用缓冲区时,线程ReceiveThread需要调用CMutex类的lock()函数,获得对缓冲区的访问权,然后才可以读写缓冲区。如果有其他线程正在访问,线程ReceiveThread只能等待。使用结束后,再调用CMutex类的unlock()函数,释放缓冲区的访问权。下面是互斥访问缓冲区的框架代码:

CDatadeal*pDlg

pDlg->m_BufferMutex.lock();//申请

...//访问缓冲区

pDlg->m_BufferMutex.unlock();//退出

多客户请求的处理
#

虚总线设计时,为了同时处理多个RT请求,建立了Socket队列,并把每个客户端的请求加到该对列中:

CPtrList m_pConnectionList//建立队列
CSocket*PSocket=new CSocket()//建立对象
if (m_pListeningSocket->Accept(*pSocket))
{
    m_pConnectionList.Addtail(pSocket);//把对象添加到队列中}
    ......
}

结论与展望
#

本文介绍了一种基于实时嵌入式操作系统VxWorks的某型飞机记载总线仿真系统。在实践中,成功开发出基于VxWorks的飞行仿真系统,仿真周期小于8ms。

VxWorks运用到机载计算机上使得飞机的稳定性、可靠性、安全性得到巨大提高,相信VxWorks必将在机载计算机中得到很好的应用。

(文章选自《火力与指挥控制》作者:闫莉,王勇,作者单位:空军工程大学工程学院,转载此文章仅以传播知识为目的,如有任何版权问题请及时联系我们!)

app - 这篇文章属于一个选集。
§ 5: 本文

相关文章

基于VxWorks实时操作系统的串口通信程序设计与实现
VxWorks UART
VxWorks下的多重定时器设计
VxWorks Timer
VxWorks 7自启动应用程序的四种方法
VxWorks VSB VIP