姜帥琦
(南京農業大學 工學院,江蘇 南京 210031)
Labview軟件簡介:
本設計采用Labview軟件進行開發設計。Labview是美國NI公司的一種基于G語言的虛擬儀器軟件開發工具。它的顯著特點是:采用簡單易學的圖形化編程,提供眾多的設備驅動程序和可供用戶直接調用且功能強大的函數庫和Windows動態鏈接庫函數,實現多線程編程等高級功能。并提供靈活的程序調試手段,既可以設置斷點又可以設置探針,在程序運行中觀察數據流的變化。
Labview編寫的程序叫虛擬儀器程序,包括軟面板設計和流程圖設計2部分。軟面板代替常規儀器的控制面板,一般由開關、旋鈕、表頭、顯示器和其他部件組成。儀器流程圖的設計,是根據儀器功能的要求,利用虛擬儀器開發平臺提供的子模板,確定程序的流程圖、主要處理算法和所實現的技術方法。流程圖與每個儀器的前面板對應,用戶能夠通過前面板,用鼠標或控件操作儀器。
Labview具有功能強大的函數模塊庫,特別適用于測試和控制系統的開發。結合NI的硬件模塊,能夠方便的進行采集和分析相關測試數據。考慮到儀表整體功能測試和模塊功能測試的需要,整個系統主要包括界面模塊和各個功能測試模塊。根據信號類型將儀表功能測試分為:車速表測試模塊、發動機轉速表測試模塊、燃油表測試模塊、水溫表測試模塊等主要功能模塊。
程序設計主要由兩部分組成:上位機程序設計和下位機程序設計,而在編寫雙方通信程序之前,必須先定義好雙方的通信協議,采用相應的數據傳輸方法,這樣才能保證數據的可靠性。
串行通信是一種常用的數據傳輸方法,雖然它的傳輸速度慢,但由于它占用的通信線路少、成本低、容易實現等優點,在數據通信方式上仍占有重要地位。目前,串口通信程序的開發,在Windows操作系統下一般用VB、VC、VF Delphi等許多高級語言編寫。當用VB、VC、VF,開發串行通信程序時,開發人員不得不面對非常煩瑣的API函數編程;用文本語言編串口通信程序較為復雜,花費的時間較長。所以在主機通信程序設計中,我們采用LabVIEW圖形化語言作為編程語言,它把高級語言中的函數封裝為圖形功能模塊,圖標間的連線表示各個功能模塊之間的數據傳遞。編程方式簡單、直觀、便于使用。串口通信功能模塊包括串口初始化模塊、串口讀模塊以及串口寫模塊,通過這些模塊就可以實現對單片機的控制。
VISA的調用流程如圖1所示。通過對VISA節點的調用,可以方便、快速地實現系統上位機對下位機的實時監控。
在LabVIEW功能模板的Function >>InstrumentI/O >>VISA 程序庫中包含進行串行通信操作的一些功能模塊:

圖1
該節點主要用于串口的初始化,在利用計算機控制串口儀器設備時,會經常用到這個節點在進行串行通信前,首先要配置好串口,即先初始化串口,使計算串口的各種參數設計與儀器設備的串口保持一致,這樣才能正確的通信。它的主要參數意義如下:
VISA resource name:VISA資源名稱,本文指串口號。
baud rate:波特率,默認為 9600。
data bits:一幀信息中的位數,LabVIEW中允許5-8位數據,默認值為8位。
stop bits:一幀信息中的停止位的位數,可為1位、1位半或2位。
Parity:奇偶校驗設置。可為無校驗、奇校驗或偶校驗。
flow control:該參數數據類型為簇,用于串行通訊中的握手方式。
V該節點為串口讀子VI,為本文中的主要節點,將串口中的數據讀出,然后利用LabVIEW的強大數據處理功能對其進行分析處理。主要參數意義如下:
ISA resource name:VISA資源名稱,本文指串口號。
byte count:用于設置所要讀的字符數。由于LabVIEW的串行通訊子V1只允許對字符串的讀寫,因此本文中在進行數據處理時,必須要實現字符串與數字之間的正確轉換。此外,若要讀入當前串口中的所有字符,則要執行“VISA Sytes at Serial Port”子VI,用以確定將要讀入的確切的字節數,然后將其輸出作為VISARead節點的輸入即可。

圖2
VISA Write節點的功能是向VISA resource name所代表的儀器或接口寫入信息。輸入參數VISA resource name是VISA Open函數所返回的,或者“流過”其他VISA函數的,包含了會話信息的VISA資源名;write buffer為字符串類型的寫入數據,輸出參數dup VISA resource name為輸入參數VISA resource name的一個備份,可用于后繼的VISA函數調用。整型輸出參數return count返回實際寫入數據的字節數。

圖3
主要參數:
VISA resource name:VISA資源名稱,本文指串口號。
本文所用LabVIEW串口通訊程序的波特率為96O0,無奇偶校驗,8位數據位,1位停止位,禁止軟、硬件握手。
該節點用于將打開的VISA資源關閉,VISA resource name輸入參數為包含會話信息的資源名。該函數關閉VISA會話,并釋放與之關聯的所有資源。
該函數功能為打開一個與VISA resource name所代表儀器資源的會話。會話是VISA resource name參數本身隱含攜帶的儀器訪問邏輯標識,可以同時存在對一個VISA資源的多個訪問會話。在調用VISA Open之前VISA resource name參數僅僅是一個資源描述字符串,在函數調用之后,輸出參數VISA resource name已經攜帶了會話信息,可以用于后繼的VISA操作。輸入參數為包含會話信息的資源名。
當完成VISA資源的搜索后,對于搜索到的VISA資源,可以通過VISA Open節點打開,建立計算機與這些VISA資源之間的通信管道。
在Labview環境中使用串口與在其它開發環境中開發過程類似,基本的流程框如圖4:

