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