畢業(yè)設(shè)計(jì)---labview智能小車設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩77頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘要</b></p><p>  本課題以智能車比賽為背景,以縮短智能車控制算法的開(kāi)發(fā)周期為目的,基于虛擬儀器LabVIEW開(kāi)發(fā)了智能車仿真軟件,為智能車比賽提供可以離線驗(yàn)證控制算法的軟件平臺(tái)。</p><p>  本文首先對(duì)智能車仿真模擬系統(tǒng)的運(yùn)行模型進(jìn)行了分析,主要包括賽道設(shè)計(jì)、賽車設(shè)計(jì)、進(jìn)行仿真和結(jié)果回放四個(gè)部分,然后根據(jù)這幾部分進(jìn)

2、行軟件開(kāi)發(fā),但在實(shí)際開(kāi)發(fā)中并沒(méi)有完成所有功能,只完成了其中智能車仿真系統(tǒng)的一部分,并對(duì)該部分的開(kāi)發(fā)過(guò)程進(jìn)行了詳細(xì)的分析。</p><p>  關(guān)鍵詞:LabVIEW;仿真;智能車;虛擬儀器</p><p><b>  ABSTRACT</b></p><p>  Tsinghua University hosted the firth coll

3、ege student competition, the "Freescale" Cup. The participants are required to provide the intelligent vehicle model capacity of the self-road-recognize based on the designed model-car and the micro-controller

4、chip. The winner was the first one finished the race on the right road.</p><p>  Based on this competition, this paper, aims at reducing the development period of the control algorithm, provides the software

5、 platform for the off-line test of the race car control algorithm by using LabVIEW.</p><p>  This paper firstly intelligent vehicle simulation system operation model are analyzed, a simulation analysis syste

6、m has four functions, namely the circuit design, the car carries on the simulation, and design, and then according to the results of playback software development, but the framework in developing and not finished all the

7、 functions of intelligence, only completed the car mode, and the system in the development process of parts are analyzed in detail.</p><p>  Key word: LabVIEW; simulation; Intelligent vehicle; Virtual instru

8、ment</p><p><b>  目錄</b></p><p><b>  摘要I</b></p><p>  ABSTRACTII</p><p><b>  1.緒論1</b></p><p>  1.1課題研究的背景1</p>

9、;<p>  1.2本課題研究的內(nèi)容和意義1</p><p>  1.3中國(guó)大學(xué)生智能車設(shè)計(jì)競(jìng)賽3</p><p>  2.智能車仿真系統(tǒng)的開(kāi)發(fā)軟件5</p><p>  2.1 開(kāi)發(fā)工具LabVIEW概述5</p><p>  2.2 LabVIEW的基本概念6</p><p>  2.3 L

10、abVIEW的操作模板9</p><p>  2.4 LabVIEW中的基本數(shù)據(jù)類型及其相互轉(zhuǎn)換17</p><p>  2.5 LabVIEW平臺(tái)的特點(diǎn)21</p><p>  3.仿真軟件的設(shè)計(jì)23</p><p>  3.1建立賽道功能模塊23</p><p>  3.2建立智能車功能模塊25<

11、/p><p>  3.3仿真功能模塊26</p><p>  3.4數(shù)據(jù)分析功能模塊28</p><p>  4.智能車仿真系統(tǒng)程序29</p><p>  4.1 流程圖介紹29</p><p>  4.2程序代碼及注釋30</p><p>  5.總結(jié)與展望51</p>

12、<p>  5.1本文主要研究成果51</p><p>  5.2下一步的研究方向52</p><p><b>  5.3展望53</b></p><p><b>  參考文獻(xiàn)54</b></p><p><b>  致謝56</b></p>

13、<p><b>  附錄57</b></p><p><b>  1.緒論</b></p><p>  1.1課題研究的背景</p><p>  近年來(lái),隨著經(jīng)濟(jì)的發(fā)展和社會(huì)的進(jìn)步,道路的通行能力、交通的安全性、能源的損耗、環(huán)境污染等問(wèn)題越來(lái)越突出。車輛在交通擁擠的市區(qū)行使駕駛?cè)藛T必須完成大量的換檔和踩離合器

14、的工作,大約在每分鐘完成20~30個(gè)手腳協(xié)調(diào)動(dòng),繁重的駕駛工作和駕駛?cè)藛T的疲勞是交通事故頻發(fā)的重要原因。隨著經(jīng)濟(jì)的發(fā)展,車輛擁有量的增加,非職業(yè)駕駛?cè)藛T的人數(shù)增多,是導(dǎo)致交通事故頻繁發(fā)生的又一重要原因。交通問(wèn)題已經(jīng)成為全球范圍令人困擾的嚴(yán)重問(wèn)題,因此,如何提高交通安全性己經(jīng)成為急需解決的社會(huì)性問(wèn)題。道路偏離系統(tǒng)、疲勞檢測(cè)系統(tǒng)、自動(dòng)巡航控制等都可以大大減輕駕駛?cè)藛T的駕駛工作,提高交通系統(tǒng)的安全性。這些問(wèn)題的解決引發(fā)了新的研究和應(yīng)用的熱點(diǎn),

15、比如自動(dòng)車輛駕駛,通過(guò)計(jì)算機(jī)控制、人工智能和通信技術(shù)實(shí)現(xiàn)更好的通行能力和更安全的行駛[1][2]。</p><p>  從汽車出現(xiàn)的時(shí)候起,人們就有了汽車自動(dòng)駕駛的設(shè)想。隨著相關(guān)學(xué)科的不斷發(fā)展,使得人類的這一夢(mèng)想逐漸成為現(xiàn)實(shí)。上海交大的CyberC3項(xiàng)目組,開(kāi)展了面向城市環(huán)境的無(wú)人自動(dòng)駕駛車輛研究,目的是為未來(lái)的城市提供一種靈活、高效、安全、環(huán)保的新型公共交通工具。另外,美國(guó)國(guó)防遠(yuǎn)景研究規(guī)劃局從2004年開(kāi)始,每

16、年舉辦無(wú)人車大獎(jiǎng)賽,賽車需要自主地穿越沙漠地帶,總行程達(dá)240公里。2006年8月在清華大學(xué)舉辦的智能車大賽就是在這樣的背景下應(yīng)運(yùn)而生的。</p><p>  1.2本課題研究的內(nèi)容和意義</p><p>  在智能車的實(shí)際設(shè)計(jì)過(guò)程中,面臨著如下幾個(gè)問(wèn)題:第一,為了測(cè)試賽車在不同的賽道上都有穩(wěn)定的發(fā)揮,就不得不制作出各種形式的賽道來(lái)測(cè)試賽車的性能,但是在實(shí)際中,不可能為智能車設(shè)計(jì)各種各樣的

17、比賽賽道來(lái)試驗(yàn)智能車的比賽效果,在經(jīng)濟(jì)上和效率上都是不能被接受的;第二,一個(gè)控制算法的實(shí)現(xiàn)和驗(yàn)證也需要有一個(gè)周期,在比賽設(shè)計(jì)的有限時(shí)間里,選擇合適的控制算法,并且試驗(yàn)它的有效性,是一個(gè)比較艱巨的任務(wù),如何快速驗(yàn)證我們所設(shè)計(jì)的控制算法,縮短開(kāi)發(fā)周期,在有限的時(shí)間里盡可能開(kāi)發(fā)出最好最優(yōu)的控制算法,對(duì)我們提出了挑戰(zhàn);第三,分析車的運(yùn)行過(guò)程進(jìn)而分析車的控制方法是分析和優(yōu)化控制算法的一個(gè)有效途徑,實(shí)際上車的運(yùn)行是一個(gè)快速的過(guò)程,是轉(zhuǎn)瞬即逝的,很難

18、把車的實(shí)際運(yùn)行過(guò)程復(fù)現(xiàn)出來(lái)的,這樣就缺失了有效的分析方法。這些問(wèn)題都是能夠順利完成比賽的不可避免的障礙。</p><p>  基于以上的問(wèn)題,為了能夠快速的驗(yàn)證智能車的設(shè)計(jì)方案,縮短其開(kāi)發(fā)周期,讓參賽隊(duì)伍有充足的時(shí)間來(lái)研究更合適的方案和策略,需要有一個(gè)軟件仿真平臺(tái)。</p><p>  本文對(duì)智能車的運(yùn)行過(guò)程進(jìn)行分析,研究了智能車整體運(yùn)動(dòng)過(guò)程,對(duì)其運(yùn)動(dòng)過(guò)程的各環(huán)節(jié)建立了數(shù)學(xué)模型,并且利用了

19、虛擬儀器軟件LabVIEW為智能車比賽開(kāi)發(fā)了一個(gè)比賽仿真以及理論實(shí)驗(yàn)平臺(tái),以此實(shí)現(xiàn)以下幾個(gè)部分的功能:</p><p>  賽道建模:可以根據(jù)實(shí)際賽道的尺寸大小建立起軟件的比賽</p><p><b>  賽道。</b></p><p>  賽車建模:對(duì)賽車基本參數(shù)的設(shè)置以及路徑檢測(cè)方案的設(shè)計(jì)。</p><p>  控制

