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