關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 一個分布式監(jiān)控系統(tǒng)的軟件設(shè)計

一個分布式監(jiān)控系統(tǒng)的軟件設(shè)計

作者: 時間:2016-12-22 來源:網(wǎng)絡(luò) 收藏

摘 要討論了一個監(jiān)控系統(tǒng)的軟件設(shè)計。給出了系統(tǒng)結(jié)構(gòu)、冗余設(shè)計及軟件設(shè)計要點。

本文引用地址:http://2s4d.com/article/201612/332865.htm

關(guān)鍵詞: 式系統(tǒng) 網(wǎng)絡(luò)通信ActiveX自動化

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

系統(tǒng)結(jié)構(gòu)見圖1,這是一個兩級式監(jiān)控系統(tǒng)。在現(xiàn)場級兩臺互為熱備的現(xiàn)場計算機通過現(xiàn)場總線與現(xiàn)場設(shè)備相連,實時采集現(xiàn)場數(shù)據(jù)并向現(xiàn)場設(shè)備傳送監(jiān)控級發(fā)來的控制指令,同時把各種實時信息發(fā)送到監(jiān)控級。在監(jiān)控級,各監(jiān)控計算機通過TCP/IP以太網(wǎng)與各現(xiàn)場計算機相連以獲取現(xiàn)場數(shù)據(jù),并提供GUI以便操作人員監(jiān)視及控制現(xiàn)場設(shè)備。

2 冗余設(shè)計

對于可靠性要求較高的系統(tǒng),常常采用冗余設(shè)計以提高可靠性。本系統(tǒng)的現(xiàn)場計算機為雙機熱備,監(jiān)控級計算機也可根據(jù)需要進行雙機熱備。

雙機熱備必須解決故障識別和狀態(tài)鏡象兩個問題,但為實現(xiàn)快速切換,應(yīng)盡量簡化算法,同時盡量減少交換信息,因此如果狀態(tài)信息不是很重要,則不必隨主備信息一起傳送?;谏鲜鏊枷耄x的主備機報文格式見圖2,各字段的含義如下:

(1)信息標(biāo)識:標(biāo)識報文類型,共定義了三種報文:

a)普通報文:由主備機正常進行交互用的報文,稱主機發(fā)往備機的報文為請求報文,備機發(fā)往主機的報文為應(yīng)答報文。

b)切換報文:當(dāng)主機想轉(zhuǎn)為備機時,發(fā)送此報文。該報文是非常必要的,一種情況是當(dāng)現(xiàn)場計算機與現(xiàn)場設(shè)備失去聯(lián)系時,就需要主動進行切換。

c)退出報文:當(dāng)某一臺機器退出時,應(yīng)發(fā)送此報文,否則對方將認(rèn)為該機故障。

(2)主備標(biāo)志:指示本站是否為主機,“1”表示主機,“0”表示備機。

(3)判決標(biāo)志:當(dāng)主備機的主備標(biāo)志一致,即兩者同時為主機或同時為備機時,應(yīng)根據(jù)判決標(biāo)志進行切換,該標(biāo)志可以預(yù)先設(shè)定為一個值,也可以取IP地址或啟動時間作為判決標(biāo)志。判決條件可以取大于或小于。

具體實現(xiàn)方法為:主機定時向備機發(fā)送請求報文,備機收到后就發(fā)一個應(yīng)答報文;同時另設(shè)一定時器,當(dāng)收到對方的一個報文就把該定時器清0,與此同時定時器定時加1。若定時器溢出,則表示對方故障,否則表示對方正常。程序包括定時發(fā)送、故障檢測及接收處理三部分,它們是并行工作的,流程圖見圖3。通過對發(fā)送定時器及檢測定時器定時間隔及檢測次數(shù)的設(shè)定,可以決定切換時間。

3 軟件設(shè)計

系統(tǒng)軟件分為現(xiàn)場級與監(jiān)控級兩部分,其中監(jiān)控級包括人機接口及監(jiān)控級自動化服務(wù)器兩部分,見圖4。下面討論一下軟件設(shè)計中的關(guān)鍵問題。

3.1 數(shù)據(jù)傳輸方式及通信可靠性