20、算法的仿真實(shí)驗(yàn):可以設(shè)計(jì)好自己的控制算法對(duì)賽車進(jìn)</p><p><b>  行運(yùn)行仿真。</b></p><p>  比賽仿真的后期分析:可以根據(jù)運(yùn)行過(guò)程中保存的數(shù)據(jù)對(duì)運(yùn)</p><p>  行過(guò)程分析,可以對(duì)控制算法進(jìn)行優(yōu)化。</p><p>  最后對(duì)賽車轉(zhuǎn)彎時(shí)間最優(yōu)問(wèn)題進(jìn)行了研究,提出三種轉(zhuǎn)彎策略,通過(guò)仿真比較給

21、出了縮短比賽時(shí)間,提高比賽成績(jī)的較好的轉(zhuǎn)彎策略。</p><p>  1.3中國(guó)大學(xué)生智能車設(shè)計(jì)競(jìng)賽</p><p>  在學(xué)習(xí)韓國(guó)大學(xué)生智能汽車競(jìng)賽后,我國(guó)也組織了自己的大學(xué)生智能汽車競(jìng)賽,以加強(qiáng)大學(xué)生實(shí)踐能力、創(chuàng)新能力和團(tuán)隊(duì)精神的培養(yǎng)。飛思卡爾半導(dǎo)體公司作為比賽的協(xié)辦單位,從而成立里“飛思卡爾”杯大學(xué)生智能汽車設(shè)計(jì)競(jìng)賽。所設(shè)計(jì)的智能車模型如圖1.1所示。</p><

22、p><b>  圖1.1智能車模型</b></p><p>  1.3.1中國(guó)大學(xué)生智能車設(shè)計(jì)競(jìng)賽簡(jiǎn)介</p><p>  我國(guó)大學(xué)生“飛思卡爾”杯智能汽車競(jìng)賽,是在統(tǒng)一汽車模型平臺(tái)上,使用飛思卡爾半導(dǎo)體公司的8位、16位微控制器作為核心控制模塊,自主構(gòu)思控制方案進(jìn)行系統(tǒng)設(shè)計(jì),包括傳感器信號(hào)采集處理、動(dòng)力電機(jī)驅(qū)動(dòng)、轉(zhuǎn)向舵機(jī)控制以及控制算法軟件開(kāi)發(fā)等,完成智能車工

23、程制作及調(diào)試,于指定日期與地點(diǎn)參加各分賽區(qū)的場(chǎng)地比賽,在獲得決賽資格后,參加全國(guó)決賽區(qū)的場(chǎng)地比賽。參賽隊(duì)伍之名次(成績(jī))由賽車現(xiàn)場(chǎng)成功完成賽道比賽時(shí)間為主、技術(shù)報(bào)告和制作工程質(zhì)量評(píng)分為輔來(lái)決定[3]。 </p><p>  1.3.2中國(guó)大學(xué)生智能車設(shè)計(jì)競(jìng)賽的意義</p><p>  全國(guó)大學(xué)生智能汽車競(jìng)賽是教育部為了加強(qiáng)大學(xué)生實(shí)踐、創(chuàng)新能力和團(tuán)隊(duì)精神的培養(yǎng),在己舉辦的全國(guó)數(shù)學(xué)建模、電子設(shè)

24、計(jì)、機(jī)械設(shè)計(jì)、結(jié)構(gòu)設(shè)計(jì)等4大專業(yè)競(jìng)賽的基礎(chǔ)上而設(shè)立的第五項(xiàng)大學(xué)生設(shè)計(jì)競(jìng)賽。該競(jìng)賽與已舉辦的教育部4大專業(yè)競(jìng)賽不同,是以迅猛發(fā)展的汽車電子為背景,涵蓋了控制、模式識(shí)別、傳感技術(shù)、電子、電氣、計(jì)算機(jī)、機(jī)械等多個(gè)學(xué)科交叉的科技創(chuàng)意性比賽,這對(duì)進(jìn)一步深化高等工程教育改革,培養(yǎng)本科生獲取知識(shí)、應(yīng)用知識(shí)的能力及創(chuàng)新意識(shí),培養(yǎng)碩士生從事科學(xué)、技術(shù)研究能力,培養(yǎng)博士生知識(shí)、技術(shù)創(chuàng)新能力具有重要意義。</p><p>  2.智能

25、車仿真系統(tǒng)的開(kāi)發(fā)軟件</p><p>  2.1 開(kāi)發(fā)工具LabVIEW概述</p><p>  LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一種圖形化的程序開(kāi)發(fā)環(huán)境,由美國(guó)國(guó)家儀器(National Instrument)公司研制開(kāi)發(fā)的,類似于C和BASIC開(kāi)發(fā)環(huán)境,但是LabVIEW與其他計(jì)算機(jī)語(yǔ)言的顯著區(qū)別

26、是:其他計(jì)算機(jī)語(yǔ)言都是采用基于文本的語(yǔ)言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語(yǔ)言來(lái)編寫程序,產(chǎn)生的程序是框圖的形式。在開(kāi)發(fā)過(guò)程中,用圖標(biāo)就可以代替應(yīng)用系統(tǒng)的硬件部分,這樣就可以省去了很多購(gòu)買硬件的資金,以節(jié)省大量的研發(fā)資金。LabVIEW中盡可能的利用了工程師們所熟知的術(shù)語(yǔ)、圖標(biāo)和概念,是一個(gè)工業(yè)標(biāo)準(zhǔn)的開(kāi)發(fā)環(huán)境。它結(jié)合了圖形化編程方式的高性能和靈活性以及專為測(cè)試、測(cè)量與自動(dòng)化控制應(yīng)用設(shè)計(jì)的高端性能和配置,能為數(shù)據(jù)采集、儀器控制、

27、測(cè)量分析與數(shù)據(jù)顯示等各種應(yīng)用提供必要的開(kāi)發(fā)工具,這能幫助工程師們提高工作效率[4]。</p><p>  LabVIEW廣泛地被工業(yè)界、學(xué)術(shù)界和研究實(shí)驗(yàn)室所接受,視為一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)采集和儀器控制軟件。LabVIEW集成了與滿足GPIB、VXI、RS-232和RS-485協(xié)議的硬件及數(shù)據(jù)采集卡通訊的全部功能。它還內(nèi)置了便于應(yīng)用TCP/IP、ActiveX等軟件標(biāo)準(zhǔn)的庫(kù)函數(shù),這是一個(gè)功能強(qiáng)大且靈活的軟件。利用它可以方

28、便地建立自己的虛擬儀器,其圖形化的界面使得編程及使用過(guò)程都生動(dòng)有趣。</p><p>  圖形化的程序語(yǔ)言,又稱為“G”語(yǔ)言。使用這種語(yǔ)言編程時(shí),基本上不寫程序代碼,取而代之的是流程圖或框圖。它盡可能利用了技術(shù)人員、科學(xué)家、工程師所熟悉的術(shù)語(yǔ)、圖標(biāo)和概念,因此,LabVIEW是一個(gè)面向最終用戶的工具。它可以增強(qiáng)你構(gòu)建自己的科學(xué)和工程系統(tǒng)的能力,提供了實(shí)現(xiàn)儀器編程和數(shù)據(jù)采集系統(tǒng)的便捷途徑。使用它進(jìn)行原理研究、設(shè)計(jì)、

29、測(cè)試并實(shí)現(xiàn)儀器系統(tǒng)時(shí),可以大大提高工作效率。</p><p>  虛擬儀器(Virtual Instrumentation)是基于計(jì)算機(jī)的儀器。計(jì)算機(jī)和儀器的密切結(jié)合是目前儀器發(fā)展的一個(gè)重要方向。粗略地說(shuō)這種結(jié)合有兩種方式,一種是將計(jì)算機(jī)裝入儀器,其典型的例子就是所謂智能化的儀器。隨著計(jì)算機(jī)功能的日益強(qiáng)大以及其體積的日趨縮小,這類儀器功能也越來(lái)越強(qiáng)大,目前已經(jīng)出現(xiàn)含嵌入式系統(tǒng)的儀器。另一種方式是將儀器裝入計(jì)算機(jī)。

30、以通用的計(jì)算機(jī)硬件及操作系統(tǒng)為依托,實(shí)現(xiàn)各種儀器功能。虛擬儀器主要是指這種方式。</p><p>  虛擬儀器實(shí)際上是一個(gè)按照儀器需求組織的數(shù)據(jù)采集系統(tǒng),虛擬儀器的研究中涉及的基礎(chǔ)理論主要有計(jì)算機(jī)數(shù)據(jù)采集和數(shù)字信號(hào)處理。目前在這一領(lǐng)域內(nèi),使用較為廣泛的計(jì)算機(jī)語(yǔ)言是美國(guó)NI公司的LabVIEW。</p><p>  利用LabVIEW,可產(chǎn)生獨(dú)立運(yùn)行的可執(zhí)行文件,它是一個(gè)真正的32位編譯器。

