蘇震宇
(淮南市礦用電子技術(shù)研究所,安徽淮南232001)
在許多現(xiàn)場自動(dòng)監(jiān)測系統(tǒng)中,計(jì)算機(jī)和實(shí)際監(jiān)測系統(tǒng)之間需要進(jìn)行數(shù)據(jù)交換。在電池的管理系統(tǒng)中,需要對(duì)電池的相關(guān)數(shù)據(jù)進(jìn)行采集并實(shí)時(shí)顯示,以便于工作人員觀測,通過數(shù)據(jù)曲線的比較,可增強(qiáng)分析性,及時(shí)發(fā)現(xiàn)問題和解決問題。IO COMP Components是一個(gè)面向仿真、工業(yè)自動(dòng)化、儀表等數(shù)據(jù)圖形領(lǐng)域的通用組件包。包含了豐富的應(yīng)用在Visual Basic和Visual C++、Delphi等Windows開發(fā)工具的嵌入式控件,包括各種形式的報(bào)警器、測量、棒圖、LED、儀表、數(shù)碼管、計(jì)數(shù)器、趨勢圖等48種面板指示控件。本文將介紹基于VB的Iocomp控件實(shí)現(xiàn)實(shí)時(shí)監(jiān)控的繪制方法,該方法簡便易行,編程也比較簡單,在實(shí)際應(yīng)用中得到了良好的效果[2-3]。
上位機(jī)部分,使用VB編程來實(shí)現(xiàn)對(duì)數(shù)據(jù)的接受、顯示和存儲(chǔ)等。VB6.0不但提供了良好的界面設(shè)計(jì)能力,而且在微機(jī)串口通信方面也有很強(qiáng)的功能,采用VB開發(fā)基于Windows下的數(shù)據(jù)采集和工業(yè)控制應(yīng)用軟件十分方便,尤其軟件界面設(shè)計(jì)非常便捷,編程工作量較少開發(fā)周期短。上位機(jī)能過RS232轉(zhuǎn)RS485和電池管理系統(tǒng)進(jìn)行通信,將電池管理系統(tǒng)所采集的電池相關(guān)的數(shù)據(jù)信息在電腦上顯示并存儲(chǔ)。
VB串口通信利用MS COMM通訊控件向電池管理系統(tǒng)發(fā)送信息,并對(duì)管理系統(tǒng)進(jìn)行控制。
MS COMM是Windows下串行通信編程的Active X,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。MS COMM提供了兩種處理通信問題的方法:一是事件驅(qū)動(dòng),一是查詢[1]。
1)事件驅(qū)動(dòng)方式
事件驅(qū)動(dòng)通訊是處理串行端口交互作用的一種非常有效的方法。在許多情況下,在事件發(fā)生時(shí)需要得到通知,例如,在串口接收緩沖區(qū)中有字符,或Carrier Detect線上一個(gè)字符收到或發(fā)生一個(gè)變化時(shí)??梢岳肕S COMM控件的On Comm事件捕獲并處理這些通訊事件。On COMM事件還可以檢查和處理通訊錯(cuò)誤。該方法優(yōu)點(diǎn)是程序響應(yīng)及時(shí),可靠性高。每個(gè)MS COMM控件對(duì)應(yīng)一個(gè)串口,如果程序需要訪問多個(gè)串口,必須使用多個(gè)MS COMM控件。
2)查詢方式
查詢方式實(shí)質(zhì)上還是事件驅(qū)動(dòng)。在程序的每個(gè)關(guān)鍵功能之后,通過輪詢檢測Comm Event屬性的值來查詢事件和錯(cuò)誤。這樣顯得更為便捷。本文將對(duì)以下幾種方式進(jìn)行對(duì)比分析。
方法一:采用Tee Chart實(shí)現(xiàn)。Tee Chart Pro是一款提供上百種2D和3D圖形風(fēng)格、40種數(shù)學(xué)和統(tǒng)計(jì)功能、加上無限制的軸和22種調(diào)色板組件供選擇的繪圖控件。Tee Chart還包括一個(gè)強(qiáng)大的、完整的編輯對(duì)話框,幾乎可用于每個(gè)組件和子組件,可以快速的設(shè)計(jì)同復(fù)雜圖表應(yīng)用程序。圖表編輯器通過Tee Commander組件進(jìn)一步得到增強(qiáng),它提供一次點(diǎn)擊訪問圖表編輯器和共同特征。
方法二:在VB中繪制實(shí)時(shí)曲線是比較難的,一般要應(yīng)用第三方控件或是Windows API函數(shù)來完成,但是如果對(duì)實(shí)時(shí)曲線的要求不高,只要能表示出當(dāng)前的一般情況的話,可以直接應(yīng)用V B提供給我們的空間來完成。
方法三:可以采用工控組態(tài)軟件來實(shí)現(xiàn)。組態(tài)軟件具有動(dòng)畫顯示、流程控制、數(shù)據(jù)采集、設(shè)備控制與輸出、工程報(bào)表、數(shù)據(jù)與曲線等強(qiáng)大功能,在自動(dòng)控制中占據(jù)主力位置。
方法四:采用Iocomp控件來實(shí)現(xiàn)。結(jié)合Ioeomp Components圖形儀表組件,易于實(shí)現(xiàn)VB組態(tài)。
結(jié)合來看,采用Iocomp控件來實(shí)現(xiàn)實(shí)時(shí)曲線的繪制是最佳的,在工業(yè)控制軟件當(dāng)中,它將為更多的程序員提供更廣的應(yīng)用領(lǐng)域和發(fā)展空間。
IOCOMP[4-5]是一套用于工業(yè)的儀表盤控件,適用于ActiveX或VCL開發(fā)環(huán)境。提供自定義屬性編輯器可以快速和簡單的配置,VCL版包含所有的源代碼(100%的Delphi源代碼),發(fā)布版權(quán)免費(fèi)(除HMI和SCADA類型的應(yīng)用),矢量繪制,不會(huì)因?yàn)閳D像的大小引起圖形變形,支持OPC。分為四個(gè)版本分別是:Std Pack、Pro Pack、Plot Pack、Ultra Pack。IOCOMP Software特征如下:
自定義屬性編輯器:每個(gè)控件都帶一個(gè)將屬性以邏輯形式分組的屬性自定義編輯器,它使得用戶能夠輕松的設(shè)置控件屬性。在屬性窗口中可以無限的搜索,屬性窗口也可以無限的層疊。
值相關(guān)聯(lián):大多數(shù)的控件都擁有一些值,它們?cè)谠O(shè)置前可能是相關(guān)聯(lián)的,這就提供了一個(gè)相關(guān)聯(lián)的機(jī)制以及程序靈活性。
實(shí)時(shí)高效:該控件具有實(shí)時(shí)顯示、縮放、滾動(dòng)、即使是進(jìn)行數(shù)據(jù)繪制時(shí),不限制X有及Y坐標(biāo)軸、不限制通道、曲線擬合、直角坐標(biāo)軸、可視化的布局管理器、支持EMF、BMP、JPG以及TXT格式的文件輸出,及具高效性。
IOCOMP控件主要有三種組件:(iPlot、iXYPlot和iScope。
iPlot是一款即時(shí)繪圖組件,支持具有連續(xù)遞增的x坐標(biāo)的數(shù)據(jù)序列的繪圖。其典型的用途是圖表記錄或滾動(dòng)圖表類型的應(yīng)用。該組件可用于所有的繪圖應(yīng)用。iP1ot組件的應(yīng)用使得繪圖程序得到了最優(yōu)化,iPlot組件還可提供高速接入和繪圖方法。
iXYPlot是一個(gè)即時(shí)繪圖組件,它支持具備任意X、Y坐標(biāo)值的數(shù)據(jù)。
iScope是一個(gè)真正的實(shí)時(shí)模擬數(shù)字范圍的組件。支持實(shí)時(shí)處理和顯示的數(shù)據(jù)時(shí),5MHz的信號(hào)輸入率如果是連續(xù)的數(shù)據(jù)或使用更高的數(shù)據(jù)傳輸率采用間斷數(shù)據(jù)。
iPlot組件和iXYPlot組件的等級(jí)是相同的,除了通道的對(duì)象。其常用屬性為:
Channel屬性,可以訪問指定的通道??梢允褂肁dd Channel,Delete Channel,Remove All Channel方法在運(yùn)行時(shí)間中添加或者移除某個(gè)通道。在設(shè)計(jì)時(shí),可以使用內(nèi)置的屬性編輯器來改變通道。Annotation屬性,可以訪問指定的注釋??梢允褂肁dd Annotation,Delete Annotation和Remove All Annotation方法在運(yùn)行時(shí)間中添加或者移除某個(gè)注釋。注釋無法在設(shè)計(jì)時(shí)間中添加。X-axis屬性,您可以訪問指定的X軸線。您可以使用Add X Axis,Delete X Axis和Remove All X Axes方法在運(yùn)行時(shí)間中添加或者移除某個(gè)x軸。在設(shè)計(jì)時(shí)間,可以使用內(nèi)置的屬性編輯器來改變某個(gè)x軸。Y-Axis屬性,可以訪問指定的Y軸線??梢允褂肁dd Y Axis,Delete YA xis和Remove All Y Axes方法在運(yùn)行時(shí)間中添加或者移除某個(gè)Y軸。在設(shè)計(jì)時(shí)間,可以使用內(nèi)置的屬性編輯器來改變某個(gè)Y軸。Data View屬性通過索引號(hào),可以訪問數(shù)據(jù)視圖。該功能接口支持多個(gè)數(shù)據(jù)視圖,但是在當(dāng)前版本中未提供該功能支持。Tool Bar屬性通過索引號(hào),可以訪問工具欄。該功能接口支持多個(gè)工具欄,但是在當(dāng)前版本中未提供該功能支持。Legend屬性通過索引號(hào),可以訪問圖標(biāo)符號(hào)。該功能接口支持多個(gè)圖標(biāo)符號(hào),但是在當(dāng)前版本中未提供該功能支持。
我們可以直接修改程序來進(jìn)行對(duì)一些屬性要求的設(shè)置,也可以直接在面板的分項(xiàng)屬性中進(jìn)行設(shè)置,對(duì)各屬性不同的設(shè)置得到的結(jié)果顯示也將不一樣,可以根據(jù)設(shè)計(jì)員自己的要求來具體設(shè)置。
圖2
通過介紹使用IOCOMP組件在在VB設(shè)計(jì)可視化虛擬儀表的技術(shù),靈活使用IOCOMP組件技術(shù)可以使用戶可以不必了解虛擬儀表內(nèi)部的軟件設(shè)計(jì),只要安裝了IOCOMP組件就可方便地創(chuàng)建虛擬儀表,不僅使得人機(jī)交互更加方便,而且可以實(shí)現(xiàn)數(shù)據(jù)顯示的實(shí)時(shí)性,具有較高的實(shí)際應(yīng)用價(jià)值。
[1]范逸之,陳立元.Visual Basic 與 RS-232 串行通信控制(最新版)[M].北京:清華大學(xué)出版社,2002.
[2]潘地林,陳清華.Visual Basic 程序設(shè)計(jì)教程[M].合肥:安徽大學(xué)出版社,2004.
[3]張樹兵,戴紅,陳哲.Visual Basic6.0 入門與提高[M].北京:清華大學(xué),2000.11.
[4]孫建洲,李偉.基于IOCOMP組件對(duì)汽車虛擬儀表的實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2007.20(11).
[5]康雪麗.基于BCB的實(shí)時(shí)數(shù)據(jù)采集與分析系統(tǒng)[J].科技信息,2008(1).