版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 本次畢業(yè)設(shè)計的主要內(nèi)容是對摩托底盤測功機(jī)上位機(jī)進(jìn)行編程,以實現(xiàn)測試數(shù)據(jù)的采集,處理,存儲,以及對測試過程的監(jiān)視和控制。</p><p> 圍繞著該目的,本文首先概述了整個系統(tǒng)的基本組成,然后說明討論了編程語言及開發(fā)工具的選擇,界面的設(shè)計,數(shù)據(jù)的收集,處理,存儲及上下位之間的通訊等問題。</p&g
2、t;<p> 經(jīng)過實際現(xiàn)場測試調(diào)整,該程序?qū)崿F(xiàn)了設(shè)計要求,圓滿的完成了畢業(yè)設(shè)計的預(yù)期任務(wù),鍛煉了我參與科研設(shè)計開發(fā)的能力,積累了寶貴經(jīng)驗,為今后的工作打下了基礎(chǔ)。</p><p> 關(guān)鍵詞:C++,SQL,串口通訊</p><p><b> ABSTRACT</b></p><p> The main task of th
3、is graduation design is the programming on the host computer of autocycle chassis dynamometer in order to collect, dispose and save test data and to over-look and control the test.</p><p> Around this task,
4、 this paper first summarizes the basic structure of the whole system and then explains the selection of the developing tool, the design of the interface, the collection, disposal and storage of the data, and the communic
5、ation between host computer and affiliated computer .</p><p> After the test and adjustment, the program has achieved its requirement and fulfilled the task of graduation design successfully. Through this e
6、xercise, I accumulated much precious experience and all this will do well to my subsequent research .</p><p><b> 目 錄</b></p><p> 摘要 ……………………………………………………………………….1</p><p&
7、gt; 第1章 緒論 ……………………………………………………………...5</p><p> 1摩托車底盤測功機(jī) ……………………………………………5</p><p> 2本次畢業(yè)設(shè)計的任務(wù)和意義 …………………………………6</p><p> 第2章:系統(tǒng)組成概述…………………………………………………….9</p><p>
8、 2.1 上位軟件的組成 …………………………………………… 9</p><p> 2.2 測試項目說明 ………………………………………………10</p><p> 2.3 編程語言及開發(fā)工具 ………………………………………17</p><p> 第3章 軟件界面 ………………………………………………………..20</p><
9、;p> 3.1 軟件界面的組成 ……………………………………………20</p><p> 3.2 基本數(shù)據(jù)輸入及測試管理 ………………………………… 20</p><p> 3.3 測試控制 ……………………………………………………22</p><p> 3.4 司機(jī)助手 ……………………………………………………25</p>
10、<p> 3.5 道路阻力設(shè)定器 ……………………………………………27</p><p> 3.6 工況模型 ……………………………………………………28</p><p> 第4章 數(shù)據(jù)庫 …………………………………………………………..30</p><p> 4.1 工作簡介 ……………………………………………………30<
11、/p><p> 4.2 數(shù)據(jù)庫簡介 …………………………………………………30</p><p> 4.3 嵌入式SQL ………………………………………………….32</p><p> 4.4 在應(yīng)用程序中使用數(shù)據(jù)庫 …………………………………..33</p><p> 第5章 上下位通訊 ………………………………………………
12、………42</p><p> 5.1 上下位通訊的要求 ……………………………………………42</p><p> 5.2 串口通訊簡介 ………………………………………………...42</p><p> 5.3 Windows下的 上位機(jī)串口通訊 ……………………………...53</p><p> 5.4 通訊協(xié)議 …
13、…………………………………………………….50</p><p> 第6章 總結(jié) ………………………………………………………………54</p><p> 致謝 ………………………………………………………………… 55參考文獻(xiàn) …………………………………………………………….. 55</p><p><b> 第1章 緒論</b>&l
14、t;/p><p><b> 1摩托車底盤測功機(jī)</b></p><p> 傳統(tǒng)的摩托車測試是基于實際道路的,即摩托車在專用試車場的測試</p><p> 道路上行駛測試。這種方法需要建立較大規(guī)模,要求嚴(yán)格的測試場地,因而成本很高。此外,該方法也常常受限于惡劣天氣及夜晚等。同時,限于安全性的影響,某些測試項目,如最高車速等,也不易進(jìn)行。<
15、/p><p> 針對以上問題,隨著機(jī)電拖動設(shè)備的發(fā)展,近幾十年中發(fā)展出了以拖動設(shè)備模擬實際道路行駛,以臺架測試代替路面測試的摩托車底盤測功機(jī)。這使得測試可以在臺架上廠房內(nèi)隨時進(jìn)行而不受天氣等外界因素影響,也極大的節(jié)約了資金,受到了摩托車廠商的歡迎,也就進(jìn)一步促進(jìn)該種設(shè)備的進(jìn)一步發(fā)展。</p><p> 底盤測功機(jī)的機(jī)械部分主要由測功機(jī),轉(zhuǎn)鼓,慣性飛輪構(gòu)成。測功機(jī)可以是電渦流測功機(jī),直流電力
16、測功機(jī),交流電力測功機(jī)。電力測功機(jī)具有優(yōu)良的轉(zhuǎn)速轉(zhuǎn)矩特性和高昂的價格。從摩托車行業(yè)來看,八十年代引進(jìn)的國外的電力測功機(jī)都是直流機(jī)。九十年代后期交流測功機(jī)開始進(jìn)入中國,從我們了解的情況來看,測功機(jī)領(lǐng)域交流機(jī)越來越多,直流機(jī)越來越少。因此,本項目打算越過直流機(jī)直接開始交流機(jī)的開發(fā)。</p><p> 1.2 摩托車底盤測功機(jī)系統(tǒng)組成</p><p> 下圖為摩托車底盤測功機(jī)的系統(tǒng)組成圖。&
17、lt;/p><p> 該系統(tǒng)主要可分為以下幾部分:</p><p> 上位機(jī)部分,硬件包括工控機(jī),兩臺用分屏卡連接的CRT,PCL-818L,PCL-746+,ADAM4080,ADAM4018等。軟件包括上位機(jī)軟件及司機(jī)助手。</p><p> 實現(xiàn)該部分是本次畢業(yè)設(shè)計的主要任務(wù)。</p><p><b> 控制臺</b
18、></p><p><b> PLC</b></p><p><b> 變頻器</b></p><p><b> 信號調(diào)理</b></p><p> 1.3本次畢業(yè)設(shè)計的任務(wù)和意義</p><p> 交流底盤測功機(jī)是進(jìn)行車輛性能試驗的專用
19、設(shè)備,基本上依賴進(jìn)口,國內(nèi)開發(fā)成套設(shè)備的單位還很少。本項目是“交流底盤測功機(jī)的研制”這一橫向課題的一部分工作,具有實際意義,向該產(chǎn)品國產(chǎn)化目標(biāo)邁進(jìn)了一大步。</p><p> 司機(jī)助手是一個幫助和引導(dǎo)駕駛員在受試摩托車上駕駛車輛進(jìn)行各種測試項目的軟件。</p><p> 主控程序包括現(xiàn)場采集數(shù)據(jù)的顯示,打印和報表以及道路阻力設(shè)定器給出的有關(guān)摩托車參數(shù)的記錄,存儲等功能。</p&g
20、t;<p><b> 具體任務(wù)包括:</b></p><p> 熟悉和了解交流底盤測功機(jī)的結(jié)構(gòu),原理和電控系統(tǒng)的設(shè)計方案;</p><p> 熟悉摩托車測試項目的大致過程;</p><p> 設(shè)計司機(jī)助手軟件的框架,并完成代碼編寫,調(diào)試;</p><p> 用組態(tài)工具組態(tài)和繪制部分主控程序,要求界
21、面良好;</p><p> 在上述基礎(chǔ)上完成畢業(yè)設(shè)計論文;</p><p> 翻譯相關(guān)的英文資料。</p><p> 第2章 上位軟件組成概述</p><p><b> 2.1上軟件的組成</b></p><p> 上位軟件主要包括了人機(jī)交互界面,數(shù)據(jù)管理和上下位通訊三大部分。如圖:&l
22、t;/p><p> 圖2. 1 上位軟件組成示意圖</p><p> 交互界面:在正常工作情況下,測試員通過上位機(jī)對整個測試進(jìn)行監(jiān)控,管理。因此,上位軟件需要一個友好的,易于掌握的交互界面以方便測試人員。</p><p> 此外,為便于駕駛員了解測試情況,接收測試員下達(dá)的測試命令,上位機(jī)還需要同時為駕駛員提供另一界面,即司機(jī)助手。鑒于駕駛員僅僅接收信息和指令,該
23、界面為只讀,即駕駛員不能控制上位機(jī)和測試。</p><p> 數(shù)據(jù)管理:測試將產(chǎn)生大量原始數(shù)據(jù),上位機(jī)需要接收,處理和存儲這些信息,因此上位軟件需要完善的數(shù)據(jù)管理機(jī)制以完成以上要求。本次上位軟件以數(shù)據(jù)庫為核心進(jìn)行數(shù)據(jù)管理。</p><p> 上下位機(jī)通訊:摩托車測功機(jī)系統(tǒng)中,上位機(jī)提供了人機(jī)界面,用以監(jiān)控測試,收集整理數(shù)據(jù)等,而下位機(jī)通過PLC,傳感器等控制測功機(jī)的電氣硬件部分并采集時
24、間速度等數(shù)據(jù),因而上下位機(jī)之間需要相互通訊以完成命令,數(shù)據(jù)的交流。</p><p><b> 2測項目說明</b></p><p> 摩托車底盤測功機(jī)需要實現(xiàn)十個測試項目,分別是: </p><p><b> 1)起步加速</b></p><p> 按照國家標(biāo)準(zhǔn)GB/T5385-94要
25、求的定距測量時:底盤測功機(jī)處于模擬道路工作狀態(tài),在控制臺上設(shè)定加速測試距離S(輕便摩托車為100m,摩托車為200m),受試摩托車怠速狀態(tài)從最低檔起步0.5m后,控制臺開始測量以最佳換檔車速順序換檔,加速行駛,直至最高檔,經(jīng)過加速測試距離S的時間為t。為了能繪制S-t,a-t關(guān)系圖,應(yīng)在實驗區(qū)間內(nèi)設(shè)置數(shù)個測試數(shù)據(jù)采集點。按下式計算始點到各測點的平均加速度:</p><p> …………………………2. 1<
26、/p><p> ----始點到各測點的距離;</p><p> ----從始點到各測點所經(jīng)過的時間。</p><p><b> 2)超越加速</b></p><p> a.按照國家標(biāo)準(zhǔn)GB/T5385-94要求的定距測量時:底盤測功機(jī)處于模擬道路工作狀態(tài),在控制臺上設(shè)定加速測試距離S(輕便摩托車為100m,摩托車為2
27、00m),受試摩托車用最高檔行駛至規(guī)定初速度時(摩托車為301km/h,輕便摩托車為202km/h)突加油門,同時開始測量經(jīng)過測試距離S的時間t并記錄初速度。為了能繪制S-t,a-t關(guān)系圖,應(yīng)在實驗區(qū)間內(nèi)設(shè)置數(shù)個測試數(shù)據(jù)采集點。按下式計算始點到各測點的平均加速度:</p><p> a=………………2. 2</p><p><b> v----初速度</b><
28、;/p><p> S----始點到各測點的距離</p><p> t----從始點到各測點所經(jīng)過的時間。</p><p> 速測量時:底盤測功機(jī)處于模擬道路工作狀態(tài),在控制臺上任意設(shè)定初速</p><p> 度和末速度(10-150km/h),測量受試摩托車用最高檔從設(shè)定的初速度加速行駛至末速度所需的時間。</p><
29、p> 3)滑行(國標(biāo)GB/T5386-94)</p><p> 滑行速度的測定:底盤測功機(jī)處于模擬道路工作狀態(tài),受試摩托車達(dá)到規(guī)定的車速時(摩托車為401km/h,輕便摩托車為301km/h),離合器完全脫開,掛空檔,測試從此開始到滾輪完全停止轉(zhuǎn)動間的距離S。</p><p> 滑行阻力系數(shù)的測定:滑行開始的初速度保證受試車通過100m測試區(qū)間的時間為202s,測量從初速度到滾
30、輪經(jīng)過50m,100m的時間t1,t2.滑行減速度b和滑行阻力系數(shù)f計算公式如下:</p><p> b=………………………2. 3</p><p> ……………………………2. 4</p><p> 最高車速(國標(biāo)GB/T5384-1996)</p><p> 底盤測功機(jī)處于模擬道路工作狀態(tài),設(shè)定的測試區(qū)間距離為200m,受試車達(dá)到
31、最高車速穩(wěn)定后,開始測量其通過200m的時間。計算公式如下:</p><p> V=s/t ……………………………2. 5</p><p> 速表里程表校核( 國標(biāo)GB/T5376-1996,GB/T7258-1997)</p><p><b> a.速度表校核:</b></p><p> 底盤測功機(jī)處于ASR工
32、作狀態(tài),將受試摩托車前輪安置在滾輪上,由底盤測功機(jī)拖動摩托車,使其車速表的指示值穩(wěn)定為V,讀取此時等于滾輪線速度的實際車速Vs。用此方法還應(yīng)可測其它數(shù)點的車速校核值。修正率公式為:</p><p> Cv=Vs/V …………………………2. 6</p><p><b> b.里程表校核:</b></p><p> 底盤測功機(jī)處于ASR工作
33、狀態(tài),將受試摩托車前輪安置在滾輪上,由底盤測功機(jī)拖動摩托車,測定受試摩托車?yán)锍瘫砥鹬乖黾又礢和滾輪轉(zhuǎn)過的實際距離Ss,修正率C的計算公式如下:</p><p> C=Ss/S ……………………………2. 7</p><p> 燃油消耗(國標(biāo)GB/T16486-1996)</p><p> 底盤測功機(jī)處于模擬道路工作狀態(tài),設(shè)定測試區(qū)間距離S(摩托車為1000m,
34、輕便摩托車為600m),受試摩托車按試驗要求的車速運行,保持穩(wěn)定后開始測量摩托車在此車速下勻速通過設(shè)定的測試距離所消耗的燃油。記錄的數(shù)據(jù)有:通過測試區(qū)間的時間t和燃油消耗量G0。需計算出如下量:</p><p> 實際車速V: V=S/t</p><p> 汽油消耗量: 非混合燃油時,G=G0/S</p><p> 混合燃油時, G=MG0/(S*(M+1
35、))</p><p> 其中,M為汽油與潤滑油的容積混合比,最后根據(jù)試驗數(shù)據(jù)繪制曲線。</p><p> 爬坡能力(國標(biāo)GB/T5387-94)</p><p><b> 最大爬坡能力: </b></p><p> 底盤測功機(jī)處于模擬道路工作狀態(tài),在底盤測功機(jī)上設(shè)定受試摩托車模擬爬坡試驗時的坡度阻力F,由下式確
36、定:</p><p> F=mg*sinβ …………………………2. 8</p><p> 其中,m為摩托車的總質(zhì)量(包括駕駛員和加載質(zhì)量), β為模擬坡道的坡度角。</p><p> 所模擬的測試區(qū)間如下圖所示:</p><p><b> 圖2. 1</b></p><p> 摩托
37、車用最低檔并加載規(guī)定質(zhì)量,以合適的初速度行駛,開始試驗。試驗臺將設(shè)定的相當(dāng)于F的阻力作用于滾輪上,分別測定經(jīng)過測試區(qū)間前10m和后10m的時間t1和t2。</p><p> 若t1<t2, 則最大爬坡角度大于 β;</p><p> 若t1=t2,則最大爬坡角度等于β;</p><p> 若t1>t2,則最大爬坡角度小于β。</p>
38、<p> 在改變質(zhì)量或檔位的情況下,按下式計算等效爬坡角度:</p><p> α=arcsin((Ws/W)(isinβ/is)) ……………2. 9</p><p> 其中,α為爬坡角度,Ws為受試車實際總質(zhì)量,W為受試車規(guī)定總質(zhì)量,i為受試車最低檔變速比,is為試驗時使用檔變速比,β為試驗坡道角度</p><p><b> 爬長坡試
39、驗</b></p><p> 與最大爬坡角度測試不同的是模擬測試區(qū)間的距離S不同,此試驗一般設(shè)定為1500m。需要測定初速度V0和經(jīng)過S的時間。計算出爬長坡工程中的平均速度:</p><p> V=S/t …………………………2. 10</p><p> 由發(fā)動機(jī)試驗狀況及V與V0兩值的大小比較,決定是否繼續(xù)試驗。</p><p
40、><b> 后輪出力</b></p><p> 底盤測功機(jī)處于ASR工作狀態(tài),將摩托車后輪(驅(qū)動輪)置于轉(zhuǎn)鼓上,夾持車輛。由底盤測功機(jī)調(diào)節(jié)速度到一定值,加摩托車油門至全開,穩(wěn)定后可記錄下后輪輸出的功率,扭距,發(fā)動機(jī)轉(zhuǎn)速,車速等。改變速度后,再做同樣的測量,這樣可作出一組數(shù)據(jù)。根據(jù)這樣一組試驗數(shù)據(jù),繪制功率-車速,扭距-車速圖等。</p><p> 工況排放
41、(國標(biāo)GB/T14622-93)</p><p> 進(jìn)行工況排放測試,還需另行配置排氣分析儀。</p><p><b> 自由模式</b></p><p> 用戶自定實驗方式,為用戶提供測試開始及停止控制方式。</p><p> 11)司機(jī)助手CRT在不同測量項目中的提示</p><p>
42、 起步加速:車速、發(fā)動機(jī)轉(zhuǎn)速、測量開始后的時間和行駛距離。</p><p> 超越加速:車速、發(fā)動機(jī)轉(zhuǎn)速、測量開始后的時間和行駛距離。</p><p> 最高車速:車速、測量開始后的時間和行駛距離。</p><p> 車速和里程表校核:車速、測量開始后的行駛距離。</p><p> 滑行:車速、測量開始后的行駛距離。</p&g
43、t;<p> 油耗:等速油耗:車速、測量開始后的行駛距離。</p><p> 工況油耗:行駛工況、超差警示、超差次數(shù)積累及時間。</p><p> 爬坡:車速、發(fā)動機(jī)轉(zhuǎn)速、前十米和后十米的行駛時間。</p><p> 后輪出力:車速、驅(qū)動力和輸出功率。</p><p> 工況排放:行駛工況、超差警示、超差次數(shù)積累及時間
44、。</p><p> 自由模式:坡道角度、車速、發(fā)動機(jī)轉(zhuǎn)速。</p><p> 所有的測量項目中,火花塞座溫、機(jī)油溫度、冷卻液溫度、排氣溫度應(yīng)可選,測量開始和結(jié)束狀態(tài)都應(yīng)有提示,行駛距離采用圖形方式提示。</p><p> 此外,爬長坡實驗時間是受試摩托車在模擬平坦路面下行駛,達(dá)到設(shè)定的初速度后開始,測定初速度,開始計時、計距。</p><
45、p> 2.3編程語言及開發(fā)工具</p><p> 由上位軟件的要求可以看出,該軟件規(guī)模較大,數(shù)據(jù)量多,結(jié)構(gòu)較復(fù)雜,且有相當(dāng)代碼可重用。針對以上特點,選擇了C++作為上位軟件的編程語言。</p><p><b> C++簡介:</b></p><p> C++是一種面向?qū)ο蟪绦蛟O(shè)計(Object Oriented Programmi
46、ng――簡稱OOP)語言。</p><p> 面向?qū)ο蟪绦蛟O(shè)計既吸取了結(jié)構(gòu)化程序設(shè)計的一切優(yōu)點,又考慮了現(xiàn)實世界與面相對象解空間的映射關(guān)系,它所追求的目標(biāo)是將現(xiàn)實世界的問題求解盡可能簡單化。</p><p> 面向?qū)ο蟪绦蛟O(shè)計將數(shù)據(jù)及對數(shù)據(jù)的操作放在一起,作為一個相互依存,不可分割的整體來處理,它采用數(shù)據(jù)抽象和信息隱藏技術(shù)。它將對象及對對象的操作抽象成一種新的數(shù)據(jù)類型――類,并考慮不同
47、對象之間的聯(lián)系和對象類的重用性。</p><p> 面向?qū)ο蟪绦蛟O(shè)計較之傳統(tǒng)的結(jié)構(gòu)化程序設(shè)計,優(yōu)越性表現(xiàn)在,它有希望解決軟件工程的兩個主要問題――軟件復(fù)雜性控制和軟件生產(chǎn)率的提高。</p><p> 面向?qū)ο蟪绦蛟O(shè)計能支持的軟件開發(fā)策略有:</p><p><b> 編寫可重用代碼</b></p><p><
48、b> 編寫可維護(hù)的代碼</b></p><p><b> 共享代碼</b></p><p><b> 精化已有代碼</b></p><p> 在80年代,C語言成為一種及其流行,應(yīng)用非常廣泛的語言。C++是在C語言的基礎(chǔ)上進(jìn)行擴(kuò)展,并加入了對象機(jī)制。C++以其高效的執(zhí)行贏得了廣大程序設(shè)計者的喜愛,
49、在C++中提供了對傳統(tǒng)語言C的向后兼容性,因此,很多已有的程序稍加修改就可重用,許多有效的算法也可以重新利用。它是一種混合型的面向?qū)ο蟪绦蛟O(shè)計語言,由于它的出現(xiàn),才使面向?qū)ο蟮某绦蛟O(shè)計語言越來越得到重視和廣泛的應(yīng)用。</p><p><b> 編譯器的選擇</b></p><p> 常用的C++編譯器有MS-C++, Turbo C++, Borland C++,
50、 Visual C++ 及Borland C++ Builder等。其中MS-C++, Turbo C++ 應(yīng)用于DOS環(huán)境下,不適合于Windows下的程序開發(fā)。Borland C++ 和Visual C++分別基于OWL和MFC類庫進(jìn)行Windows下的程序開發(fā),雖然功能強(qiáng)大,但所依賴的類庫非常復(fù)雜,學(xué)習(xí)和熟悉都相當(dāng)不易,從而導(dǎo)致了開發(fā)周期長,效率底等問題,不適合于開發(fā)這類上層軟件。</p><p> 而B
51、orland公司的Borland C++ Builder則成功地解決了以上問題,成為了一種劃時代的C++開發(fā)工具。它結(jié)合了Borland C++ 和Delphi的優(yōu)點,將可視化開發(fā)環(huán)境,開發(fā)工具和可視組件加入到C++語言中,實現(xiàn)了真正的面向?qū)ο蟮拈_發(fā)。</p><p> 與其他工具相比,C++Builder具有以下優(yōu)點:</p><p> C++Builder是一個可視化的快速應(yīng)用程序
52、開發(fā)工具,具有高效,最優(yōu)化的源代碼編譯器,可視化的快速應(yīng)用程序開發(fā)環(huán)境和可擴(kuò)展的數(shù)據(jù)庫技術(shù),適合各類可視化程序開發(fā)。</p><p> 因為它使用的程序語言是C++,所以是一個面向?qū)ο蟮恼Z言,具有靈活,自由,簡潔,高效的特點,由于Windows自身是用C語言編寫,所以C++可直接調(diào)用Windows API,另外,還增強(qiáng)了異常處理能力和類的封裝能力及特性。</p><p> C++Bui
53、lder具有完整的基于組件設(shè)計與可視化的開發(fā)環(huán)境,提供了所有可視組件對象的完整代碼,可以讓程序設(shè)計人員很快產(chǎn)生程序原型及用戶界面,實現(xiàn)代碼的重用。</p><p> 擁有獨立,高效的編譯技術(shù),執(zhí)行文件EXE或DLL都與Windows的操作環(huán)境無關(guān),支持多語言開發(fā)代碼,對于Power Builder,Visual Basic,Borland C++,Visual C++和Delphi代碼都可以重新編譯利用。<
54、;/p><p> 有強(qiáng)大的數(shù)據(jù)庫支持能力,提供了存取dBase或FoxPro數(shù)據(jù)庫數(shù)據(jù)的能力。提供了Client/Server支持,可以輕松自如地開發(fā)客戶/服務(wù)器程序。</p><p> C++ Builder提供擴(kuò)展的ActiveX支持及VCL增強(qiáng)功能。</p><p> C++ Builder提供了與微軟產(chǎn)品的兼容性,可以很容易地將微軟Visual C++ 的
55、項目轉(zhuǎn)換為C++ Builder的項目。</p><p><b> 第3章 軟件界面</b></p><p><b> 3.1界面組成</b></p><p> 上位機(jī)軟件界面主要由以下幾部分組成:基本數(shù)據(jù)輸入及測試管理,測試控制,司機(jī)助手,道路阻力設(shè)定器,工況模型。如圖:</p><p>&
56、lt;b> 圖3. 1</b></p><p> 以下各節(jié)將分別介紹軟件界面的各個組成部分。</p><p> 3.2基本數(shù)據(jù)輸入及測試管理</p><p> 該窗口主要用于輸入測試所用的各種基本數(shù)據(jù),包括試驗參數(shù)(主要有試驗編號,試驗日期,試驗員,駕駛員等),整車參數(shù)(主要有車輛編號,生產(chǎn)廠家,車重,長寬高等)以及發(fā)動機(jī)參數(shù)(主要有發(fā)動機(jī)
57、編號,發(fā)動機(jī)生產(chǎn)廠家,燃油型號,潤滑油型號等)。這些數(shù)據(jù)均由廠家提供輸入并存入數(shù)據(jù)庫以備后用。</p><p> 此外,該窗體還用于對測試進(jìn)行整體管理,包括建立一新測試,繼續(xù)前次測試以及刪除無效測試等。如下圖:</p><p> 圖3. 2 基本數(shù)據(jù)輸入及測試</p><p> 窗體上的快捷鍵用于對測試進(jìn)行管理,其具體說明如下:</p><
58、;p> 建立新測試:用以建立并準(zhǔn)備一次新的測試。首先關(guān)閉并保存上一次測試,然后清空數(shù)據(jù)輸入欄,并自動填入時間日期等默認(rèn)值。</p><p> 開始新測試:正式開始一次測試。填入的基本數(shù)據(jù)將被存入數(shù)據(jù)庫并進(jìn)行一定的合法性判斷。然后初始化各測試項目以準(zhǔn)備測試。</p><p> 保存基本數(shù)據(jù):用以保存輸入的基本測試數(shù)據(jù)。</p><p> 保存所有數(shù)據(jù):用
59、以保存基本測試數(shù)據(jù)及所有測試項目的測試數(shù)據(jù)。</p><p> 繼續(xù)以前的測試:用以完成或修改以前的某次測試。</p><p> 刪除:將某次測試及其數(shù)據(jù)從數(shù)據(jù)庫中刪除。</p><p><b> 3.3測試控制</b></p><p> 在基本數(shù)據(jù)輸入及測試管理窗口正確輸入完畢所需數(shù)據(jù)后,即可開始各個測試項目的
60、測試。</p><p> 為方便用戶學(xué)習(xí)使用本軟件,也由于各測試項目的流程基本一致,多數(shù)(除工況排放外)項目的測試控制窗口在風(fēng)格布局上均一致,故以下以起步加速為例介紹這些窗口。如圖:</p><p> 快捷鍵有1)保存,用于將測試結(jié)果存入數(shù)據(jù)庫。2)打印,用于打印出測試結(jié)果。</p><p> 窗口由以下幾部分組成:</p><p>
61、 3) 設(shè)置測試條件:根據(jù)不同測試項目的不同要求,設(shè)置測試距離,初速度,末速度等。由于要求不同,各監(jiān)控窗口該部分界面也有所不同。</p><p> 開始及結(jié)束按鈕:測試未開始時為綠色,按下后開始起步加速測試,同時按鈕變?yōu)榧t色,可隨時按下以強(qiáng)制停止測試。當(dāng)測試結(jié)束時(強(qiáng)制或正常結(jié)束)變綠,可以開始下一次測試。</p><p> 即時數(shù)據(jù)顯示:顯示車速,發(fā)動機(jī)轉(zhuǎn)速,火花塞溫度等即時數(shù)據(jù)以供
62、測試員監(jiān)測。</p><p> 試驗結(jié)果顯示:在表格中顯示測試結(jié)果。</p><p> 一個典型的測試過程為:</p><p> 設(shè)置測試條件,如起步加速中需要設(shè)置測試距離。</p><p> 開始測試,按動開始按鈕,摩托車開始起步,同時顯示速度,行駛距離等即時數(shù)據(jù)。當(dāng)摩托車達(dá)到初始條件(如一定的初速度,或行駛過一定距離)后,上位機(jī)開
63、始記錄并處理測試數(shù)據(jù)。</p><p> 在測試過程中,測試員可以通過所顯示的即時數(shù)據(jù)了解測試進(jìn)程。當(dāng)測試出現(xiàn)問題時,測試員可按動停止按鈕強(qiáng)制停止測試。</p><p> 當(dāng)摩托車達(dá)到一定結(jié)束條件(如行駛完一定距離,或達(dá)到一定速度)時,測試自動結(jié)束。上位機(jī)對記錄的數(shù)據(jù)進(jìn)行計算處理后,顯示在表格中。</p><p> 按照一定條件,可以手工或由軟件自動刪除表格中
64、的不合格數(shù)據(jù)。合格數(shù)據(jù)將被存入數(shù)據(jù)庫,也可以打印出結(jié)果。</p><p> 工況排放與其他測試項目有所不同,故其測試窗口也有所不同,以下單獨介紹,如圖:</p><p> 圖3. 4 工礦排放測試窗口</p><p> 設(shè)置測試條件:設(shè)置摩托車測試循環(huán)次數(shù)及測試所使用的工況模型。</p><p> 顯示剩余循環(huán)次數(shù)及當(dāng)前測試剩余時間
65、。</p><p><b> 即時數(shù)據(jù)顯示。</b></p><p><b> 測試結(jié)果顯示。</b></p><p> 摩托車行駛路線顯示。用于顯示設(shè)定行駛路線和摩托車的實際行駛路線。</p><p> 出差,入差統(tǒng)計。出差指摩托車行駛過程中車速超過了限定的誤差范圍,入差指回歸誤差范圍以內(nèi)
66、。出差與入差影響到工況排放數(shù)據(jù)的有效性,因此需要統(tǒng)計。</p><p> 在工況排放測試中,摩托車要沿著給定的速度,時間曲線(即工況模型)加減速,因而測試人員要隨時掌握車輛相對于給定路線的行駛情況,故工況排放測試窗口除了一般窗口所具有的控件外,還加入了行駛路線顯示和出,入差統(tǒng)計。</p><p><b> 3.4司機(jī)助手</b></p><p&
67、gt; 為方便駕駛員及時了解測試狀況,接受測試員發(fā)出的命令,在駕駛員面前也有一臺CRT,隨時將車速,發(fā)動機(jī)轉(zhuǎn)速,及指令等顯示給駕駛員。為使駕駛員清楚了解測試狀況,司機(jī)助手僅顯示少量重要信息,并盡量以較大的圖形文字顯示。不同測試項目的司機(jī)助手在風(fēng)格布局方面也相似(除工況排放),故僅以起步加速為例進(jìn)行介紹。</p><p> 圖3. 5 司機(jī)助手(起步加速)</p><p> 鑒于司機(jī)
68、主要關(guān)心的是車速和發(fā)動機(jī)轉(zhuǎn)速,司機(jī)助手以兩個較大的虛擬指針式儀表顯示。</p><p> 此外,司機(jī)助手以虛擬溫度記的形式分別顯示火花塞溫度,機(jī)油溫度,冷卻液溫度和排氣溫度,如圖中3號部分。</p><p> 1號部分用以顯示測試進(jìn)程。在起步加速中顯示的是行駛路程。</p><p><b> 測試指令由2顯示。</b></p>
69、<p> 在工況排放中,司機(jī)需要根據(jù)工況模型駕駛,因此其司機(jī)助手也不同于其他測試項目,如圖:</p><p> 圖3. 6 司機(jī)助手(工礦排放)</p><p> 行駛路線顯示:以動畫的形式顯示既定行駛路線和摩托車的實際行駛狀況。橫軸為速度,縱軸為時間。紅色實心線為既定行駛路線,兩側(cè)的黃色虛線為行駛車速最大偏差。以圖標(biāo)代表摩托車,其后的藍(lán)線為摩托車的實際行駛路線。&l
70、t;/p><p><b> 車速表</b></p><p> 即時數(shù)據(jù)顯示:即時顯示行駛時間,行駛距離等。</p><p><b> 3.5路阻力設(shè)定器</b></p><p> 由上位機(jī)設(shè)定道路阻力設(shè)定器參數(shù),并監(jiān)控滑行實驗直至數(shù)據(jù)修正滿足要求。窗口如圖:</p><p&g
71、t; 圖3. 7 道路阻力設(shè)定器</p><p> 設(shè)定預(yù)熱時間,預(yù)熱車速,允許誤差,穩(wěn)定車速,終止車速等</p><p> 設(shè)定F(v)曲線,可以選擇設(shè)定方式,包括多點設(shè)定,方程式設(shè)定,V-t設(shè)定</p><p> 實時顯示時間,速度,阻力</p><p> 實時顯示F(v)曲線,其中綠線為設(shè)定曲線,紅線為滑行修正后的曲線<
72、;/p><p><b> 3.6工況模型</b></p><p> 在工況排放測試中,駕駛員需要根據(jù)工況模型駕駛。為方便地建立工況模型,軟件中加入了工況模型窗口。如圖:</p><p><b> 圖3. 8</b></p><p> 工況模型實際是一種二維折線,其橫軸為速度,縱軸為時間,規(guī)定了
73、行駛中每一時刻的速度。通過設(shè)定折線首位兩端的時間,速度,即可確定工況模型。</p><p> 模型設(shè)定:輸入各點的時間,速度,以建立工況模型。</p><p> 2) 顯示工況模型:隨各點參數(shù)的輸入,顯示所建立的工況模型以便于模型的建立。</p><p><b> 第4章 數(shù)據(jù)管理</b></p><p><
74、b> 4.1工作簡介</b></p><p> 在本次摩托車測功機(jī)上位軟件編寫中,有相當(dāng)多數(shù)據(jù)需要收集,計算,整理及存儲,以簡單數(shù)據(jù)文件的方式難以安全,有效且方便的處理,因而選擇使用數(shù)據(jù)庫對以上數(shù)據(jù)進(jìn)行統(tǒng)一管理,極大地方便了程序編寫,并有效消除了可能出現(xiàn)的安全隱患,提高了軟件質(zhì)量。</p><p> 本章首先對數(shù)據(jù)庫及數(shù)據(jù)庫語言SQL進(jìn)行了簡介,以使讀者初步了解數(shù)據(jù)
75、庫及其特點,方便對以后幾小節(jié)的閱讀。第四節(jié)通過具體的上位軟件例程,介紹了如何在應(yīng)用程序中使用數(shù)據(jù)庫。第五節(jié)則介紹了數(shù)據(jù)報表的生成及打印。</p><p><b> 4.2數(shù)據(jù)庫簡介</b></p><p> 數(shù)據(jù)處理是計算機(jī)應(yīng)用中最大的一個分支。據(jù)估計,全世界計算機(jī)中有90%以上的CPU時間用于數(shù)據(jù)處理。</p><p> 數(shù)據(jù)處理對計算
76、機(jī)系統(tǒng)資源(包括硬件,軟件和人員)的要求與其他方面的應(yīng)用(如科學(xué)計算等)有很大差別。從軟件方面來說,數(shù)據(jù)庫技術(shù)是數(shù)據(jù)處理最新和最有效的技術(shù)。</p><p> 數(shù)據(jù)庫技術(shù)產(chǎn)生于六七十年代之交,其前身是曾經(jīng)廣泛應(yīng)用的文件系統(tǒng)。1969年,IBM公司研制了世界上第一個層次型數(shù)據(jù)庫管理系統(tǒng)IMS(Information Management System);同年美國DBTG(Data Base Task Group)
77、小組發(fā)表了DBTG報告,給出了網(wǎng)絡(luò)型數(shù)據(jù)庫的論文,從而奠定了關(guān)系數(shù)據(jù)庫的基礎(chǔ)。層次型,網(wǎng)絡(luò)型和關(guān)系數(shù)據(jù)庫直到現(xiàn)在仍是數(shù)據(jù)庫系統(tǒng)的三種主要類型。</p><p> 數(shù)據(jù)庫系統(tǒng)一般由四部分組成:</p><p><b> 硬件</b></p><p> 硬件既計算機(jī)的硬設(shè)備,包括主機(jī)(CPU和內(nèi)存)及外部設(shè)備。數(shù)據(jù)庫系統(tǒng)對計算機(jī)硬件的要求與數(shù)
78、值計算等其它應(yīng)用不同,除了要求CPU的處理速度高,內(nèi)存容量大外,還要求有較多高質(zhì)量的外部設(shè)備――大容量磁盤機(jī),高速磁帶機(jī)及高速寬行打印機(jī)等。</p><p><b> 軟件</b></p><p> 數(shù)據(jù)庫系統(tǒng)中的軟件主要包括操作系統(tǒng),數(shù)據(jù)庫管理系統(tǒng)(DBMS),應(yīng)用程序和語言編譯器。操作系統(tǒng)是其他各類軟件的基礎(chǔ),結(jié)構(gòu)一般較復(fù)雜,由生產(chǎn)廠家或軟件公司提供。數(shù)據(jù)庫管
79、理系統(tǒng)是數(shù)據(jù)庫中最重要的軟件系統(tǒng)。一般說DBMS應(yīng)具有以下功能:</p><p> 數(shù)據(jù)庫定義功能,包括各種數(shù)據(jù)庫文件的組織和存儲結(jié)構(gòu)定義,以及保密定義等內(nèi)容。</p><p> 數(shù)據(jù)庫的建立和維護(hù)功能,包括數(shù)據(jù)庫文件的建立,更新,恢復(fù)和數(shù)據(jù)庫的性能監(jiān)視等。</p><p> 數(shù)據(jù)庫的管理功能,包括系統(tǒng)控制,數(shù)據(jù)存取及數(shù)據(jù)的安全性,完整性控制等。</p&
80、gt;<p> 許多數(shù)據(jù)庫管理系統(tǒng)還具有通信功能,適用于分布系統(tǒng)并且有遠(yuǎn)程作業(yè)輸入接口。</p><p> 4. 3嵌入式SQL語言</p><p> SQL(Structured Query Language)語言是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,它是1974年由Boyce和Chamberlin提出的。1975年~1979年IBM公司San Jose Research研制了著
81、名的關(guān)系數(shù)據(jù)庫系統(tǒng)原型System R并實現(xiàn)了這種語言。1986年10月美國國家標(biāo)準(zhǔn)局(ANSI)的數(shù)據(jù)委員會X3H2批準(zhǔn)了SQL作為關(guān)系數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn),同年公布了SQL標(biāo)準(zhǔn)文本(簡稱SQL-86)。1987年國際標(biāo)準(zhǔn)化組織(ISO)也通過了這一標(biāo)準(zhǔn)。此后ANSI不斷修改和完善SQL標(biāo)準(zhǔn),并于1989公布了SQL-89標(biāo)準(zhǔn),1992年又公布了SQL-92標(biāo)準(zhǔn)。</p><p> 由于SQL語言功能豐富,語
82、言簡潔,因而倍受用戶及計算機(jī)工業(yè)界歡迎。自SQL成為國際標(biāo)準(zhǔn)后,各個數(shù)據(jù)庫廠家紛紛推出各自的支持SQL的軟件或與SQL的接口軟件。這就使得大多數(shù)數(shù)據(jù)庫均采用了SQL作為共同的數(shù)據(jù)存儲語言和標(biāo)準(zhǔn)接口,從而使未來的數(shù)據(jù)庫世界有可能連接為一個統(tǒng)一的整體。因此,有人把SQL被制定為關(guān)系數(shù)據(jù)庫語言的標(biāo)準(zhǔn)及其以后的發(fā)展稱為是“一場革命”。</p><p> SQL具有自含式語言和嵌入式語言兩種形式:自含式SQL能夠獨立地進(jìn)
83、行聯(lián)機(jī)交互,用戶只需在終端鍵盤上直接鍵入SQL命令就可以對數(shù)據(jù)庫進(jìn)行操作;嵌入式SQL能夠嵌入到高級語言(如C,COBOL,F(xiàn)ORTRAN)程序中來實現(xiàn)對數(shù)據(jù)庫的數(shù)據(jù)存取操作,給程序員設(shè)計程序提供了很大的方便。在這兩種不同的使用方式中,SQL的語法結(jié)構(gòu)基本上一致。而統(tǒng)一的語法結(jié)構(gòu)的特點,為使用SQL提供了極大的靈活性和方便性。</p><p> 由于本次使用C++作為軟件開發(fā)語言,故選用嵌入式SQL語言操作數(shù)據(jù)
84、庫。C++Builder對數(shù)據(jù)庫應(yīng)用提供了完善的支持,極大地方便了數(shù)據(jù)庫開發(fā),但與標(biāo)準(zhǔn)嵌入式SQL語言相比,又有其不同點和特點,在下一節(jié)中將著重討論。</p><p> 4在程序應(yīng)用中使用數(shù)據(jù)庫</p><p> 基于BDE(Borland Database Engine,既Borland數(shù)據(jù)庫引擎)的數(shù)據(jù)</p><p> 庫連接技術(shù)是Borland C++
85、Builder最早使用的數(shù)據(jù)庫連接技術(shù),它利用數(shù)據(jù)庫驅(qū)動程序隱藏了應(yīng)用程序連接不同種類數(shù)據(jù)庫的差異,從而為應(yīng)用程序提供訪問所有數(shù)據(jù)庫的統(tǒng)一接口。而C++Builder中的數(shù)據(jù)庫統(tǒng)一接口就是VCL提供的基于BDE技術(shù)的數(shù)據(jù)庫訪問和控制組件,它們是C++Builder數(shù)據(jù)庫連接技術(shù)的核心。</p><p> 以下將基于本次程序設(shè)計,介紹在C++Builder如何在應(yīng)用程序使用數(shù)據(jù)庫。</p><
86、p><b> 建立數(shù)據(jù)庫</b></p><p> 由于BDE隱藏了應(yīng)用程序與數(shù)據(jù)庫連接的底層細(xì)節(jié),使數(shù)據(jù)庫應(yīng)用</p><p> 程序不需要因為數(shù)據(jù)庫物理結(jié)構(gòu)的變化而修改代碼,因而可以方便的連接使用各種常見數(shù)據(jù)庫,如Access,dBase,F(xiàn)oxPro等。本程序使用了Access數(shù)據(jù)庫。</p><p> C++ Builde
87、r提供了DataBase DeskTop用于創(chuàng)建數(shù)據(jù)庫,可以點擊‘開始//C++Builder//DataBase DeskTop’啟動該程序,如下圖所示:</p><p> 圖4. 1 Database Desktop</p><p> 點擊‘File//New//Table’, 在表類型對話框中選擇MSACCESS,打開數(shù)據(jù)庫編輯器,設(shè)計基本表,如圖所示:</p>
88、<p> 圖4. 2 建立數(shù)據(jù)庫</p><p> 設(shè)計結(jié)束后選擇適當(dāng)目錄保存即可。</p><p> 也可以使用專用數(shù)據(jù)庫軟件,如微軟Office系列的Access設(shè)計所需數(shù)據(jù)庫,可以更為方便快捷,這里不作進(jìn)一步介紹,讀者可查閱相關(guān)書籍資料。</p><p><b> 數(shù)據(jù)庫別名</b></p><p&
89、gt; BDE采用別名機(jī)制管理數(shù)據(jù)庫的連接信息。所謂別名就是用來表示</p><p> 一個數(shù)據(jù)庫資源的名字,包括與其相連的一系列參數(shù)。通過引用數(shù)據(jù)庫別名,程序員可以忽略數(shù)據(jù)庫所在路徑等具體信息直接使用數(shù)據(jù)庫,從而使編寫和修改數(shù)據(jù)庫程序更為方便。</p><p> 在設(shè)計應(yīng)用程序之前,程序員必須建立訪問數(shù)據(jù)庫的別名,以在應(yīng)用程序中使用。</p><p> 打
90、開‘控制面板’,雙擊‘管理工具’,選擇‘?dāng)?shù)據(jù)源(ODBC)’,雙擊打開,如圖所示:</p><p> 在‘用戶DSN’頁,點擊‘添加’,選擇合適的數(shù)據(jù)庫驅(qū)動程序。本軟件使用了Access數(shù)據(jù)庫,故選擇‘Microsoft Access Driver (*.mdb)’,如圖:</p><p> 圖4. 4 選擇數(shù)據(jù)庫驅(qū)動程序</p><p> 點擊‘完成’,進(jìn)
91、入安裝頁面,如圖:</p><p> 在‘?dāng)?shù)據(jù)源名’填入數(shù)據(jù)庫別名,如果需要,在‘說明’填入數(shù)據(jù)庫的簡要說明。</p><p> 由于已創(chuàng)建了數(shù)據(jù)庫,在‘?dāng)?shù)據(jù)庫’中點擊‘選擇’,進(jìn)入數(shù)據(jù)庫選擇頁面,如圖:</p><p><b> 圖4. 6 </b></p><p> 找到已建好的數(shù)據(jù)庫,點擊確定,數(shù)據(jù)庫別名
92、建立完畢。</p><p><b> 操作數(shù)據(jù)庫</b></p><p> C++Builder提供了豐富的數(shù)據(jù)庫控件用于操作控制數(shù)據(jù)庫,常用</p><p> 的控件有Ttable和TQuery。本次程序設(shè)計使用了TQuery操作數(shù)據(jù)庫,故將重點介紹TQuery,對于TTable只作簡要介紹。</p><p>&
93、lt;b> TTable</b></p><p> TTable通常用于為數(shù)據(jù)庫中的表建立數(shù)據(jù)映射,從而,應(yīng)用程序可</p><p> 以像訪問數(shù)據(jù)庫中的表一樣訪問TTable對象。因此,在使用TTable對象中的數(shù)據(jù)前,應(yīng)用程序必須建立數(shù)據(jù)映射,即通過設(shè)置DatabaseName(數(shù)據(jù)庫別名),TableName(表名)這兩個屬性,將TTable對象與數(shù)據(jù)庫中的表
94、對應(yīng)起來??稍谠O(shè)計期在屬性觀察器中設(shè)置這兩個屬性,或在代碼中設(shè)置,如下示例程序:</p><p> Table1->Active=false; / /關(guān)閉可能存在的數(shù)據(jù)映</p><p><b> 射</b></p><p> Table1->DatabaseName=CGJ; / /設(shè)置數(shù)據(jù)
95、庫別名</p><p> Table1->TableName=”BasicData”; / /設(shè)置表名</p><p> Table1->Active=true; / /打開映射</p><p> 注意,這里建立的數(shù)據(jù)映射是供應(yīng)用程序中的數(shù)據(jù)感知控件,如TDBEdit,TDBGrid等使用的,單獨使用TTable無法做到用
96、戶與數(shù)據(jù)庫之間的交互。</p><p> 與TQuery相比,TTable具有簡單,快捷的特點,結(jié)合TDBEdit,TDBGrid等多種數(shù)據(jù)感知控件,可以在不編寫代碼的情況下對表中的數(shù)據(jù)做任何操作,包括插入,修改,刪除等。但TTable只能為一個數(shù)據(jù)表中的數(shù)據(jù)建立數(shù)據(jù)映射,而不能同時訪問多個表,且其對數(shù)據(jù)操作的靈活性也不如TQuery。而本次程序設(shè)計中,數(shù)據(jù)庫含有多個表,且相互有較多關(guān)聯(lián),故最終選用TQuery
97、操作數(shù)據(jù)庫。</p><p> TQuery TQuery使用SQL語言操作數(shù)據(jù)庫,因而具有很大的靈活性。在使用TQuery對象之前,應(yīng)用程序應(yīng)當(dāng)為其設(shè)置DatabaseName屬性,</p><p> 這與使用TTable對象一樣。之后將Active屬性設(shè)為true,則TQuery對象與相應(yīng)數(shù)據(jù)庫建立了聯(lián)系。然后即可使用SQL語言操作數(shù)據(jù)庫。以下結(jié)合實例進(jìn)行介紹。</p>
98、<p> 操作數(shù)據(jù)庫時,經(jīng)常需要對數(shù)據(jù)進(jìn)行查詢,統(tǒng)計,分組和排序等,可以用SELECT語句實現(xiàn)以上操作。</p><p> SELECT的語法格式為:</p><p> SELECT <目標(biāo)列組></p><p> FROM <數(shù)據(jù)列組></p><p> [WHERE <選擇條件>
99、;] </p><p><b> 例如:</b></p><p> 從測功機(jī)數(shù)據(jù)庫中的BasicData表中找出Index,ID等于給定值的組,并讀出該組所記錄的駕駛員名。</p><p> Query->Close( ); //1</p
100、><p> Query->SQL->Clear( ); //2</p><p> Query->SQL->Add(“SELECT Driver FROM BasicData”); //3 </p><p> Query->SQL->Add(“
101、WHERE Index LIKE :Index AND ID=:ID”); //4</p><p> Query->Params->Items[0]->AsString=Index; //5</p><p> Query->Params->Items[1]->AsInteger=ID;
102、 //6</p><p> Query-> ExecSQL( ); //7</p><p> Query->Open( ); //8</p><p> DriverName
103、=Query->Fields->Fields[0]->AsString; //9</p><p> 關(guān)閉Query,以便重新操作數(shù)據(jù)庫。</p><p> 清除前次操作的SQL語句。注意,TQuery利用其SQL屬性使用SQL語句。</p><p> ,4. 添加SQL語句。使用SQL屬性的Add函數(shù),加入操作數(shù)
104、據(jù)庫所用的SQL語句。當(dāng)一條語句過長時,可分開用多條Add函數(shù)添加。</p><p> 5. ,6.輸入?yún)?shù)。數(shù)據(jù)庫操作常常需要外界輸入一定參數(shù),這些參數(shù)是通過TQuery的Params屬性輸入的。</p><p> Query->Params->Items[n]->AsParamType=Param;</p><p> 注意:◆ Items
105、是類數(shù)組,包含了AsString,AsInteger,AsFloat,AsBCD等多種不同屬性,用以輸入字符串,整形,浮點,BCD等多種不同數(shù)據(jù)。</p><p> ◆ Items的下標(biāo)與相關(guān)參數(shù)在SQL語句中出現(xiàn)的順序有關(guān)。</p><p><b> 7.執(zhí)行SQL語句</b></p><p> 8.打開Query的數(shù)據(jù)區(qū)。當(dāng)操作完成后
106、有輸出數(shù)據(jù)時,需要使用該函數(shù)。</p><p> 9.輸出數(shù)據(jù)。完成查詢等操作后,通常會有一定符合要求的數(shù)據(jù)要輸出,則通過Query的Fields屬性輸出。</p><p> Param=Query->Fields->Fields[n]->AsParamType;</p><p> 類似于Items,F(xiàn)ields也是類數(shù)組,其用法可參見Ite
107、ms。</p><p> 上例顯示了TQuery的典型用法。在其他不同的應(yīng)用中,如刪除或添加記錄等,只需改變SQL命令即可。</p><p> 注意: 嵌入式SQL的應(yīng)用程序中,會有SQL和主語言兩種語言,有時可能還有其他語言。多種語言同在一個程序中,它們的語法不一致,某些地方會產(chǎn)生沖突。為解決語言沖突問題,使SQL和主語言能夠相容,不同系統(tǒng)及開發(fā)工具提供了不同的解決方案,使得嵌入式S
108、QL在個別語法點上不盡相同,在使用中應(yīng)加以注意。</p><p> 第五章 上下位機(jī)通訊</p><p><b> 5.1工作簡介</b></p><p> 摩托車測功機(jī)系統(tǒng)中,上位機(jī)提供了人機(jī)界面,用以監(jiān)控測試,收集整理數(shù)據(jù)等,而下位機(jī)通過PLC,傳感器等控制測功機(jī)的電氣硬件部分并采集時間速度等數(shù)據(jù),因而上下位機(jī)之間需要相互通訊以完成命
109、令,數(shù)據(jù)的交流。</p><p> 計算機(jī)間通信分為串行通訊和并行通訊。串行通訊具有配線少,容易實現(xiàn)的特點,成為計算機(jī)間通訊的主要形式。本次測功機(jī)上下位通訊即采用了RS-232協(xié)議的串行通訊實現(xiàn)。</p><p> 本章第二小節(jié)介紹了串口通訊的原理及應(yīng)用等。第三小節(jié)介紹了在Windows下編寫串口通訊應(yīng)用程序。第四小節(jié)介紹了本次上下位機(jī)之間串口通訊的協(xié)議。</p><
110、;p><b> 5.2串口通訊簡介</b></p><p> 計算機(jī)與外部設(shè)備的通信聯(lián)系往往通過并行口或串行口實現(xiàn)。例如,PC機(jī)和打印機(jī)間是通過并行口聯(lián)接的,而PC機(jī)和鼠標(biāo)器、數(shù)字化儀等設(shè)備間則是通過串行口連接的。MS-DOS 6.0系統(tǒng)程序提供的INTERSVR.EXE和INTERLNK.EXE兩個局域網(wǎng)驅(qū)動程序,其通信媒介也是串行口或并行口。因此,串行口通信是實現(xiàn)有一定距離的兩
111、臺或兩臺以上的設(shè)備彼此連接的最簡單、最便宜的方法。串行口通信需要許多握手信號和狀態(tài)信號來協(xié)調(diào)多臺設(shè)備的通信工作,因此串行口通信比較復(fù)雜。</p><p> 所謂串行通信指的是一次傳送一個bit位數(shù)據(jù),而不是一次傳送一個字節(jié)的數(shù)據(jù)。所以傳送速度較慢,但是由于其通訊線路簡單,只要一對傳輸線就可以實現(xiàn)通訊,大大降低了成本,從而得以廣泛應(yīng)用。</p><p> 5.3 Windows下的上位機(jī)
112、串口通訊</p><p> 由于操作系統(tǒng)結(jié)構(gòu)的不同,在DOS下和Windows下進(jìn)行串行通訊編程有很大區(qū)別。</p><p> DOS作為一種單用戶操作系統(tǒng),允許用戶對硬件進(jìn)行直接操作,因而在DOS下的串行通訊程序,大多采用查詢方式進(jìn)行數(shù)據(jù)的收發(fā)工作,大致可以分為以下幾個步驟:首先應(yīng)初始化串行口,然后查詢串行口狀態(tài),確定可以接收或發(fā)送后,再進(jìn)行數(shù)據(jù)的接收和發(fā)送。從程序設(shè)計的角度看待串行
113、端口,就是通過異步通信適配器來控制RS-232接口,具體的說就是設(shè)置8250中各寄存器,實現(xiàn)波特率設(shè)定、狀態(tài)檢測、中斷設(shè)定等功能。</p><p> Windows是一種多進(jìn)程操作系統(tǒng),為保證系統(tǒng)安全,用戶被禁止對硬件進(jìn)行直接操作。為向用戶屏蔽硬件,用戶通常使用API函數(shù)向系統(tǒng)請求硬件服務(wù),系統(tǒng)通過硬件驅(qū)動程序等完成相應(yīng)的服務(wù),并將服務(wù)結(jié)果返回用戶。通過這一方式,用戶只需使用相應(yīng)的API函數(shù)即可完成硬件操作,而
114、無需關(guān)心硬件的具體型號等問題,使得程序的可移植性,安全性和維護(hù)性都大為增加。</p><p> 但是,作為較低層的應(yīng)用,API函數(shù)雖然功能強(qiáng)大完善,但也具有不易使用的問題,因而,許多軟件公司又對其進(jìn)行了封裝,改善,去掉少量不常用功能,增強(qiáng)其易用性和對用戶的友善性,然后以控件的形式發(fā)表,極大的方便了程序的編寫,調(diào)試和維護(hù)。</p><p> 本次上位機(jī)程序的串行通訊部分即以Microso
115、ft的MSComm控件實現(xiàn)。以下將圍繞該控件討論Windows下的串行通訊程序。</p><p><b> 安裝MSComm</b></p><p> MSComm是VB自帶的控件,當(dāng)安裝好VB后便可在其中使用MSComm。但本次上位機(jī)程序是由C++Builder開發(fā),故先要在C++Builder中安裝MSComm后方可使用。</p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于c++語言編程格斗游戲畢業(yè)設(shè)計
- c++編程小游戲掃雷畢業(yè)論文
- c++圖書管理系統(tǒng)(doc畢業(yè)設(shè)計論文)
- c++編程規(guī)范
- c++高級編程
- 底盤測功機(jī)
- c++編程規(guī)范
- 基于CAN總線的摩托車底盤測功機(jī)的設(shè)計.pdf
- visual c++ 畢業(yè)設(shè)計外文翻譯
- c++課程畢業(yè)設(shè)計(論文)汽車管理系統(tǒng)1
- 畢業(yè)設(shè)計---visul c++圖象處理設(shè)計
- sql注入畢業(yè)設(shè)計參考論文
- 電機(jī)上位機(jī)控制及界面設(shè)計
- 內(nèi)核中c++編程
- c++課程設(shè)計--對參賽結(jié)果分?jǐn)?shù)進(jìn)行處理
- c++編程題題庫
- c++簡單計算器畢業(yè)設(shè)計
- c++數(shù)字圖像處理 畢業(yè)設(shè)計
- 畢業(yè)設(shè)計(論文)小型挖掘機(jī)底盤行駛液壓系統(tǒng)設(shè)計
- ACD系列摩托車電慣量交流底盤測功機(jī)研制.pdf
評論
0/150
提交評論