31、像許多重要的軟件一樣,LabVIEW提供了Windows、UNIX、Linux、Macintosh的多種版本[4]。 </p><p>  它主要的方便就是,一個(gè)硬件的情況下,可以通過(guò)改變軟件,就可以實(shí)現(xiàn)不同的儀器儀表的功能,非常方便快捷,是相當(dāng)于軟件即硬件。</p><p>  2.2 LabVIEW的基本概念</p><p>  2.2.1 VI的概念 &

32、lt;/p><p>  用LabVIEW開(kāi)發(fā)出的應(yīng)用程序被稱作VI (Virtual Instrument的英文簡(jiǎn)寫,即虛擬儀器),它的表現(xiàn)形式和功能類似于實(shí)際的儀器,也很容易改變?cè)O(shè)置和功能。VI是由圖標(biāo)、連線以及框圖構(gòu)成的應(yīng)用程序,有Front Panel(前面板)、Block Diagram(后面板)以及圖標(biāo)/連結(jié)器(Icon Connector)三部分構(gòu)成。</p><p>  前面板是

33、應(yīng)用程序的界面,是人機(jī)交互的窗口,主要由Controls(控制量)和Indicators(顯示量)構(gòu)成。當(dāng)程序運(yùn)行時(shí),用戶通過(guò)控制量(例如用戶輸入數(shù)據(jù)的文本框以及一些按鈕、開(kāi)關(guān)燈)輸入數(shù)據(jù)和控制程序的運(yùn)行,而顯示量(例如顯示波形的示波器控件燈)則主要用于顯示程序運(yùn)行的結(jié)果。如果將VI程序比作一臺(tái)儀器的話,那么,控制量就是儀器的數(shù)據(jù)輸入端口和控制開(kāi)關(guān),用于給程序提供輸入數(shù)據(jù)和控制信號(hào),而顯示量則是儀器的顯示窗口,用于顯示經(jīng)過(guò)程序分析、處理

34、后的結(jié)果,如圖2.1所示,顯然,并非簡(jiǎn)單地畫兩個(gè)控件就可以運(yùn)行,在前面板后還有一個(gè)與之配套的流程圖。</p><p><b>  圖2.1前面板界面</b></p><p>  流程圖提供VI的圖形化源程序,在流程圖中對(duì)VI編程,以控制和操縱定義在前面板上的輸入和輸出功能。流程圖中包括前面板上的控件的連線端子,還有一些前面板上沒(méi)有,但編程必須有的東西,例如函數(shù)、結(jié)構(gòu)和

35、連線等。圖2.2是一個(gè)隨機(jī)信號(hào)發(fā)生器的流程圖,從中可以看到流程圖中包括了前面板上的開(kāi)關(guān)和隨機(jī)數(shù)顯示器的連線端子,還有一個(gè)隨機(jī)數(shù)發(fā)生器的函數(shù)及程序的循環(huán)結(jié)構(gòu)。隨機(jī)數(shù)發(fā)生器通過(guò)連線將產(chǎn)生的隨機(jī)信號(hào)送到顯示控件,為了使它持續(xù)工作下去,設(shè)置了一個(gè)WhileLoop循環(huán),由開(kāi)關(guān)控制這一循環(huán)的結(jié)束。如果將VI與標(biāo)準(zhǔn)儀器相比較,那么前面板上的東西就是儀器面板上的東西,而流程圖卜的東西相當(dāng)于儀器箱內(nèi)的東西。在許多情況下,使用VI可以仿真標(biāo)準(zhǔn)儀器,不僅在

36、屏幕上出現(xiàn)一個(gè)惟妙惟肖的標(biāo)準(zhǔn)儀器面板,而且其功能也與標(biāo)準(zhǔn)儀器相差無(wú)幾。</p><p>  圖2.2隨機(jī)信號(hào)發(fā)生器的流程圖</p><p>  2.2.2子VI與子程序</p><p>  和其他編程語(yǔ)言一樣,在LabVIEW中也存在子程序的概念,在LabVIEW中的子程序被稱作子VI。在程序中使用子VI有以下優(yōu)點(diǎn):</p><p>  將一

37、些代碼封裝成為一個(gè)子VI(即一個(gè)圖標(biāo)),可以使程序的結(jié)構(gòu)變得更加清晰、明了。</p><p>  將整個(gè)程序劃分為若干模塊,每個(gè)模塊用一個(gè)或者幾個(gè)子VI實(shí)現(xiàn),易于程序的編寫和維護(hù)。</p><p>  將一些常用的功能編制成一個(gè)子VI,在需要的時(shí)候可以直接調(diào)用,不用重新編寫這部分程序,因而子VI有利于代碼復(fù)用。</p><p>  2.3 LabVIEW的操作模板&

38、lt;/p><p>  在LabVIEW的用戶界面上,應(yīng)特別注意它提供的操作模板,包括工具(Tools)模板、控制(Eontrols)模板和函數(shù)(FunetionS)模板[5]。這些模板集中反映了該軟件的功能與特征,對(duì)LabVIEW程序的創(chuàng)建、設(shè)計(jì)和調(diào)試具有重要的作用。</p><p>  2.3.1工具模板(Tools Palette)</p><p>  具模板如圖

39、2.3所示,該模板包含各種用于創(chuàng)建、修改LabVIEW中的對(duì)象,并可對(duì)VI程序進(jìn)行調(diào)試。一般在啟動(dòng)LabVIEW時(shí),該模板就會(huì)出現(xiàn),如果該模板沒(méi)有出現(xiàn),則可以在Windows菜單下選擇Show Tools Palette命令以顯示該模板。當(dāng)從模板內(nèi)。選擇了任一種工具后,鼠標(biāo)箭頭就會(huì)變成該工具相應(yīng)的形狀。</p><p><b>  圖2.3工具模板</b></p><p&

40、gt;  當(dāng)從Windows菜單下選擇了Show HelpWindow功能后,把工具模板內(nèi)選定的任種工具光標(biāo)放在流程圖程序的子程序(SubVI)或圖標(biāo)上,就會(huì)顯示相應(yīng)的幫助信息。工具模板中各種不同工具的圖標(biāo)及其相應(yīng)的功能如表2.1所示。</p><p>  表2.1工具模板圖標(biāo)、名稱及功能</p><p>  2.3.2控制模板(Controls Palette)</p>&

41、lt;p>  該模板用來(lái)給前面板設(shè)置各種所需的控制量(Controls)和顯示量(Indicators),主要用來(lái)創(chuàng)建前面板中的對(duì)象,構(gòu)建程序的界面。每個(gè)圖標(biāo)代表一類子模板。如果控制模板不顯示,可以用城Windows菜單的Show Controls Palette功能打開(kāi)它,也可以在前面板的空白處,點(diǎn)擊鼠標(biāo)右鍵,以彈出控制模板,如圖2.4所示。</p><p><b>  圖2.4控件模板<

42、/b></p><p>  控件模板包括如下所示的一些子模板。子模板中包括的對(duì)象,在功能方面用文字簡(jiǎn)要介紹[6],如表2.2所示。</p><p>  表2.2控件面板的圖標(biāo)、名稱及功能</p><p>  2.3.3函數(shù)模板(Functions Palette)</p><p>  函數(shù)模板是創(chuàng)建流程圖程序的工具,包含了編寫程序的過(guò)程

43、中會(huì)用到的函數(shù)和VI程序,主要用于構(gòu)建后面板的對(duì)象。該模板上的每一個(gè)頂層圖標(biāo)都表示一個(gè)子模板。若函數(shù)模板不出現(xiàn),則可以用Windows菜單下的Show Functions Palette功能打開(kāi)它,也可以在流程圖程序窗口的空白處點(diǎn)擊鼠標(biāo)右鍵以彈出功能模板。函數(shù)模板如圖2.5所示。 </p><p>  圖2.5函數(shù)面板其子模塊</p><p>  函數(shù)模板包括如下所示的一些子模板。子模板

44、中包括的對(duì)象,在功能方面用文字簡(jiǎn)要介紹(個(gè)別不常用的子模塊未包含)[6],如表2.3所示。</p><p>  表2.3函數(shù)面板的圖標(biāo)、名稱及功能</p><p>  2.4 LabVIEW中的基本數(shù)據(jù)類型及其相互轉(zhuǎn)換</p><p>  與Visual C++等基于文本模式的編程語(yǔ)言一樣,LabVIEW的程序設(shè)計(jì)中也要涉及常量、變量、函數(shù)的概念以及各種數(shù)據(jù)類型,這

