《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 通用數(shù)采監(jiān)控系統(tǒng)數(shù)據(jù)集成設(shè)計(jì)與實(shí)現(xiàn)
通用數(shù)采監(jiān)控系統(tǒng)數(shù)據(jù)集成設(shè)計(jì)與實(shí)現(xiàn)
來源:電子技術(shù)應(yīng)用2012年第6期
曾志強(qiáng),王紹源,譚 蓉
湖南大學(xué) 電氣與信息工程學(xué)院,湖南 長沙410082
摘要: 針對目前數(shù)采監(jiān)控系統(tǒng)缺乏統(tǒng)一的數(shù)據(jù)共享集成模式問題,提出了一種可對不同數(shù)采監(jiān)控系統(tǒng)進(jìn)行統(tǒng)一管理的數(shù)據(jù)共享集成方案。該方案構(gòu)建了一種異構(gòu)數(shù)據(jù)協(xié)議模型,通過配置的方式生成不同數(shù)采系統(tǒng)的數(shù)據(jù)協(xié)議格式,并能將任意自定制協(xié)議進(jìn)行動(dòng)態(tài)注冊或撤消。通過對各采集系統(tǒng)發(fā)送的數(shù)據(jù)進(jìn)行實(shí)時(shí)協(xié)議識(shí)別、數(shù)據(jù)解析、數(shù)據(jù)分發(fā)與監(jiān)控顯示等處理,實(shí)現(xiàn)異構(gòu)采集數(shù)據(jù)的共享集成和集中監(jiān)控。
中圖分類號(hào): TP393
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)06-0132-03
Design and implementation of data integration about common SCADA system
Zeng Zhiqiang, Wang Shaoyuan, Tan Rong
College of Electrical and Information Engineering, Hunan University Changsha, 410082, China
Abstract: For the lack of an unified data sharing integration mode about the current SCADA system, this paper presents a data sharing integrated program which can manage different SCADA systems unifiedly. This program build a Heterogeneous Date protocal mode, it can generate different data protocal fomat of data acquisition system by configuration,and it is able to dynamic registration or withdrawn any custom protocol. Furthermore, the data sent by acquisition system can be shared and centralized monitored after being processed by means of real-time protocol recognition、data analysis、data distribution.
Key words : SCADA; heterogeneous protocols; information integration; data transfer; data integration

    隨著數(shù)采監(jiān)控系統(tǒng)SCADA(Supervisory Control and Data Acquisition)業(yè)務(wù)集成的深入發(fā)展,敏捷、不受限制的采集數(shù)據(jù)的集成已成為關(guān)鍵的業(yè)務(wù)需求。企業(yè)的發(fā)展不僅需要引進(jìn)一些新的應(yīng)用數(shù)據(jù)服務(wù)器系統(tǒng),而且要整合舊的數(shù)據(jù)應(yīng)用服務(wù)器系統(tǒng),以實(shí)現(xiàn)整個(gè)企業(yè)之間甚至不同企業(yè)之間的采集數(shù)據(jù)信息的共享和更新。為實(shí)現(xiàn)異構(gòu)協(xié)議數(shù)據(jù)應(yīng)用服務(wù)器之間的信息共享,需對其傳輸?shù)臄?shù)據(jù)信息進(jìn)行變換,實(shí)現(xiàn)各傳輸協(xié)議之間的集成轉(zhuǎn)換。

    解決協(xié)議集成轉(zhuǎn)換的典型方法,主要有“ESB服務(wù)總線”、“Mule服務(wù)總線”、“基于JBI的ServiceMix服務(wù)總線”以及“CXF服務(wù)總線”[1],但這些方法只支持標(biāo)準(zhǔn)的數(shù)據(jù)傳輸協(xié)議,不能集成各種異構(gòu)數(shù)據(jù)應(yīng)用服務(wù)器自定義的協(xié)議,無法滿足企業(yè)的各種采集數(shù)據(jù)信息共享與升級(jí)的實(shí)際需求。有鑒于此,對異構(gòu)數(shù)據(jù)自定義協(xié)議集成的研究和分析,具有一定的現(xiàn)實(shí)意義。
