陳青貴



摘要:某項目需要在兩臺計算機之間傳輸數據。在主控計算機上由Labview編制的程序負責測試、讀取數據;測試數據的記錄則在另外一臺計算機上由Excel完成。由于測試數據量不大、對數據傳輸速率要求不高,兩臺計算機通過RS232連接即可實現數據傳輸。本項目主要研究Labview、Excel的串口數據傳輸與接收,并成功應用于實例。
關鍵詞:RS232;Labview;Excel;串口;數據傳輸
中圖分類號:TP391.7 文獻標識碼:A 文章編號:1007-9416(2017)02-0134-03
某產品測試設備不具備自動化測試能力,該產品常溫測試時需兩人共同協作進行,一人負責操作設備主控計算機測試并讀出產品測試數據,另一人在輔助計算機上負責記錄、校驗讀出的數據。共同協作方式首先浪費人力資源,測試效率較低;其次人工讀數會造成測試數據延誤、數據偏移;人工記錄數據容易出現誤操作,導致測試數據記錄不真實。本項目使用常用RS232接口將兩臺計算機連接,并通過在Labview和Excel上編寫串口通信程序完成數據傳輸、處理以達到測試數據自動讀取、記錄效果。
1 總體構思
為了提高測試效率,節約人力資源。將兩臺電腦通過RS232串口連接通信,主控計算機通過軟件自動讀數并通過串口發送測試數據;輔助計算機通過Excel運行VBA程序接受數據填寫到Excel上。Excel具有數據校驗功能,能對數據的正確性進行判定。這樣能減少工人讀數時間,不再需要專用工人記錄數據,能極大提高產品測試效率。總體構思如圖1所示。
2 實例
2.1 RS232物理連接
RS232是美國電子工業聯盟(EIA)制定的串行數據通信接口標準。它被廣泛用于計算機串行接口外設連接,是計算機標配通用接口。目前計算機上基本上使用DB9作為RS232的通用接口。兩臺計算機如要通過RS232連接只需連接DB9的2腳(RXD,信號接收端)、3腳(TXD,信號發送端)、5腳(GND)即可。需注意的是兩臺計算機DB9的2、3需要交叉連接。
2.2 RS232數據傳送
串口數據傳輸應用非常廣泛,因此程序編制有很多控件直接可以使用。主控計算機的測控程序使用的Labview圖形編程,串口通信有專門的子VI;輔助計算機使用的excel記錄數據,excel能很好地支持宏,通過VBA使用微軟的MSComm通信控件可方便進行串口通信。使用專業的控件編程不需要進行底層編程,僅需要進行控件的初始化即可。
使用通用控件編程,只能完成底層數據傳輸,只能保證單個字節數據傳輸的正確性。要完成復雜的任務需要自己設計數據傳輸格式,即需要自定義數據包。數據包一般分為包頭、數據、包尾三部分。通過分析本任務的數據特性;數據包需要含包頭、測試項目、測試數據、測試數據分割符、包尾。最終定義數據包格式如圖2。
2.3 主控計算機軟件實現
主控計算機主要任務是讀取測試數據、發送測試數據。因此軟件上的主要任務就是初始化RS232、識別測試項目、讀取測試數據、打包數據、發送數據。
2.3.1 初始化RS232
初始化串口使用labview自帶的子VI,初始化只需對子VI的變量進行配置即可。主要變量是端口號選擇Com2;通信速率選擇38400;字節數選8;奇偶校驗選none;停止位選1。具體配置見圖3。
2.3.2 識別測試項目
根據產品測試作業文件將測試項目進行分類并使用下拉列表列出,標記出測試內容。如圖4所示,正常測試時首先默認測試第一個項目,當測試者按發送數據按鈕(或者使用快捷鍵Esc)后,測試項目自動調至下一項。在平時測試時也可以手動點擊下拉列表選擇正在測試項目,然后發送測試數據。這樣到達識別測試項目之目的。
2.3.3 讀取、打包、發送數據
數據的讀取根據當前測試項目不同而不同;數據的讀取在Labview中可以通過調用控件的value屬性節點完成。控件的value屬性是浮點數,根據文件記錄的要求需對數據格式進行調整,主要調整小數點的位數。數據打包根據預先設定格式使用Labview內部字符處理VI可進行多字符組合;最后通過串口發送VI即可將文本發送出去。具體實現方法參考圖5。
2.4 輔助計算機軟件實現
2.4.1 Excel使用VBA編程
以往在輔助計算機上使用excel進行隨行文件記錄。使用Excel記錄數據可以實現數據的自動計算,隨行文件模板變化時方便更改。Excel支持VBA編程擴展,因此可以使用VBA完成數據接收處理工作,在excel中使用VBA的方法如圖6所示。調出Excel的Visual Basic菜單,點擊控件按鈕即可添加想要的控件,雙擊控件即可進入控件響應代碼編輯窗口。
2.4.2 初始化RS232
按照2.4.1的方法在Excel中添加微軟的通用通信控件MSComm。對MSComm控件的初始化代碼如圖7。控件初始化成功則計算機的RS232串口初始化成功。
2.4.3 數據包接收
Excel初始化串口完畢后,當主控計算機發過來數據時,MSComm控件會激發OnComm事件。在這個事件處理程序中添加數據接收程序。由于OnComm事件激發時,MSComm控件可能只是收集到了數據包的片段,因此程序需要從接收的數據中識別出包頭、包尾還是中間部位。然后掐頭去尾將接收的數據拼接成完成的數據包。接收到完整數據包即可調用數據包處理程序。具體實現程序如圖8。
2.4.4 數據包處理
數據包處理首先需要分離出測試項目,測試項目前面是“@”符號,后面是“/”符號。通過字符查找函數既可以知道測試項目的位置。第二步就是分離出測試數據,測試數據都是通過“/”符號分隔,因此通過字符查找函數“InStr”即可找到分隔符的位置,從而將測試數據一個一個分隔下來,至到數據包結束字符“#”。分離出來的數據根據測試項目使用Sheet.Cells()對預定的excel表格位置填寫數據。具體實現過程參照圖9。
3 結語
本項目主要技術應用在于以下幾點:
(1)涉及Labview、VBA、excel多種編程手段,需要綜合利用。
(2)串口通信需要自行設計高級的通信協議,需要對數據進行打包處理。單獨傳輸產品數據,使用MSComm控件基本上無法完整接收。
(3)excel結合VBA可以開發出強大的應用,利用excel的圖形和數據處理能力能處理很多試驗數據,方便打印。
(4)參考本項目,自定義更多過程可以遠程操作Excel,以實現Excel的自動化。
本項目完成,使用試驗件產品多次試驗測試,數據傳輸準確、穩定。極大的提高了該產品常溫測試效率。
參考文獻
[1]李小遐.Excel VBA 在辦公自動化中的應用[J].科技論壇,2014(22):105-107.
[2]楊峻,睢丹.VBA在Excel中的應用[J].安陽大學學報,2003,2(2):44-45.
[3]陳錫輝.LabVIEW 8.20 程序設計從入門到精通[M].北京:清華大學出版社,2007:390.
[4]張華,鄭賓,武曉棟.基于LabVIEW 的溫度測試系統[J].電子器件,2013(2):243-246.