摘 要: 研究了LabVIEW串口通信的應用問題,設計了一種應用于數據采集的串口收錄系統。該系統只需設置相應串口參數即可動態顯示硬件采集的數據,并可實時存儲和回放采集到的數據,方便以后對采集數據進行研究。實驗證明,該系統的穩定性和可靠性較高。
關鍵詞: LabVIEW;串口通信;數據采集
可視化編程軟件LabVIEW不僅能很輕松地將各種軟硬件連接起來,還提供了強大的后續數據處理能力。與傳統儀器相比,虛擬儀器提高了儀器資源的可再用性和可移植性,只需在原有基礎上作相應改動即可增強它的功能,無需更換硬件設備[1]。基于此,本文在研究LabVIEW的基礎上,開發了基于LabVIEW的串口收錄系統,以單片機為核心的硬件部分作為前端數據采集系統,可實現200 kHz的采樣速率、16 bit的分辨率,具有采樣率高、應用性強等優點。該收錄系統將采集數據以曲線方式顯示在上位機上,以二進制.dat格式記錄,并且可回放記錄的數據,這是該系統的創新點。
1 系統總體方案
系統總體方案框圖如圖1所示,主要由前端數據采集和上位機波形顯示記錄兩大部分組成。前端數據采集部分以單片機AT89C52為核心,8 KB內部ROM空間,硬件部分采集到的數據通過串口通信傳送給上位機,收錄系統實時顯示、記錄、回放接收的數據。
2 硬件部分的設計
2.1 數據采集部分
該部分采用美信公司的MAX306芯片和ADI公司的AD976芯片。MAX306內部提供16個信號通道,可在程序編程中指定某通道,通道選擇端由單片機P1口低4位控制,信號經過某通道后送入A/D;AD976采樣率為200 kHz/s、分辨率為16 bit,采集信號范圍為-10 V~+10 V,精度為(1/216)×VREF=(1/216)×20=0.305 mV。A/D數據傳送端和單片機P0口相連,A/D控制端和P1口高4位相連。
2.2 串口通信部分
上位機和下位機通過RS-232串口進行數據接收和發送,傳輸介質為二芯屏蔽電纜,簡單易用。下位機采用TTL電平,串口采用RS-232電平,因此串口通信需經過電平轉換,電路采用MAX232電平轉換芯片,串口采用母頭接法。通信前先進行初始化,包括串口工作方式、通信波特率設定等,這在下位機軟件中實現。
3 軟件部分的設計
3.1下位機軟件部分
下位機軟件部分采用C51語言編寫,這是專門為51系列單片機設計的高效率C語言編譯器,符合ANSI標準,程序代碼運行效率高,比匯編語言更簡單易用[2]。
下位機軟件程序流程圖如圖2所示。BUSY為轉換結束狀態標志位,BUSY=1表示轉換完成可以讀取,否則,繼續轉換。將讀取結果送給AT89C52處理,轉換為十進制后傳送給液晶和上位機,喂狗部分防止程序跑飛。軟件實現定點疊加平均數據處理、看門狗定時復位和冗余避錯功能,將連續采集的3次數據求平均值,使得采集結果更準確。
其中十進制的轉換是關鍵,轉化公式是:
實際模擬量=(1/216)×VREF×ValueP0。
其中,VREF為A/D參考電壓20 V,ValueP0為A/D轉換后的二進制結果。
3.2 上位機軟件部分
上位機軟件部分采用LabVIEW語言編寫,程序中用到VISA資源包。VISA是虛擬儀器軟件構架的縮寫,是儀器編程的標準I/O API,可控制GPIB、串口、USB、以太網、PXI或VXI儀器,并根據使用儀器的類型調用相應的驅動程序,用戶無需學習各種儀器的通信協議[3]。
LabVIEW收錄系統程序流程圖如圖3所示。按下開始讀取按鈕后,程序進行串口配置,串口配置好后通信分兩路實現,分別用于數據讀取和數據存儲:讀取的數據顯示在波形圖標中;數據以二進制格式.dat文件存儲在硬盤中。存儲之前程序彈出對話框讓用戶指定存儲路徑。波形顯示采集數據的同時,還可以回放之前已存儲的數據文件,實現采集和回放同時進行。
3.2.1 上位機軟件實現過程
軟件編寫要用到VISA Configure Serial Port.vi、VISA Property Node.vi、VISA read.vi、VISA Close.vi、Write To Binary File.vi及Graph Chart.vi[1]。其功能分別是:
(1)VISA Configure Serial Port.vi用于串口配置,如串口資源名、波特率、數據位數、停止位、校驗位等的設置。
(2)VISA Property Node.vi用于讀取屬性,將接收到的數據全部讀出來。
(3)VISA Read.vi用于讀取串口接收來的數據。
(4)VISA Close.vi釋放串口資源,關閉函數。
(5)Write To Binary File.vi將接收數據以二進制形式保存起來。
(6)Graph Chart.vi用于顯示采集波形。
3.2.2 LabVIEW系統界面和程序
根據上位機軟件設計流程圖,利用NI公司的可視化編程軟件LabVIEW編寫完成的系統界面如圖4所示。運行前,用戶只需設置串口資源,選擇串口號、波特率大小、傳輸數據位數、停止位、校驗位等。串口工作在方式1,傳輸1幀信息為10 bit,其中1 bit起始位、8 bit數據位(先低位后高位)、1 bit停止位[4]。
圖4上面部分為開始讀數據、停止讀取、回放、停止回放和退出系統5個控制按鍵。兩個圖形控件分別顯示讀取波形和回放波形,讀取值以數字形式顯示在讀取值窗口。系統界面還可以利用LabVIEW自身強大的數據處理能力,借助內部處理函數進行波形調理、波形測量、FFT變換和濾波等。
4 測試與結論
將下位機程序下載到單片機,打開電源,按下采集獨立按鍵,給MAX306某通道加上2 V左右的電壓信號,測得結果如圖4所示。借助信號發生器給單片機輸入-10 V~+10 V范圍內的任意波形,在上位機均可得到相應波形。
本文利用單片機采集數據,使用LabVIEW編寫串口接收數據界面,將結果以二進制.dat格式存儲起來,帶查看回放功能,較好地實現了數據采集的實時顯示和存儲,達到了系統的設計要求和預期目標。該LabVIEW顯示界面可應用于其他具有串口接口的數據采集系統,目前已應用于航空物探部分數據的收錄。
參考文獻
[1] TRAVIS J, KRING J. LabVIEW大學實用教程(第三版)[M].朱瑞萍,譯.北京:電子工業出版社,2008.
[2] 陳誠,李言武,葛立封.基于LabVIEW的單片機串口通信設計[J].現代計算機,2009(1):198-200.
[3] 林靜,林振宇,鄭福仁.LabVIEW虛擬儀器程序設計從入門到精通[M].北京:人民郵電出版社,2010.
[4] 張毅坤,陳善久,裘雪紅.單片微型計算機原理及應用[M].西安:西安電子科技大學出版社,2006.