45、些是用LabVIEW進(jìn)行程序設(shè)計(jì)的基礎(chǔ),也是構(gòu)建LabVIEW應(yīng)用程序的基石。</p><p>  2.4.1 LabVIEW中的基本數(shù)據(jù)類型據(jù)類型。</p><p>  LabVIEW中的數(shù)據(jù)被分為控制量和顯示量,前者用于用戶控制程序運(yùn)行和向程序傳遞數(shù)據(jù),后者主要負(fù)責(zé)數(shù)據(jù)的顯示和表達(dá)。根據(jù)數(shù)據(jù)類型的不同,控制量和顯示量劃分為數(shù)值型,布爾型、字符串型、數(shù)組型、簇型、波形數(shù)據(jù)以及動(dòng)態(tài)數(shù)據(jù)類型

46、等多種數(shù)據(jù)類型,各種類型之間可以通過(guò)一些函數(shù)和VI進(jìn)行類型轉(zhuǎn)換,以使用程序的需要。</p><p>  在LabVIEW中,各種不同的數(shù)據(jù)類型,其變量的圖標(biāo)邊框的顏色不同。因而,從圖表邊框的顏色就可以分辨其數(shù)據(jù)類型[7]。</p><p><b>  數(shù)值型數(shù)據(jù)類型</b></p><p>  按照精度和數(shù)據(jù)的范圍,數(shù)值型數(shù)據(jù)可以方程以下幾類:

47、</p><p>  字節(jié)型:以一個(gè)字節(jié)((8位)的空間來(lái)存儲(chǔ)整數(shù)數(shù)據(jù)。又可以分成有符號(hào)字節(jié)(取值范圍為-128~127)和無(wú)符號(hào)字節(jié)型(取值范圍為0~255 )。</p><p>  字型:以一個(gè)字(由兩個(gè)字節(jié)組成,共16位)的空間來(lái)存儲(chǔ)整數(shù)數(shù)據(jù)。又可以分成有符號(hào)字節(jié)(取值范圍為-32768~32767)和無(wú)符號(hào)字節(jié)型(取值范圍為0~65535 )。</p><p&g

48、t;  雙子型(即長(zhǎng)整型):以一個(gè)雙字(由兩個(gè)字節(jié)組成,共32位)的空間來(lái)存儲(chǔ)整數(shù)數(shù)據(jù)。又可以分成有符號(hào)長(zhǎng)整型(取值范圍為-2147483648 ~2147483647)和無(wú)符號(hào)長(zhǎng)整型(取值范圍為0~4294967295 )。</p><p>  單精度浮點(diǎn)型:用32位IEEE標(biāo)準(zhǔn)格式存儲(chǔ)單精度浮點(diǎn)型數(shù)據(jù)。又分成實(shí)數(shù)單精度浮點(diǎn)型數(shù)據(jù)和復(fù)數(shù)單精度浮點(diǎn)型數(shù)據(jù)兩種。</p><p>  雙精度浮

49、點(diǎn)型:用64位IEEE標(biāo)準(zhǔn)格式存儲(chǔ)雙精度浮點(diǎn)型數(shù)據(jù)。又分成實(shí)數(shù)雙精度浮點(diǎn)型數(shù)據(jù)和復(fù)數(shù)雙精度浮點(diǎn)型數(shù)據(jù)兩種。</p><p>  擴(kuò)展精度的浮點(diǎn)數(shù)類型:分成實(shí)數(shù)擴(kuò)展精度的浮點(diǎn)數(shù)類型數(shù)據(jù)和復(fù)數(shù)擴(kuò)展精度的浮點(diǎn)數(shù)類型數(shù)據(jù)兩種。該數(shù)據(jù)類型的精度和占用內(nèi)存的大小因操作系統(tǒng)而異。</p><p>  上述的數(shù)值型數(shù)據(jù)類型,隨著精度的提高和數(shù)據(jù)類型所表示數(shù)據(jù)范圍的擴(kuò)大,其消耗的系統(tǒng)資源也隨之增長(zhǎng),因而,為

50、了提高程序運(yùn)行的效率,在滿足使用要求的前提下,我們應(yīng)該盡量選擇精度和數(shù)據(jù)范圍相對(duì)小的數(shù)據(jù)類型。</p><p><b>  布爾型數(shù)據(jù)類型</b></p><p>  在LabVIEW中,布爾型數(shù)據(jù)采用一個(gè)字節(jié)(C8位)的空間來(lái)存儲(chǔ)數(shù)據(jù)。如果數(shù)據(jù)為0,則布爾型數(shù)據(jù)為FALSE,否則為TRUE 。</p><p><b>  數(shù)組數(shù)據(jù)類

51、型</b></p><p>  在LabVIEW中,數(shù)組的概念是一組相同數(shù)據(jù)類型數(shù)據(jù)的集合。不同數(shù)據(jù)類型的數(shù)組的圖標(biāo)是在原有數(shù)據(jù)類型圖標(biāo)外面加上方括號(hào)。 </p><p><b>  路徑數(shù)據(jù)類型</b></p><p>  在LabVIEW中,以包含數(shù)據(jù)類型成員及其數(shù)量的句柄來(lái)存儲(chǔ)數(shù)據(jù)。</p><p>

52、;<b>  字符串?dāng)?shù)據(jù)類型</b></p><p>  在LabVIEW中,字符串?dāng)?shù)據(jù)類型是以整型數(shù)組形式來(lái)存儲(chǔ)的。</p><p><b>  簇?cái)?shù)據(jù)類型</b></p><p>  和數(shù)組不同的是,在LabVIEW中“簇”可以用來(lái)存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)。空簇(里面沒(méi)有任何對(duì)象的簇)和混合型簇的表示圖標(biāo)是不一樣的。&l

53、t;/p><p><b>  波形數(shù)據(jù)類型</b></p><p>  波形數(shù)據(jù)類型是LabVIEW中用來(lái)存儲(chǔ)波形數(shù)據(jù)的一種數(shù)據(jù)類型。</p><p><b>  句柄數(shù)據(jù)類型</b></p><p>  在LabVIEW中,句柄的含義是作為某一個(gè)對(duì)象—如文件、設(shè)備的標(biāo)志,在程序中可以通過(guò)句柄實(shí)現(xiàn)對(duì)這一

54、對(duì)象的訪問(wèn)。</p><p><b>  v0通道號(hào)數(shù)據(jù)類型</b></p><p>  用來(lái)指明LabVIEW中設(shè)備的v0通道號(hào)。</p><p><b>  10)動(dòng)態(tài)數(shù)據(jù)類型</b></p><p>  LabVIEW支持一種新的數(shù)據(jù)類型—?jiǎng)討B(tài)數(shù)據(jù)類型,這種類型的數(shù)據(jù)在于應(yīng)用時(shí)不必具體指定其數(shù)

55、據(jù)類型,在程序運(yùn)行過(guò)程中,根據(jù)需要,對(duì)象被動(dòng)態(tài)賦予各種數(shù)據(jù)類型。</p><p>  2.4.2數(shù)據(jù)類型間的轉(zhuǎn)換</p><p>  由于程序設(shè)計(jì)的具體需要,有些時(shí)候需要進(jìn)行數(shù)據(jù)類型間的轉(zhuǎn)換,將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。</p><p>  在LabVIEW中的數(shù)據(jù)類型轉(zhuǎn)換主要依賴于數(shù)據(jù)類型轉(zhuǎn)換函數(shù)來(lái)完成,這些函數(shù)按照功能被安排在函數(shù)模板的各個(gè)子模板中。例如

56、用于數(shù)值型對(duì)象與其他對(duì)象之間進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換的函數(shù)位于函數(shù)模板中的Numeri子模板中,如圖2.6所示。在函數(shù)模板中的String子模板中,也有用于字符串與數(shù)值型對(duì)象之間數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換的函數(shù),也有用于字符</p><p>  串、數(shù)組以及路徑對(duì)象之間數(shù)據(jù)類型轉(zhuǎn)換的函數(shù)[7]。</p><p>  圖2.6用于數(shù)值型對(duì)象與其他類型對(duì)象之間數(shù)據(jù)類型轉(zhuǎn)換的函數(shù)</p><p

57、>  2.4.3局部變量和全局變量</p><p>  LabVIEW通過(guò)數(shù)據(jù)流驅(qū)動(dòng)的方式來(lái)控制程序的運(yùn)行,在程序中用連線連接多個(gè)控件以交換數(shù)據(jù)。這種驅(qū)動(dòng)方式和數(shù)據(jù)交換方式在某些情況下可能會(huì)遇到麻煩,例如程序復(fù)雜時(shí),連線會(huì)非常混亂,其結(jié)果是導(dǎo)致程序的可讀性變得很差,有些時(shí)候甚至影響程序的正常工作以及程序員的調(diào)試和管理。另外,僅僅依靠連線也無(wú)法進(jìn)行兩個(gè)VI程序之間的數(shù)據(jù)交換。</p><p