1 系統(tǒng)設(shè)計(jì)
    針對目前市場上協(xié)議轉(zhuǎn)換方法的不足,本文構(gòu)建一個(gè)能支持自定義協(xié)議集成的系統(tǒng)。該系統(tǒng)通過用戶配置其自定義協(xié)議,不僅實(shí)現(xiàn)接收自定義應(yīng)用傳輸協(xié)議的數(shù)據(jù)流并進(jìn)行解析,而且能發(fā)送自定義應(yīng)用協(xié)議的數(shù)據(jù)給其他異構(gòu)通信應(yīng)用服務(wù)器。此外,系統(tǒng)能支持用戶自定義協(xié)議解析規(guī)則,具有良好的擴(kuò)展性,并具有穩(wěn)定可靠、處理能力強(qiáng)、管理方便等特點(diǎn)。
1.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
    系統(tǒng)可分為應(yīng)用層、業(yè)務(wù)層與資源層三個(gè)部分。應(yīng)用層負(fù)責(zé)對異構(gòu)數(shù)據(jù)協(xié)議的各種應(yīng)用管理及動(dòng)態(tài)展示實(shí)時(shí)數(shù)據(jù)等應(yīng)用功能。業(yè)務(wù)層是整個(gè)系統(tǒng)的核心層,不僅負(fù)責(zé)監(jiān)聽計(jì)算機(jī)各不同端口,對接收的數(shù)據(jù)流進(jìn)行識(shí)別、解析以及存儲(chǔ)、分發(fā)等各種處理,而且為整個(gè)系統(tǒng)提供數(shù)據(jù)支撐,及各種數(shù)據(jù)的增、刪、查、改等數(shù)據(jù)操作功能;資源層包括本系統(tǒng)所有的數(shù)據(jù)資源,即數(shù)據(jù)庫、系統(tǒng)臨時(shí)數(shù)據(jù)及外部采集系統(tǒng)發(fā)送的數(shù)據(jù)流。系統(tǒng)的結(jié)構(gòu)如圖1所示。

1.2 異構(gòu)數(shù)據(jù)協(xié)議解析規(guī)則分析及其管理設(shè)計(jì)
    協(xié)議解析規(guī)則是在解析協(xié)議時(shí)對協(xié)議數(shù)據(jù)流的處理手段。綜合分析各種標(biāo)準(zhǔn)應(yīng)用協(xié)議及各用戶自定義協(xié)議,大致有三種不同的協(xié)議解析規(guī)則:(1)控制規(guī)則:協(xié)議解析時(shí)對整體數(shù)據(jù)流的處理手段,如協(xié)議是否需要回復(fù)、校驗(yàn)和及協(xié)議序列號(hào)等;(2)數(shù)據(jù)前處理規(guī)則:對單個(gè)協(xié)議數(shù)據(jù)解析前的處理手段,如解析前對單個(gè)數(shù)據(jù)字節(jié)大小端進(jìn)行的變換;(3)數(shù)據(jù)解析后處理規(guī)則:對已解析出來的單個(gè)數(shù)據(jù)進(jìn)行處理的規(guī)則,如將解析出的數(shù)據(jù)乘以標(biāo)定。
    規(guī)則管理設(shè)計(jì)原則是用戶能方便地加載自己定制的協(xié)議解析規(guī)則,使得系統(tǒng)具有更強(qiáng)的擴(kuò)展性。本系統(tǒng)擬采取數(shù)據(jù)庫機(jī)制,在系統(tǒng)的應(yīng)用層增加管理功能實(shí)現(xiàn)。