本系統(tǒng)的網(wǎng)絡(luò)操作系統(tǒng)為Windows NT,網(wǎng)絡(luò)通信協(xié)議為TCP/IP,采用WindowsSocket進行通信程序的設(shè)計。Windows Socket有流式與數(shù)據(jù)報兩種。前者為面向連接服務(wù),后者為無連接服務(wù)。考慮到監(jiān)控系統(tǒng)的數(shù)據(jù)量較小,而對實時性要求較高,因此采用數(shù)據(jù)報方式。

采用數(shù)據(jù)報方式的另一點考慮是,它可以廣播。在本系統(tǒng)中,現(xiàn)場工控機采用定時廣播的方式傳輸數(shù)據(jù),這種方式有如下優(yōu)點:

1) 解決了主備機之間的數(shù)據(jù)鏡像問題。

2) 不需設(shè)置IP地址。這有兩層含義,一方面發(fā)送方不需知道接收方的地址,因為IP廣播地址是個固定地址;另一方面,各監(jiān)控計算機也不必知道各現(xiàn)場計算機的IP地址,因為當(dāng)它收到廣播后,就可以獲得發(fā)送方的IP地址,然后把它存在一張地址表中,以后向該現(xiàn)場計算機發(fā)送指令時就可以直接從地址表中取出其IP地址。這種處理方法有點類似于TCP/IP協(xié)議地址解析中的動態(tài)聯(lián)編1。但數(shù)據(jù)報方式的可靠性不如流式高。對于現(xiàn)場計算機,因為數(shù)據(jù)定時廣播,這種可靠性的差別并無大礙。但對監(jiān)控計算機而言,它發(fā)出一個請求,必須知道該請求是否被響應(yīng)。因此采用了異步確認(rèn)機制(見圖5),處理過程為:在發(fā)送端設(shè)一張表,當(dāng)發(fā)送一個請求時為該請求分配(或預(yù)先分配)一個標(biāo)識,然后把該標(biāo)識隨同請求一起發(fā)出去,同時啟動超時定時器;接收端響應(yīng)該請求后,發(fā)回一個含有請求標(biāo)識的應(yīng)答報文;若接收端收到該應(yīng)答報文,則刪除表中的請求標(biāo)識,同時定時器停止,否則將發(fā)生超時,表示請求未被響應(yīng)。

3.2 系統(tǒng)信息的處理

監(jiān)控系統(tǒng)中主要包括如下三種數(shù)據(jù):

(1)現(xiàn)場數(shù)據(jù):包括現(xiàn)場信號測量值、設(shè)備運行狀態(tài)、報警信息及其它由現(xiàn)場計算機產(chǎn)生的數(shù)據(jù)。

(2)控制指令:如控制數(shù)字量輸出、模擬量輸出及現(xiàn)場設(shè)備等的控制字。

(3)系統(tǒng)信息:主要是一些系統(tǒng)管理信息,如控制權(quán)限,監(jiān)控計算機登錄狀態(tài)等。

這些信息要么由現(xiàn)場計算機采集或產(chǎn)生,要么由監(jiān)控計算機寫入現(xiàn)場計算機,但最終還是要存入現(xiàn)場計算機并向外定時廣播。前兩種信息由于直接產(chǎn)生于或作用于現(xiàn)場,因此存于各自的現(xiàn)場計算機。但系統(tǒng)信息是全局信息,是所有站共享的信息,這樣存在著如下問題:當(dāng)監(jiān)控計算機寫入系統(tǒng)信息(如登錄)時,應(yīng)把它發(fā)向哪個現(xiàn)場計算機呢?如果向所有站廣播,就存在著一致性問題。正確的做法是:把一臺現(xiàn)場計算機作為系統(tǒng)服務(wù)器,系統(tǒng)信息都寫入該服務(wù)器中,然后由它向其它站廣播。那么應(yīng)選擇哪個現(xiàn)場計算機,并且使所有站(包括現(xiàn)場級與監(jiān)控級)都選擇同一個現(xiàn)場計算機?本系統(tǒng)采取一種動態(tài)算法實現(xiàn)了這種選擇,并且當(dāng)該現(xiàn)場計算機故障時自動轉(zhuǎn)移到另外的現(xiàn)場計算機。