58、>  LabVIEW中的局部變量和全局變量在某種程度上可以解決這個(gè)問(wèn)題,因而在LabVIEW程序設(shè)計(jì)中具有重要的意義。</p><p>  局部變量主要用于在程序內(nèi)部傳遞數(shù)據(jù),它既可以作為控制量向其他對(duì)象傳遞數(shù)據(jù),也可以作為顯示量接收其他對(duì)象傳遞過(guò)來(lái)的數(shù)據(jù)。在LabVIEW中,建立局部變量的方式有兩種。第一種方式是直接在函數(shù)模板中的Structure子模板中選擇Local Variable,并放置在后面板上

59、,形成一個(gè)還沒(méi)有被賦值的局部變量,圖標(biāo)為回。第二種方式是在后面板中已有的對(duì)象上面單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇Create Local Variable,構(gòu)成這個(gè)對(duì)象的局部變量。從某種意義上講,局部變量是它所代表的對(duì)象的替身,可以用于傳遞這個(gè)對(duì)象的數(shù)據(jù)。局部變量既可以是控制量也可以是顯示量,如果想要將一個(gè)顯示量的局部變量變成控制量,只需要在局部變量上單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇Change to Read;反之,則需要在快

60、捷菜單中選擇Change to Write。</p><p>  局部變量通常用于程序內(nèi)部的數(shù)據(jù)傳遞,對(duì)于程序之間的數(shù)據(jù)傳遞就無(wú)能為力了,而全局變量可以解決在LabVIEW的程序間數(shù)據(jù)傳遞的問(wèn)題。</p><p>  創(chuàng)建全局變量的方法有兩種,第一種方法是在LabVIEW的新建菜單中選擇Global Variable,單擊“OK”按鈕后可以打開(kāi)設(shè)計(jì)全局變量窗口,這時(shí)形成的一個(gè)沒(méi)有后面板的L

61、abVIEW程序,也就是說(shuō)它僅僅是一個(gè)盛放前面板中控件的容器,沒(méi)有任何代碼,編輯后保存成一個(gè)VI,便建立一個(gè)全局變量;第二種方法是用LabVIEW函數(shù)模板的Structur。子模板,從中選擇Global Variable并放置在程序的后面板上,在后面板上生成圖標(biāo),雙擊圖標(biāo)便可以打開(kāi)編輯窗口,在這里可以編輯該全局變量。全局變量既可以是控制量也可以是顯示量,如果想要將一個(gè)顯示量的全局變量變成控制量,只需要在全局變量上單擊鼠標(biāo)右鍵,從彈出的快

62、捷菜單中選擇Change to Read;反之,則需要在快捷菜單中選擇Change to Write。</p><p>  2.5 LabVIEW平臺(tái)的特點(diǎn)</p><p>  LabVIEW平臺(tái)的特點(diǎn)可歸結(jié)為以下幾個(gè)方面:</p><p>  基于圖形化的編程方式,其編程十分簡(jiǎn)潔方便,是真正的工程師</p><p><b>  的

63、語(yǔ)言;</b></p><p>  提供豐富的數(shù)據(jù)采集、分析及存儲(chǔ)的庫(kù)函數(shù);</p><p>  提供傳統(tǒng)的程序調(diào)試手段,如單步執(zhí)行、設(shè)置斷點(diǎn),同時(shí)提供設(shè)置探針、顯示數(shù)據(jù)流動(dòng)畫等獨(dú)具特色的調(diào)試方法;</p><p>  繼承傳統(tǒng)編程語(yǔ)言結(jié)構(gòu)化和模塊化的優(yōu)點(diǎn),這對(duì)于建立復(fù)雜應(yīng)用和代碼的可重用性來(lái)說(shuō)是至關(guān)重要的;</p><p>  

64、囊括了PCI, GPIB, PXI, VXI, RS232/485, USB等各種儀器通信總線標(biāo)準(zhǔn)的所有功能函數(shù),使不懂總線標(biāo)準(zhǔn)的開(kāi)發(fā)者也能驅(qū)動(dòng)不同總線標(biāo)準(zhǔn)接口設(shè)備與儀器;</p><p>  提供大量與外部代碼或軟件進(jìn)行鏈接的機(jī)制,諸如DLL(動(dòng)態(tài)鏈接庫(kù))、DDE(共享庫(kù))、ActiveX等;</p><p>  具有強(qiáng)大的Internet功能,支持常用的網(wǎng)絡(luò)協(xié)議,方便網(wǎng)絡(luò)、遠(yuǎn)程測(cè)量?jī)x

65、器的開(kāi)發(fā)。</p><p><b>  3.仿真軟件的設(shè)計(jì)</b></p><p>  3.1建立賽道功能模塊</p><p>  仿真系統(tǒng)提供賽道設(shè)計(jì)賽道功能模塊,可以快速地建立起賽道,很好地解決了實(shí)際中設(shè)計(jì)不同賽道的經(jīng)濟(jì)性和效率性的問(wèn)題,賽道設(shè)計(jì)功能模塊就是為所要對(duì)智能車比賽的真實(shí)賽道建模。用戶可以在系統(tǒng)中自行設(shè)計(jì)不同的賽道,然后保存為文件

66、,在仿真時(shí)將其調(diào)用即可[8]。</p><p>  3.1.1仿真設(shè)計(jì)方法</p><p>  在仿真軟件的設(shè)計(jì)過(guò)程中,賽道設(shè)計(jì)是以簡(jiǎn)化了的賽道為模型,即在軟件的制作過(guò)程中,以點(diǎn)的形式存儲(chǔ)賽道,兩個(gè)相關(guān)聯(lián)的點(diǎn)之間的距離定義為分辨率,分辨率是連續(xù)賽道的數(shù)字量化的量度,賽道的具體體現(xiàn)是認(rèn)為兩個(gè)相連的點(diǎn)之間是直線連接的,在分辨率設(shè)置很低的情況下,軟件設(shè)計(jì)中限定了最大分辨率為0.5厘米,這樣,即使

67、是曲線的賽道也可以近似為直線,不會(huì)對(duì)仿真精度產(chǎn)生多大的影響[10]。</p><p>  賽道的生成是以賽道段為單位的,所謂賽道段就是具有同種形狀的賽道,比如,只是直線賽道,那就認(rèn)為為一個(gè)賽道段,一個(gè)直線末端連一個(gè)半徑為0.5米的角度為180的弧,則認(rèn)為為兩個(gè)賽道段,對(duì)于弧線,不同的半徑認(rèn)為是在不同的賽道段上。當(dāng)然也可以把一個(gè)賽道段劃分為多個(gè)賽道段。賽道段總體上分為兩類,直線段和弧線段,直線段信息為端點(diǎn),弧線段信

68、息為俯視旋轉(zhuǎn)方向、角度和半徑信息。</p><p>  用戶首先要根據(jù)實(shí)際賽道的工程圖紙,在不同的賽道段連接點(diǎn)建立起平面直角坐標(biāo)系下的坐標(biāo),然后可以根據(jù)圖紙,從起點(diǎn)開(kāi)始依次輸入各個(gè)賽道段信息,直到終點(diǎn)。這樣就可以在仿真環(huán)境里建立起一個(gè)虛擬賽道。</p><p>  3.1.2賽道功能模塊介紹</p><p>  賽道設(shè)計(jì)功能模塊,利用了LabVIEW可視化的優(yōu)勢(shì),為

69、用戶提供了友好的交互方式,賽道設(shè)計(jì)方便,賽道設(shè)計(jì)界面包括:起始設(shè)置、操作和賽道顯示三個(gè)部分:</p><p>  起始設(shè)置為設(shè)置生成賽道的分辨率,以及賽道的起始坐標(biāo)點(diǎn);</p><p>  操作部分的功能有賽道的生成方式、直線、弧線、撤銷、保存賽</p><p><b>  道和停止; </b></p><p>  賽道

70、的生成方式有兩種,分別為創(chuàng)建賽道和調(diào)入賽道,選擇調(diào)入</p><p>  賽道是從磁盤文件中調(diào)入已經(jīng)保存好的賽道文件,用來(lái)查看已有的賽道。選擇創(chuàng)建賽道就要求用戶自行定制新的賽道[10]。</p><p>  3.1.3程序的運(yùn)行及仿真效果</p><p>  軟件創(chuàng)建賽道的流程,首先提取初始設(shè)置值,根據(jù)輸入的賽道段命令及賽道段信息,進(jìn)入各自的量化處理程序,賽道量化后