1.3 自定義異構(gòu)數(shù)據(jù)協(xié)議模型設(shè)計(jì)
    協(xié)議格式模型的設(shè)計(jì)原則是保證協(xié)議格式能符合大部分用戶的需求,使得系統(tǒng)具有高度的靈活性和廣泛的適應(yīng)性。
    異構(gòu)協(xié)議的具體幀格式由用戶自由配置。協(xié)議格式由包頭、命令區(qū)、數(shù)據(jù)區(qū)以及包尾組成,格式配置模型如圖2所示。

    考慮到實(shí)際應(yīng)用中各自定義的數(shù)據(jù)協(xié)議格式因需而異,協(xié)議格式框架中的包頭、命令區(qū)以及包尾是協(xié)議的可選部分,在配置時(shí)可根據(jù)協(xié)議具體需求選擇。數(shù)據(jù)區(qū)是協(xié)議不可缺少的部分,協(xié)議的數(shù)據(jù)流包含的類型有數(shù)據(jù)類型與非數(shù)據(jù)類型。數(shù)據(jù)類型是字節(jié)型、短整型、整型、長整型、浮點(diǎn)型及雙精度型以及它們各自的數(shù)組類型組成;非數(shù)據(jù)類型為字符串類型。
 命令區(qū)存放的是協(xié)議的控制數(shù)據(jù)流,解析協(xié)議數(shù)據(jù)流時(shí)按命令區(qū)類型進(jìn)行解析。當(dāng)命令區(qū)參數(shù)不為空時(shí),將解析結(jié)果與參數(shù)相比對,相等則調(diào)用對應(yīng)的協(xié)議控制規(guī)則;當(dāng)命令區(qū)參數(shù)為空時(shí),可直接調(diào)用對應(yīng)的協(xié)議控制規(guī)則進(jìn)行校驗(yàn)。
    數(shù)據(jù)區(qū)存放的是協(xié)議的消息數(shù)據(jù),其類型為數(shù)據(jù)類型,用戶可對數(shù)據(jù)在解析前后進(jìn)行必要的處理。
2 系統(tǒng)實(shí)現(xiàn)
    系統(tǒng)使用基于J2EE平臺(tái)設(shè)計(jì),從而實(shí)現(xiàn)了跨平臺(tái)、可復(fù)用、易維護(hù)等特性。系統(tǒng)整體使用了Spring+Hibernate框架進(jìn)行開發(fā)。系統(tǒng)依賴于Spring的IOC功能對各JavaBean進(jìn)行管理,促進(jìn)系統(tǒng)功能模塊間的松耦合。同時(shí)系統(tǒng)使用Spring對數(shù)據(jù)資源進(jìn)行事務(wù)管理,保證系統(tǒng)數(shù)據(jù)的完整性和系統(tǒng)性能的高效性[2]。系統(tǒng)采用Hibernate框架,以完全面向?qū)ο蟮乃枷雽?shù)據(jù)進(jìn)行管理與優(yōu)化,完全隔離了底層數(shù)據(jù)庫機(jī)制,使得系統(tǒng)適用于Mysql、Sql Server及Oracle等數(shù)據(jù)庫[3]。
   系統(tǒng)包括通信模塊、應(yīng)用管理模塊和數(shù)據(jù)管理模塊三個(gè)部分。模塊之間有連接接口或者由數(shù)據(jù)池進(jìn)行控制連接。通信模塊與應(yīng)用管理模塊為本系統(tǒng)的核心部分,數(shù)據(jù)管理模塊為其他模塊提供數(shù)據(jù)支撐。
2.1 通信模塊
    系統(tǒng)采取NIO Socket通信技術(shù)以及多線程機(jī)制進(jìn)行實(shí)現(xiàn)通信模塊,提高了系統(tǒng)的并發(fā)處理能力、優(yōu)化了系統(tǒng)的響應(yīng)速度。通信模塊的組成如圖3所示。

2.1.1 數(shù)據(jù)接收及協(xié)議識(shí)別、解析模塊
    協(xié)議的識(shí)別與解析是系統(tǒng)的核心功能,正確、高效地進(jìn)行協(xié)議的識(shí)別與解析是系統(tǒng)運(yùn)行的保障。在此功能模塊中,系統(tǒng)基于Mina通信框架進(jìn)行擴(kuò)展、開發(fā)。Mina框架是由Java技術(shù)開發(fā)的一種用于開發(fā)高性能和高可用性的網(wǎng)絡(luò)應(yīng)用程序的基礎(chǔ)框架,該框架具有多協(xié)議支持、多端口監(jiān)聽、異步通信等優(yōu)點(diǎn)[4]。利用Mina框架,不僅可在同一端口監(jiān)聽不同協(xié)議的數(shù)據(jù)流,而且可在多個(gè)端口監(jiān)聽獲取數(shù)據(jù)流。模塊解析數(shù)據(jù)時(shí),考慮到網(wǎng)絡(luò)延遲及TCP/IP的數(shù)據(jù)采用的是分組傳輸方式,將上次解碼剩余的碼流存放起來,與下次同一Session接收的數(shù)據(jù)流合并進(jìn)行整合解碼。 模塊解析數(shù)據(jù)工作流程如圖4所示。

 

 

    系統(tǒng)根據(jù)動(dòng)態(tài)注冊的協(xié)議判別監(jiān)聽不同的端口,接收各采集系統(tǒng)發(fā)送的數(shù)據(jù)流,利用Mina框架的數(shù)據(jù)過濾機(jī)制和數(shù)據(jù)緩沖機(jī)制,對數(shù)據(jù)流實(shí)現(xiàn)“收”慢—“解析”快的策略。合并數(shù)據(jù)流之后,模塊聯(lián)合協(xié)議端口匹配、特征匹配等多種協(xié)議匹配方式對數(shù)據(jù)進(jìn)行協(xié)議匹配,確保協(xié)議匹配的精準(zhǔn)性。
