1 引言 在嵌入式儀器應用越來越廣泛的今天,編寫嵌入式應用程序的工具軟件也更加的多樣化,C/C++、EVC、.NET、JAVA等文本編輯語言的使用已經(jīng)很成熟,但是在國內(nèi)圖形化編程語言使用的還比較少。文本編程語言在編寫設備驅(qū)動程序、動態(tài)庫函數(shù)等底層程序方面比較方便,但是編寫交互界面與后續(xù)的信號處理程序難度較大,對編程人員的要求較高;LabVIEW軟件是目前最流行的圖形化編程工具,操作界面簡便直觀.主要優(yōu)勢是圖形化編程、高級開發(fā)工具、內(nèi)置測量和控制函數(shù)、多平臺嵌入式設備、將信號分析功能模塊化等特點,對編寫界面程序與信號處理程序有很大的優(yōu)勢,為了能夠?qū)崿F(xiàn)對底層硬件的操作,LabVIEW軟件也提供了強大的外部程序接口能力,可以方便的調(diào)用C/C++、VC、VB等編程語言編寫的程序以及Windows自帶的大量API函數(shù)。文章結(jié)合了圖形化編程語言與文本編程語言的諸多優(yōu)點,既實現(xiàn)了對底層硬件的操作,又方便快捷的編寫了友好的人機交互界面。 2 系統(tǒng)結(jié)構(gòu)的設計 系統(tǒng)的硬件結(jié)構(gòu)示意圖如圖1所示,本文CPU采用200MHz的ARM920T,具有64MB系統(tǒng)內(nèi)存、32MB FLASH,配合使用精簡ISA總線組成系統(tǒng)的主控部分。系統(tǒng)具有兩個采集通道,每個通道的電荷傳感器將測得的瞬態(tài)物理量轉(zhuǎn)化為電荷量,再傳遞給電荷放大器將電荷量轉(zhuǎn)化為范圍是-1 - +1V電壓值;經(jīng)過程控放大與程控濾波對信號進行調(diào)理,放大倍數(shù)最高可達32倍,程控濾波有直通、2KHz、10KHz、30KHz與100KHz五個選擇,本文所選擇的高速A/D轉(zhuǎn)換器最高采樣頻率為20MHz,轉(zhuǎn)化后的數(shù)據(jù)存儲到高速SDRAM中,用FPGA芯片作為邏輯控制單元,將數(shù)據(jù)從SDRAM中提取出來傳遞給應用程序,通過人機交互界面在LCD上進行顯示。考慮到經(jīng)常性的室外作業(yè),本文使用電池對儀器供電,充電接口接9V變壓器,由充電管理模塊控制電池的充放電,經(jīng)過電源程控開關實現(xiàn)對LCD與高速采集硬件的供電控制。 ![]() 圖1系統(tǒng)硬件結(jié)構(gòu)示意圖 LabVIEW本身包含的一些接口設備的驅(qū)動程序都是針對該公司生產(chǎn)的接口板,由于本文的高速數(shù)據(jù)采集硬件不是NI公司的產(chǎn)品,所以驅(qū)動程序使用EVC4.0進行編寫,將流式接口驅(qū)動程序提供的接口函數(shù)與部分WINCE API函數(shù)進行封裝,方便應用程序的調(diào)用。通過使用LabVIEW軟件的Call Library Function Node節(jié)點淵用動態(tài)庫函數(shù)實現(xiàn)對底層硬件的訪問與驅(qū)動。軟件結(jié)構(gòu)示意圖如圖2,主要由三部分組成:系統(tǒng)硬件的流式接口驅(qū)動程序、動態(tài)庫函數(shù)以及人機交互界面程序。 ![]() 圖2 軟件結(jié)構(gòu)示意圖 3 人機交互界面的設計 程序開始運行后首先顯示歡迎畫面然后進入主界面,主界面可以完成對各個子界面的調(diào)用,也可以從任何子界面中跳轉(zhuǎn)回主界面。人機交互界面的結(jié)構(gòu)如圖3所示。工程信息顯示子界面實現(xiàn)了對測試單位、測試人員、當前日期與當前溫度等信息的顯示功能;采集參數(shù)設置子界面可以顯示、修改最近一次設置的通道號、采樣率、采樣時長、硬件濾波、放大倍數(shù)、零漂采集及是否扣除零漂等參數(shù);在采集顯示子界面,實現(xiàn)對瞬態(tài)信號的采集,同時通過下面的狀態(tài)欄可以了解采集狀態(tài)。當采集過程出現(xiàn)問題時,用戶可以及時的停止采集,采集結(jié)束后通過圖表、數(shù)字等形式顯示采集來的數(shù)據(jù),并可以對數(shù)據(jù)進行保存;在數(shù)據(jù)分析子界面,用戶可以對采集到的數(shù)據(jù)進行波形操作、FFT及功率譜分析、光標操作,用以檢測瞬態(tài)數(shù)據(jù)是否能夠達到標準;系統(tǒng)信息子界面能夠顯示、修改系統(tǒng)時間與待機時間,實現(xiàn)校對系統(tǒng)時間、控制顯示器與采集硬件供電的功能。 ![]() 圖3 人機交互界面結(jié)構(gòu)圖 4 程序框圖代碼的設計 程序框圖代碼的主體設計借鑒了狀態(tài)機的編程思想,使程序簡單易讀、易于維護,主要由—個主循環(huán)與—個Case結(jié)構(gòu)組成,利用移位寄存器來實現(xiàn)狀態(tài)的跳轉(zhuǎn)。本程序的流程圖如圖4所示。 程序運行后.首先對各個控制變量進行初始化,讀取指定路徑的文本文檔,完成對最近一次保存的采集參數(shù)的讀取,并作為參數(shù)設置子界面顯示量的默認值;然后進入歡迎畫面同時對采集硬件進行初始化。進行采集之前,進入?yún)?shù)設置子界面,對最近一次保存的采集參數(shù)與系統(tǒng)時間、待機時間進行修改并重新保存為文本文檔。設置好參數(shù)后,開始對瞬態(tài)信號進行采集。首先將保存好的采集參數(shù)賦值給采集硬件進行采集.并循環(huán)檢查動態(tài)庫函數(shù)返回的狀態(tài)控制字,采集結(jié)束時返同值為FF,同時數(shù)據(jù)波形通過圖表進行顯示。用戶通過對波形的操作與分析來判斷所測數(shù)據(jù)是否達到標準,如果沒達到標準,可以重新設置參數(shù)進行采集,達到標準后可以將數(shù)據(jù)存成文件,方便離線到PC機上,進行更深入的分析。 ![]() 圖4 人機界面軟件流程圖 4.1 波形數(shù)據(jù)分析功能的設計 檢測捕獲的數(shù)據(jù)是否達到標準主要是通過對波形數(shù)據(jù)的FFT分析、功率譜分析與光標操作來實現(xiàn)。本文對波形數(shù)據(jù)的FFT分析與功率譜分析,直接調(diào)用了FFT spectum(MagPhase).vi模塊與FFT Power Spectrum.vi模塊,輸入波形數(shù)據(jù)類型就可以很方便的實現(xiàn)對波形數(shù)據(jù)的FFT分析、功率譜分析,經(jīng)過FFT與功率譜分析模塊的計算,輸出的是FFT頻譜與功率譜數(shù)據(jù)有效值組成的數(shù)組,只需對數(shù)組中各個元素進行處理就可以顯示數(shù)據(jù)的峰值波形: 在對波形分析的操作中,光標顯示是必不可少的,在LabVIEW環(huán)境下編寫光標操作代碼比文本編程環(huán)境快的多.只需要在顯示控件的屬性選項中,添加兩根不同顏色的光標,再調(diào)用圖表控件中Cursor的屬性節(jié)點,將光標所在位置的縱坐標進行輸出,就可以實現(xiàn)對光標的控制。節(jié)省了很多的編程時間。對波形的顯示及分析結(jié)果如圖5、6所示。 ![]() 圖5 波形顯示 ![]() 圖6 波形分析 作者:章廣志 來源:《微計算機信息》(嵌入式與SOC)2009年第6-2期 |