佴威至,劉 越,姚 鵬
(北京理工大學光電學院,北京100081)
隨著計算機對圖形圖像處理與顯示能力的快速發(fā)展,基于虛擬現(xiàn)實技術[1]的車輛模擬器得到了越來越廣泛的應用。一些發(fā)達國家將車輛模擬器系統(tǒng)應用于產品設計開發(fā)、交通評價以及駕駛員培訓等方面[2-4],國內也已有多家科研單位設計了針對不同車輛的用于科研或訓練的車輛模擬器,包括挖掘機模擬[5]、消防車模擬[6]等。
在車輛模擬器系統(tǒng)座艙中使用真實的車輛硬件設備,可讓模擬器的操作員獲得更加真實的操作體驗,而這樣的模擬器系統(tǒng)中常包含大量操控及反饋設備。車輛模擬器座艙內硬件設備數量增多,常常也使得硬件設備通信類型增多,因為不同設備可能分別使用不同的電氣接口,使用不同的通信協(xié)議,沒有統(tǒng)一的“總線”,對每種設備的數據處理方式常常需有很大的不同,這不僅增大了數據通信管理的規(guī)模,也增大了數據通信管理的復雜程度。種類繁多的底層設備通信類型,對于系統(tǒng)的上層功能設計者是很不方便的,容易造成系統(tǒng)上層結構也變得復雜繁瑣。在這種情況下,車輛模擬器系統(tǒng)的數據通信管理方式需經過更精心設計,才能讓系統(tǒng)的整體結構更加清晰,上層與底層設計更加獨立,讓系統(tǒng)調試與維護更加容易。
本文以某型車輛模擬器系統(tǒng)為依托,設計了一種多類型通信的管理方法,可簡化系統(tǒng)的設計、維護和擴展等工作。
本設計所依托的車輛模擬器系統(tǒng)整體結構包含以下四部分(見圖1)。
①含多種硬件設備的模擬艙子系統(tǒng)。該模擬艙是一簡易座艙,包含許多在實際車輛座艙中使用的操控與顯示設備,并按實際車輛座艙布局,是模擬器的操作平臺。
②通信管理子系統(tǒng)。該子系統(tǒng)負責座艙中各操控設備的數據采集,各反饋設備的數據驅動,是信號仿真子系統(tǒng)與真實座艙設備間數據通信的橋梁。
③信號仿真子系統(tǒng)。該模塊負責車輛模擬所必需信號的模擬仿真,包括本車參數與車外環(huán)境的模擬。
④控制臺子系統(tǒng)。該模塊負責系統(tǒng)運行控制與運行監(jiān)控。

圖1 模擬器系統(tǒng)整體結構Fig.1 Simulator system structure
模擬艙子系統(tǒng)內包含多種操控與顯示設備,每種操控設備均以數據流的形式對外提供操控數據,每種顯示設備均需要數據流驅動。多種操控與顯示設備使用多種不同的電氣接口,且數據協(xié)議各不相同,沒有統(tǒng)一的“總線”與一致的通信協(xié)議。在這種情況下,為了獲得更清晰的系統(tǒng)結構,設計一個獨立的通信管理子系統(tǒng)專門負責模擬艙子系統(tǒng)與其他子系統(tǒng)間的信息交互是必要的。且為了更好地管理座艙內各設備的數據通信,通信管理子系統(tǒng)需要經由良好的設計,才能保證設備間數據通信、座艙與仿真子系統(tǒng)間數據通信的清晰性、易擴展性、易維護性和易使用性。
通信管理子系統(tǒng)被設計為模擬艙子系統(tǒng)與其它子系統(tǒng)間信息交互的唯一通道。座艙內所有設備均應僅連接到通信管理子系統(tǒng),由通信管理子系統(tǒng)負責其數據的收發(fā)。
通信管理子系統(tǒng)結構設計如圖2所示。在該子系統(tǒng)中,每一個硬件接口均有一個對應的接口底層模塊。每一個接口底層模塊包含實現(xiàn)該接口通信的底層硬件與軟件。顯然,不同硬件接口的接口底層模塊無論在硬件上還是軟件上都是大不相同的。每一個硬件接口均有一個唯一的識別號。

圖2 通信管理子系統(tǒng)結構Fig.2 Communication manager subsystem structure
通信管理子系統(tǒng)的數據流圖如圖3所示。每一個接口底層模塊都與一個接口協(xié)議模塊一一對應,接口協(xié)議模塊負責調用接口底層模塊完成數據的收發(fā)及組包、解包工作。對于接收到的數據幀,接口協(xié)議模塊將其根據協(xié)議解析為結構清晰、含義明確的消息,提供給上層模塊。對于需要發(fā)送的消息,接口協(xié)議模塊將其組織為協(xié)議規(guī)定的底層數據幀格式,并控制接口底層模塊完成數據幀的輸出。