71、數(shù)據(jù)暫時(shí)保存在臨時(shí)的數(shù)組中,并且在賽道界面顯示面板中顯示,或者撤銷創(chuàng)建,取消臨時(shí)數(shù)組中的數(shù)據(jù)前一次量化得到的所有數(shù)據(jù),或者繼續(xù)選擇相應(yīng)的賽道段輸入命令,繼續(xù)輸入,直到賽道輸入結(jié)束[11]。創(chuàng)建賽道的流程圖如圖3.1所示。</p><p>  圖3.1創(chuàng)建賽道流程</p><p>  3.2建立智能車功能模塊</p><p>  智能車體也是整個(gè)仿真的基本要素之一。該

72、模塊是對(duì)智能車的基本參數(shù)進(jìn)行設(shè)置,在軟件環(huán)境中建立起智能車的外觀模型,這些參數(shù)包括車的長(zhǎng)度,車的寬度,輪距,軸距,轉(zhuǎn)向參數(shù),對(duì)于給定的智能車,這些基本參數(shù)是相同且不可改變的,為了使軟件更通用,軟件也對(duì)這些基本參數(shù)進(jìn)行了可寫操作,為了在更換了智能車的情況下也可以用它來(lái)仿真。</p><p><b>  3.3仿真功能模塊</b></p><p>  仿真界面是軟件的核心

73、部分,它是模擬智能車的真實(shí)賽道運(yùn)行的環(huán)境,包括控制臺(tái)和顯示屏兩部分。首先,賽道文件調(diào)入程序?qū)惖罃?shù)據(jù)文件的讀取,加載賽道數(shù)據(jù)到仿真環(huán)境,成為智能車仿真運(yùn)行的基礎(chǔ),然后調(diào)入智能車文件程序,程序會(huì)根據(jù)賽道的起始點(diǎn)自動(dòng)調(diào)整智能車,使其以最佳的姿態(tài)停在賽道上[12]。</p><p>  仿真程序是仿真軟件的核心,它主要為模擬傳感器檢測(cè)賽道功節(jié)點(diǎn)、控制算法功能節(jié)點(diǎn)、智能車運(yùn)動(dòng)模型模擬節(jié)點(diǎn)和智能車的顯示功能節(jié)點(diǎn)。仿真程序的

74、設(shè)計(jì)步驟如圖3.2所示。</p><p>  圖3.2仿真程序設(shè)計(jì)步驟</p><p>  仿真程序塊的運(yùn)行流程圖如圖,程序在賽道和智能車都調(diào)入仿真環(huán)境中后,主要在賽道檢測(cè),得到賽道信息,通過(guò)賽道信息和智能車當(dāng)前的狀態(tài)控制智能車的運(yùn)行,根據(jù)運(yùn)動(dòng)模型的到下一個(gè)仿真周期智能車位置,輸出顯示智能車幾個(gè)環(huán)節(jié)中循環(huán),直到完成比賽。</p><p>  3.4數(shù)據(jù)分析功能模塊&

75、lt;/p><p>  利用軟件對(duì)智能車進(jìn)行仿真,可以把仿真中記載智能車運(yùn)行過(guò)程的主要數(shù)據(jù)記錄出來(lái),這是軟件比實(shí)際運(yùn)行調(diào)試的另一個(gè)好處,在實(shí)際運(yùn)行過(guò)程中,我們只能通過(guò)觀測(cè)智能車是否能夠完成比賽任務(wù)和完成比賽時(shí)間的長(zhǎng)短來(lái)定性的判斷控制算法的好壞,不能精確的分析智能車的設(shè)計(jì)方案中出現(xiàn)的問(wèn)題,如控制參數(shù)設(shè)置不當(dāng)?shù)膯?wèn)題。</p><p>  此模塊是用來(lái)完成對(duì)仿真數(shù)據(jù)的后期處理,在實(shí)際的仿真運(yùn)行過(guò)程中

76、,雖然可以看見(jiàn)智能車的仿真運(yùn)行狀態(tài),但是,由于智能車的運(yùn)行速度很快,這些狀態(tài)在以相當(dāng)高的頻率變化,特別是速度表所指示的速度,和實(shí)際測(cè)試一樣,也不能的對(duì)運(yùn)行過(guò)程進(jìn)行分析,但是,在仿真的結(jié)束,可以把仿真數(shù)據(jù)存放在文件中,這里就是對(duì)仿真數(shù)據(jù)的處理程序[13]。</p><p>  4.智能車仿真系統(tǒng)程序</p><p>  智能車仿真系統(tǒng)的開(kāi)發(fā)主要分為前面板設(shè)計(jì)和程序框圖設(shè)計(jì)。前面板設(shè)計(jì)是視覺(jué)上

77、最為直接的設(shè)計(jì),主要是利用LabVIEW添加一些系統(tǒng)所需的功能按鈕,并需要我們盡可能的簡(jiǎn)單實(shí)用。前面板上添加的按鈕在程序框圖中都有圖標(biāo)顯示,程序框圖設(shè)計(jì)則是為前面板上添加的按鈕賦予其應(yīng)有的功能,并且將各個(gè)按鈕的功能聯(lián)系起來(lái),使其能夠完成我們所需要的功能。本文主要運(yùn)用LabVIEW G語(yǔ)言完成控制程序的編寫[14]。</p><p>  完成該系統(tǒng)的開(kāi)發(fā),首先要對(duì)系統(tǒng)的功能進(jìn)行總體分析,羅列出該系統(tǒng)應(yīng)該具備的功能

78、,然后進(jìn)行前面板設(shè)計(jì),進(jìn)而完成程序框圖設(shè)計(jì),最后經(jīng)過(guò)反復(fù)的調(diào)試和不斷的完善,來(lái)最終實(shí)現(xiàn)該系統(tǒng)。</p><p><b>  4.1 流程圖介紹</b></p><p>  在智能車仿真系統(tǒng)的軟件設(shè)計(jì)中,仿真的大體流程是:先完成初始化設(shè)置,然后設(shè)置賽道信息,即黑線數(shù)據(jù),加載賽車信息并發(fā)送命令,最終在黑線圖像上顯示結(jié)果[15]。</p><p>&

79、lt;b>  初始化</b></p><p>  初始化主要包括串口選擇,波特率設(shè)置,數(shù)據(jù)比特設(shè)置,奇偶位設(shè)置和停止位設(shè)置。</p><p><b>  2)設(shè)置賽道信息</b></p><p>  賽道信息在系統(tǒng)顯示為黑線數(shù)據(jù),這個(gè)需要根據(jù)自身需要進(jìn)行設(shè)定。主要包括寬度,高度,放大倍數(shù),黑線的掩碼和色碼。修改黑線的色碼后黑線

80、將不再是黑色,而是自己設(shè)定的顏色。</p><p><b>  3)加載賽車信息</b></p><p>  系統(tǒng)已經(jīng)設(shè)定好加載功能,我們可以在數(shù)據(jù)加載選項(xiàng)中選擇自己的賽車信息并加載到系統(tǒng)中。</p><p><b>  發(fā)送命令</b></p><p>  這是進(jìn)入仿真的命令,設(shè)定好之后即可按照已

81、經(jīng)設(shè)定好的命令進(jìn)行仿真,并能夠在黑線圖像上顯示出仿真結(jié)果。系統(tǒng)仿真流程圖如圖4.1所示。</p><p><b>  圖4.1仿真流程圖</b></p><p>  4.2程序代碼及注釋</p><p>  4.2.1初始化程序</p><p>  初始化設(shè)置主要包括開(kāi)關(guān)串口,串口的選擇,波特率的設(shè)定,數(shù)據(jù)比特的設(shè)定,奇

82、偶位選擇,停止位的選擇。其前面板如圖4.2所示。</p><p>  圖4.2初始化設(shè)置前面板</p><p><b>  其中:</b></p><p>  1)串口選擇是VISA資源的名稱指定要打開(kāi)的資源,該控件也指定了會(huì)話句柄和類。</p><p>  波特率是指數(shù)據(jù)信號(hào)對(duì)載波的調(diào)制速率,它用單位時(shí)間內(nèi)載波調(diào)<

83、;/p><p>  制狀態(tài)改變的次數(shù)來(lái)表示,其單位是波特(Baud)。波特率與比特率的關(guān)系是比特率=波特率*單個(gè)調(diào)制狀態(tài)對(duì)應(yīng)的二進(jìn)制位數(shù)。</p><p>  數(shù)據(jù)比特是輸入數(shù)據(jù)的位數(shù)。</p><p>  奇偶校驗(yàn)位是一種校驗(yàn)代碼傳輸正確性的方法。根據(jù)被傳輸?shù)囊?lt;/p><p>  組二進(jìn)制代碼的數(shù)位中“1”的個(gè)數(shù)是奇數(shù)或偶數(shù)來(lái)進(jìn)行校驗(yàn)。通常專

