• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 測試測量 > 設計應用 > 基于組態王和VB的智能儀表實時監控系統

    基于組態王和VB的智能儀表實時監控系統

    作者: 時間:2012-12-01 來源:網絡 收藏

    0 引言

    隨著科學技術的不斷發展,計算機測控技術在工業現場的各種測量及控制系統中應用越來越廣泛。通常情況下,工業現場的各種測控系統需要上位計算機與工業現場各種智能化儀表進行通信,以便及時了解現場儀表的運行情況,從而實現對現場各種狀態的實時監控。

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

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

    本文針對目前組態王與智能化儀表通信時存在的問題,給出了一種基于VB和DDE技術的上位計算機與現場進行通信的方法。開發了一套組態王與VB相結合的智能化儀表監控系統,較好地實現了工業現場各種智能化設備運行狀態的實時監控。

    1 系統的基本結構

    基于組態王和VB的智能化儀表監控系統的結構如圖1所示。由圖1可知,該系統由上位計算機、RS2232 /485通信電纜和現場各種智能化儀表構成,該系統采用的是一對多的通信鏈接形式,即現場多種智能化儀表掛接在RS2485 總線上,然后再由RS2232 /485轉換器轉換后,連接到上位計算機。

    圖1 系統基本原理圖。

    2 系統的工作原理

    組態王與現場的通信原理如圖2 所示。

    由圖2可以看出,該系統的通信包括兩部分:組態王與VB程序的DDE通信; VB 程序通過RS2232 /485 與現場的通信。

    圖2 組態王與現場智能儀表通信原理

    2. 1 組態王與VB的動態數據交換

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

    2. 1. 1 DDE通信時組態王的設定

    組態王與VB之間數據交換內容是通過三個標志名來約定的:

    ① 應用程序名。進行DDE對話的雙方的名稱。

    組態王運行系統的程序名是View.

    ② 主題。被討論的數據域。組態王主題規定為tagname.

    ③ 項目。被討論的特定數據對象。在組態王的數據詞典里,定義I/O 變量的同時,也定義了項目名稱。

    為了建立DDE鏈接,需要在組態王的數據詞典里建立一個I/O變量,并登記服務器程序的三個標志名。

    本系統中應用程序名為VBDDE,話題名為form1,項目名為INCREA100, 程序交換的方式為標準WindowsDDE交換。

    2. 1. 2 DDE通信時VB的設定

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

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

    Control. L inkTop ic =服務器程序名|主題名

    Control. L ink Item =項目名

    Control. L inkMode有四種選擇: 0表示關閉DDE;

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

    其中, Control表示文本框、標簽或圖片框的名字。

    本系統中Control表示文本框Text1,LinkTop ic設置為View|Tagname, LinkItem 設置為PLC1. INCREA100,LinkMode設置為1.

    如果組態王作為顧客,只要把VB 應用程序中提供數據窗體的LinkMode屬性設置為1,其它無需再在VB中增加任何程序。

    在對組態王和VB的初始設置完成后,結合VB編寫的與智能儀表的通信程序,分別按照服務器和顧客運行應用程序,即可實現組態王與VB 的自動數據交換。


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

    本系統采用VB專業版的MSComm控件與VB模塊化編程相結合,實現了VB與智能儀表間的通信,主要程序模塊及部分程序如下:

    ① 程序初始化模塊。主要完成串口的選擇、波特率、幀結構設置、打開串口等串口的設置工作。

    ② 發送數據模塊。由手動發送控制命令字和自動發送控制命令字兩種方式,實現手動采集數據和自動采集數據。其中,自動發送數據方式包括一個定時器發送程序和一個定時器時間響應程序;定時器發送程序用來控制控制命令字的發送周期,定時器響應程序用來完成現場各智能化儀表地址的循環賦值及控制命令字的發送。

    上述模塊中定時器響應程序的部分程序如下:

    Private Sub Timer1 Timer

    Timer1. Enabled = False

    Text_SEND. Text = "" ∥清空發送文本框

    MSComm. OutBufferCount = 0 ∥清除發送緩沖區數據

    Dim OutByte (1 To 3) AsByte

    IfNotMSComm. PortOpen Then ∥保證串口打開

    MSComm. PortOpen = True

    End If

    '24臺積算儀循環數據采集

    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 ∥清除發送緩沖區數據

    MSComm. Output = OutByte

    For j = 1 To 3

    OutByte again ( j) = OutByte ( j)

    Next

    For i = 1 To 50000000

    '延時Next

    End Sub


    ③ 接收數據模塊。通過事件響應的方式來完成現場數據的接收。如果串口收到現場數據,并且使得數據緩沖區中的內容超過一個字節時,就會引發com2EvReceive事件。OnComm 函數用來負責捕捉com2EvReceive事件,并且將發送緩沖區中的現場內容寫入VB的文本框進行顯示,同時與組態王進行DDE數據交換。


    上一頁 1 2 下一頁

    關鍵詞: VB 智能儀表 DDE

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 蕉岭县| 兴山县| 兴化市| 东安县| 平阴县| 丰城市| 隆德县| 宁陕县| 万宁市| 娄底市| 侯马市| 新疆| 郎溪县| 台中县| 湖北省| 商河县| 青河县| 鲁山县| 攀枝花市| 伊金霍洛旗| 阿合奇县| 梨树县| 嘉定区| 石景山区| 同江市| 彰武县| 剑河县| 钦州市| 务川| 调兵山市| 崇信县| 惠水县| 东至县| 双流县| 三河市| 清河县| 随州市| 赫章县| 苍山县| 正镶白旗| 视频|