APP下载

车辆模拟器中多类型通信的一种管理方法

2013-04-03佴威至

吉林大学学报(工学版) 2013年1期
关键词:子类座舱模拟器

佴威至,刘 越,姚 鹏

(北京理工大学光电学院,北京100081)

随着计算机对图形图像处理与显示能力的快速发展,基于虚拟现实技术[1]的车辆模拟器得到了越来越广泛的应用。一些发达国家将车辆模拟器系统应用于产品设计开发、交通评价以及驾驶员培训等方面[2-4],国内也已有多家科研单位设计了针对不同车辆的用于科研或训练的车辆模拟器,包括挖掘机模拟[5]、消防车模拟[6]等。

在车辆模拟器系统座舱中使用真实的车辆硬件设备,可让模拟器的操作员获得更加真实的操作体验,而这样的模拟器系统中常包含大量操控及反馈设备。车辆模拟器座舱内硬件设备数量增多,常常也使得硬件设备通信类型增多,因为不同设备可能分别使用不同的电气接口,使用不同的通信协议,没有统一的“总线”,对每种设备的数据处理方式常常需有很大的不同,这不仅增大了数据通信管理的规模,也增大了数据通信管理的复杂程度。种类繁多的底层设备通信类型,对于系统的上层功能设计者是很不方便的,容易造成系统上层结构也变得复杂繁琐。在这种情况下,车辆模拟器系统的数据通信管理方式需经过更精心设计,才能让系统的整体结构更加清晰,上层与底层设计更加独立,让系统调试与维护更加容易。

本文以某型车辆模拟器系统为依托,设计了一种多类型通信的管理方法,可简化系统的设计、维护和扩展等工作。

1 系统结构设计

1.1 车辆模拟器系统的整体结构

本设计所依托的车辆模拟器系统整体结构包含以下四部分(见图1)。

①含多种硬件设备的模拟舱子系统。该模拟舱是一简易座舱,包含许多在实际车辆座舱中使用的操控与显示设备,并按实际车辆座舱布局,是模拟器的操作平台。

②通信管理子系统。该子系统负责座舱中各操控设备的数据采集,各反馈设备的数据驱动,是信号仿真子系统与真实座舱设备间数据通信的桥梁。

③信号仿真子系统。该模块负责车辆模拟所必需信号的模拟仿真,包括本车参数与车外环境的模拟。

④控制台子系统。该模块负责系统运行控制与运行监控。

图1 模拟器系统整体结构Fig.1 Simulator system structure

1.2 通信管理子系统结构

模拟舱子系统内包含多种操控与显示设备,每种操控设备均以数据流的形式对外提供操控数据,每种显示设备均需要数据流驱动。多种操控与显示设备使用多种不同的电气接口,且数据协议各不相同,没有统一的“总线”与一致的通信协议。在这种情况下,为了获得更清晰的系统结构,设计一个独立的通信管理子系统专门负责模拟舱子系统与其他子系统间的信息交互是必要的。且为了更好地管理座舱内各设备的数据通信,通信管理子系统需要经由良好的设计,才能保证设备间数据通信、座舱与仿真子系统间数据通信的清晰性、易扩展性、易维护性和易使用性。

通信管理子系统被设计为模拟舱子系统与其它子系统间信息交互的唯一通道。座舱内所有设备均应仅连接到通信管理子系统,由通信管理子系统负责其数据的收发。

通信管理子系统结构设计如图2所示。在该子系统中,每一个硬件接口均有一个对应的接口底层模块。每一个接口底层模块包含实现该接口通信的底层硬件与软件。显然,不同硬件接口的接口底层模块无论在硬件上还是软件上都是大不相同的。每一个硬件接口均有一个唯一的识别号。

图2 通信管理子系统结构Fig.2 Communication manager subsystem structure

通信管理子系统的数据流图如图3所示。每一个接口底层模块都与一个接口协议模块一一对应,接口协议模块负责调用接口底层模块完成数据的收发及组包、解包工作。对于接收到的数据帧,接口协议模块将其根据协议解析为结构清晰、含义明确的消息,提供给上层模块。对于需要发送的消息,接口协议模块将其组织为协议规定的底层数据帧格式,并控制接口底层模块完成数据帧的输出。

图3 通信管理子系统数据流图Fig.3 Data flow diagram of the subsystem