具體方法參見圖6:設(shè)一張表及一個定時器組,當(dāng)收到一個站的信息時就把該站的IP地址存入該表中,同時把相應(yīng)的定時器清0;若定時器溢出,則將該站的IP地址置為無效值。當(dāng)各計算機尋找系統(tǒng)服務(wù)器時,就順序搜索該表,找到第一個有效IP地址,就把它作為系統(tǒng)服務(wù)器。

3.3 監(jiān)控級自動化服務(wù)器的設(shè)計

監(jiān)控級軟件主要是為操作人員提供人機界面,但它同時還要與現(xiàn)場計算機進行通信,為把界面設(shè)計分離開來,我們采用了MicrosoftActivX自動化技術(shù)實現(xiàn)了這一設(shè)計思想。這樣,界面設(shè)計人員可以采用目前流行的各種可視化開發(fā)工具集中精力進行界面設(shè)計,而且可以根據(jù)需要設(shè)計不同的界面,在我們的系統(tǒng)中就有兩種界面。

自動化技術(shù)是Microsoft ActivX組件技術(shù)中的一種,它包括自動化服務(wù)器和自動化控制器兩種,其中自動化控制器是指使用和操縱自動化服務(wù)器的應(yīng)用程序(如VBA),自動化技術(shù)通常是指自動化服務(wù)器。另一種最為常用的組件技術(shù)是ActiveX控件,但一個ActiveX控件只能提供一個lDispatch接口,而一個自動化服務(wù)器可以提供多個lDispatch接口。通過lDispatch接口,客戶程序可以訪問該接口的屬性和方法。對于VBA客戶程序來說,訪問lDispatch接口的語法與訪問VBA對象的語法是一樣的,因此,對于VBA客戶程序而言,一個lDispatch接口就相當(dāng)于一個對象。

自動化服務(wù)器通常采用層次結(jié)構(gòu)來組織對象,Microsoft的許多自動化服務(wù)器都是這樣組織的,如數(shù)據(jù)訪問對象DAO。本系統(tǒng)的自動化服務(wù)器也采用了這樣一種結(jié)構(gòu),見圖7, 其中Workstation是指監(jiān)控級各站,Station是指現(xiàn)場級各站,這只是個示意圖。這種結(jié)構(gòu)一方面體現(xiàn)了對象間的層次及包含關(guān)系,另一方面對象的創(chuàng)建、刪除及組織也比較方便,整個服務(wù)器只需一個ProgID來標(biāo)識。

客戶程序創(chuàng)建服務(wù)器的過程為:首先利用ProgID創(chuàng)建頂層對象(Application),然后利用該頂層對象提供的方法創(chuàng)建各集合并向其中添加元素,對集合的操作類似于VBA中的Collection對象,主要有Count(),ltem(),Add()等幾種。應(yīng)當(dāng)指出,上面所討論的對象層次結(jié)構(gòu)及集合的概念只是一種設(shè)計思想,并非有現(xiàn)成的設(shè)計工具,我們采用VC++6.0設(shè)計了自己的集合類及自動化服務(wù)器,客戶端采用VB6.0

本系統(tǒng)是按照分布式的思想進行設(shè)計的。分布式的特點就在于各節(jié)點是平等的,在數(shù)據(jù)傳輸方式、冗余設(shè)計及系統(tǒng)服務(wù)器的選擇等處理上都體現(xiàn)了這一思想。本文給出的冗余設(shè)計,是基于網(wǎng)絡(luò)的一種方法,其實現(xiàn)不依賴于操作系統(tǒng)、編程語言,是一種比較通用的方法。組件技術(shù)是軟件發(fā)展的方向,本系統(tǒng)利用自動化技術(shù)將界面設(shè)計與底層設(shè)計分離開來,各自進行獨立設(shè)計,充分體現(xiàn)了組件技術(shù)的優(yōu)越性。

參考文獻(xiàn)

1 周明天,汪文勇. TCP/IP網(wǎng)絡(luò)原理與技術(shù).北京:清華大學(xué)出版社

2 (美)Jerry Anderson. visual C++5 ActiveX編程指南.北京:清華大學(xué)出版社

3 (美)Peter Norton, Rob McGregor.MFC開發(fā)windows95/NT4應(yīng)用程序.北京:清華大學(xué)出版社

(收稿日期:1999-06-16)

 

 



關(guān)鍵詞: 分布

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