撰文/江蘇徐州工程機(jī)械研究院 陳新春 閆乃晴 齊偉 王燦
基于Visual Basic與RS 232串行通信的數(shù)據(jù)采集系統(tǒng)
撰文/江蘇徐州工程機(jī)械研究院 陳新春 閆乃晴 齊偉 王燦
目前,諸如液壓缸缸筒、活塞桿和振動輪等工程機(jī)械核心零部件精度要求越來越高。在生產(chǎn)過程中,檢測工序已經(jīng)不可忽視。遺憾的是,許多關(guān)鍵工序涉及的待檢測形面復(fù)雜,尚無檢測手段。隨著技術(shù)的進(jìn)步,基于激光位移傳感器,開發(fā)專有檢測儀器是實(shí)現(xiàn)工程機(jī)械核心零部件關(guān)鍵工序質(zhì)量監(jiān)控的有效途徑。
激光位移傳感器由激光器、激光檢測器和測量電路組成,能夠精確非接觸測量被測物體的位置、位移等變化。在開發(fā)激光檢測裝置時,如何準(zhǔn)確有效地獲得激光位移傳感器檢測值是關(guān)鍵的研究內(nèi)容。
針對該問題,本文結(jié)合串行端口技術(shù),提出一種基于Visual Basic與RS 232串行通信的數(shù)據(jù)采集系統(tǒng)。通過Visual Basic通信控件MSComm與串行端口RS 232,建立激光位移傳感器與工控機(jī)的通信渠道。采用Visual Basic開發(fā)激光位移傳感器數(shù)據(jù)采集軟件界面和算法。應(yīng)用Excel工具建立存儲檢測數(shù)據(jù)的數(shù)據(jù)庫。與激光位移傳感器測試軟件比較,驗(yàn)證上述研究的有效性。
VB6.0是一種功能強(qiáng)大的程序設(shè)計(jì)語言,適用于設(shè)計(jì)程序界面。它不僅保留了Basic語言的全部功能,還增加了面向?qū)ο蟪绦蛟O(shè)計(jì)功能,相較于VC,其操作簡單,運(yùn)行速度較快。
MSComm是VB與激光位移傳感器之間實(shí)現(xiàn)通信的的ActiveX控件。利用MSComm控件,設(shè)計(jì)串口通信程序主要涉及表1所示屬性。
表1 MSComm控件的主要屬性
在本研究中,主要的屬性參數(shù)設(shè)置為:(1)InputMode=0,取回文本數(shù)據(jù)。(2)InputLen=0表示一次接收完緩沖區(qū)中的所有數(shù)據(jù),其他參數(shù)可根據(jù)其含義進(jìn)行相應(yīng)設(shè)置。
為了簡化數(shù)據(jù)采集系統(tǒng),項(xiàng)目組采用的RS 232是目前廣泛應(yīng)用的一種9芯接口。具體如圖1與表2所示。
圖1 RS 232接線端子排序圖
表2 9芯RS 232接口
數(shù)據(jù)采集系統(tǒng)是激光檢測裝置中非常關(guān)鍵的一部分,其主要包括硬件系統(tǒng)和軟件系統(tǒng)兩大部分。根據(jù)檢測現(xiàn)場要求,搭建硬件系統(tǒng);在此基礎(chǔ)上,采用VB6.0,設(shè)計(jì)數(shù)據(jù)采集軟件系統(tǒng)。
1.硬件系統(tǒng)設(shè)計(jì)
數(shù)據(jù)采集硬件系統(tǒng)由工控機(jī)Visual Basic模塊、串行通信模塊、位移傳感器模塊3部分組成,電路系統(tǒng)框圖如圖2所示。
圖2 電路系統(tǒng)框圖
硬件系統(tǒng)連接:激光位移傳感器通過信號線與工控機(jī)連接,信號線一端與激光位移傳感器連接,另一端帶有RS 232串口,與工控機(jī)的RS 232串口連接;激光位移傳感器電源線紅線為電源正,棕線為電源負(fù),與電源連接。
在實(shí)驗(yàn)中,硬件系統(tǒng)應(yīng)用流程為:啟動工控機(jī)-接通傳感器電源-數(shù)據(jù)采集與存儲-斷開傳感器電源-關(guān)閉工控機(jī)-完成數(shù)據(jù)采集與存儲。
2.軟件系統(tǒng)設(shè)計(jì)
實(shí)時數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)包括界面設(shè)計(jì)及算法開發(fā)。界面設(shè)計(jì)根據(jù)需要放置按鈕控件,包括數(shù)據(jù)采集、數(shù)據(jù)存儲及其他需要的控件,如圖3所示。其中,MSComm控件用于從激光位移傳感器采集數(shù)據(jù)到工控機(jī)上。
圖3 軟件界面圖
基于上述軟件界面,串口軟件操作流程圖如圖4所示,首先要對串口進(jìn)行初始化,設(shè)定通信參數(shù)和通信協(xié)議,然后打開端口后才能進(jìn)行數(shù)據(jù)采集、存儲的操作,最后要關(guān)閉端口。
數(shù)據(jù)采集的流程圖如圖5所示:工控機(jī)與激光位移傳感器通信之前,工控機(jī)先檢查是否與激光位移傳感器連接成功,若已連接,則工控機(jī)進(jìn)行端口初始化,包括對傳輸速度、傳輸?shù)臄?shù)據(jù)位數(shù)等參數(shù)的初始化。接著工控機(jī)向激光位移傳感器發(fā)送命令,激光位移傳感器響應(yīng)命令發(fā)送其參數(shù),若響應(yīng)超時,則工控機(jī)再要求重發(fā)。當(dāng)工控機(jī)接收到設(shè)備參數(shù)時,對激光位移傳感器檢測的數(shù)據(jù)進(jìn)行采集,并將已接收的數(shù)據(jù)存入到數(shù)據(jù)庫中。
MSComm提供了兩種處理通信問題的方法,一種是查詢法,一種是事件驅(qū)動法。
(1)查詢法。查詢法適合較小的應(yīng)用程序,在這種情況下,每當(dāng)應(yīng)用程序執(zhí)行完某一串行口操作后,將不斷檢查MSComm控件的CommEvent屬性,以檢查執(zhí)行結(jié)果或檢查某一事件是否發(fā)生。
(2)事件驅(qū)動法。在使用事件驅(qū)動法設(shè)計(jì)程序時,每當(dāng)有新字符到達(dá)或端口狀態(tài)改變,或發(fā)生錯誤時,MSComm控件將觸發(fā)OnComm事件,而應(yīng)用程序在捕獲該事件后,通過檢查MSComm控件的CommEvent屬性可以獲知所發(fā)生的事件或錯誤,從而采取相應(yīng)的操作。這種方法的優(yōu)點(diǎn)是程序響應(yīng)及時,可靠性高。
圖5 數(shù)據(jù)采集流程圖
為了達(dá)到實(shí)時數(shù)據(jù)采集目的,數(shù)據(jù)采集程序采用MSComm事件驅(qū)動方式。
OnComm事件流程圖如圖6所示,當(dāng)有數(shù)據(jù)傳輸時,觸發(fā)MSComm1的OnComm事件,OnComm的事件處理程序只處理comEvReceive事件,首先判斷是否為接收事件,若是則關(guān)閉OnComm接收事件,然后接收數(shù)據(jù)字節(jié),將字節(jié)進(jìn)行還原轉(zhuǎn)換,最后打開OnComm接收事件,等待下一次OnComm事件產(chǎn)生。
其中,接收數(shù)據(jù)模式采用的是二進(jìn)制的形式,即InputMode=comInputModeBinary,但用Input屬性讀取數(shù)據(jù)時,不能直接賦值給Byte類型變量,只能通過先賦值給一個Variant類型變量,返回一個二進(jìn)制數(shù)據(jù)的數(shù)組,再轉(zhuǎn)換保存到Byte類型變量中。
圖6 OnComm事件流程圖
采集數(shù)據(jù)過程中,主機(jī)首先要傳輸給激光位移傳感器一個命令,該命令帶有傳感器的地址。通過MSComm1的OutPut屬性,把命令寫入到發(fā)送緩沖區(qū)中。激光位移傳感器接收到該命令后,通過MSComm1的InPut屬性從接收緩沖區(qū)移走字符,把緩沖區(qū)中收到的數(shù)據(jù)讀入變量。發(fā)送命令后,傳感器會連續(xù)不斷的傳輸測量值,我們每4個字節(jié)組成一個值來獲取測量結(jié)果。傳感器傳輸?shù)臄?shù)據(jù)的校驗(yàn)位是C、D、E和F不斷輪換的,只有當(dāng)4個字節(jié)數(shù)的校驗(yàn)位一致時,該數(shù)據(jù)才有效,否則該數(shù)據(jù)不正確。所以,每個字節(jié)只取后面4位的數(shù),組成十六進(jìn)制的數(shù),再轉(zhuǎn)換成十進(jìn)制,位移傳感器返回來的數(shù)據(jù)是先低位再高位。
3.數(shù)據(jù)庫設(shè)計(jì)
Excel是目前使用最廣泛的辦公軟件之一,它具有強(qiáng)大的數(shù)學(xué)分析與計(jì)算功能,包括很多VB沒有的求值數(shù)學(xué)表達(dá)式的函數(shù)和方法。由于Excel的應(yīng)用程序?qū)ο笫峭獠靠蓜?chuàng)建的對象,所以能從VB應(yīng)用程序內(nèi)部來程序化操縱Excel。為了能從VB應(yīng)用程序中訪問Excel豐富的內(nèi)部資源,使Excel應(yīng)用程序運(yùn)行的更快,需要在VB工程中添加對Excel類型庫的引用。具體步驟如下:選擇“工程”/ “引用”命令,在“引用”對話框中選擇Excel類型庫"Microsoft Excel14.0 Object Library"選項(xiàng)并單擊確定按鈕。
數(shù)據(jù)庫主要按照時間順序?qū)⒉杉降臄?shù)據(jù)進(jìn)行存儲,其主要字段包括采集的數(shù)據(jù)、采集時間、采集日期。
激光位移傳感器帶有一個專用的檢測軟件,首先用該專用軟件檢測出一個數(shù)值,如圖7中標(biāo)出部分所示。
圖7 激光位移傳感器檢測軟件測量結(jié)果
然后用所搭建的數(shù)據(jù)采集系統(tǒng)采集激光位移傳感器數(shù)據(jù),如圖8中標(biāo)出部分所示。
圖8 設(shè)計(jì)程序測量結(jié)果
由檢測結(jié)果對比分析可知,所搭建的數(shù)據(jù)采集系統(tǒng)采集的激光位移傳感器的數(shù)據(jù)與激光位移傳感器自帶的檢測軟件所測量的結(jié)果誤差在0.005mm以內(nèi),可以認(rèn)為是一致的,證明所搭建的數(shù)據(jù)采集系統(tǒng)可以實(shí)現(xiàn)準(zhǔn)確采集激光位移傳感器的數(shù)據(jù)。
圖9為數(shù)據(jù)實(shí)時存儲界面,可以看出所設(shè)計(jì)的Excel數(shù)據(jù)庫可以準(zhǔn)確存儲位移傳感器采集的數(shù)據(jù)、采集時間及采集日期。
圖9 數(shù)據(jù)實(shí)時存儲界面
本研究圍繞激光位移傳感器數(shù)據(jù)采集系統(tǒng),開展了系統(tǒng)硬件連接、界面設(shè)計(jì)、算法開發(fā)和測試驗(yàn)證等工作,得出了如下三點(diǎn)結(jié)論。
(1)通過RS 232實(shí)現(xiàn)了激光位移傳感器與工控機(jī)串行通信,利用Visual Basic在工控機(jī)上編寫的程序,可以實(shí)現(xiàn)對激光位移傳感器的數(shù)據(jù)采集,采集的數(shù)據(jù)存儲在Excel數(shù)據(jù)庫中。
(2)與激光位移傳感器測試軟件采集的數(shù)據(jù)比較,所搭建的數(shù)據(jù)采集系統(tǒng)獲得數(shù)據(jù)偏差小于0.005mm,滿足實(shí)際生產(chǎn)需要,證明所搭建的數(shù)據(jù)采集系統(tǒng)是有效的。
(3)本研究為開發(fā)工程機(jī)械檢測核心零部件專有檢測儀器提供了技術(shù)支持。