2.1.2 對外數(shù)據(jù)接口模塊
    系統(tǒng)采用一個(gè)線程實(shí)現(xiàn)此功能模塊。線程在系統(tǒng)啟動(dòng)時(shí)初始化運(yùn)行,用于維護(hù)解析成功數(shù)據(jù)的哈希表并分發(fā)數(shù)據(jù)。當(dāng)有解析成功的數(shù)據(jù)放入表中時(shí),此線程從休眠狀態(tài)被喚醒,取出哈希表中的數(shù)據(jù),進(jìn)行三方面的分發(fā):(1)如果此協(xié)議正在被用戶查看實(shí)時(shí)數(shù)據(jù),則線程向界面推送協(xié)議的實(shí)時(shí)數(shù)據(jù)進(jìn)行顯示; (2)發(fā)送給數(shù)據(jù)存儲(chǔ)模塊,進(jìn)行協(xié)議數(shù)據(jù)的存儲(chǔ);(3)查詢系統(tǒng)與外部數(shù)據(jù)請求系統(tǒng)進(jìn)行通信的(協(xié)議,Session)哈希表,根據(jù)條件將數(shù)據(jù)發(fā)送給對外數(shù)據(jù)接口模塊,使其向外部請求數(shù)據(jù)系統(tǒng)發(fā)送實(shí)時(shí)數(shù)據(jù)。如此輪詢分發(fā)完畢解析成功的數(shù)據(jù)后,線程進(jìn)入休眠狀態(tài)。線程采取“休眠—喚醒”機(jī)制,減少了系統(tǒng)占用的內(nèi)存資源,優(yōu)化了系統(tǒng)的性能。
2.1.3 對外數(shù)據(jù)接口功能
    外部系統(tǒng)的數(shù)據(jù)請求分為兩種:實(shí)時(shí)數(shù)據(jù)請求與歷史數(shù)據(jù)請求。系統(tǒng)與外部系統(tǒng)建立連接,根據(jù)外部系統(tǒng)的請求類型進(jìn)行不同的處理:(1)實(shí)時(shí)數(shù)據(jù)請求:維護(hù)系統(tǒng)的通信(協(xié)議,Session)哈希表,發(fā)送所請求協(xié)議的實(shí)時(shí)數(shù)據(jù);(2)歷史數(shù)據(jù)請求:根據(jù)所請求的協(xié)議時(shí)間范圍查詢數(shù)據(jù)庫,返回相應(yīng)的數(shù)據(jù)。
2.2 數(shù)據(jù)管理模塊
    數(shù)據(jù)管理模塊充分利用Hibernate框架出色的對象/關(guān)系數(shù)據(jù)庫映射、靈活的數(shù)據(jù)庫數(shù)據(jù)池管理、面向?qū)ο蟮腍QL語言等優(yōu)點(diǎn),為其他模塊提供數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)更新、數(shù)據(jù)查詢等功能。
2.3 應(yīng)用管理模塊
    應(yīng)用管理模塊負(fù)責(zé)系統(tǒng)應(yīng)用層的功能管理,包括協(xié)議編輯管理、協(xié)議解析規(guī)則管理、協(xié)議生命周期管理及實(shí)時(shí)數(shù)據(jù)顯示四個(gè)應(yīng)用功能模塊。協(xié)議編輯管理與協(xié)議解析規(guī)則管理主要以數(shù)據(jù)管理模塊為支撐,而協(xié)議生命周期管理和實(shí)時(shí)數(shù)據(jù)顯示模塊是與通信模塊進(jìn)行交互實(shí)現(xiàn)。