圖3 通信管理子系統(tǒng)數據流圖Fig.3 Data flow diagram of the subsystem
消息是各設備數據信息的統(tǒng)一表達格式,包含數據來源標識、數據去向標識、數據類型標識、數據名稱標識、數據屬性標識等。不同通信類型的硬件設備收發(fā)的數據流,經過相應接口協(xié)議模塊的組包與解包后,都轉化為格式一致的消息,對于上層模塊是無區(qū)別的。
所有接口協(xié)議模塊之上是消息管理模塊,該模塊統(tǒng)一管理各接口的消息收發(fā)任務,是與功能層模塊直接交互的模塊,為功能層模塊提供方便簡單的調用接口。每一個硬件接口通過“登記”的方式與消息管理模塊建立聯(lián)系,在登記的過程中,消息管理模塊記錄下接口的識別號,以及哪些功能層模塊需要該接口接收的數據。當來自某硬件設備的一條消息產生時,消息管理模塊將其派送給需要它的功能層模塊。同時,功能層模塊需要發(fā)送一條消息時,只需將其交給消息管理模塊,消息管理模塊跟據接口標識決定將該消息派送給哪些硬件接口。
在上述結構下,功能層模塊設計不再需要顧慮繁多的數據通信類型與互異的數據流處理方法,從不同的硬件接口讀入或輸出數據都使用相同的方法,僅需通過不同的識別號區(qū)分不同的硬件接口,從而實現(xiàn)與底層硬件管理的分離,只需專注于功能邏輯,完成模擬艙子系統(tǒng)、信號仿真子系統(tǒng)與控制臺子系統(tǒng)間必要的信息交互。
該通信管理方法具有以下優(yōu)點。
①使系統(tǒng)的硬件設備管理更清晰。該方法對各種不同類型的硬件通信經底層封裝后進行上層統(tǒng)一管理,使各種類型的通信管理不再散亂分立。
②使系統(tǒng)底層設計與上層設計相互更獨立。對系統(tǒng)設計者而言,繁多的通信類型不再干擾系統(tǒng)上層功能設計,系統(tǒng)功能層設計者不需關心通信的底層實現(xiàn),只需專注于功能邏輯的設計。同時,各種硬件通信的底層實現(xiàn)設計者只要按照規(guī)范將數據流轉化為消息,并提供消息內容解釋說明,不需再分別單獨考慮如何與上層功能設計更好配合的問題。
③使系統(tǒng)開發(fā)與維護更容易。這是該通信管理方法具有的最核心優(yōu)點。在車輛模擬器系統(tǒng)開發(fā)過程中,經常會遇到各級設計的修改與反復,例如修改座艙中某個操控設備的硬件接口,修改座艙中某個操控設備的通信協(xié)議,更換某個底層硬件的型號,修改幾個設備間邏輯主從關系等。每一項修改通常只需修改結構中的相關層,而與其它層無關。例如,若要修改座艙中某個操控設備的通信協(xié)議,只需用新的接口協(xié)議模塊替換原來對應模塊,并保持識別號與原來相同,而接口底層模塊和其他上層模塊不需改動。
本文所研究的車輛模擬器系統(tǒng)包含模擬艙、通信管理計算機、信號仿真計算機以及控制臺計算機等。其中,信號仿真計算機組、控制臺計算機和通信管理計算機通過以太局域網相連,模擬艙內的多種操控設備通過不同種類的硬件接口與通信管理計算機相連,包括CAN總線接口、RS232接口,RS485接口,RS422接口,TCP以太網通信接口和UDP以太網通信接口。
通信管理計算機是前一節(jié)通信管理子系統(tǒng)設計的實現(xiàn)。該計算機中安裝了多種硬件接口卡。通信管理計算機上運行通信管理軟件,通信管理軟件基于Microsoft.NET Framework 2.0平臺,采用C#語言編寫。
通信管理軟件的面向對象結構設計對應前一節(jié)所述的通信管理子系統(tǒng)結構設計。程序核心包括一個接口底層父類、一個接口協(xié)議父類、一個消息管理類和一個模擬功能父類,分別對應通信管理子系統(tǒng)結構設計的四個主要模塊。
對每一個硬件接口,都從接口底層父類和接口協(xié)議父類派生出相應的子類,接口底層子類對象實現(xiàn)硬件接口數據收發(fā)的底層細節(jié),接口協(xié)議子類對象根據各設備的通信協(xié)議完成數據幀的組織與收發(fā)。每個接口協(xié)議子類對象內各運行一個獨立的線程,用于主動接收數據幀,并按照協(xié)議將收到的數據幀經拼包、校驗、轉義等程序組織成為消息交給消息管理類對象。程序中有惟一一個消息管理類對象,負責消息在上層模塊與底層模塊間的傳遞。模擬功能類對象實現(xiàn)程序的上層邏輯。
部分功能層模塊只需要與一個硬件接口相關聯(lián),同時也有一些功能層模塊需要與多個硬件接口相關聯(lián),即需要從多個硬件接口收發(fā)數據。為此,消息管理類中存放了一個模擬功能子類與硬件接口的關系表,用來記錄各個模擬功能子類所需要使用的硬件接口。在程序初始化時,各模擬功能子類對象需登記聲明需要使用的硬件接口,這樣當這些硬件接口接收到數據并組織成為消息后,消息管理類會將消息傳送給這些子類對象。
控制臺子系統(tǒng)與信號仿真子系統(tǒng)通過以太網通信與通信管理計算機交互信息。對于通信管理子系統(tǒng),控制臺子系統(tǒng)與信號仿真子系統(tǒng)雖然不屬于模擬艙內的設備,但可使用一致的方式進行數據通信,即將網絡通信也視為一類硬件接口,將其封裝并接受與消息管理類同等的管理。這種方式強化了通信管理子系統(tǒng)對各類通信統(tǒng)一管理的思想。
本文提出的通信管理方法在某型車輛模擬器系統(tǒng)中得到應用(見圖4)。該車輛模擬器系統(tǒng)的設計與研發(fā)過程中,時常遇到與座艙設備相關的設計修改與反復。該通信管理方法在其中的應用使得這些修改與反復通常比較容易處理,且每次處理后很少直接引起其它已正常工作的模塊出現(xiàn)新的問題。

