文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2014)03-0068-03
AMT(機(jī)械式自動(dòng)變速器)是在原來(lái)手動(dòng)變速汽車的基礎(chǔ)上,不改變?cè)瓉?lái)發(fā)動(dòng)機(jī)、變速器、離合器的結(jié)構(gòu),外加一套電控驅(qū)動(dòng)裝置和控制器,通過(guò)模擬最優(yōu)秀的駕駛習(xí)慣控制驅(qū)動(dòng)機(jī)構(gòu)驅(qū)動(dòng)離合器、選檔桿、換擋桿完成起步、變檔過(guò)程的一系列操作而實(shí)現(xiàn)自動(dòng)變速[1]。
AMT系統(tǒng)是一個(gè)多輸入多輸出的復(fù)雜系統(tǒng),參數(shù)不僅多而且變化快,為了實(shí)時(shí)觀測(cè)AMT系統(tǒng)工作工況、評(píng)估系統(tǒng)性能、發(fā)現(xiàn)系統(tǒng)問(wèn)題,在AMT研發(fā)調(diào)試過(guò)程中,需要設(shè)計(jì)一個(gè)監(jiān)測(cè)系統(tǒng)來(lái)實(shí)時(shí)觀測(cè)系統(tǒng)相關(guān)參數(shù)的變化。參考文獻(xiàn)[2]介紹了一種基于LabVIEW的AMT監(jiān)測(cè)系統(tǒng)的設(shè)計(jì),參考文獻(xiàn)[3]介紹了一種采用VB語(yǔ)言編寫(xiě)上位機(jī)的AMT監(jiān)測(cè)系統(tǒng),它們都有一個(gè)共同的特點(diǎn)就是不能脫離PC機(jī)并且采用有線傳輸方式。由于調(diào)試AMT系統(tǒng)時(shí)是在空間有限的汽車駕駛艙內(nèi),同時(shí)汽車也是處于行駛狀態(tài),這些監(jiān)測(cè)手段顯得不方便。基于此,本文設(shè)計(jì)了基于Android平臺(tái)的AMT監(jiān)測(cè)系統(tǒng),采用藍(lán)牙技術(shù)將需要觀測(cè)的參數(shù)通過(guò)無(wú)線的方式發(fā)送到Android手機(jī)上,在Android手機(jī)上設(shè)計(jì)了應(yīng)用程序?qū)⑦@些信息呈現(xiàn)給開(kāi)發(fā)人員。相比于傳統(tǒng)的監(jiān)測(cè)手段,該系統(tǒng)充分將開(kāi)發(fā)人員的隨身物品作為科研開(kāi)發(fā)的工具,不僅簡(jiǎn)單方便易于攜帶而且降低了開(kāi)發(fā)成本。
1 系統(tǒng)原理
AMT監(jiān)測(cè)系統(tǒng)的作用是在AMT系統(tǒng)開(kāi)發(fā)調(diào)試階段協(xié)助開(kāi)發(fā)人員實(shí)時(shí)了解AMT系統(tǒng)的工作狀態(tài)和評(píng)估性能參數(shù),此外開(kāi)發(fā)調(diào)試AMT系統(tǒng)時(shí)是在空間有限的駕駛艙內(nèi)進(jìn)行并且汽車處于行駛的狀態(tài)。因此AMT監(jiān)測(cè)系統(tǒng)要滿足以下要求:
(1)能實(shí)時(shí)地采集系統(tǒng)狀態(tài)參數(shù);
(2)提供可視化的、友好的、美觀的界面;
(3)簡(jiǎn)單方便,易于攜帶。
為滿足以上要求,以Android智能手機(jī)為平臺(tái),采用無(wú)線藍(lán)牙通信技術(shù)是一種比較滿意的方案。
本文設(shè)計(jì)的AMT監(jiān)測(cè)系統(tǒng)包括三個(gè)部分,分別是AMT系統(tǒng)ECU、藍(lán)牙RF模塊、Android智能手機(jī),AMT系統(tǒng)ECU與藍(lán)牙RF模塊為系統(tǒng)下位機(jī)負(fù)責(zé)信息采集發(fā)送,Android智能手機(jī)為上位機(jī)負(fù)責(zé)信息接收以及提供可視化的界面。上位機(jī)與下位機(jī)通過(guò)藍(lán)牙進(jìn)行通信。系統(tǒng)組成結(jié)構(gòu)圖如圖1所示。
系統(tǒng)的工作原理:在手機(jī)與下位機(jī)藍(lán)牙RF模塊配對(duì)建立連接之后,AMT系統(tǒng)ECU通過(guò)UART將采集到的數(shù)據(jù)按照定義好的格式發(fā)送給藍(lán)牙RF模塊,藍(lán)牙RF模塊將數(shù)據(jù)轉(zhuǎn)換成無(wú)線信號(hào),Android系統(tǒng)手機(jī)內(nèi)置的藍(lán)牙將數(shù)據(jù)接收后傳送至應(yīng)用程序,應(yīng)用程序?qū)⑦@些數(shù)據(jù)進(jìn)行處理并以可視化的界面呈現(xiàn)給開(kāi)發(fā)者。
2 系統(tǒng)下位機(jī)設(shè)計(jì)
2.1 硬件平臺(tái)設(shè)計(jì)
系統(tǒng)的下位機(jī)包括兩個(gè)部分,分別是AMT系統(tǒng)ECU和藍(lán)牙RF模塊。ECU是AMT系統(tǒng)的大腦,負(fù)責(zé)信號(hào)的采集處理和控制決策。由于AMT系統(tǒng)是一個(gè)多輸入多輸出、參數(shù)變化快、實(shí)時(shí)性要求高的系統(tǒng),需要AMT的ECU有較高的實(shí)時(shí)處理能力;此外,在研發(fā)調(diào)試過(guò)程中為監(jiān)測(cè)系統(tǒng)狀態(tài)而加入的數(shù)據(jù)采集不能影響原有ECU的運(yùn)行流程,必須是一個(gè)獨(dú)立的并行運(yùn)行模塊,與原有ECU的運(yùn)行沒(méi)有任何的耦合關(guān)系,因此需要ECU有并行處理能力。一般的基于馮·諾依曼體系結(jié)構(gòu)的微控制都是在時(shí)鐘的指揮下串行執(zhí)行程序指令,要想獲得較高實(shí)時(shí)性和并行處理需要對(duì)軟件的設(shè)計(jì)進(jìn)行高度的實(shí)時(shí)性優(yōu)化,這樣的程序設(shè)計(jì)比較困難,因此很難滿足設(shè)計(jì)要求。基于此,采用FPGA設(shè)計(jì)AMT系統(tǒng)ECU,F(xiàn)PGA通過(guò)內(nèi)部邏輯門的互聯(lián),以硬件的方式實(shí)現(xiàn)對(duì)激勵(lì)的響應(yīng),具有很強(qiáng)的實(shí)時(shí)性同時(shí)還可以并行處理。使用的芯片為Actel的A3P250,A3P250是基于Flash架構(gòu)的FPGA,具有上電即可運(yùn)行、抗干擾能力強(qiáng)、無(wú)法破解等特點(diǎn)[4]。藍(lán)牙RF模塊采用的是CSR BC04藍(lán)牙芯片,該芯片內(nèi)部集成遵循V2.0藍(lán)牙規(guī)范的藍(lán)牙通信協(xié)議,數(shù)字2.4 GHz頻段收發(fā),3.3 V工作電壓,通過(guò)UART與AMT系統(tǒng)ECU通信,ECU只需將要發(fā)送的數(shù)據(jù)通過(guò)UART發(fā)送給藍(lán)牙模塊即可,無(wú)需對(duì)藍(lán)牙模塊編程。
2.2 軟件實(shí)現(xiàn)
下位機(jī)的軟件功能主要是AMT系統(tǒng)ECU中的數(shù)據(jù)采集發(fā)送部分。程序結(jié)構(gòu)圖如圖2所示,包含3大部分:數(shù)據(jù)幀封裝部分、發(fā)送控制部分、UART部分。數(shù)據(jù)幀封裝部分將要發(fā)送的數(shù)據(jù)按一定的格式封裝成數(shù)據(jù)幀,一個(gè)數(shù)據(jù)幀包含13 B的數(shù)據(jù),其中第一個(gè)字節(jié)固定為0xbb作為幀的起始標(biāo)志,最后一個(gè)字節(jié)的內(nèi)容固定為0xaa作為幀的結(jié)束標(biāo)志,其余11個(gè)字節(jié)的內(nèi)容為AMT系統(tǒng)和汽車的狀態(tài)參數(shù);發(fā)送控制部分在時(shí)鐘的統(tǒng)一指揮下產(chǎn)生選通信號(hào)和發(fā)送使能信號(hào)將一幀數(shù)據(jù)依次傳輸給UART并啟動(dòng)UART進(jìn)行發(fā)送;UART是軟件的核心部分,AMT的FPGA主控制器A3P250自身不帶UART,因此采用Verilog語(yǔ)言實(shí)現(xiàn)UART的邏輯。在Libero集成開(kāi)發(fā)環(huán)境下編寫(xiě)調(diào)試程序,完成下位機(jī)軟件的開(kāi)發(fā)工作。
3 上位機(jī)實(shí)現(xiàn)
上位機(jī)程序是一個(gè)Android的應(yīng)用程序運(yùn)行在Android智能手機(jī)上。Android系統(tǒng)為Android應(yīng)用程序提供了5個(gè)基本組件類型,應(yīng)用程序按自身需求將對(duì)應(yīng)的組件實(shí)例化。5個(gè)基本組件類型包括:Activity組件,該組件提供可視化的界面用于人機(jī)交互;Service組件,該組件無(wú)可視化的界面而是在一段時(shí)間內(nèi)運(yùn)行于后臺(tái);Intent組件,用于組件、應(yīng)用程序之間的消息傳遞;BroadcastReceiver組件,該組件用于接收廣播消息通知并啟動(dòng)其他組件進(jìn)行處理;ContentProvider組件,該組件用于應(yīng)用程序的數(shù)據(jù)管理。一個(gè)Android應(yīng)用程序都由以上的一個(gè)或多個(gè)組件構(gòu)成[5]。
3.1軟件架構(gòu)
本系統(tǒng)應(yīng)用程序的設(shè)計(jì)采用典型的MCV分層設(shè)計(jì)模型[7],MCV分別代表模型層、控制層、表示層。表示層工作于前臺(tái),展現(xiàn)模型的狀態(tài),進(jìn)行數(shù)據(jù)顯示,提供人機(jī)交互;控制層提供表示層與模型層之間的流程控制,一方面要將表示層的輸入發(fā)送至模型層進(jìn)行處理,另一方面要將模型層的處理結(jié)果反饋到表示層進(jìn)行顯示;模型層工作于后臺(tái)進(jìn)行數(shù)據(jù)處理。在本應(yīng)用程序中表示層是界面顯示部分,使用Activity組件實(shí)現(xiàn),藍(lán)牙業(yè)務(wù)是模型層負(fù)責(zé)建立藍(lán)牙連接和藍(lán)牙通信,使用Service組件實(shí)現(xiàn),這兩個(gè)組件都是獨(dú)立的進(jìn)程,通過(guò)Handler實(shí)現(xiàn)跨進(jìn)程的通信,Handler即為控制層。軟件總體架構(gòu)如圖3所示。
3.2 用戶界面
系統(tǒng)中需要觀測(cè)的參數(shù)有車速、發(fā)動(dòng)機(jī)轉(zhuǎn)速、檔位、離合器位置、換擋桿位置、選檔桿位置、加速踏板開(kāi)度、節(jié)氣門開(kāi)度等。以上這些參數(shù)都可以直接通過(guò)文本框顯示,但是這樣顯示不能反映參數(shù)之間的相互作用關(guān)系。因此有些參數(shù)需要在同一個(gè)時(shí)間軸上用曲線顯示,比如車速與離合器行程曲線,發(fā)動(dòng)機(jī)轉(zhuǎn)速與車速曲線。因此界面顯示部分包括兩個(gè)界面,一個(gè)是文本框顯示界面,一個(gè)是曲線顯示界面。
界面的布局和控件資源通過(guò)XML文件進(jìn)行定義,采用絕對(duì)布局方式。文本框顯示界面包含若干個(gè)用于數(shù)據(jù)輸出顯示的EditText控件和作為標(biāo)簽的TextView控件,該界面為程序默認(rèn)顯示界面,應(yīng)用程序一打開(kāi)就顯示此界面。曲線顯示界面添加了一個(gè)SurfaceView控件,用于繪圖操作,兩個(gè)界面通過(guò)滑動(dòng)進(jìn)行切換。文本框顯示界面對(duì)象繼承Activity類,復(fù)寫(xiě)其OnCreate方法和OnStart方法,在OnCreate方法中進(jìn)行變量的初始化、調(diào)用setContentView設(shè)置界面布局的XML文件、調(diào)用findViewById方法獲取界面上各個(gè)控件對(duì)象;在OnStart方法中創(chuàng)建藍(lán)牙業(yè)務(wù)對(duì)象和通信接口Handler,同時(shí)創(chuàng)建Handler的消息處理函數(shù),在消息處理函數(shù)中接收藍(lán)牙發(fā)送過(guò)來(lái)的數(shù)據(jù)并將這些數(shù)據(jù)進(jìn)行處理顯示。
3.3藍(lán)牙業(yè)務(wù)
Android系統(tǒng)對(duì)藍(lán)牙網(wǎng)絡(luò)協(xié)議棧提供了支持,提供了一系列基本類和API來(lái)實(shí)現(xiàn)藍(lán)牙設(shè)備之間的數(shù)據(jù)傳輸。藍(lán)牙通信的基本類有:(1)BluetoothAdapter類,該類代表了一個(gè)本地藍(lán)牙適配器,用于掃描其他藍(lán)牙設(shè)備,實(shí)例化藍(lán)牙設(shè)備和建立監(jiān)聽(tīng)線程來(lái)監(jiān)聽(tīng)來(lái)自遠(yuǎn)端設(shè)備的連接;(2)BluetoothDevice類,代表了一個(gè)遠(yuǎn)端的藍(lán)牙設(shè)備,封裝了遠(yuǎn)端藍(lán)牙設(shè)備的名稱、地址、種類和綁定狀態(tài)等信息;(3)Bluetoothsocket類,代表一個(gè)藍(lán)牙套接字接口,作用是通過(guò)輸入輸出流提供應(yīng)用程序與其他藍(lán)牙設(shè)備的通信接口;(4)Blueboothserversocket類,用于在主機(jī)端監(jiān)聽(tīng)可能到來(lái)的連接請(qǐng)求;(5)Bluetoothclass類,它是一個(gè)只讀性質(zhì)的集描述了藍(lán)牙的特點(diǎn)和能力[6]。
藍(lán)牙設(shè)備之間的通信包括4個(gè)步驟: (1)設(shè)置藍(lán)牙設(shè)備;(2)尋找局域網(wǎng)內(nèi)可能或者匹配的設(shè)備;(3)連接設(shè)備; (4)數(shù)據(jù)傳輸。當(dāng)兩個(gè)藍(lán)牙設(shè)備擁有同一個(gè)套接字即在同一個(gè)RFECOMM信道上時(shí),這兩個(gè)設(shè)備就建立了連接可以進(jìn)行數(shù)據(jù)通信了。
藍(lán)牙業(yè)務(wù)對(duì)象在文本框顯示界面Activity對(duì)象中的OnStart方法中被創(chuàng)建,創(chuàng)建之后作為service工作于后臺(tái)進(jìn)行藍(lán)牙業(yè)務(wù)。當(dāng)完成藍(lán)牙設(shè)備的掃描、配對(duì)、連接之后,創(chuàng)建數(shù)據(jù)監(jiān)聽(tīng)線程,監(jiān)聽(tīng)來(lái)自遠(yuǎn)端設(shè)備的數(shù)據(jù),當(dāng)接收到數(shù)據(jù)時(shí),通過(guò)bytes = mmInStream.read(buffer)讀出數(shù)據(jù),再通過(guò)Handler將數(shù)據(jù)發(fā)送給界面顯示的Activity。藍(lán)牙業(yè)務(wù)程序流程圖如圖4所示。在eclipse集成開(kāi)發(fā)環(huán)境中完成應(yīng)用程序的編寫(xiě)和調(diào)試工作。
通過(guò)這個(gè)數(shù)據(jù)采集系統(tǒng),極大地方便了AMT的調(diào)試工作,特別是在試車過(guò)程中,能實(shí)時(shí)地觀測(cè)到AMT系統(tǒng)的工作狀態(tài)和汽車相關(guān)的狀態(tài)參數(shù),評(píng)估系統(tǒng)的性能。為AMT的研發(fā)工作提供了極大的便利。
參考文獻(xiàn)
[1] 葛安林,沈波.AMT換擋品質(zhì)的研究[J].汽車技術(shù), 2003(2):43-45.
[2] 趙梅,胡天亮,張倩,等.基于LabVIEW的AMT數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與研究[J].山東大學(xué)學(xué)報(bào)(工學(xué)版),2011,41(6):70-74.
[3] 董玉梁,陳慧巖. 車輛AMT的數(shù)據(jù)采集及分析系統(tǒng)[J].工業(yè)儀表與自動(dòng)化裝置,2003(4):46-48.
[4] 黃明金. 基于FPGA技術(shù)的虛擬數(shù)字存儲(chǔ)示波器的設(shè)計(jì)[D].四川:成都理工大學(xué),2011.
[5] 李黎國(guó),張輝,程號(hào). 基于Android健康服務(wù)終端藍(lán)牙傳輸軟件的設(shè)計(jì)[J]. 電子科技, 2012,25(5):115-118.
[6] 熊獅,吳效明. 基于Android系統(tǒng)的生理數(shù)據(jù)藍(lán)牙傳輸技術(shù)[J].中國(guó)醫(yī)學(xué)物理學(xué)雜志,2012,29(6):3801-3803.
[7] 孟剛.基于Android藍(lán)牙聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 信息安全與技術(shù),2012(6):79-82.