2.3.1 協(xié)議編輯管理功能模塊
    協(xié)議編輯管理功能模塊包括對數(shù)據(jù)協(xié)議的增、刪、查、改四個(gè)應(yīng)用功能。系統(tǒng)以異構(gòu)數(shù)據(jù)協(xié)議模型為原型,建立數(shù)據(jù)協(xié)議格式的配置界面。協(xié)議的新增、修改與查看功能通過協(xié)議格式配置界面進(jìn)行相應(yīng)操作。
2.3.2 自定義協(xié)議規(guī)則管理功能模塊
    系統(tǒng)將自定義的協(xié)議控制規(guī)則和數(shù)據(jù)處理策略存儲(chǔ)在數(shù)據(jù)庫中。用戶可以采用Java語言開發(fā)實(shí)現(xiàn)系統(tǒng)定義的規(guī)則接口,開發(fā)自己的協(xié)議規(guī)則,將生成的.class文件導(dǎo)入系統(tǒng)數(shù)據(jù)庫。用戶也可以通過界面刪除相應(yīng)的協(xié)議控制規(guī)則或者數(shù)據(jù)處理策略。
2.3.3 協(xié)議生命周期管理功能模塊
     協(xié)議的生命周期是協(xié)議在系統(tǒng)中動(dòng)態(tài)注冊至撤銷的時(shí)間周期,其管理功能模塊包括協(xié)議動(dòng)態(tài)注冊與撤消兩個(gè)功能。此功能模塊與通信模塊進(jìn)行交互,利用通信模塊中Mina框架的動(dòng)態(tài)多端口監(jiān)聽的特性,向框架實(shí)例進(jìn)行動(dòng)態(tài)注冊與撤消,從而維護(hù)系統(tǒng)協(xié)議哈希表中的協(xié)議。
2.3.4 實(shí)時(shí)數(shù)據(jù)顯示功能
    系統(tǒng)利用Java的Swing庫為每個(gè)注冊協(xié)議動(dòng)態(tài)生成一個(gè)JPanel,通過單例模式管理每個(gè)JPanel的句柄。當(dāng)通信模塊分發(fā)解析出協(xié)議數(shù)據(jù)時(shí),系統(tǒng)通過句柄調(diào)用相應(yīng)的JPanel并向其增添實(shí)時(shí)數(shù)據(jù)。當(dāng)用戶查看相應(yīng)協(xié)議的實(shí)時(shí)數(shù)據(jù)時(shí),系統(tǒng)將該協(xié)議的JPanel設(shè)置為可視狀態(tài),從而向用戶展示實(shí)時(shí)接收到的整體數(shù)據(jù)。
    本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于Java語言開發(fā)的異構(gòu)數(shù)據(jù)協(xié)議集成通信系統(tǒng),介紹了異構(gòu)數(shù)據(jù)協(xié)議格式模型以及該系統(tǒng)的各功能模塊。系統(tǒng)核心部分采用NIO Socket技術(shù)以及多線程機(jī)制實(shí)現(xiàn),使系統(tǒng)的性能得以極大提高,同時(shí)具有良好的靈活性、平臺(tái)無關(guān)性及高擴(kuò)展性。本系統(tǒng)為采集數(shù)據(jù)的轉(zhuǎn)換集成提供了一種新的實(shí)現(xiàn)途徑,具有一定的創(chuàng)新和實(shí)用價(jià)值。
參考文獻(xiàn)
[1] 梁愛虎. SOA思想、技術(shù)與系統(tǒng)集成應(yīng)用詳解[M].北京:電子工業(yè)出版社,2007.
[2] WALLS C, BREIDENBACH R. Spring in Action[M].America: Manning Publications, 2005.
[3] BAUER C, KING G. Hibernate in action[M]. Ameircn: Manning Publications,2004.
[4] The Apache Software Foundation. Apache Mina[EB/OL].[2011-06-16]. http://mina.apache.org.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。