轉(zhuǎn)帖|使用教程|編輯:龔雪|2014-08-01 09:37:11.000|閱讀 5758 次
概述:本文為使用Iocomp工控圖表工具繪制實(shí)時(shí)曲線探索及研究教程,為大家介紹了Iocomp控件、實(shí)時(shí)曲線繪制方法、Iocomp界面操作,屬性分類等。幫助學(xué)習(xí)者更好的運(yùn)用Iocomp。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
[摘要]數(shù)據(jù)采集是控制系統(tǒng)最常見(jiàn)的任務(wù),對(duì)于大量的實(shí)時(shí)采集數(shù)據(jù)采用曲線加以分析已成為很重要的一種手段。文章將介紹如何用 Iocomp控件實(shí)現(xiàn)控制軟件中的實(shí)時(shí)曲線的設(shè)計(jì)與繪制,并結(jié)合實(shí)例程序加以具體說(shuō)明。實(shí)踐表明,該方法簡(jiǎn)單可靠,對(duì)工業(yè)實(shí)時(shí)控制應(yīng)用有一定借鑒意義。
Iocomp控件:
在工業(yè)控制領(lǐng)域,需要進(jìn)行大量的數(shù)據(jù)處理和可視化顯示。實(shí)時(shí)監(jiān)測(cè)軟件中,常常需要將采集到的數(shù)據(jù)實(shí)時(shí)顯示到界面上來(lái),以便于工作人員觀測(cè),及時(shí)發(fā)現(xiàn)問(wèn)題和解決問(wèn)題,通常還要求曲線可伸縮、可漫游、可取值,可若干條曲線的比較,以增強(qiáng)其可分析性。傳統(tǒng)的控制軟件開(kāi)發(fā)工具多用 DOS或 Windows下的 C語(yǔ)言開(kāi)發(fā),導(dǎo)致系統(tǒng)開(kāi)發(fā)周期長(zhǎng),可維護(hù)性差,并且不具有標(biāo)準(zhǔn)的 Windows圖形用戶界面。VB作為一種 Windows軟件開(kāi)發(fā)工具,既具有效率高界面友好的功能,又可以使用 DLL來(lái)實(shí)現(xiàn) I/O端口的輸入功能,還可以通過(guò) API函數(shù)或 Mscomm控件實(shí)現(xiàn)串口通信。而本文將詳細(xì)介紹一種基于 VB的 Iocomp控件實(shí)現(xiàn)實(shí)時(shí)曲線的繪制方法,該方法簡(jiǎn)便易行,編程也比較簡(jiǎn)單,在實(shí)際應(yīng)用中得到了良好的效果。
Iocomp Software是一個(gè)讓 Iocomp公司引以為豪的全新的、100%托管的、領(lǐng)先的、高速的、易用的、能實(shí)時(shí)繪制的控件。擁有許多在其他同類圖表控件產(chǎn)品中所不能找到的全新特征功能及性能。Iocomp Software特征如下:
屬性定制編輯器:每一個(gè)控件都帶有一個(gè)將屬性以邏輯形式分組的屬性定制編輯器,它們使得用戶能夠輕松的設(shè)置控件屬性。在屬性窗口中可以無(wú)限的搜索,屬性窗口也可以無(wú)限的層疊。
值相關(guān)聯(lián):大多數(shù)的控件都擁有一些值,它們?cè)谠O(shè)置前可能是相關(guān)聯(lián)的,這就提供了一個(gè)相關(guān)聯(lián)的機(jī)制以及程序靈活性。
實(shí)時(shí) -高效:該產(chǎn)品的工具控件是當(dāng)今最高效的。具有實(shí)時(shí)顯示、縮放、滾動(dòng)、即使是在進(jìn)行數(shù)據(jù)繪制時(shí)、不限制 X以及 Y坐標(biāo)軸、不限制通道、曲線擬合、直角坐標(biāo)軸、可視化的布局管理器、支持 EMF、BMP、 JPG以及 TXT格式的文件輸出。
實(shí)時(shí)曲線的繪制方法多種多樣,根據(jù)對(duì)曲線的要求,我們可以采用不同的方法來(lái)繪制,從而達(dá)到最佳的曲線效果,以下列出了幾種常用的繪制實(shí)時(shí)曲線的方法:
方法一:采用 TeeChart實(shí)現(xiàn)。TeeChart Pro是一款提供上百種 2D和 3D圖形風(fēng)格、40種數(shù)學(xué)和統(tǒng)計(jì)功能、加上無(wú)限制的軸和 22種調(diào)色板組件供選擇的繪圖控件。TeeChart還包括一個(gè)強(qiáng)大的、完整的編輯對(duì)話框,幾乎可用于每個(gè)組件和子組件,允許你快速的設(shè)計(jì)復(fù)雜圖表應(yīng)用程序。圖表編輯器通過(guò) TeeCommander組件進(jìn)一步得到增強(qiáng),它提供一次點(diǎn)擊訪問(wèn)圖表編輯器和共同特征。
方法二:在 VB中繪制實(shí)時(shí)曲線是比較難的,一般要應(yīng)用第三方控件或是 Windows API函數(shù)來(lái)完成,但是如果你對(duì)實(shí)時(shí)曲線的要求不是很高,只要能表示出當(dāng)前的一般情況的話,我們可以直接應(yīng)用 VB提供給我們的空間來(lái)完成。
方法三:可以采用工控組態(tài)軟件來(lái)實(shí)現(xiàn)。組態(tài)軟件具有動(dòng)畫顯示、流程控制、數(shù)據(jù)采集、設(shè)備控制與輸出、工程報(bào)表、數(shù)據(jù)與曲線等強(qiáng)大功能,在自動(dòng)控制中占據(jù)主力軍的位置,已逐漸成為工業(yè)自動(dòng)化的靈魂。
方法四:采用 Iocomp控件來(lái)實(shí)現(xiàn)。結(jié)合 Iocomp Components圖形儀表組件,易于實(shí)現(xiàn) VB組態(tài)。
結(jié)合以上四種方法的總結(jié)與比較,采用 Iocomp控件來(lái)實(shí)現(xiàn)實(shí)時(shí)曲線的繪制是最佳的,在工業(yè)控制軟件當(dāng)中,它將為更多的程序員提供更廣的應(yīng)用領(lǐng)域和發(fā)展空間。
Iocomp控件主要有三種組件:⑴iPlot ⑵iXYPlot ⑶iScope iPlot是一款即時(shí)繪圖組件,支持具有連續(xù)遞增的 X坐標(biāo)的數(shù)據(jù)序列的繪圖。其典型的用途是圖表記錄或滾動(dòng)圖表類型的應(yīng)用。該組件可
用于所有的繪圖應(yīng)用。iPlot組件的應(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ì)象。其層次結(jié)構(gòu)圖如圖 1。
圖 1層次結(jié)構(gòu)圖常用屬性簡(jiǎn)介如下表:
Channel屬性,可以訪問(wèn)指定的通道??梢允褂?AddChannel, DeleteChannel和 RemoveAllChannel方法在運(yùn)行時(shí)間中添加或者移除某個(gè)通道。在設(shè)計(jì)時(shí),可以使用內(nèi)置的屬性編輯器來(lái)改變通道。
Annotation屬性,可以訪問(wèn)指定的注釋??梢允褂?AddAnnotation, DeleteAnnotation和 RemoveAllAnnotation方法在運(yùn)行時(shí)間中添加或者移除某個(gè)注釋。注釋無(wú)法在設(shè)計(jì)時(shí)間中添加。
X-axis屬性,您可以訪問(wèn)指定的 X軸線。您可以使用 AddXAxis, DeleteXAxis和 RemoveAllXAxes方法在運(yùn)行時(shí)間中添加或者移除某個(gè) X軸。在設(shè)計(jì)時(shí)間,可以使用內(nèi)置的屬性編輯器來(lái)改變某個(gè) X軸。
YAxis屬性,可以訪問(wèn)指定的 Y軸線??梢允褂?AddYAxis, Delete YAxis和 RemoveAllYAxes方法在運(yùn)行時(shí)間中添加或者移除某個(gè) Y軸。在設(shè)計(jì)時(shí)間,可以使用內(nèi)置的屬性編輯器來(lái)改變某個(gè) Y軸。
DataView屬性通過(guò)索引號(hào),可以訪問(wèn)數(shù)據(jù)視圖。該功能接口支持多個(gè)數(shù)據(jù)視圖,但是在當(dāng)前版本中未提供該功能支持,期待在下面版本中推出。
ToolBar屬性通過(guò)索引號(hào),可以訪問(wèn)工具欄。該功能接口支持多個(gè)工具欄,但是在當(dāng)前版本中未提供該功能支持,期待在下面版本中推出。
Legend屬性通過(guò)索引號(hào),可以訪問(wèn)圖標(biāo)符號(hào)。該功能接口支持多個(gè)圖標(biāo)符號(hào),但是在當(dāng)前版本中未提供該功能支持,期待在下面版本中推出。
對(duì)界面的設(shè)置是必不可少的,它可以更直觀更簡(jiǎn)捷的為我們提供繪制實(shí)時(shí)曲線的各個(gè)屬性功能,我們可以直接修改程序來(lái)進(jìn)行對(duì)一些屬性要求的設(shè)置,也可以直接在面板的分項(xiàng)屬性中進(jìn)行設(shè)置,對(duì)各屬性
不同的設(shè)置得到的結(jié)果顯示也將不一樣,可以根據(jù)設(shè)計(jì)員自己的要求來(lái)具體設(shè)置。下圖 2是顯示了本文所應(yīng)用的 iPlot組建的編輯主界面。
下面來(lái)看一下如何采用 Iocomp控件中的 iPlot組件來(lái)實(shí)現(xiàn)實(shí)時(shí)曲線的繪制,編寫程序既簡(jiǎn)單又方便。
采用 Iocomp控件中的 iPlot組件繪制實(shí)時(shí)曲線,其實(shí)時(shí)測(cè)量值曲線繪制顯示界面如圖 3。
實(shí)時(shí)曲線反映的是現(xiàn)場(chǎng)數(shù)據(jù)的實(shí)時(shí)性和當(dāng)前趨勢(shì),繪制實(shí)時(shí)采集數(shù)據(jù)曲線是為了實(shí)時(shí)觀測(cè),以便掌握實(shí)時(shí)采集數(shù)據(jù)變動(dòng)的趨勢(shì),使曲線顯示效果最佳,因此在實(shí)現(xiàn)時(shí)需顯示曲線的動(dòng)態(tài)變化,當(dāng)前點(diǎn)在曲線的最右端顯示,而整個(gè)曲線動(dòng)態(tài)地向左移動(dòng)。實(shí)時(shí)曲線在動(dòng)態(tài)的移動(dòng)時(shí),測(cè)量值、峰值、谷值這三個(gè)通道同時(shí)相應(yīng)的顯示具體采樣數(shù)值,一目了然。由于篇幅有限,程序只保留核心部分。編寫程序如下:
Private Sub Form_Load() iPlotX1.Channel(0).TitleText = " 測(cè)量值" iPlotX1.Channel(1).TitleText = " 峰值" iPlotX1.Channel(2).TitleText = " 谷值" Call Comm_initial XValue = 0 If Right(App.Path, 1) = "\" Then fpname = App.Path &"data\" Else fpname = App.Path &"\data\" End If ComD1.InitDir = fpname End Sub
以上程序完成對(duì) iPlotX控件的初始化,初始化具有三個(gè)通道,名字分別為測(cè)量值、峰值、谷值,并調(diào)用 Comm_initial函數(shù)完成對(duì)串口的初始化,設(shè)定 App.Path & "data\"為采集數(shù)據(jù)存放路徑。
Private Sub Timer1_Timer() Dim a Dim i%, j%, k%, l% Dim bjsta As String Dim otime As Long Dim delayt As Integer delayt = 60 i=0 '命令重發(fā)次數(shù)計(jì)數(shù)變量 j=0 k=0 l=0 fs1: MSComm.InBufferCount = 0 MSComm.OutBufferCount = 0 '清空輸出緩沖區(qū) MSComm.Output = "#01" & vbCr '測(cè)量值讀取 otime = GetTickCount i=i+1 Do a = DoEvents() Loop Until MSComm.InBufferCount >= 10 Or GetTickCount >= otime + delayt clclz = MSComm.Input If Left(clclz, 1) = "=" And IsNumeric(Mid(clclz, 2, 6)) Then lbclz.Caption = Mid(clclz, 2, 6) clclz = lbclz.Caption Else If i > 10 Then GoTo fs2 GoTo fs1 End If ………………//省略程序數(shù)據(jù)采集峰值、谷值,其采集方法同上 fs5: YValue = Val(lbclz.Caption) iPlotX1.Channel(0).AddYNow Yvalue YValue = Val(Lbfz.Caption) iPlotX1.Channel(1).AddYNow YValue YValue = Val(Lbgz.Caption) iPlotX1.Channel(2).AddYNow YValue YValue = yboutv2 XValue = XValue + 1 MSComm.InBufferCount = 0 MSComm.OutBufferCount = 0 ………………//數(shù)據(jù)保存部分省略 End Sub
以上程序?yàn)閷?shí)時(shí)采集函數(shù),其功能:用 MSComm實(shí)現(xiàn)與串口的通信, MSComm.Output = "#01" & vbCr語(yǔ)句為讀儀表命令。每次采樣發(fā)出 3條儀表讀取測(cè)量值命令,1條報(bào)警開(kāi)關(guān)讀取命令。采樣頻率在有線通信和無(wú)線通信模式下最高每秒可以達(dá)到 15次,在無(wú)線通信出錯(cuò)較大情況下可以保證每秒正確采樣 8次,通信采用的強(qiáng)烈的糾錯(cuò)方法;采樣數(shù)據(jù)測(cè)量值、峰值、谷值送入 Iocomp控件實(shí)時(shí)顯示,程序會(huì)在每次采樣過(guò)后將數(shù)據(jù)存入本軟件的 data目錄下。
以上程序采用 Iocomp控件實(shí)現(xiàn)實(shí)時(shí)曲線的繪制,曲線的采樣頻率可以每秒達(dá)到 50次,最高可達(dá) 100次,靈敏度極高,繪制出的曲線也比較流暢,它不僅可用在工業(yè)控制的歷史數(shù)據(jù)處理,而且可以廣泛地適用于商業(yè)、管理及很多有大量數(shù)據(jù)需曲線顯示的應(yīng)用。
因此,Iocomp Components圖形儀表組件對(duì)于構(gòu)建逼真的人機(jī)界面、處理實(shí)時(shí)數(shù)據(jù)將非常有用,相信它們會(huì)被廣泛地應(yīng)用到越來(lái)越多的領(lǐng)域和行業(yè)當(dāng)中。由于控件具有界面友好、操作簡(jiǎn)單、可擴(kuò)展性強(qiáng)等特點(diǎn),因此使用這些組件可以非常方便地?cái)U(kuò)展出風(fēng)格多種多樣的數(shù)據(jù)圖形,整個(gè)設(shè)計(jì)過(guò)程都無(wú)需編程。
作者:陜西理工學(xué)院物理系 翟世磊 李明波 李福 劉東
工控儀表盤與數(shù)采軟件交流群:766890732 歡迎進(jìn)群交流討論
更多工控儀表盤產(chǎn)品下載、購(gòu)買、正版授權(quán)咨詢,請(qǐng)點(diǎn)擊獲?。?/strong>
(慧都控件網(wǎng)版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處,否則追究法律責(zé)任)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn