孫金根,張嘉男,陳 怡
(沈陽理工大學(xué) 自動化與電氣工程學(xué)院,遼寧 沈陽 110159)
?
基于VB的電子天平遠程數(shù)據(jù)記錄系統(tǒng)
孫金根,張嘉男,陳怡
(沈陽理工大學(xué) 自動化與電氣工程學(xué)院,遼寧 沈陽 110159)
電子天平應(yīng)用廣泛、實用性強,但自身對數(shù)據(jù)的采集及處理具有局限性。文中通過電子天平與計算機通信有效地解決這一問題。以計算機為上位機,賽多利斯天平為下位機,VB6.0為開發(fā)平臺,利用VB的MSComm通信控件設(shè)計了電子天平的串口通信程序,開發(fā)了基于VB的電子天平遠程數(shù)據(jù)記錄系統(tǒng)。通過RS232實現(xiàn)數(shù)據(jù)雙向傳輸、處理等功能,將測量得的數(shù)據(jù)實時填入Excel表格,避免人為抄表帶來錯誤,提高了工作效率。經(jīng)現(xiàn)場調(diào)試該系統(tǒng)使用方便、可靠,具有較好的實用性。
電子天平;VisualBasic6.0;數(shù)據(jù)記錄;Excel
電子天平應(yīng)用廣泛,不但給予人們方便,也提高了生產(chǎn)力及實驗的準確性。其區(qū)別在于應(yīng)用于不同場合對于電子天平的精度及各項功能指標要求不同。如今的電子天平精度高、功能豐富,但單獨使用時還是存在局限性,不能很好地對數(shù)據(jù)進行處理,并缺乏友好的人機交互性,這就需要計算機介入, 利用計算機的數(shù)據(jù)處理功能及與其他軟件配合使用,從而滿足不同用戶的需求[1]。本文從工程實踐出發(fā),實際生產(chǎn)工作中,多臺電子天平同時工作,工作人員需把測量結(jié)果抄到表格中,效率低,不具有實時性且記錄大量數(shù)據(jù)出現(xiàn)誤填現(xiàn)象不可避免?;谝陨蠁栴},本文設(shè)計實現(xiàn)了計算機通過RS232通信電纜與電子天平的通信系統(tǒng),該系統(tǒng)很好的結(jié)合了二者的優(yōu)點,具有操作簡單、友好的實時監(jiān)控界面,同時把測量得到的數(shù)據(jù)實時填入MicrosoftOffice2007Excel表格中,并打印出來等優(yōu)點[2-4]。避免了工作人員手動抄表出現(xiàn)的誤填現(xiàn)象,節(jié)省人力,提高了工作效率,具有一定的實用性。
1.1硬件配置
本文所使用的上位機為裝Windows7操作系統(tǒng)和軟件VisualBasic6.0的計算機。該計算機與下位機賽多利斯天平(型號為BS210S)同樣帶有25針串口,通過RS232通信電纜來實現(xiàn)數(shù)據(jù)的雙向傳輸。通信電纜采用上海光勝網(wǎng)絡(luò)科技有限公司CSKJ-HRPVSP屏蔽雙絞線,適用于RS232通信協(xié)議,實現(xiàn)計算機與電子天平的通信。系統(tǒng)硬件結(jié)構(gòu)如圖1所示,上位機通過RS232通信電纜分別與多臺賽多利斯天平進行通信,由不同通信控件實現(xiàn)如:Comm1,Comm2,Comm3…各通信之間互不影響。
1.2軟件配置
VisualBasic是由Microsoft公司開發(fā)的程序設(shè)計語言,也是目前較為主流的開發(fā)設(shè)計平臺,具有面向?qū)ο?、結(jié)構(gòu)化、模塊化等特性。VB是從BASIC語言漸變而來,具有用戶界面及快速應(yīng)用程序開發(fā)系統(tǒng),可以與多個數(shù)據(jù)庫連接,例如ADO數(shù)據(jù)庫、DAO數(shù)據(jù)庫、RDO數(shù)據(jù)庫。VB也可以創(chuàng)建各種控件,如ActiveX控件、MSComm控件等。同樣,VB中工程窗體的設(shè)計簡單,使用者可根據(jù)需求自己靈活設(shè)計??傊?,對于使用者來說,VB操作簡單,具有友好人機交互界面,是一款較好的開發(fā)軟件。
圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
2.1通信協(xié)議
通俗地講通信協(xié)議是指要通信的雙方,通過相同的數(shù)據(jù)傳送格式,統(tǒng)一的規(guī)則與參數(shù)設(shè)置,從而實現(xiàn)信息交流,實現(xiàn)通信。本文賽多利斯電子天平通過RS232串口連接計算機,就要遵循RS232通信協(xié)議,RS232連接線長度在15m內(nèi),否則信息傳輸不準確,影響信息正常交換[5-6]。協(xié)議主要參數(shù)設(shè)置為:1 200波特傳輸速度;奇偶校驗設(shè)置為奇;1個停止位;操作方式標準SB1;信息以ASCII字符形式傳輸。硬件信號交換采用4線的接口,軟件信號交換采用XON和XOFF。串口通信應(yīng)用面廣,無論是計算機之間,還是計算機與其他設(shè)備間通信,都能較好地實現(xiàn)工業(yè)控制。
2.2通信控件
本文的重點是實現(xiàn)賽多利斯與計算機之間的通信,VB6.0中的MSComm控件很好的解決這一問題,即通過MSComm控件來實現(xiàn)計算機與賽多利斯天平的串口通信[7-10]。該控件功能強大,可實現(xiàn)計算機與不同對象的通信:計算機與計算機、計算機與單片機、計算機與智能儀表、計算機與PLC等。且MSComm控件操作起來也簡單易行,流程如同大多數(shù)軟件一樣。先新建工程,進入VB開發(fā)環(huán)境,再添加串口通信控件MSComm到工具箱,編程,最后進行調(diào)試。因為計算機要采集多個電子天平的數(shù)據(jù),一個MSComm控件對應(yīng)著一個串口,所以要創(chuàng)建多個MSComm控件。
3.1MSComm控件的常用屬性
MSComm控件的重要屬性:(1)CommPort設(shè)置并且返回通訊端口號;(2)Settings以字符串的形式設(shè)置并返回停止位、數(shù)據(jù)位、波特率、奇偶校驗;(3)PortOpen為設(shè)置并返回通訊端口的狀態(tài),也可以打開和關(guān)閉端口;(4)Input是從接收緩沖區(qū)返回和刪除字符;(5)Output是向傳輸緩沖區(qū)寫一個字符串;(6)InBufferCount為讀取和接收緩沖區(qū)中的字節(jié)數(shù);(7)InBufferSiz為讀取或設(shè)置接收緩沖區(qū)的大?。?8)CommEvent為讀取或設(shè)置串口事件。
3.2電子秤的通信協(xié)議
賽多利斯電子天平以16字符的格式輸出,其中未顯示的段一律按空格格式輸出。下面字符的輸出與否,取決于電子天平上顯示的字符,如圖2所示。
正常操作情況下,各個字符含義:*代表空格,CR表示回車,D表示為數(shù)字或者是字母,LF代表換行,U為單位符號。
圖2 賽多利斯的輸出格式
賽多利斯的數(shù)據(jù)輸入格式:把計算機通過通信電纜與賽多利斯相連,計算機所給的控制命令通過串口傳入電子天平,命令的格式不盡相同,但字符的傳輸需要事先在傳輸操作菜單上得以確定。如同輸出格式,輸入格式下每個字符代表不同含義,Esc是Escape,CR代表回車,!代表命令字符,LF為換行。具體控制命令的格式如下:
格式1Esc!CRLF
格式2Esc!# -CRLF
通過電纜連接賽多利斯與電腦之前,要核對引腳分配如圖3所示,左側(cè)是賽多利斯天平引腳,右側(cè)是計算機引腳。如果引腳分配有誤,導(dǎo)致設(shè)備不能正常工作,也可能導(dǎo)致設(shè)備損壞,重要引腳有:引腳1:屏蔽;引腳2:數(shù)據(jù)輸出;引腳3:數(shù)據(jù)輸入;引腳4:內(nèi)部接地;引腳5:清除發(fā)送引腳; 引腳20:數(shù)據(jù)終端就緒。
圖3 引腳接線圖
VB自帶的報表功能(DataReportDesigner)具有局限性,不能滿足靈活設(shè)計的需求,并且使用直接打印的方法(Printer.print),需進行打印機定位,用戶根據(jù)報表格式發(fā)生變化要不斷修改格式及程序,這會用戶使用帶來不便[11-12]。
基于以上問題,本文采用VB調(diào)用Excel的方法,此方法簡單易行,利用Excel強大的報表和計算功能,來實現(xiàn)從下位機賽多利斯天平采集到的數(shù)據(jù)的實時寫入及打印。
4.1VB調(diào)用Excel方法
首先要引用Excel類型庫,從“工程”菜單欄中選擇“引用”,選擇MicrosoftExcel9.0ObjectLibrary,最后點擊“確定”。對Excel對象的定義需要在通用對象的聲明過程中進行。
DimxlAppAsExcel.Application
DimxlBookAsExcel.Workbook
DimxlCharAsNewExcel.Chart
DimxlSheetAsNewExcel.Worksheet
創(chuàng)建Excel對象并打開保存在C盤上要填寫的Excel文件,設(shè)置Excel在程序運行中為可見。把測量得到的數(shù)據(jù)填入名為“xlBook.Worksheets(2)”的Excel中,填入數(shù)據(jù)的起始單元為(6,3),當前讀數(shù)批次為0。
SetxlApp=NewExcel.Application
SetxlBook=xlApp.Workbooks.Open
("C:
xlApp.Visible=True
SetxlSheet=xlBook.Worksheets(2)
rowcount= 6
colcount= 3
signalread= 0
4.2VB通信程序
PrivateSubForm_Load()
MSComm1.CommPort= 1 '設(shè)置串行端口com_num
MSComm1.OutBufferSize= 100
'數(shù)據(jù)接受緩沖區(qū)大小為1024字節(jié)
MSComm1.InBufferSize= 100
'數(shù)據(jù)發(fā)送緩沖區(qū)大小為1024字節(jié)
MSComm1.InputMode= 0'二進制通信方式
MSComm1.InputLen= 0
'讀取接收緩沖區(qū)的所有字符
MSComm1.InBufferCount= 0'清除接收緩沖區(qū)
MSComm1.SThreshold= 1
'每發(fā)送一字節(jié)都觸發(fā)發(fā)送事件
MSComm1.RThreshold= 16
'每接收一字節(jié)都觸發(fā)接收事件
MSComm1.Settings= "1200,O,7,1"
'設(shè)置波特率及數(shù)據(jù)幀格式
MSComm1.PortOpen=True'打開串口
EndSub
PrivateSubMSComm1_OnComm()
SelectCaseMSComm1.CommEvent'事件發(fā)生
CasecomEvSend'發(fā)送數(shù)據(jù)事件
Text2.Text=Text2.Text+Chr(27) &Chr(80) &Chr(13) &Chr(10)
CasecomEvReceive'接收數(shù)據(jù)事件
strBuffreceive=MSComm1.Input'讀入到緩沖區(qū)
chengcomvalue=Mid(strBuffreceive, 4, 7)'取數(shù)據(jù)Text1.Text=Text1.Text+chengcomvalue+Chr(13) &Chr(10) '在文本框中顯示接收數(shù)據(jù)
tempwater=Val(chengcomvalue) '測量得到水的溫度及水溫折算
tempval=tempwater*coefval
SelectCasesignalread
Case0….
如圖4所示,為VB的監(jiān)控界面,通過對界面操作來實現(xiàn)賽多利斯天平與計算機間通信,實時顯示接收、發(fā)送數(shù)據(jù),水溫及允許誤差。左側(cè)為賽多利斯天平檢測出的液面刻度值,可實現(xiàn)同時檢測10個天平液面刻度,并可多批次測量。把采集到的數(shù)據(jù)實時填入Excel報表,避免了人為手動抄表而帶來的誤填,為操作人員提供方便,提高了工作效率。打印出的Excel報表如圖5所示。報表主要內(nèi)容包括“刻度液面、水重、真容積及允許誤差”,不同工作場合可根據(jù)具體需求設(shè)計。
圖4 VB的監(jiān)控界面
圖5 可打印的Excel報表
本文設(shè)計了賽多利斯天平通過RS232通信電纜與計算機之間的通信,實現(xiàn)了一臺計算機采集處理多臺賽多利斯天平的數(shù)據(jù),編寫了基于VB6.0軟件的串口通信程序。介紹了MSComm控件的特性及其使用方法。通過VB6.0調(diào)用Excel,利用了Excel的數(shù)據(jù)處理功能,將采集到的數(shù)據(jù)實時填寫報表,并可打印出來。解決了人工抄表效率低、容易出錯的問題。經(jīng)現(xiàn)場實踐,該方法簡單實用,在通信與數(shù)據(jù)采集處理方面具有一定的參考價值。
[1]范逸之,陳立元.VisualBasic與RS-232串行通信控制[M]. 北京: 清華大學(xué)出版社,2003.
[2]求是科技,仵浩,齊燕杰,等.VisualBasic串口通信工程開發(fā)實例導(dǎo)航[M]. 北京:人民郵電出版社,2003.
[3]高峰霞,廖彬山.VisualBasic6.0中文版提高與應(yīng)用[M].北京:電子工業(yè)出版社,1999.
[4]蔡紅,章人杰.基于VB的電子天平性能測試平臺的設(shè)計與實現(xiàn)[J]. 儀表技術(shù),2007(9):52-54.
[5]武子榮,劉琳嵐,陳軒.利用MSComm控件實現(xiàn)消防主機與收發(fā)通信[J]. 電腦開發(fā)與應(yīng)用,2007,20(2):36-37.
[6]暢育超.巧用VB調(diào)用Excel實現(xiàn)復(fù)雜報表設(shè)計與打印[J].電腦編程技巧與維護,2011(15):53-56.
[7]吳興中,歐青立.一種PC與單片機多機RS232串口通信設(shè)計[J]. 國外電子測量技術(shù),2009,28(1):74-76.
[8]章輝,葉建芳,葉建威.基于MSComm控件串口通信的實現(xiàn)[J]. 電子測量技術(shù),2011,34(8):126-129.
[9]李學(xué)良,朱志剛.VBMSComm控件下串行通信在電子衡器中的應(yīng)用[J]. 計算機信息,2015(1):119-120.
[10]劉永志,陳學(xué)煌,段新文.VB調(diào)用Excel實現(xiàn)報表打印功能[J].甘肅科技,2005 (7):83- 85.
[11]KyleR.Mayborn,CharlesE.Leshermagpath:anexcel-basedvisualbasicprogramforforwardmodelingofmaficmagmacrystallization[J].Computers&Geosciences, 2011, 37(11):1900-1903.
[12]唐振.基于VB串口通信的實時水位數(shù)據(jù)采集軟件設(shè)計[J]. 長江大學(xué)學(xué)報:自然科學(xué)版, 2013,10(22):51-53.
Remote Data Recording System of Electronic Scales Based on VB
SUNJingen,ZHANGJianan,CHENYi
(CollegeofAutomationandElectricalEngineering,ShenyangLigongUniversity,Shenyang110159,China)
Thewidelyusedelectronicbalancehaslimitationsindataacquisitionandprocessing.Inthispaper,thisproblemissolvedbythecommunicationbetweentheelectronicbalanceandcomputer.AserialportcommunicationprogramofelectronicbalanceisdesignedonVB6.0developmentplatformbyusingMSCOMMcommunicationcontrolofVBwiththecomputerastheuppermachineandSartoriusbalanceasthelowermachine.TheremotedatarecordingsystemofelectronicscalebasedonVBisdeveloped.Databi-directionaltransmissionandprocessingarerealizedthroughRS232andthemeasureddataarefilledintotheExcelformsinrealtime,thusavoidingartificialmeterreadingerrorandimprovingtheworkefficiency.Thefielddebuggingsuggeststhesystemisconvenient,reliableandhasgreatpracticability.
electronicbalance;VisualBasic6.0;datarecording;Excel
2015- 12- 11
孫金根( 1962- ) ,男,副教授。研究方向:智能控制等。
10.16180/j.cnki.issn1007-7820.2016.09.034
TP274+.1
A
1007-7820(2016)09-125-04