《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 通用數采監(jiān)控系統(tǒng)數據集成設計與實現(xiàn)
通用數采監(jiān)控系統(tǒng)數據集成設計與實現(xiàn)
來源:電子技術應用2012年第6期
曾志強,王紹源,譚 蓉
湖南大學 電氣與信息工程學院,湖南 長沙410082
摘要: 針對目前數采監(jiān)控系統(tǒng)缺乏統(tǒng)一的數據共享集成模式問題,提出了一種可對不同數采監(jiān)控系統(tǒng)進行統(tǒng)一管理的數據共享集成方案。該方案構建了一種異構數據協(xié)議模型,通過配置的方式生成不同數采系統(tǒng)的數據協(xié)議格式,并能將任意自定制協(xié)議進行動態(tài)注冊或撤消。通過對各采集系統(tǒng)發(fā)送的數據進行實時協(xié)議識別、數據解析、數據分發(fā)與監(jiān)控顯示等處理,實現(xiàn)異構采集數據的共享集成和集中監(jiān)控。
中圖分類號: TP393
文獻標識碼: A
文章編號: 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

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

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

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

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

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

 

 

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

此內容為AET網站原創(chuàng),未經授權禁止轉載。