圖4
首先需要調用VISA Configure Serial Port完成串口參數的設置,包括所用串口號、比特率、一幀信息中有效數據的位數、停止位、奇偶校驗、數據流量控制等,如下圖5:

圖5
如果初始化沒有問題,就可以使用這個串口進行數據收發。
發送數據使用VISA Write,接收數據使用VISARead。如果VISA Read要讀取的字節數大于緩沖區中的數據字節數,VISA Read操作將一直等待,直至Timeout或者緩沖區中的數據字節數達到要求的字節數。
在某些特殊情況下,需要設置串口接收/發送緩沖區的大小,此時可以使用VISA Set I/O BufferSize;而使用VISA Flush I/O Buffer則可以清空接收與發送緩沖區。在串口使用結束后,使用VISA Close結束與VISAResource Name指定的串口之間的會話。
首先完成串口的初始化,在此設置波特率為9600b/s,8位數據位,1位停止位,無奇偶校驗;其次設置Write/Read等相應模塊的功能。
由于硬件在整個工作期間,以9600bit/s的速率連續向外發送數據,為了數據處理方便,可以采用LabVIEW8.6中的Serial Read With Time-out.vi模塊,以保證每次從串口緩存中讀出等量偶數個數據。
本文中所做的研究需要將實際采集到的方程式賽車的各種儀表信息存儲到單片機中,由單片機提供數據給上位機進而實現數據的顯示,再通過PC機的RS-232串行接口與外部設備進行通信,因此需要實現PC機和單片機之間的通信。本文將論述在Labview環境下PC機與AT89S52單片機之間實現串行通信的方案。
下位機的程序包括數據采集模塊和串口通信的數據傳輸模塊,數據采集模塊首先進行初始化,通過單片機控制A/D轉換模塊數據采集功能,A/D模塊將模擬信號轉換成數字信號后發出中斷,單片機將傳輸AD模塊采集的信號到緩沖區。串口數據傳輸模塊在串口通信之前,對串口進行初始化,主要包括串口波特率,數據格式,接收中斷的設置[18]。當上位機發送數據給下位機,會引起單片機接收中斷,此時進入中斷服務程序,單片機接收數據,比較校驗和,如果相同,發指令給PC機確認,最后將采集到的數據通過RS-232串行接口傳送到PC機。
鍵盤掃描查詢子程序,是提供人機信息交換的接口。由于采用掃描法,是利用CPU在完成其他工作之余,反復掃描查詢鍵盤接口,根據端口的輸入情況,調用不同的按鍵處理子程序。當按鍵按下時,利用軟件延時去抖動,然后掃描按鍵位置,讀取準確數值,最后完成一次按鍵處理。
當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形,沒有選通的數碼管就不會亮。在輪流顯示過程中,每位數碼管的點亮時間為1~5ms,由于人的視覺暫留現象及發光二極管的余輝效應,只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感。顯示子程序流程圖如圖6所示。

圖6
單片機程序用A/D模塊進行采集傳感器的值,然后用SCI口將采集的值發給PC機。
A/D轉換簡介:
在過程控制和儀器儀表中,多由計算機進行實時控制及實時數據處理,計算機所加工的信息總是數字量,而被檢測的對象卻往往是一些連續變化的模擬量(如溫度、壓力、速度和流量等),因此需要將模擬量轉化成為數字量,以便在計算機中進行運算處理,此過程稱為模數(A/D)轉換。進行A/D轉換,需要了解以下的基本問題:
1)采樣精度
采樣精度就是指數字量變化一個最小量是模擬信號的變化量,即通常所說的采樣位數。設采樣位數為N,則最小的能檢測到的模擬量變化值為1/2N。如圖7所示:

圖7
2)采樣速率
采樣速率是指完成一次A/D采樣所要花費的時間。速率和所選器件的工作頻率有很大關系。
3)濾波
為了使采樣的數據更準確,必須對采樣的數據進行篩選去掉誤差較大的數據。通常采用中值濾波和均值濾波來提高采樣精度。中值濾波是取3次采樣的中間值,均值濾波是取多次采樣的算術平均值。
4)物理量回歸
在實際應用中,得到穩定的A/D采樣值后,還需要把A/D采樣值與實際物理量對應起來。A/D轉換的目的是把模擬信號轉化為數字信號,供計算機進行處理,但必須知道A/D轉換后的數值所代表的實際物理量的值,這樣才有實際意義。





采用NI的Labview軟件系統,使得我們建立起一套虛擬儀表平臺,通過該系統可以快速準確的獲得各項數據,為我們后續賽車電子產品的研發積累了測試經驗。虛擬數字式賽車儀表的應用,使儀表的讀數更加清晰和直觀、信息量更大、智能化程度更高、功耗低及開發周期短,可用于日常學科研究中。通過對Labview的綜合應用及與單片機的相結合,使方程式賽車的虛擬儀表設計更加簡化快速,Labview也為方程式賽車的其他設計提供了更好的平臺。