基于組態(tài)王和VB的智能儀表實(shí)時(shí)監控系統
0 引言
隨著(zhù)科學(xué)技術(shù)的不斷發(fā)展,計算機測控技術(shù)在工業(yè)現場(chǎng)的各種測量及控制系統中應用越來(lái)越廣泛。通常情況下,工業(yè)現場(chǎng)的各種測控系統需要上位計算機與工業(yè)現場(chǎng)各種智能化儀表進(jìn)行通信,以便及時(shí)了解現場(chǎng)儀表的運行情況,從而實(shí)現對現場(chǎng)各種狀態(tài)的實(shí)時(shí)監控。
組態(tài)王軟件作為一種優(yōu)秀的上位機監控軟件,在許多領(lǐng)域的遠程監控中都得到了廣泛的應用。然而,組態(tài)王為數據采集和控制提供的大量底層設備驅動(dòng)程序,主要是針對較大規模廠(chǎng)商的板卡和模塊,對于較小規模廠(chǎng)商開(kāi)發(fā)的各種智能化儀表及用戶(hù)自己設計的板卡,卻沒(méi)有現成的驅動(dòng)程序提供。因此,利用組態(tài)王與智能化儀表及用戶(hù)自己設計的板卡進(jìn)行通信時(shí),往往需要用戶(hù)自己開(kāi)發(fā)底層的驅動(dòng)程序,給用戶(hù)的使用帶來(lái)了諸多的不便。為了解決上述問(wèn)題,組態(tài)王專(zhuān)門(mén)提供了一種DDE技術(shù),能夠使用戶(hù)方便地實(shí)現組態(tài)王與其它支持動(dòng)態(tài)數據交換的應用程序進(jìn)行數據交換。
Visual Basic 6.0 (簡(jiǎn)稱(chēng)VB)是一款簡(jiǎn)單、易用的可視化編程語(yǔ)言,開(kāi)發(fā)者可以方便地利用其提供的組件快速建立一個(gè)應用程序。因而,在各種程序開(kāi)發(fā)中,VB得到了廣泛的應用,同時(shí)在VB中提供的串行通信控件MSComm,為開(kāi)發(fā)者實(shí)現上位計算機與現場(chǎng)各種儀表進(jìn)行通信提供了一種有效途徑。另外,VB還支持DDE技術(shù),利用該技術(shù)可以方便地開(kāi)發(fā)出Windows環(huán)境下的DDE程序。
本文針對目前組態(tài)王與智能化儀表通信時(shí)存在的問(wèn)題,給出了一種基于VB和DDE技術(shù)的上位計算機與現場(chǎng)智能儀表進(jìn)行通信的方法。開(kāi)發(fā)了一套組態(tài)王與VB相結合的智能化儀表監控系統,較好地實(shí)現了工業(yè)現場(chǎng)各種智能化設備運行狀態(tài)的實(shí)時(shí)監控。
1 系統的基本結構
基于組態(tài)王和VB的智能化儀表監控系統的結構如圖1所示。由圖1可知,該系統由上位計算機、RS2232 /485通信電纜和現場(chǎng)各種智能化儀表構成,該系統采用的是一對多的通信鏈接形式,即現場(chǎng)多種智能化儀表掛接在RS2485 總線(xiàn)上,然后再由RS2232 /485轉換器轉換后,連接到上位計算機。
圖1 系統基本原理圖。
2 系統的工作原理
組態(tài)王與現場(chǎng)智能儀表的通信原理如圖2 所示。
由圖2可以看出,該系統的通信包括兩部分:組態(tài)王與VB程序的DDE通信; VB 程序通過(guò)RS2232 /485 與現場(chǎng)智能儀表的通信。
圖2 組態(tài)王與現場(chǎng)智能儀表通信原理
2. 1 組態(tài)王與VB的動(dòng)態(tài)數據交換
動(dòng)態(tài)數據交換(DDE)是Windows平臺上的一個(gè)完整通信協(xié)議,該協(xié)議使應用程序能彼此交換數據和發(fā)送指令。組態(tài)王和VB進(jìn)行DDE通信的過(guò)程中,請求發(fā)送數據的一方稱(chēng)為"客戶(hù)",被請求的一方稱(chēng)為"服務(wù)器".由于DDE通信時(shí),交換雙方需實(shí)現數據或控制命令的雙向傳輸。因此,它們既是"客戶(hù)",又是"服務(wù)器".
2. 1. 1 DDE通信時(shí)組態(tài)王的設定
組態(tài)王與VB之間數據交換內容是通過(guò)三個(gè)標志名來(lái)約定的:
① 應用程序名。進(jìn)行DDE對話(huà)的雙方的名稱(chēng)。
組態(tài)王運行系統的程序名是View.
② 主題。被討論的數據域。組態(tài)王主題規定為tagname.
③ 項目。被討論的特定數據對象。在組態(tài)王的數據詞典里,定義I/O 變量的同時(shí),也定義了項目名稱(chēng)。
為了建立DDE鏈接,需要在組態(tài)王的數據詞典里建立一個(gè)I/O變量,并登記服務(wù)器程序的三個(gè)標志名。
本系統中應用程序名為VBDDE,話(huà)題名為form1,項目名為INCREA100, 程序交換的方式為標準WindowsDDE交換。
2. 1. 2 DDE通信時(shí)VB的設定
在VB編程軟件中, DDE連接主要是通過(guò)控件的屬性和方法實(shí)現的。通常情況下,DDE通信主要是通過(guò)文本框、標簽或圖片框等控件進(jìn)行。
如果VB作為顧客,數據交換時(shí),則需要對上述控件的LinkTop ic、Link Item、LinkMode 屬性進(jìn)行如下設置:
Control. L inkTop ic =服務(wù)器程序名|主題名
Control. L ink Item =項目名
Control. L inkMode有四種選擇: 0表示關(guān)閉DDE;
1表示熱鏈接; 2表示冷鏈接; 3表示通告鏈接。
其中, Control表示文本框、標簽或圖片框的名字。
本系統中Control表示文本框Text1,LinkTop ic設置為View|Tagname, LinkItem 設置為PLC1. INCREA100,LinkMode設置為1.
如果組態(tài)王作為顧客,只要把VB 應用程序中提供數據窗體的LinkMode屬性設置為1,其它無(wú)需再在VB中增加任何程序。
在對組態(tài)王和VB的初始設置完成后,結合VB編寫(xiě)的與智能儀表的通信程序,分別按照服務(wù)器和顧客運行應用程序,即可實(shí)現組態(tài)王與VB 的自動(dòng)數據交換。
2. 2 VB與智能儀表的通信
本系統采用VB專(zhuān)業(yè)版的MSComm控件與VB模塊化編程相結合,實(shí)現了VB與智能儀表間的通信,主要程序模塊及部分程序如下:
① 程序初始化模塊。主要完成串口的選擇、波特率、幀結構設置、打開(kāi)串口等串口的設置工作。
② 發(fā)送數據模塊。由手動(dòng)發(fā)送控制命令字和自動(dòng)發(fā)送控制命令字兩種方式,實(shí)現手動(dòng)采集數據和自動(dòng)采集數據。其中,自動(dòng)發(fā)送數據方式包括一個(gè)定時(shí)器發(fā)送程序和一個(gè)定時(shí)器時(shí)間響應程序;定時(shí)器發(fā)送程序用來(lái)控制控制命令字的發(fā)送周期,定時(shí)器響應程序用來(lái)完成現場(chǎng)各智能化儀表地址的循環(huán)賦值及控制命令字的發(fā)送。
上述模塊中定時(shí)器響應程序的部分程序如下:
Private Sub Timer1 Timer
Timer1. Enabled = False
Text_SEND. Text = "" ∥清空發(fā)送文本框
MSComm. OutBufferCount = 0 ∥清除發(fā)送緩沖區數據
Dim OutByte (1 To 3) AsByte
IfNotMSComm. PortOpen Then ∥保證串口打開(kāi)
MSComm. PortOpen = True
End If
'24臺積算儀循環(huán)數據采集
If k = 1 Then
OutByte (1) = HCA
OutByte (2) = 0
OutByte (3) = 1
End If
If k = 2 Then
OutByte (1) = HCA
OutByte (2) = 0
OutByte (3) = 2
End If
??
k = k + 1
If k > 24 Then
k = 1
End If
MSComm. InBufferCount = 0 ∥清除接收緩沖區數據
MSComm. OutBufferCount = 0 ∥清除發(fā)送緩沖區數據
MSComm. Output = OutByte
For j = 1 To 3
OutByte again ( j) = OutByte ( j)
Next
For i = 1 To 50000000
'延時(shí)Next
End Sub
③ 接收數據模塊。通過(guò)事件響應的方式來(lái)完成現場(chǎng)數據的接收。如果串口收到現場(chǎng)數據,并且使得數據緩沖區中的內容超過(guò)一個(gè)字節時(shí),就會(huì )引發(fā)com2EvReceive事件。OnComm 函數用來(lái)負責捕捉com2EvReceive事件,并且將發(fā)送緩沖區中的現場(chǎng)內容寫(xiě)入VB的文本框進(jìn)行顯示,同時(shí)與組態(tài)王進(jìn)行DDE數據交換。
評論