84、門設(shè)置一個(gè)奇偶校驗(yàn)位,用它使這組代碼中“1”的個(gè)數(shù)為奇數(shù)或偶數(shù)。若用奇校驗(yàn),則當(dāng)接收端收到這組代碼時(shí),校驗(yàn)“1”的個(gè)數(shù)是否為奇數(shù),從而確定傳輸代碼的正確性。</p><p>  停止位是指定用于表示幀結(jié)束的停止位的數(shù)量。</p><p>  初始化設(shè)置的程序框圖如圖4.3所示。</p><p>  圖4.3初始化設(shè)置程序框圖</p><p>

85、<b>  其中:</b></p><p>  啟用終止符使串行設(shè)備做好識(shí)別終止符的準(zhǔn)備。如值為TRUE(默認(rèn)),VI_ATTR_ASRL_END_IN屬性將被設(shè)置為識(shí)別終止符。如值為FALSE,VI_ATTR_ASRL_END_IN屬性將被設(shè)置為0(無(wú))且串行設(shè)備不識(shí)別終止符。</p><p>  終止符通過(guò)調(diào)用終止讀取操作。從串行設(shè)備讀取終止符后讀取操作將終止。

86、0xA是換行符(\n)的十六進(jìn)制表示。消息字符串的終止符由回車(\r)改為0xD。</p><p>  超時(shí)設(shè)置讀取和寫入操作的超時(shí)值,以毫秒為單位。默認(rèn)值為10000。</p><p>  VISA資源名稱指定要打開(kāi)的資源。該控件也可指定會(huì)話句柄和類。</p><p>  波特率是傳輸速率,默認(rèn)值為9600。</p><p>  數(shù)據(jù)比特是

87、輸入數(shù)據(jù)的位數(shù)。 數(shù)據(jù)比特的值介于5和8之間,默認(rèn)值為8。</p><p>  奇偶指定要傳輸或接收的每一幀所使用的奇偶校驗(yàn)。</p><p>  4.2.2 黑線數(shù)據(jù)及黑線圖像顯示</p><p>  黑線數(shù)據(jù)即賽道信息,因?yàn)橘惖涝趯?shí)際中就是一條黑線,所以在此用黑線表示。在前面板中可以設(shè)定賽道的高度,寬度及圖像放大倍數(shù),色碼和掩碼。其前面板如圖4.4所示。<

88、/p><p>  圖4.4黑線數(shù)據(jù)及黑線圖像顯示的前面板</p><p><b>  其中:</b></p><p>  掩碼是字節(jié)數(shù)組,其中的每一位都描述了一個(gè)像素的掩碼信息,</p><p>  第一個(gè)字節(jié)描述餓了前八個(gè)像素,第二個(gè)字節(jié)描述了后八個(gè)像素,依次類推。</p><p>  色碼表是與數(shù)

89、據(jù)數(shù)組映射的兩種顏色。</p><p>  黑線數(shù)據(jù)及黑線圖像顯示程序框圖如圖4.5所示。</p><p>  圖4.5黑線數(shù)據(jù)及黑線圖像顯示程序框圖</p><p><b>  其中:</b></p><p><b>  截取字符串</b></p><p>  字符串是輸入

90、字符串。</p><p>  偏移量是起始位置并且必須為數(shù)值。 字符串中第一個(gè)字符的偏移量為0。如沒(méi)有連線或小于0,則默認(rèn)值為0。長(zhǎng)度必須為數(shù)值。如長(zhǎng)度沒(méi)有連線,則默認(rèn)值為字符串長(zhǎng)度減去偏移量。</p><p>  子字符串如偏移量大于字符串的長(zhǎng)度,或長(zhǎng)度小于等于0,則值為空。如長(zhǎng)度大于或等于字符串長(zhǎng)度減去偏移量,則子字符串是從偏移量開(kāi)始的剩余部分。</p><p>

91、;<b>  重排數(shù)組維數(shù)</b></p><p>  n維數(shù)組可以是任何類型的n維數(shù)組。維數(shù)大小0..m-1指定m維數(shù)組的維數(shù),必須為數(shù)字。如維數(shù)大小為0,函數(shù)將創(chuàng)建空字符串。m維數(shù)組的數(shù)組大小接線端必須為m。m維數(shù)組如維數(shù)大小的乘積大于輸入數(shù)組元素的數(shù)量,函數(shù)將用n維數(shù)組的默認(rèn)數(shù)據(jù)類型填充新數(shù)組。如維數(shù)的乘積小于輸入數(shù)組元素的數(shù)量,函數(shù)將對(duì)數(shù)組進(jìn)行剪切。</p><p

92、><b>  捆綁</b></p><p>  簇是要改變值的簇。如該輸入端沒(méi)有連線,函數(shù)將返回簇。連線簇接線端時(shí),“捆綁”。函數(shù)將用元素0..n-1替換簇。輸入接線端的數(shù)量必須匹配輸入簇中元素的數(shù)量。元素0..n-1可接收任意類型的數(shù)據(jù)。</p><p>  輸出簇是作為結(jié)果的簇。</p><p><b>  平化像素圖<

93、;/b></p><p>  左上角指定圖像左上角在坐標(biāo)系中的位置。x是右側(cè)增加的水平坐標(biāo)。y是底部增加的垂直坐標(biāo)。</p><p>  24位像素圖是要轉(zhuǎn)換為圖像數(shù)據(jù)的二維數(shù)據(jù)數(shù)組。圖像數(shù)據(jù)的維數(shù)應(yīng)與數(shù)組的維數(shù)一致。</p><p>  8位像素圖是要轉(zhuǎn)換為圖像數(shù)據(jù)的二維數(shù)據(jù)數(shù)組。圖像數(shù)據(jù)的維數(shù)應(yīng)與數(shù)組的維數(shù)一致。VI將該數(shù)據(jù)作為顏色數(shù)組的索引。</p

94、><p>  4位像素圖是要轉(zhuǎn)換為圖像數(shù)據(jù)的二維數(shù)據(jù)數(shù)組。圖像數(shù)據(jù)的維數(shù)應(yīng)與數(shù)組的維數(shù)一致。VI將該數(shù)據(jù)作為顏色數(shù)組的索引。</p><p>  1位像素圖是要轉(zhuǎn)換為圖像數(shù)據(jù)的二維數(shù)據(jù)數(shù)組。圖像數(shù)據(jù)的維數(shù)應(yīng)與數(shù)組的維數(shù)一致。在顏色列表中,F(xiàn)ALSE對(duì)應(yīng)于顏色表中的元素0。TRUE對(duì)應(yīng)于顏色表中的元素1。</p><p>  顏色是RGB顏色的數(shù)組,與連接至像素圖的值對(duì)應(yīng)

95、。連接的像素圖可確定LabVIEW如何讀取輸入的值。如連接數(shù)據(jù)至24位像素圖,LabVIEW將忽略該輸入。如連接數(shù)據(jù)至8位像素圖,數(shù)組有256個(gè)元素。如連接數(shù)據(jù)至4位像素圖,數(shù)組有16個(gè)元素。如連接數(shù)據(jù)至1位像素圖,數(shù)組有2個(gè)元素。</p><p>  掩碼該一維數(shù)組用于說(shuō)明每個(gè)像素的掩碼信息。</p><p>  圖像數(shù)據(jù)返回像素圖的信息,可用繪制平化像素圖VI將其繪制為圖片,或用各種圖

96、形格式VI將圖像保存至文件。 </p><p>  圖像深度指定圖像的顏色深度,即圖像中各像素的位數(shù)。有效值包括每像素1位、4位、8位和24位(默認(rèn))。 圖像深度確定LabVIEW如何解析圖像和顏色的值。圖像該字節(jié)數(shù)組以光柵順序描述圖像中各像素顏色。圖像深度用于確定LabVIEW如何解釋輸入值。</p><p>  矩形是包含圖像矩形邊界坐標(biāo)的簇。水平坐標(biāo)向右遞增,垂直坐標(biāo)向下遞增。左是矩

97、形水平坐標(biāo)的左邊界,上是矩形垂直坐標(biāo)的上邊界,右是矩形水平坐標(biāo)的右邊界,下是矩形垂直坐標(biāo)的下邊界。</p><p>  平化像素圖程序框圖如圖4.6所示。</p><p>  圖4.6平化像素圖程序框圖</p><p>  繪制平化像素圖(VI)</p><p>  圖片是要添加數(shù)據(jù)數(shù)組的圖片,默認(rèn)值為空?qǐng)D片。</p><

98、p>  圖像數(shù)據(jù)表明要繪制或操作的圖像,圖像類型保留以便今后使用。</p><p>  圖像深度指定圖像的顏色深度,即圖像中各像素的位數(shù)。有效值包括每像素1位、4位、8位和24位(默認(rèn))。 圖像深度確定LabVIEW如何解析圖像和顏色的值。圖像該字節(jié)數(shù)組以光柵順序描述圖像中各像素顏色。圖像深度用于確定LabVIEW如何解釋輸入值。如圖像深度為24,每個(gè)像素的顏色將用3個(gè)字節(jié)描述。第一個(gè)字節(jié)代表紅色值,第二個(gè)

99、字節(jié)代表綠色值,第三個(gè)字節(jié)代表藍(lán)色值。如圖像深度為8,每個(gè)像素的顏色將用一個(gè)字節(jié)描述。每個(gè)字節(jié)對(duì)應(yīng)于顏色中的一個(gè)元素,顏色中包含32位RGB值,最高有效字節(jié)為0,接下來(lái)分別是紅色、綠色和藍(lán)色的值。有效值為0至255。如圖像深度為4,除圖像的有效值范圍為0-15外,其它類似于圖像深度為8的情況。如圖像深度為1,圖像中的0值將對(duì)應(yīng)于顏色中的元素0。所有其它值對(duì)應(yīng)于顏色中的元素1。</p><p>  新圖片是包含新圖

100、像的圖片。如將該輸出連線至其它圖片輸入端,可為圖片添加更多的繪圖指令。</p><p>  繪制平化像素圖的程序框圖如圖4.7所示。</p><p>  圖4.7繪制平化像素圖程序框圖</p><p>  4.2.3賽車信息的加載</p><p>  這里的賽車信息必須是已經(jīng)存在的,在仿真時(shí)只需加載上即可。賽車信息加載模塊前面板如圖4.8所示

101、。</p><p>  圖4.8賽車信息加載前面板</p><p>  加載對(duì)話框如圖4.9所示。</p><p>  圖4.9賽道加載對(duì)話框</p><p>  賽道加載模塊的程序框圖如圖4.10所示。</p><p>  圖4.10 賽道加載模塊的程序框圖</p><p><b>

102、  其中:</b></p><p>  打開(kāi)/創(chuàng)建/替換文件(函數(shù))</p><p>  提示是出現(xiàn)在在文件對(duì)話框的文件、目錄列表或文件夾上方的信息。</p><p>  文件路徑(使用對(duì)話框)是文件的絕對(duì)路徑。如沒(méi)有連線文件路徑(使用對(duì)話框),函數(shù)將顯示用于選擇文件的對(duì)話框。如指定空路徑或相對(duì)路徑,函數(shù)將返回錯(cuò)誤。</p><p&g

103、t;  操作是要進(jìn)行的操作。如在對(duì)話框內(nèi)選擇取消,將發(fā)生錯(cuò)誤43。</p><p>  權(quán)限指定訪問(wèn)文件的方式。默認(rèn)值為read/write。0:read/write;1:Read-only;2:Write-only。</p><p>  錯(cuò)誤輸入表明VI或函數(shù)運(yùn)行前發(fā)生的錯(cuò)誤,默認(rèn)值為無(wú)錯(cuò)誤。如錯(cuò)誤發(fā)生在VI或函數(shù)運(yùn)行之前,VI或函數(shù)將把錯(cuò)誤輸入值傳遞至錯(cuò)誤輸出。如在VI或函數(shù)運(yùn)行前沒(méi)有

104、發(fā)生錯(cuò)誤,VI或函數(shù)將正常運(yùn)行。如在VI或函數(shù)運(yùn)行時(shí)發(fā)生錯(cuò)誤,VI或函數(shù)將正常運(yùn)行并在錯(cuò)誤輸出中設(shè)置自身的錯(cuò)誤狀態(tài)。簡(jiǎn)易錯(cuò)誤處理器或通用錯(cuò)誤處理器VI可用于顯示錯(cuò)誤代碼的說(shuō)明信息。 通過(guò)異常情況處理控件,可忽略一般意義上的錯(cuò)誤,或?qū)㈠e(cuò)誤作為警告處理。 錯(cuò)誤輸入和錯(cuò)誤輸出用于檢查錯(cuò)誤并通過(guò)將一個(gè)節(jié)點(diǎn)的錯(cuò)誤輸出與另一個(gè)節(jié)點(diǎn)的錯(cuò)誤輸入連線指定執(zhí)行順序。 </p><p>  狀態(tài)的值為TRUE(叉)時(shí)表示在VI或函數(shù)運(yùn)

105、行前已發(fā)生錯(cuò)誤,值為FALSE(勾)時(shí)表示警告或無(wú)錯(cuò)誤,默認(rèn)值為FALSE。</p><p>  代碼是錯(cuò)誤或警告代碼,默認(rèn)值為0。如狀態(tài)的值為TRUE,代碼將為非零錯(cuò)誤代碼。如狀態(tài)的值為FALSE,代碼將為0或警告代碼。</p><p>  源表示錯(cuò)誤或警告的源,大多數(shù)情況下表示出現(xiàn)錯(cuò)誤或警告的VI或函數(shù)名,默認(rèn)值為空字符串。</p><p>  禁用緩存指定打開(kāi)

106、文件時(shí)不使用緩存,默認(rèn)值為FALSE。如要在RAID中讀取或?qū)懭胛募?,打開(kāi)文件時(shí)不使用緩存可提高數(shù)據(jù)傳輸?shù)乃俣取H缧杞镁彺?,可將值TRUE連線至禁用緩存輸入端。</p><p>  搜索/拆分字符串(函數(shù))</p><p>  字符串是函數(shù)搜索或分隔的輸入字符串。</p><p>  搜索字符串/字符是要在字符串中搜索的字符串或字符。如沒(méi)有連線該輸入端或該輸入端包

107、含空字符串,函數(shù)將在偏移量處拆分字符串。必須連線搜索字符或偏移量。</p><p>  偏移量是起始位置并且必須為數(shù)值。 字符串中第一個(gè)字符的偏移量為0。如沒(méi)有連線或小于0,則默認(rèn)值為0。</p><p>  匹配子字符串如沒(méi)有連線,則值為字符串中在搜索字符串/字符前或偏移量前的部分。匹配+剩余字符串包含搜索字符串/字符和字符串中的所有后續(xù)字符。匹配偏移量是搜索字符串/字符在字符串中的位置

108、。</p><p><b>  連接字符串(函數(shù))</b></p><p>  字符串0..n-1是要進(jìn)行連接的字符串。連接的字符串包含連接的輸入字符串,順序與連線至節(jié)點(diǎn)的順序(從上到下)一致。</p><p>  連接字符串詳細(xì)信息可使用該函數(shù)連接圖片函數(shù)VI的輸出,在圖片控件中繪圖。圖片按照從上到下的順序繪制。</p><

109、;p>  簡(jiǎn)易錯(cuò)誤處理器(VI)</p><p>  錯(cuò)誤代碼是數(shù)值型的錯(cuò)誤代碼。如錯(cuò)誤輸入表明有錯(cuò)誤,VI將忽略錯(cuò)誤代碼。如沒(méi)有錯(cuò)誤,VI將對(duì)其進(jìn)行檢測(cè)。非0值表示錯(cuò)誤。</p><p>  錯(cuò)誤源是描述錯(cuò)誤代碼來(lái)源的可選字符串。</p><p>  對(duì)話框類型確定顯示的對(duì)話框類型。不論值如何,VI都將輸出錯(cuò)誤信息和描述錯(cuò)誤的消息。</p>&

110、lt;p>  錯(cuò)誤輸入表明VI或函數(shù)運(yùn)行前發(fā)生的錯(cuò)誤。狀態(tài)的值為TRUE(叉)時(shí)表示在VI或函數(shù)運(yùn)行前已發(fā)生錯(cuò)誤,值為FALSE(勾)時(shí)表示警告或無(wú)錯(cuò)誤。默認(rèn)值為FALSE。代碼是錯(cuò)誤或警告代碼。默認(rèn)值為0。如狀態(tài)的值為TRUE,代碼將為非零錯(cuò)誤代碼。如狀態(tài)的值為FALSE,代碼將為0或警告代碼。源表示錯(cuò)誤或警告的源,大多數(shù)情況下表示出現(xiàn)錯(cuò)誤或警告的VI或函數(shù)名。默認(rèn)值為空字符串。</p><p>  錯(cuò)誤

111、?表明是否發(fā)生錯(cuò)誤。如VI發(fā)現(xiàn)了錯(cuò)誤,它將在錯(cuò)誤簇中設(shè)置該參數(shù)。代碼輸出是由錯(cuò)誤輸入或錯(cuò)誤輸出表明的錯(cuò)誤代碼。源輸出表明錯(cuò)誤的源。 源輸出字符串比錯(cuò)誤輸入的源字符串更具描述性。錯(cuò)誤輸出包含錯(cuò)誤信息。如錯(cuò)誤輸入表明在VI或函數(shù)運(yùn)行前已發(fā)生錯(cuò)誤,錯(cuò)誤輸出將包含相同的錯(cuò)誤信息。否則,表明VI或函數(shù)中出現(xiàn)的錯(cuò)誤狀態(tài)。右鍵單擊錯(cuò)誤輸出的前面板顯示控件,從快捷菜單中選擇解釋錯(cuò)誤可獲取更多關(guān)于該錯(cuò)誤的信息。</p><p> 

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論