技術頻道

      基于VB和組態(tài)王的監(jiān)控系統(tǒng)軟件設計

      1 引言
        目前,在監(jiān)控系統(tǒng)軟件的開發(fā)中,比較常見的方法主要有兩種。一種是利用面向對象的可視化編程語言如vb、vc來開發(fā),其中包括數(shù)據(jù)通訊、界面實現(xiàn)、數(shù)據(jù)處理和數(shù)據(jù)庫功能等部分內容;另一種是利用組態(tài)軟件來完成,利用組態(tài)軟件提供的硬件驅動功能直接訪問硬件進行通信,同時利用其圖形化工具實現(xiàn)監(jiān)控界面。前一種方法的程序設計任務比較重,特別是要實現(xiàn)工業(yè)生產(chǎn)中復雜的流程和工藝的逼真顯示要花費大量的時間;后一種方法對硬件的依賴比較大,當組態(tài)軟件不支持相關的硬件時就會受到限制。將兩種方法結合起來則是一種很好的選擇。利用vb、vc提供的強大的數(shù)據(jù)通訊和處理功能實現(xiàn)數(shù)據(jù)采集、控制及處理,利用組態(tài)軟件的圖形化工具來實現(xiàn)界面設計,二者的結合將使監(jiān)控系統(tǒng)軟件的設計更加簡單和靈活。

      2 系統(tǒng)概述
        在某油田生產(chǎn)監(jiān)控系統(tǒng)設計中,筆者采用vb和組態(tài)王的結合設計了整個系統(tǒng)的監(jiān)控軟件。在該系統(tǒng)中有多種測控點,其中一部分需要控制(如壓力),利用plc的模擬量輸入輸出模塊來完成;另一部分只需測量,如現(xiàn)場的液位、流量等,采用光纖液位計、智能流量計等儀表測量,這些儀表具有模擬和數(shù)字通信能力,但不能和組態(tài)王直接通信。因此,采用vb編寫通訊程序與plc和儀表通信,對數(shù)據(jù)進行分析處理,利用vb和組態(tài)王之間的動態(tài)數(shù)據(jù)交換(dde)實現(xiàn)數(shù)據(jù)共享,并在組態(tài)王中設計相應的監(jiān)控界面。
        整個系統(tǒng)采用多級分布式結構,分為2個分控站和1個主控站并要求實現(xiàn)遠程監(jiān)控功能,系統(tǒng)結構如圖1所示。由底層plc控制系統(tǒng)、分控室過程監(jiān)控系統(tǒng)和主控室管理系統(tǒng)以及網(wǎng)絡化遠程監(jiān)控系統(tǒng)構成。
        其中,plc控制系統(tǒng)主要完成現(xiàn)場需要控制設備的控制,plc主要包括模擬量輸入模塊和模擬量輸出模塊及pid控制模塊。
        分控室過程監(jiān)控系統(tǒng)作用是與底層的plc和儀表通訊,獲取生產(chǎn)過程的數(shù)據(jù),顯示工藝流程,歷史曲線圖,實時曲線圖,報警畫面,生成數(shù)據(jù)庫等。

      圖1 系統(tǒng)結構圖

        主控室與分控室工業(yè)控制機通訊,獲取生產(chǎn)工藝參數(shù)報表,報警記錄等資料信息,為管理人員了解總體生產(chǎn)狀況,調整生產(chǎn)計劃提供幫助。
        分控室和主控室系統(tǒng)以ethernet相連,共享數(shù)據(jù)和信息。分控室計算機的信息通過網(wǎng)絡送到主機,由主控室完成數(shù)據(jù)處理的任務,自動生成各種報表,并在指定的時間打印輸出。主控室可以根據(jù)操作人員的選擇切換同步監(jiān)視各個分控室系統(tǒng)的運行情況。主控室計算機還完成網(wǎng)絡服務器的功能,將這些生產(chǎn)參數(shù)上網(wǎng)傳輸,與局域網(wǎng)和internet相連,實現(xiàn)網(wǎng)絡化遠程監(jiān)控。
        主監(jiān)控室和遠程監(jiān)控局域網(wǎng)之間選擇快速以太網(wǎng);分控室和主控室之間由于通信距離較遠和有干擾源存在,選擇rs485串行通信標準。分控室和plc儀表及之間則選擇簡單可靠的rs232串行通信標準。

      3 數(shù)據(jù)采集與通訊程序
        數(shù)據(jù)采集與通訊程序作為與儀表和plc以及與上位機監(jiān)控軟件的接口,在系統(tǒng)軟件中占據(jù)了重要的地位,其功能結構如圖2所示。數(shù)據(jù)采集與通訊程序在分控室監(jiān)控計算機上主要包括與智能儀表、plc的通訊和與主控室的通訊三部分,均用vb編寫,采用vb6.0提供的mscomm通信控件。mscomm控件通過定時查詢來控制串行端口,每隔一段時間讀取或發(fā)送一次數(shù)據(jù),包括定時讀取智能儀表、plc數(shù)據(jù)和定時向主控室計算機傳送數(shù)據(jù)。對plc控制參數(shù)的寫入,則采用事件驅動方式來處理,在程序中設置相關的標志位,需要寫入時由相應事件引起標志位改變,再調用相應的處理和寫入子程序。需要進行圖形化顯示的數(shù)據(jù)則在vb中定義為dde變量,并作為組態(tài)王中相應數(shù)據(jù)變量的dde數(shù)據(jù)服務器。采集和通訊程序生成可執(zhí)行程序,監(jiān)控系統(tǒng)軟件啟動時自動后臺運行。主控室計算機接收分控室定時傳來的數(shù)據(jù),存儲到數(shù)據(jù)庫中,作為遠程監(jiān)控頁面訪問的數(shù)據(jù)源,利用flash、asp等生成動態(tài)網(wǎng)頁并向局域網(wǎng)和internet發(fā)布實現(xiàn)遠程監(jiān)控。

      圖2  通訊程序功能結構

      4 組態(tài)王與vb的dde實現(xiàn)
        基于windows消息機制的dde(dynamic data exchange)是windows實現(xiàn)其應用程序彼此之間通信的一種手段,通過在運行的應用程序之間建立客戶/服務器(client/ server)關系實現(xiàn)在彼此之間交換數(shù)據(jù)或指令。dde可以作為連接監(jiān)控系統(tǒng)現(xiàn)場信號與監(jiān)控軟件的橋梁,允許在兩個windows應用程序間通過相互傳遞dde消息進行會話,從而完成數(shù)據(jù)的請求、應答和傳輸。這樣,若需實現(xiàn)監(jiān)控數(shù)據(jù)與監(jiān)控界面相集成,可事先編寫好具有通用功能的dde服務軟件,為用戶規(guī)定好應用程序名(server)、標題名(topic)和項目名(item),讓用戶自己按提供的規(guī)范去完成監(jiān)視畫面的組態(tài)功能。
        dde提供對不同程序在運行期間實現(xiàn)對數(shù)據(jù)的動態(tài)交換,它是建立在windows內部消息系統(tǒng)和共享全局內存基礎上的一種協(xié)議,用來協(xié)調windows應用程序之間的數(shù)據(jù)交換和命令調用。dde協(xié)議使用三級命名:服務(service)、主題(topic)和數(shù)據(jù)項(item)來標識dde所傳遞的數(shù)據(jù)單元。服務使應用程序具有了提供給其他程序的數(shù)據(jù)交換能力,一般服務就是應用程序的文件名;主題是對服務器有意義的信息單元,許多服務器都有默認的主題。每次dde客戶與服務程序之間的對話都是先由客戶啟動的,所以在每次客戶啟動之前,dde服務器必須先投入運行。dde支持 3種數(shù)據(jù)交換模式:冷鏈結,客戶(client)應用程序請求來自服務器(server)的數(shù)據(jù);溫鏈結,客戶應用程序請求來自服務器的一個通知,以便知道某些特定的數(shù)據(jù)項在何時發(fā)生了變化;熱鏈結,當特定數(shù)據(jù)項發(fā)生變化時,服務器向用戶同時發(fā)送通知和數(shù)據(jù)本身。dde協(xié)議在vb和組態(tài)王中都進行了很好的封裝,可以很容易的實現(xiàn)數(shù)據(jù)的動態(tài)交換。
        為了建立dde連接,需要在組態(tài)王的數(shù)據(jù)詞典里建立dde變量,并登記3個標識名。組態(tài)王運行系統(tǒng)的程序名是“view”,主題規(guī)定為“tagname”,項目是在定義dde變量時的項目名稱。變量名是組態(tài)王使用的,“連接對象名”用來定義服務器程序的信息。組態(tài)王作為客戶向vb請求數(shù)據(jù)時需要在定義變量時說明服務器程序的3個標識名。應用程序名為vb中可執(zhí)行程序的名字,話題為vb中可執(zhí)行程序窗體的linktopic屬性值,項目名設為窗體中控件的名字。
        在vb中dde連接是通過控件的屬性和方法來實現(xiàn)的。需要設置linktopic、linkitem和linkmode3個屬性。當vb軟件擔任客戶時: linktopic屬性指的是服務器軟件的名稱以及在它下面所建立的文件名稱; linkitem屬性指的是服務器軟件的linkmode屬性下指定要傳給vb控制的那些項目。
        linkmode屬性有三種設定:“0”為none,無dde功能;“1”為hot,當服務器數(shù)據(jù)變動時客戶數(shù)據(jù)會隨時更新;“2”為cold,客戶數(shù)據(jù)只有在請求dde時才更新。當vb擔任服務器時,只需設置linktopic和linkitem屬性。linktopic屬性指的是要對客戶請求做出反應的窗體,而窗體中的控件就是客戶所請求對象的項目。
        linkmode屬性有兩種:“0”為none;“1”為server。當設為“1”時,窗體上的控件就可以供應數(shù)據(jù)給已建立dde管道的客戶軟件;設為“0”時,則無dde連接。
        分控站監(jiān)控程序與數(shù)據(jù)采集程序之間存在大量的數(shù)據(jù)交換,由在后臺運行的數(shù)據(jù)采集程序和組態(tài)王之間的dde連接來實現(xiàn)。其中數(shù)據(jù)采集程序作為dde服務器,組態(tài)王作為客戶向其請求數(shù)據(jù)。組態(tài)王與數(shù)據(jù)采集程序的dde連接在組態(tài)王啟動時自動完成。

      5 結束語
        通過dde連接實現(xiàn)了數(shù)據(jù)采集程序與監(jiān)控軟件之間的信息集成和共享。利用組態(tài)王提供的豐富的圖形和組態(tài)工具,可以實現(xiàn)工藝流程圖的實時數(shù)據(jù)刷新、各種曲線和報警等的顯示。這種方法可以充分發(fā)揮vb和組態(tài)王各自的優(yōu)勢,利用vb的數(shù)據(jù)通訊、處理能力和組態(tài)王的圖形化工具,使監(jiān)控系統(tǒng)軟件的開發(fā)更加簡單和靈活。

      文章版權歸西部工控xbgk所有,未經(jīng)許可不得轉載。

      主站蜘蛛池模板: 亚洲一区二区三区精品视频| 精品三级AV无码一区| 国产在线一区二区三区| 亚洲av色香蕉一区二区三区| 亚洲AV午夜福利精品一区二区 | 精品一区二区三区在线播放视频| 精品国产一区二区麻豆| 人妻久久久一区二区三区| 一区二区三区美女视频| 最新中文字幕一区| 色一情一乱一伦一区二区三欧美| 久久久无码一区二区三区| 国产在线观看一区二区三区精品 | 国产精品合集一区二区三区| 人妻少妇AV无码一区二区| 久久精品国产一区二区三区不卡| 日本一区二区在线不卡| 国模视频一区二区| 无码少妇一区二区三区芒果| 无码视频免费一区二三区| 国产精品久久无码一区二区三区网| 韩国一区二区视频| 久久中文字幕无码一区二区 | 一区二区三区免费精品视频| 日韩精品无码久久一区二区三 | 人妻少妇久久中文字幕一区二区| 无码人妻久久久一区二区三区| 国产精品视频一区二区噜噜| 免费日本一区二区| 精品一区二区三区自拍图片区| 精品熟人妻一区二区三区四区不卡| 99久久精品国产一区二区成人 | 日本一区精品久久久久影院| 国产成人无码一区二区三区在线| 国产内射999视频一区| 中文字幕视频一区| 日韩在线视频一区| 中文日韩字幕一区在线观看| 无码人妻久久久一区二区三区| 亚洲精品伦理熟女国产一区二区| 精品国产精品久久一区免费式|