消息是各设备数据信息的统一表达格式,包含数据来源标识、数据去向标识、数据类型标识、数据名称标识、数据属性标识等。不同通信类型的硬件设备收发的数据流,经过相应接口协议模块的组包与解包后,都转化为格式一致的消息,对于上层模块是无区别的。

所有接口协议模块之上是消息管理模块,该模块统一管理各接口的消息收发任务,是与功能层模块直接交互的模块,为功能层模块提供方便简单的调用接口。每一个硬件接口通过“登记”的方式与消息管理模块建立联系,在登记的过程中,消息管理模块记录下接口的识别号,以及哪些功能层模块需要该接口接收的数据。当来自某硬件设备的一条消息产生时,消息管理模块将其派送给需要它的功能层模块。同时,功能层模块需要发送一条消息时,只需将其交给消息管理模块,消息管理模块跟据接口标识决定将该消息派送给哪些硬件接口。

在上述结构下,功能层模块设计不再需要顾虑繁多的数据通信类型与互异的数据流处理方法,从不同的硬件接口读入或输出数据都使用相同的方法,仅需通过不同的识别号区分不同的硬件接口,从而实现与底层硬件管理的分离,只需专注于功能逻辑,完成模拟舱子系统、信号仿真子系统与控制台子系统间必要的信息交互。

该通信管理方法具有以下优点。

①使系统的硬件设备管理更清晰。该方法对各种不同类型的硬件通信经底层封装后进行上层统一管理,使各种类型的通信管理不再散乱分立。

②使系统底层设计与上层设计相互更独立。对系统设计者而言,繁多的通信类型不再干扰系统上层功能设计,系统功能层设计者不需关心通信的底层实现,只需专注于功能逻辑的设计。同时,各种硬件通信的底层实现设计者只要按照规范将数据流转化为消息,并提供消息内容解释说明,不需再分别单独考虑如何与上层功能设计更好配合的问题。

③使系统开发与维护更容易。这是该通信管理方法具有的最核心优点。在车辆模拟器系统开发过程中,经常会遇到各级设计的修改与反复,例如修改座舱中某个操控设备的硬件接口,修改座舱中某个操控设备的通信协议,更换某个底层硬件的型号,修改几个设备间逻辑主从关系等。每一项修改通常只需修改结构中的相关层,而与其它层无关。例如,若要修改座舱中某个操控设备的通信协议,只需用新的接口协议模块替换原来对应模块,并保持识别号与原来相同,而接口底层模块和其他上层模块不需改动。

2 通信管理子系统的实现

本文所研究的车辆模拟器系统包含模拟舱、通信管理计算机、信号仿真计算机以及控制台计算机等。其中,信号仿真计算机组、控制台计算机和通信管理计算机通过以太局域网相连,模拟舱内的多种操控设备通过不同种类的硬件接口与通信管理计算机相连,包括CAN总线接口、RS232接口,RS485接口,RS422接口,TCP以太网通信接口和UDP以太网通信接口。

通信管理计算机是前一节通信管理子系统设计的实现。该计算机中安装了多种硬件接口卡。通信管理计算机上运行通信管理软件,通信管理软件基于Microsoft.NET Framework 2.0平台,采用C#语言编写。

通信管理软件的面向对象结构设计对应前一节所述的通信管理子系统结构设计。程序核心包括一个接口底层父类、一个接口协议父类、一个消息管理类和一个模拟功能父类,分别对应通信管理子系统结构设计的四个主要模块。

对每一个硬件接口,都从接口底层父类和接口协议父类派生出相应的子类,接口底层子类对象实现硬件接口数据收发的底层细节,接口协议子类对象根据各设备的通信协议完成数据帧的组织与收发。每个接口协议子类对象内各运行一个独立的线程,用于主动接收数据帧,并按照协议将收到的数据帧经拼包、校验、转义等程序组织成为消息交给消息管理类对象。程序中有惟一一个消息管理类对象,负责消息在上层模块与底层模块间的传递。模拟功能类对象实现程序的上层逻辑。

部分功能层模块只需要与一个硬件接口相关联,同时也有一些功能层模块需要与多个硬件接口相关联,即需要从多个硬件接口收发数据。为此,消息管理类中存放了一个模拟功能子类与硬件接口的关系表,用来记录各个模拟功能子类所需要使用的硬件接口。在程序初始化时,各模拟功能子类对象需登记声明需要使用的硬件接口,这样当这些硬件接口接收到数据并组织成为消息后,消息管理类会将消息传送给这些子类对象。

控制台子系统与信号仿真子系统通过以太网通信与通信管理计算机交互信息。对于通信管理子系统,控制台子系统与信号仿真子系统虽然不属于模拟舱内的设备,但可使用一致的方式进行数据通信,即将网络通信也视为一类硬件接口,将其封装并接受与消息管理类同等的管理。这种方式强化了通信管理子系统对各类通信统一管理的思想。

3 应用效果

本文提出的通信管理方法在某型车辆模拟器系统中得到应用(见图4)。该车辆模拟器系统的设计与研发过程中,时常遇到与座舱设备相关的设计修改与反复。该通信管理方法在其中的应用使得这些修改与反复通常比较容易处理,且每次处理后很少直接引起其它已正常工作的模块出现新的问题。

图4 座舱示意图Fig.4 The cabin

一些舱内使用的硬件设备与该模拟器同步研发,因此时常更改通信协议,通信管理软件对此做出相应的更改时,只修改该硬件设备的接口协议子类的程序,与其它程序模块的开发并行完成,未打断或影响其它程序模块的开发进度。一些硬件设备具有多个版本,且都会在不同批次的模拟器系统中使用,针对这一种硬件设备多个版本分别同时使用的情况,该硬件设备的接口底层子类与接口协议子类也设计派生出多种版本,使通信管理软件可根据用户的指令在线选择使用其中某个版本,启用相应的软件模块,由此避免在安装新批次系统及维护旧批次系统时再调整程序。还有一些硬件设备在系统中的数量时常被调整,其接口底层子类及接口协议子类实例化为对象的数量则需做出相应调整,并收发同样的消息,仅是识别号不同,亦未对上层程序开发造成额外影响。

在该车辆模拟器系统运行过程中,通信管理子系统工作稳定,未观察到丢失通信信息的现象。当某些硬件设备的工作状态或通信状态出现异常时,很少对其它无关硬件设备的正常工作造成影响。通信管理子系统为座舱内各操控与显示设备提供了稳定的驱动。

4 结论

本文提出一种车辆模拟器系统中硬件设备通信的管理方法,将不同的硬件接口进行底层封装后用统一的方式管理,使不同的硬件接口对上层功能来说具有一致性。将该通信管理方法设计应用于某型车辆模拟器系统,使该系统的设计、维护与扩展工作变得容易,并为该系统的运行提供了良好的支撑。

[1]Bryson S.Approaches to the successful design and implementation of vr applications[C]∥SIGGRAPH 94,Orlando,1994.

[2]Norfleet D,Wagner J.Automotive driving simulators: research,education,and entertainment[J].SAE Int J Passeng Cars-Electron Electr Syst,2009,2(1):186-193.

[3]Arjona J T,Menendez JM.Virtual reality devices in driving simulators:state of the artand ongoing developments at UPM[R].FP6-Prio 2:Information Society Technologies,2005.

[4]王晶,刘小明,李德慧.驾驶模拟器现状及应用研究[J].交通标准化,2008(11):160-163.

Wang Jing,Liu Xiao-ming,LiDe-hui.Driving simulator status quo and application research[J].Communications Standardization,2008(11):160-163.

[5]王东,陈明宏,钟冠,等.某型挖掘机模拟操作舱和信号采集电路设计[J].建筑机械,2010(19):97-100.

Wang Dong,Chen Ming-hong,Zhong Guan,etal.Design of simulated cockpit and signal acquisition circuit for a kind of excavator[J].Construction Machinery,2010 (19):97-100.

[6]王立文,李洪帅.机场消防车辆模拟器的视景系统研究[J].计算机工程与应用,2012,48(7):238-241.

Wang Li-wen,LiHong-shuai.Visual simulation research on pumper simulator of airfield[J].Computer Engineering and Applications,2012,48(7):238-241.

猜你喜欢

子类座舱模拟器
开放式数字座舱软件平台IndiGO
了不起的安检模拟器
规律:座舱真漂亮
盲盒模拟器
划船模拟器
卷入Hohlov算子的某解析双单叶函数子类的系数估计
NDT推出面向下一代智能座舱应用的压感触控解决方案
Java面向对象编程的三大特性
Java类的继承
动态飞行模拟器及其发展概述