圖4 座艙示意圖Fig.4 The cabin
一些艙內使用的硬件設備與該模擬器同步研發(fā),因此時常更改通信協(xié)議,通信管理軟件對此做出相應的更改時,只修改該硬件設備的接口協(xié)議子類的程序,與其它程序模塊的開發(fā)并行完成,未打斷或影響其它程序模塊的開發(fā)進度。一些硬件設備具有多個版本,且都會在不同批次的模擬器系統(tǒng)中使用,針對這一種硬件設備多個版本分別同時使用的情況,該硬件設備的接口底層子類與接口協(xié)議子類也設計派生出多種版本,使通信管理軟件可根據用戶的指令在線選擇使用其中某個版本,啟用相應的軟件模塊,由此避免在安裝新批次系統(tǒng)及維護舊批次系統(tǒng)時再調整程序。還有一些硬件設備在系統(tǒng)中的數量時常被調整,其接口底層子類及接口協(xié)議子類實例化為對象的數量則需做出相應調整,并收發(fā)同樣的消息,僅是識別號不同,亦未對上層程序開發(fā)造成額外影響。
在該車輛模擬器系統(tǒng)運行過程中,通信管理子系統(tǒng)工作穩(wěn)定,未觀察到丟失通信信息的現(xiàn)象。當某些硬件設備的工作狀態(tài)或通信狀態(tài)出現(xiàn)異常時,很少對其它無關硬件設備的正常工作造成影響。通信管理子系統(tǒng)為座艙內各操控與顯示設備提供了穩(wěn)定的驅動。
本文提出一種車輛模擬器系統(tǒng)中硬件設備通信的管理方法,將不同的硬件接口進行底層封裝后用統(tǒng)一的方式管理,使不同的硬件接口對上層功能來說具有一致性。將該通信管理方法設計應用于某型車輛模擬器系統(tǒng),使該系統(tǒng)的設計、維護與擴展工作變得容易,并為該系統(tǒng)的運行提供了良好的支撐。
[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]王晶,劉小明,李德慧.駕駛模擬器現(xiàn)狀及應用研究[J].交通標準化,2008(11):160-163.
Wang Jing,Liu Xiao-ming,LiDe-h(huán)ui.Driving simulator status quo and application research[J].Communications Standardization,2008(11):160-163.
[5]王東,陳明宏,鐘冠,等.某型挖掘機模擬操作艙和信號采集電路設計[J].建筑機械,2010(19):97-100.
Wang Dong,Chen Ming-h(huán)ong,Zhong Guan,etal.Design of simulated cockpit and signal acquisition circuit for a kind of excavator[J].Construction Machinery,2010 (19):97-100.
[6]王立文,李洪帥.機場消防車輛模擬器的視景系統(tǒng)研究[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.