【正文】
數(shù)據(jù)采集模塊壓力信號(hào)溫度信號(hào)流量信號(hào)本管線的另外站本站的Doc下位機(jī)通 信 網(wǎng) 絡(luò) 圖 系統(tǒng)的 框架圖 遼寧石油化工大學(xué) 信息與控制工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)用紙 32 監(jiān)控站上位機(jī)軟件系統(tǒng)系統(tǒng)維護(hù) 查詢系統(tǒng) 參數(shù)設(shè)定 打印系統(tǒng) 檢測(cè)運(yùn)行 幫助系統(tǒng) 退出運(yùn)行用戶管理數(shù)據(jù)導(dǎo)出流量查詢報(bào)警查詢顯示屬性運(yùn)行參數(shù)曲線打印報(bào)表打印數(shù)據(jù)通訊 流量分析 壓力分析 方差分析 模擬運(yùn)行數(shù)值濾波數(shù)據(jù)接收實(shí)時(shí)顯示綜合評(píng)判報(bào)警定位動(dòng)態(tài)顯示 圖 軟件 系統(tǒng)的功能 主 框架圖 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 系統(tǒng)框架的分析與設(shè)計(jì) 系統(tǒng)架構(gòu)、系統(tǒng)的非功能性特征,如可擴(kuò)展性、可靠性、強(qiáng)壯性、靈活性、性能等。根據(jù) 項(xiàng)目 關(guān)注的角度不同, 下文主要從 邏輯架構(gòu)、 物理架構(gòu)兩個(gè)方面對(duì)系統(tǒng)的架構(gòu)進(jìn)行合理設(shè)計(jì) 。 從上一節(jié)的軟件需求分析可知,系統(tǒng)的采用兩層 C/S 架構(gòu)。監(jiān)控站負(fù)責(zé)數(shù)據(jù)的采集和處理 ,監(jiān)控中心負(fù)責(zé)對(duì)整條管線進(jìn)行管理,為各個(gè)監(jiān)控站提供必要的服務(wù)和支持。其邏輯架構(gòu)分為三個(gè)層次:表示層、業(yè)務(wù)邏輯、數(shù)據(jù)持久層。 實(shí)時(shí)數(shù)據(jù)從下位機(jī)傳輸?shù)矫總€(gè)站點(diǎn)的監(jiān)控系統(tǒng)后,數(shù)據(jù)被顯示在記錄數(shù)據(jù)變化趨勢(shì)的控件上。如果產(chǎn)生泄漏,泄漏信息將通過組播傳輸?shù)脚R近的計(jì)算機(jī)上。遼寧石油化工大學(xué) 信息與控制工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)用紙 33 而這些都是在表示層就應(yīng)該完成的,并將處理的結(jié)果傳送到下面的業(yè)務(wù)邏輯層。由于監(jiān)控系統(tǒng)相對(duì)獨(dú)立的實(shí)時(shí)運(yùn)行,其安全性也至關(guān)重要。因此在業(yè)務(wù)邏輯之前的表示層就增加安全服務(wù)子功能。這樣可以保證業(yè)務(wù)邏輯層所處理的數(shù)據(jù)是相對(duì)安全可靠的。 表 示 層 業(yè) 務(wù) 邏 輯 數(shù) 據(jù) 持 久 層S E R V E RU D P 服 務(wù)組 播 服 務(wù)安 全 服 務(wù)系 統(tǒng) 管 理 服 務(wù)遠(yuǎn) 程 登 陸 服 務(wù)A P P L I C A T I O N S E R V E RG P S 校 時(shí) 服 務(wù) 結(jié) 束 1* 結(jié) 束 2*T r a n s p o r t 服 務(wù) ( 泄 露 信息 互 傳 )數(shù) 據(jù) 流 管 理權(quán) 限 服 務(wù)報(bào) 表 服 務(wù)任 務(wù) 管 理D A T A A C C E S S主 機(jī) 系 統(tǒng)關(guān) 系 數(shù) 據(jù) 庫(kù)消 息 隊(duì) 列奇 異 點(diǎn) 檢 測(cè) 圖 SCADA 的 邏輯架構(gòu) 系統(tǒng)的物理架構(gòu):系統(tǒng)屬于分布式數(shù)據(jù)采集系統(tǒng),整個(gè)系統(tǒng)分布在若干個(gè)不同的區(qū)域。監(jiān)控站之間通過無線微波或其他方式進(jìn)行信息交互。每個(gè)下位機(jī)采集 到的實(shí)時(shí)數(shù)據(jù)都通過局域網(wǎng)及時(shí)傳送到上位機(jī)即監(jiān)控站上程序中。 遼寧石油化工大學(xué) 信息與控制工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)用紙 34 圖 SCADA 的 物理架構(gòu) 抽象算法工廠的設(shè)計(jì) 由于考慮系統(tǒng)的可擴(kuò)展性和系統(tǒng)可維護(hù)型,系統(tǒng)在設(shè)計(jì)時(shí)應(yīng)該盡量采用面向?qū)ο蟮慕鉀Q方案;將系統(tǒng)變化的風(fēng)險(xiǎn)有可伸縮的體系結(jié)構(gòu)來化解。本文設(shè)計(jì)的檢測(cè)系統(tǒng) 有兩套不同原理的算法并行工作。在發(fā)展過程中,隨著檢測(cè)技術(shù)的不斷更新,算法的不斷改進(jìn),勢(shì)必有更多的新算法加入到系統(tǒng)中來。如何設(shè)計(jì)系統(tǒng)的架構(gòu)將直接影響到系統(tǒng)的可擴(kuò)展性和維護(hù)成本。 本人在實(shí)踐的基礎(chǔ)上創(chuàng)造性地提出了 基于 算法工廠的全新體系架構(gòu),實(shí)踐中這兩種架構(gòu)可以較安全地化解由于算法變化帶來的風(fēng)險(xiǎn)。 對(duì)于可擴(kuò)展性,我們得到的第一種解決方案就是在系統(tǒng)中使用分支結(jié)構(gòu),這樣的結(jié)構(gòu)簡(jiǎn)單,但是不一定能夠符合系統(tǒng)變化的需要,甚至 會(huì) 阻礙系統(tǒng)的演化。 遼寧石油化工大學(xué) 信息與控制工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)用紙 35 算 法 控 制 類基 于 新 息 理 論 的 奇 異點(diǎn) 檢 測(cè) 算 法基 于 小 波 的 奇 異 點(diǎn) 檢測(cè) 算 法新 增 奇 異 點(diǎn) 檢 測(cè) 算 法 圖 算法控 制類結(jié)構(gòu) 對(duì)于這樣的結(jié)構(gòu),在未來需要增加新的 奇異 點(diǎn)檢測(cè)算法,那么增加的算法需要重新編寫數(shù)據(jù)預(yù)處理、數(shù)據(jù)濾波等重復(fù)性工作。另外新增拐點(diǎn)檢測(cè)算法需要的數(shù)據(jù)也許和以前的算法不相同,而這些算法并行工作的情況下將造成 龐大組合的危險(xiǎn) 。對(duì)于復(fù)雜的工況,算法的組合和未來可能使用的每個(gè)新組合,都必須創(chuàng)建一個(gè)新的具體類(即算法控制類的新版本)。例如 : 需要配置新息 奇異 點(diǎn)算法和小波算法到系統(tǒng)中,就需要增加一個(gè)新類處理這以情況。如果需要一個(gè) 判斷 處理算法優(yōu)劣的應(yīng)用程序,那么又需要另一個(gè)類。這樣,算法控制類將又許多派生類出現(xiàn)。 顯然 這樣 的方案也違反了“優(yōu)先使用對(duì)象聚集而不是類繼承”的基本原則。因?yàn)闆]有遵循這一原則說明在發(fā)生其他變化時(shí),這些類會(huì)在類層次中進(jìn)一步降級(jí)。新息檢測(cè)算法 和 小波檢測(cè) 都是算法程序 類 ,所以抽象概念應(yīng)該就是濾波算法和拐點(diǎn)檢測(cè)算法 。 之所以是“概念性地”,是因?yàn)闉V波算法和拐點(diǎn)檢測(cè)算法并不是從同一個(gè)抽象類派生出來的。所以在系統(tǒng)架構(gòu)設(shè)計(jì)中,增加一個(gè)適配器,對(duì)這些濾波和拐點(diǎn)檢測(cè)算法進(jìn)行適配,使它們看起來屬于一個(gè)抽象類。 遼寧石油化工大學(xué) 信息與控制工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)用紙 36 檢 測(cè) 算 法 產(chǎn) 品 i具 體 的 檢 測(cè) 算 法 產(chǎn) 品算 法 創(chuàng) 建 器具 體 算 法 創(chuàng) 建 器i n A n O p e r a t i o n ( ) 。h a v e t h e f o l l o w i n g 。. . .p r o d u c t = F a c t o r y M e t h o d ( )r u n a n e w C o n c r e t e P r o d u c t新 息 檢 測(cè) 算 法 產(chǎn) 品小 波 檢 測(cè) 算 法 產(chǎn) 品 圖 算法工廠的類結(jié)構(gòu)模型 通過以上的軟件體系結(jié)構(gòu) 的設(shè)計(jì),在新增加檢測(cè)算法的情況下,可以很從容地面對(duì)變化。對(duì)與算法工廠,仍有改進(jìn)的余地,因?yàn)橐O(shè)計(jì)一個(gè)可擴(kuò)展 架構(gòu)的的泄漏檢測(cè)系統(tǒng),那么勢(shì)必需要強(qiáng)調(diào)一系列相關(guān)的算法產(chǎn)品對(duì)象 設(shè)計(jì),以便進(jìn)行聯(lián)合使用。因此需要對(duì)算法創(chuàng)建類進(jìn)行進(jìn)一步的抽象,從而得到抽象算法工廠模式。 抽象算法工廠的模式結(jié)構(gòu)圖如下所示: + 創(chuàng) 建 新 息 算 法 ( )+ 創(chuàng) 建 小 波 算 法 ( )抽 象 算 法 工 廠新 息 算 法 工 廠新 增 算 法 工 廠 小 波 算 法 工 廠客 戶 端1*抽 象 的 新 息 算 法 產(chǎn) 品新 息 算 法 對(duì) 象抽 象 的 小 波 算 法 產(chǎn) 品改 進(jìn) 新 息 算 法 對(duì) 象小 波 算 法 對(duì) 象 改 進(jìn) 小 波 算 法 對(duì) 象** 圖 抽象算法工廠類結(jié)構(gòu)模型 遼寧石油化工大學(xué) 信息與控制工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)用紙 37 這樣設(shè)計(jì)的有點(diǎn)在于: 它分離了具體的類抽象的算法工廠 (Abstract Factory)可以幫助系統(tǒng)設(shè)計(jì)師控制一個(gè)應(yīng)用創(chuàng) 建的對(duì)象類。因?yàn)橐粋€(gè)工廠封裝創(chuàng)建算法產(chǎn)品對(duì)象的過程,它將客戶與類的實(shí)現(xiàn)分離??蛻敉ㄟ^它們的抽象接口操縱實(shí)例。這樣算法產(chǎn)品的類名也在具體的工廠實(shí)現(xiàn)中被分離開。它們不出現(xiàn)在客戶代碼中。 它使得易于交換產(chǎn)品系列 一個(gè)抽象的算法工廠在一個(gè)應(yīng)用中僅出現(xiàn)以此。即在它初始化的時(shí)候。這使得改變一個(gè)應(yīng)用的具體工廠變得很容易。它只需要改變具體的工廠即可使不同的產(chǎn)品配置,這是因?yàn)橐粋€(gè)抽象工廠創(chuàng)建了一個(gè)完整的產(chǎn)品系列,所以整個(gè)產(chǎn)品系列會(huì)立刻改變。 設(shè)計(jì)時(shí)需要注意的是,一個(gè)應(yīng)用中一般每個(gè)算法系列只需要一個(gè)創(chuàng)建算法工廠的實(shí)例。因此工廠 需要做成一個(gè)單件,只能被實(shí)例化一次。 生數(shù)據(jù)的軟件適配器設(shè)計(jì) 泄漏檢測(cè)系統(tǒng)設(shè)計(jì)的一個(gè)目標(biāo)就是要提高可擴(kuò)展性,考慮到檢測(cè)技術(shù)的不斷改進(jìn)和發(fā)展,檢測(cè)所用的信號(hào)也勢(shì)必不斷變化。如何使得信號(hào)的變化與系統(tǒng)檢測(cè)算法做到無縫連接,成為實(shí)現(xiàn)系統(tǒng)可擴(kuò)展性的一大難題。 在系統(tǒng)的設(shè)計(jì)中,我通過在原始信號(hào)與信號(hào)處理算法之間增加一個(gè)數(shù)據(jù)適配器,使得原始信號(hào)可以在實(shí)際應(yīng)用中不斷地?cái)U(kuò)展或者減少。 系統(tǒng)采集的原始數(shù)據(jù)為統(tǒng)一在這里都被稱為生數(shù)據(jù)。在系統(tǒng)中定義 Sample Data 類是由下位機(jī)采集到的數(shù)據(jù)形成的數(shù)據(jù)包。就目前的應(yīng)用 而言 Sample Data 類中包含的數(shù)據(jù)有:壓力信號(hào)、流量信號(hào)、溫度。在不久的未來檢測(cè)信號(hào)中還要增加聲音信號(hào)等其他信號(hào)。在 Sample Data 增加聲音信號(hào)后,如果不對(duì)系統(tǒng)作任何處遼寧石油化工大學(xué) 信息與控制工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)用紙 38 理,那么系統(tǒng)是無法正確工作的。利用軟件設(shè)計(jì)中的適配器模式,對(duì)現(xiàn)有的設(shè)計(jì)進(jìn)行改造,使得類的接口轉(zhuǎn)換為系統(tǒng)希望的另一個(gè)接口。使得新的 Sample Data 類由于接口不兼容而不能一起工作的類可以在一起工作。下圖描述了采用適配設(shè)計(jì)的軟件結(jié)構(gòu)圖。 C l i e n t+ r e q u e s t ( )T a r g e t**+ r e q u e s t ( )A d a p t e rA d a p t e e s p e c i f i c R e a u e s t ( )+ s p e c i f i c R e q u e s t ( )A d a p t e e a d a p t e e** 圖 生數(shù)據(jù)適配器模型 類 Adapter 模式的工作原理是創(chuàng)建一個(gè)新類,該類同時(shí)從兩個(gè)類繼承,一方面從定義其接口的抽象類公開繼承,另一方面從訪問其現(xiàn)有的原有繼承。因?yàn)槔^承可以使子類具備父類所有的屬性,而且可以使子類擁有自己特有的屬性。因此系統(tǒng)演進(jìn)過程中,新增加的信號(hào)可以被隱藏在子類中,而類之間都通過父類進(jìn)行信息傳遞。這樣充分利用面向?qū)ο蟮倪t綁定技術(shù),達(dá)到規(guī)避因數(shù)據(jù)變化引起風(fēng)險(xiǎn)的目的。 數(shù)據(jù)庫(kù)的選擇與設(shè)計(jì) 數(shù)據(jù)庫(kù)作為數(shù)據(jù)串行化的工具,其對(duì)系統(tǒng)整體的實(shí)時(shí)性能有著直接的影響。從存儲(chǔ)的介質(zhì)區(qū)分,目前可選用的數(shù)據(jù)庫(kù)分為磁盤數(shù)據(jù)庫(kù)( DRDB Diskresident 遼寧石油化工大學(xué) 信息與控制工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)用紙 39 database)例如 SQ1 server,以及內(nèi)存數(shù)據(jù)庫(kù)( MMDB) 。但無論選擇何種數(shù)據(jù)庫(kù)都必須做到實(shí)時(shí)性、準(zhǔn)確性。 對(duì)于本系統(tǒng)由于多種算法并行工作,因此對(duì)系統(tǒng)資源的消耗大。為了支撐系統(tǒng)的可靠運(yùn)行,提高系統(tǒng)的實(shí)時(shí)性能;需要把耗時(shí)的工作盡量降到最低限度。寫數(shù)據(jù)庫(kù)作為耗時(shí)的機(jī)械操作,其在系統(tǒng)運(yùn)行中的比重應(yīng)該盡可能的小。數(shù)據(jù)庫(kù)選擇中考慮的因素有: 選擇的數(shù)據(jù)庫(kù)是否能夠滿足實(shí)時(shí)性的要求; 選擇的數(shù)據(jù)庫(kù)是否能夠滿足大數(shù)據(jù)量的要求,由于一條管線通常有 10 余 個(gè)站點(diǎn),而數(shù)據(jù)每秒都需要存儲(chǔ), 所以長(zhǎng)時(shí)間運(yùn)行勢(shì)必產(chǎn)生大量的數(shù)據(jù); 數(shù)據(jù)庫(kù)是否易于維護(hù) 。 因此實(shí)時(shí)性高的數(shù)據(jù)庫(kù)成為系統(tǒng)的必要選擇。 實(shí)時(shí)數(shù)據(jù)庫(kù)的主要特點(diǎn)是: 1) 時(shí)間約束 。 實(shí)時(shí)數(shù)據(jù)庫(kù)是其數(shù)據(jù)和事務(wù)都有明確的時(shí)間限制的數(shù)據(jù)庫(kù)。在實(shí)時(shí)系統(tǒng)中,具有時(shí)間約束的數(shù)據(jù)主要是來自于外部的動(dòng)態(tài)數(shù)據(jù),以及由這些數(shù)據(jù)求導(dǎo)出的新的數(shù)據(jù)。數(shù)據(jù)庫(kù)中的數(shù)據(jù)必須如實(shí)反映現(xiàn)場(chǎng)設(shè)備的運(yùn)行情況。 2) 事務(wù)調(diào)度 。 實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)的正確性不僅依賴于事務(wù)的邏輯結(jié)果,而且依賴于該邏輯結(jié)果所產(chǎn)生的時(shí)間。事務(wù)調(diào)度既要考慮事務(wù)的執(zhí)行時(shí)間,也要考慮事務(wù)的截止期、緊迫程度等因素。 在一般的實(shí)時(shí)系統(tǒng)設(shè)計(jì) 中, 實(shí)時(shí)數(shù)據(jù)庫(kù)主要承擔(dān)系統(tǒng)所有實(shí)時(shí)數(shù)據(jù)的存儲(chǔ)和管理,為相關(guān)的功能提供快速、正確的實(shí)時(shí)信息。為了達(dá)到實(shí)時(shí)性,實(shí)時(shí)數(shù)據(jù)庫(kù)在系統(tǒng)運(yùn)行過程中,應(yīng)常駐內(nèi)存,以保證讀取速度。對(duì)于實(shí)時(shí)性要求不高的數(shù)據(jù)可存放在外存儲(chǔ)空間。因此,在實(shí)時(shí)數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),妥善處理時(shí)間與存儲(chǔ)空間的矛盾, 才能 保證系統(tǒng)的實(shí)時(shí)性。 在泄漏檢測(cè)系統(tǒng)中利用 數(shù)據(jù)在線壓縮 技術(shù)。 在實(shí)際的數(shù)據(jù)存儲(chǔ)中, 由于采集精度的要求,每秒鐘下位機(jī)向上位機(jī)傳輸 50 組數(shù)據(jù)。遼寧石油化工大學(xué) 信息與控制工程學(xué)院 畢業(yè)設(shè)計(jì)(論文)用紙 40 對(duì)于需要長(zhǎng)時(shí)間運(yùn)行的泄漏檢測(cè)系統(tǒng)而言, 實(shí)時(shí)數(shù)據(jù)庫(kù) 需要 高效處理海量數(shù)據(jù) 。如果 采集的數(shù)據(jù) 數(shù)據(jù)被原封不動(dòng)地存儲(chǔ)勢(shì)必需要大 量?jī)?nèi)存和磁盤空間以及耗費(fèi)大量的時(shí)間,因此實(shí)時(shí)數(shù)據(jù)進(jìn)行在線壓縮存儲(chǔ) 技術(shù),即解決數(shù)據(jù)存儲(chǔ)又保證了數(shù)據(jù)的實(shí)時(shí)性 。 在本設(shè)計(jì)方案中,我采用了實(shí)時(shí)數(shù)據(jù)庫(kù)與磁盤數(shù)據(jù)庫(kù)相結(jié)合的方式。原因主要有一下幾點(diǎn): 內(nèi)存數(shù)據(jù)庫(kù)將整個(gè)數(shù)據(jù)庫(kù)或者大部分熱點(diǎn)數(shù)據(jù)存放在主存中,消除了 I/O 瓶頸。數(shù)據(jù)駐留內(nèi)存可以使數(shù)據(jù)存取主要集中在內(nèi)存中,縮短系統(tǒng)的相應(yīng)時(shí)間。而傳統(tǒng)的磁盤數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)主備份位于磁盤上,實(shí)時(shí)性不高,速度相對(duì)較慢,但存儲(chǔ)的數(shù)據(jù)量大。 SQL SERVER 是典型的磁盤數(shù)據(jù)庫(kù),雖然它可以將數(shù)據(jù)緩沖到內(nèi)存中,但是 SQL SERVER 的數(shù) 據(jù)存儲(chǔ)訪問、索引等機(jī)制都是針對(duì)磁盤進(jìn)行優(yōu)化的,應(yīng)用程序訪問數(shù)據(jù)庫(kù)時(shí),要進(jìn)行磁盤地址到內(nèi)存地址的轉(zhuǎn)換,性能遠(yuǎn)不如內(nèi)存數(shù)據(jù)庫(kù)。 SQL SERVER 采用的是 ?B 樹索引,而 ?B 樹索引的最大特點(diǎn)是動(dòng)態(tài)平衡,但是由于 ?B 樹索引的空間利用率和時(shí)間性能都不如 T 樹和 HASH 索引,因此從這一點(diǎn)上磁盤數(shù)據(jù)庫(kù)也適合與本系統(tǒng)這樣實(shí)時(shí)性要求較高的應(yīng)用。 由于系統(tǒng)中兩種算法可能同時(shí)運(yùn)行,算法的大量 數(shù)學(xué) 運(yùn)算其時(shí)間 復(fù)雜度較高,在這種情況下,利用內(nèi)存數(shù)據(jù)庫(kù)的獨(dú)特優(yōu)勢(shì),可以有效