日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

基于組態(tài)王和VB的智能儀表實時監(jiān)控系統(tǒng)

出處:hexiaoxiao 發(fā)布于:2012-05-15 09:55:18

  摘 要: 針對目前組態(tài)王與智能化儀表通信時存在的問題,基于VB和動態(tài)數(shù)據(jù)交換技術(shù)DDE,研究了組態(tài)王與VB數(shù)據(jù)交換的方法,并采用VB可視化的編程方法,編寫了上位機(jī)與智能化儀表間的串口通信程序及組態(tài)軟件與VB間的OLE數(shù)據(jù)交換程序。實現(xiàn)了組態(tài)王與智能化儀表的實時通信,間接擴(kuò)展了組態(tài)王的驅(qū)動程序庫。另外,設(shè)計完成了基于組態(tài)王和VB的智能化儀表監(jiān)控系統(tǒng)。運(yùn)行結(jié)果表明,該系統(tǒng)具有良好的穩(wěn)定性、實時性,可以較好地實現(xiàn)工業(yè)現(xiàn)場的實時監(jiān)控。

  0 引言

  隨著科學(xué)技術(shù)的不斷發(fā)展,計算機(jī)測控技術(shù)在工業(yè)現(xiàn)場的各種測量及控制系統(tǒng)中應(yīng)用越來越廣泛。通常情況下,工業(yè)現(xiàn)場的各種測控系統(tǒng)需要上位計算機(jī)與工業(yè)現(xiàn)場各種智能化儀表進(jìn)行通信,以便及時了解現(xiàn)場儀表的運(yùn)行情況,從而實現(xiàn)對現(xiàn)場各種狀態(tài)的實時監(jiān)控。

  組態(tài)王軟件作為一種的上位機(jī)監(jiān)控軟件,在許多領(lǐng)域的遠(yuǎn)程監(jiān)控中都得到了廣泛的應(yīng)用。然而,組態(tài)王為數(shù)據(jù)采集和控制提供的大量底層設(shè)備驅(qū)動程序,主要是針對較大規(guī)模廠商的板卡和模塊,對于較小規(guī)模廠商開發(fā)的各種智能化儀表及用戶自己設(shè)計的板卡,卻沒有現(xiàn)成的驅(qū)動程序提供。因此,利用組態(tài)王與智能化儀表及用戶自己設(shè)計的板卡進(jìn)行通信時,往往需要用戶自己開發(fā)底層的驅(qū)動程序,給用戶的使用帶來了諸多的不便。為了解決上述問題,組態(tài)王專門提供了一種DDE技術(shù),能夠使用戶方便地實現(xiàn)組態(tài)王與其它支持動態(tài)數(shù)據(jù)交換的應(yīng)用程序進(jìn)行數(shù)據(jù)交換。

  Visual Basic 6.0 (簡稱VB)是一款簡單、易用的可視化編程語言,開發(fā)者可以方便地利用其提供的組件快速建立一個應(yīng)用程序。因而,在各種程序開發(fā)中,VB得到了廣泛的應(yīng)用,同時在VB中提供的串行通信控件MSComm,為開發(fā)者實現(xiàn)上位計算機(jī)與現(xiàn)場各種儀表進(jìn)行通信提供了一種有效途徑。另外,VB還支持DDE技術(shù),利用該技術(shù)可以方便地開發(fā)出Windows環(huán)境下的DDE程序。

  本文針對目前組態(tài)王與智能化儀表通信時存在的問題,給出了一種基于VB和DDE技術(shù)的上位計算機(jī)與現(xiàn)場智能儀表進(jìn)行通信的方法。開發(fā)了一套組態(tài)王與VB相結(jié)合的智能化儀表監(jiān)控系統(tǒng),較好地實現(xiàn)了工業(yè)現(xiàn)場各種智能化設(shè)備運(yùn)行狀態(tài)的實時監(jiān)控。

  1 系統(tǒng)的基本結(jié)構(gòu)

  基于組態(tài)王和VB的智能化儀表監(jiān)控系統(tǒng)的結(jié)構(gòu)如圖1所示。由圖1可知,該系統(tǒng)由上位計算機(jī)、RS2232 /485通信電纜和現(xiàn)場各種智能化儀表構(gòu)成,該系統(tǒng)采用的是一對多的通信鏈接形式,即現(xiàn)場多種智能化儀表掛接在RS2485 總線上,然后再由RS2232 /485轉(zhuǎn)換器轉(zhuǎn)換后,連接到上位計算機(jī)。

圖1 系統(tǒng)基本原理圖。

圖1 系統(tǒng)基本原理圖。

  2 系統(tǒng)的工作原理

  組態(tài)王與現(xiàn)場智能儀表的通信原理如圖2 所示。

  由圖2可以看出,該系統(tǒng)的通信包括兩部分:組態(tài)王與VB程序的DDE通信; VB 程序通過RS2232 /485 與現(xiàn)場智能儀表的通信。

圖2 組態(tài)王與現(xiàn)場智能儀表通信原理

圖2 組態(tài)王與現(xiàn)場智能儀表通信原理

  2. 1 組態(tài)王與VB的動態(tài)數(shù)據(jù)交換

  動態(tài)數(shù)據(jù)交換(DDE) 是Windows平臺上的一個完整通信協(xié)議,該協(xié)議使應(yīng)用程序能彼此交換數(shù)據(jù)和發(fā)送指令。組態(tài)王和VB進(jìn)行DDE通信的過程中,請求發(fā)送數(shù)據(jù)的一方稱為"客戶",被請求的一方稱為"服務(wù)器".由于DDE通信時,交換雙方需實現(xiàn)數(shù)據(jù)或控制命令的雙向傳輸。因此,它們既是"客戶",又是"服務(wù)器".

  2. 1. 1 DDE通信時組態(tài)王的設(shè)定

  組態(tài)王與VB之間數(shù)據(jù)交換內(nèi)容是通過三個標(biāo)志名來約定的:

  ① 應(yīng)用程序名。進(jìn)行DDE對話的雙方的名稱。

  組態(tài)王運(yùn)行系統(tǒng)的程序名是View.

 ?、?主題。被討論的數(shù)據(jù)域。組態(tài)王主題規(guī)定為tagname.

 ?、?項目。被討論的特定數(shù)據(jù)對象。在組態(tài)王的數(shù)據(jù)詞典里,定義I/O 變量的同時,也定義了項目名稱。

  為了建立DDE鏈接,需要在組態(tài)王的數(shù)據(jù)詞典里建立一個I/O變量,并登記服務(wù)器程序的三個標(biāo)志名。

  本系統(tǒng)中應(yīng)用程序名為VBDDE,話題名為form1,項目名為INCREA100, 程序交換的方式為標(biāo)準(zhǔn)WindowsDDE交換。

  2. 1. 2 DDE通信時VB的設(shè)定

  在VB編程軟件中, DDE連接主要是通過控件的屬性和方法實現(xiàn)的。通常情況下,DDE通信主要是通過文本框、標(biāo)簽或圖片框等控件進(jìn)行。

  如果VB作為顧客,數(shù)據(jù)交換時,則需要對上述控件的LinkTop ic、Link Item、LinkMode 屬性進(jìn)行如下設(shè)置:

  Control. L inkTop ic =服務(wù)器程序名|主題名

  Control. L ink Item =項目名

  Control. L inkMode有四種選擇: 0表示關(guān)閉DDE;

  1表示熱鏈接; 2表示冷鏈接; 3表示通告鏈接。

  其中, Control表示文本框、標(biāo)簽或圖片框的名字。

  本系統(tǒng)中Control表示文本框Text1,LinkTop ic設(shè)置為View|Tagname, LinkItem 設(shè)置為PLC1. INCREA100,LinkMode設(shè)置為1.

  如果組態(tài)王作為顧客,只要把VB 應(yīng)用程序中提供數(shù)據(jù)窗體的LinkMode屬性設(shè)置為1,其它無需再在VB中增加任何程序。

  在對組態(tài)王和VB的初始設(shè)置完成后,結(jié)合VB編寫的與智能儀表的通信程序,分別按照服務(wù)器和顧客運(yùn)行應(yīng)用程序,即可實現(xiàn)組態(tài)王與VB 的自動數(shù)據(jù)交換。

  2. 2 VB與智能儀表的通信

  本系統(tǒng)采用VB版的MSComm控件與VB模塊化編程相結(jié)合,實現(xiàn)了VB與智能儀表間的通信,主要程序模塊及部分程序如下:

 ?、?程序初始化模塊。主要完成串口的選擇、波特率、幀結(jié)構(gòu)設(shè)置、打開串口等串口的設(shè)置工作。

 ?、?發(fā)送數(shù)據(jù)模塊。由手動發(fā)送控制命令字和自動發(fā)送控制命令字兩種方式,實現(xiàn)手動采集數(shù)據(jù)和自動采集數(shù)據(jù)。其中,自動發(fā)送數(shù)據(jù)方式包括一個定時器發(fā)送程序和一個定時器時間響應(yīng)程序;定時器發(fā)送程序用來控制控制命令字的發(fā)送周期,定時器響應(yīng)程序用來完成現(xiàn)場各智能化儀表地址的循環(huán)賦值及控制命令字的發(fā)送。

  上述模塊中定時器響應(yīng)程序的部分程序如下:

  Private Sub Timer1 Timer ( )

  Timer1. Enabled = False

  Text_SEND. Text = "" ∥清空發(fā)送文本框

  MSComm. OutBufferCount = 0 ∥清除發(fā)送緩沖區(qū)數(shù)據(jù)

  Dim OutByte (1 To 3) AsByte

  IfNotMSComm. PortOpen Then ∥保證串口打開

  MSComm. PortOpen = True

  End If

  '24臺積算儀循環(huán)數(shù)據(jù)采集

  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 ∥清除接收緩沖區(qū)數(shù)據(jù)

  MSComm. OutBufferCount = 0 ∥清除發(fā)送緩沖區(qū)數(shù)據(jù)

  MSComm. Output = OutByte

  For j = 1 To 3

  OutByte again ( j) = OutByte ( j)

  Next

  For i = 1 To 50000000

  '延時Next

  End Sub

  ③ 接收數(shù)據(jù)模塊。通過事件響應(yīng)的方式來完成現(xiàn)場數(shù)據(jù)的接收。如果串口收到現(xiàn)場數(shù)據(jù),并且使得數(shù)據(jù)緩沖區(qū)中的內(nèi)容超過一個字節(jié)時,就會引發(fā)com2EvReceive事件。OnComm ( )函數(shù)用來負(fù)責(zé)捕捉com2EvReceive事件,并且將發(fā)送緩沖區(qū)中的現(xiàn)場內(nèi)容寫入VB的文本框進(jìn)行顯示,同時與組態(tài)王進(jìn)行DDE數(shù)據(jù)交換。

  該模塊中的OnComm ( )函數(shù)響應(yīng)程序如下:

  Private Sub Timer1 Timer ( )

  Timer1. Enabled = False

  Text_SEND. Text = "" ∥清空發(fā)送文本框

  MSComm. OutBufferCount = 0 ∥清除發(fā)送緩沖區(qū)數(shù)據(jù)

  Dim OutByte (1 To 3) AsByte

  IfNotMSComm. PortOpen Then ∥保證串口打開

  MSComm. PortOpen = True

  End If

  '24臺積算儀循環(huán)數(shù)據(jù)采集

  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 ∥清除接收緩沖區(qū)數(shù)據(jù)

  MSComm. OutBufferCount = 0 ∥清除發(fā)送緩沖區(qū)數(shù)據(jù)

  MSComm. Output = OutByte

  For j = 1 To 3

  OutByte again ( j) = OutByte ( j)

  Next

  For i = 1 To 50000000

  '延時Next

  End Sub

  Private Sub Timer1 Timer ( )

  Timer1. Enabled = False

  Text_SEND. Text = "" ∥清空發(fā)送文本框

  MSComm. OutBufferCount = 0 ∥清除發(fā)送緩沖區(qū)數(shù)據(jù)

  Dim OutByte (1 To 3) AsByte

  IfNotMSComm. PortOpen Then ∥保證串口打開

  MSComm. PortOpen = True

  End If

  '24臺積算儀循環(huán)數(shù)據(jù)采集

  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 ∥清除接收緩沖區(qū)數(shù)據(jù)

  MSComm. OutBufferCount = 0 ∥清除發(fā)送緩沖區(qū)數(shù)據(jù)

  MSComm. Output = OutByte

  For j = 1 To 3

  OutByte again ( j) = OutByte ( j)

  Next

  For i = 1 To 50000000

  '延時Next

  End Sub

 ?、?容錯模塊。通過增加數(shù)據(jù)采集容錯模塊,保證數(shù)據(jù)采集的實時性、準(zhǔn)確性,提高系統(tǒng)工作可靠性。

 ?、?數(shù)據(jù)庫模塊。主要利用Access數(shù)據(jù)庫,實現(xiàn)對計算機(jī)采集數(shù)據(jù)存儲、管理、分析及歷史數(shù)據(jù)的查詢等。

 ?、?其他程序模塊。主要完成發(fā)送、接收文本框的清空工作等。

  通過上述幾個模塊的協(xié)調(diào)工作,就可以較好地實現(xiàn)VB與智能儀表間的串行通信、數(shù)據(jù)分析及歷史數(shù)據(jù)查詢等。

  3 結(jié)束語

  通過VB與智能儀表間的串行通信及組態(tài)王與VB間的DDE通信,并利用組態(tài)王豐富的圖形和組態(tài)工藝,較好地完成了數(shù)據(jù)的實時刷新、各種曲線、報警的顯示。運(yùn)行結(jié)果表明,該系統(tǒng)具有友好的人機(jī)界面,良好的穩(wěn)定性、可靠性,較好地解決了組態(tài)王與一般智能儀表間的實時通信問題,實現(xiàn)了組態(tài)王對智能化儀表的實時監(jiān)控。

關(guān)鍵詞:基于組態(tài)王和VB的智能儀表實時監(jiān)控系統(tǒng)

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!