本站小編為你精心準備了實時數據采集模型設計與開發參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
摘要:
數據采集是構建集團/區域公司級實時監管系統的重要基礎。文章針對已有數據采集軟件開發中功能模塊重復開發,應用中測點配置不統一,不支持冗余部署,故障恢復能力不足等問題,采用C/S架構,設計了可靠實時數據采集模型,該模型包括數據采集、數據緩存、數據傳輸和數據持久性4個模塊。實際應用表明,基于該模型開發的實時數據采集軟件易于配置,數據傳輸可靠,故障恢復能力強,能滿足實時系統的數據采集要求。
關鍵詞:
實時數據;統一配置;數據采集;數據緩存;冗余傳輸
生產數據是各類電力信息系統的應用基礎,從廠級監控信息系統(SupervisorInformationSystem,SIS)到集團/區域(省級)公司級實時監管系統,實時數據采集始終是實時系統不可或缺的部分[1-2]。在以往的數據采集軟件開發中,功能模塊重復開發較為嚴重,開發效率不高,軟件質量管控工作量大;在工程應用中,數據采集軟件測點配置多采用本地方式,無法進行統一管理,不便于配置、查詢,不支持冗余配置,故障恢復能力不足。本文以實時監管系統中的數據采集為基礎,結合實時數據采集的特性,針對數據抽取、轉換、傳輸、數據緩存及冗余傳輸等相關環節進行分析,給出了較為通用的設計模型。
1數據采集軟件的功能需求
在集團/區域(省級)公司實時監管系統中,絕大多數的基礎數據來自于下轄電廠實時生產系統。實時監管系統中的數據監測、數據報警、性能指標計算,污染物排放定量分析及經濟運行等相關功能都圍繞一次生產數據展開[1-3]。數據采集軟件需要完成對監管電廠海量實時生產數據的篩選,完成篩選后數據的網絡傳輸,最終匯總到公司側的數據庫,實現生產數據的持久化。實時監管系統中,因監管電廠數量眾多,各個電廠信息化程度差異大,接入的數據源差異很大。對于已有廠級監控信息系統(SupervisoryInformationSystem,SIS)、管理信息系統(ManagementInforma-tionSystem,MIS)的電廠,數據源主要包括實時數據庫和關系數據庫。實時數據庫應用較為廣泛的包括PI、eDNA、openPlant、Rython[4]等;關系數據庫主要包括MSSqlserver、Oracle等。部分廠站側沒有集成后的信息系統,需要從生產系統中直接采集,通信協議包括用于過程控制的OLE(OLEforProcessControl,OPC)協議,IEC101、IEC104、CDT、ModBus等規約,少數系統需要采用自定義用戶數據報協議(UserDatagramProtocol,UDP)?;谶@種現狀,數據采集軟件必須要解決多種數據源的數據抽取。
實時監管系統在構建中需要兼顧數據完整性和數據規模2方面,既要保證采集數據能滿足性能計算、分析的需要,又要避免采集數據規模過大,給主站側系統帶來不必要的壓力。數據在采集中還需要完成篩選,及源測點和目標測點的映射;在傳輸中完成實時數據及時戳轉換,同時要為工程實施提供易用的測點檢索、維護功能等。在大多數實時監管系統中,從電廠的數據源到主站側服務器,地域跨度較大,中間網絡狀況較為復雜。這種情況要求在出現網絡異常時,軟件能及時緩存數據,待通信恢復后,按照數據回補策略重新發送,保證實時數據的完整性。因此,數據采集軟件必須能保證數據的可靠、高效傳輸,要能滿足實時系統的相關功能指標要求。綜上所述,實時數據采集軟件必須涵蓋的功能包括:支持多種類型數據源的采集;支持數據抽取篩選,自動完成測點的映射,支持測點和數據的標準化轉換;完成實時數據的可靠、高效傳輸,具備一定的故障恢復能力,支持數據緩存,支持通信的冗余配置。
2數據采集模型的設計
2.1總體架構數據采集模型采用C/S模式,基于TCP/IP協議開發[5]。按照模塊功能劃分,模型架構如圖1所示。
2.1.1服務器端的主要功能1)測點管理?;緶y點屬性見表1所列。通過測點的基本屬性配置,完成了源測點與目標測點的映射,為客戶端進行數據抽取、數據校驗、轉換提供了所需的配置信息。為了便于管理、查詢,測點屬性通常保存在服務器側實時數據庫或本地配置文件中,客戶端僅保留一份配置副本,不需進行手動修改。當測點配置更改時,服務器會主動推送信息到客戶端或由客戶端在下一次連接時發起請求,主動獲取更新本地副本。2)客戶端管理。客戶端管理包括客戶端配置管理和狀態管理,配置管理包括對每個客戶端的基本信息配置,對互為冗余的客戶端進行成組配置;狀態管理主要檢測當前客戶端綁定的socket信息,完成當前數據鏈路的流量統計,完成客戶端工作狀態判定,通過對網絡通信狀態及工作超時檢測,實現對冗余客戶端的自動管理。在數據采集預處理時,服務器端通過測點配置項中的標識字符串或客戶端標識,自動完成測點與客戶端的邏輯關聯,生成每個客戶端的工作點集。3)網絡通信管理。完成指定端口偵聽,處理網絡連接請求,完成數據接收、數據拼包,實現對基本數據指令的解析處理、處理網絡異常檢測等。4)數據存儲管理。完成實時數據解析、處理,完成目標數據庫配置、目標數據庫自動連接,實現實時、歷史數據入庫速率控制等。5)數據緩存管理。在數據存儲異常時自動完成數據緩存,同時通過緩存讀取管理實現對歷史數據回補的限速處理。
2.1.2客戶端的主要功能1)數據源管理:完成數據源基本配置,實現數據源自動連接等。2)數據采集管理:維護采集測點副本,完成配置項驗證,實現數據測點映射,實現數據及時戳轉換等。3)網絡通信管理:完成配置信息接收,實現傳輸數據組包,維持通信鏈路,處理網絡異常等。4)數據緩存管理:處理在網絡通信異常時的數據緩存以及實時數據流量控制等。以較為典型的數據抽取流程為例,數據處理流程如圖2所示。
2.2數據采集
2.2.1配置預處理配置預處理是數據采集的基礎,客戶端在獲取到配置信息后,要完成2部分的預處理。1)核對下發測點配置信息,主要包括測點名稱和測點類型驗證。通過測點名稱驗證,剔除數據源中不存在的點;完成測點數據類型驗證,避免由于服務器端與數據源測點類型不一致導致的類型轉換異常,特別是Float、Double等高精度類型被錯誤配置為Byte、Short等存儲字節較小的類型時,類型驗證尤為重要。2)重構源測點與目標測點映射表。在測點信息配置時,數據索引常采用字符串類型(如測點名稱)的屬性作為鍵值,在進行數據檢索、處理時,效率較低,在測點數量較大時,對性能影響明顯。在預處理時,選擇整型(如測點ID)等基本屬性進行映射表重構,可以顯著提供檢索效率,縮小數據包長度,提高傳輸效率。
2.2.2數據轉換從源數據庫讀取實時數據后,通常需要根據測點配置完成3類轉換:數值二次計算、一對多標簽轉換及數據時戳處理。1)數值的二次計算主要是為了解決源數據采用非標準工業單位、數據基準值需要補償等問題,基本數據轉換見表2所列。2)數值的一對多轉換是為了處理單一源測點對應多個目標測點的情況,通過轉換,保證了數據采集的完整性。3)數據時戳直接影響到數據過濾、壓縮和存儲。時戳轉換主要包括:對時戳大幅超前的數據進行修正,大多數實時數據庫對此類數據均采用拋棄策略,如果數據源無法修正,則會導致數據丟失;針對時區進行處理,部分控制系統采用格林尼治時間,在采集時需要根據時區進行調整,少量數據源所在地與服務器所在地跨時區,需要對時間進行修正;增加時戳,少數數據源提供的數據不攜帶時戳,需要增加。
2.2.3數據過濾和壓縮實時監管系統中涉及的網絡傳輸往往需要跨網段,由于多種網絡設備的引入,導致數據鏈路質量無法優化;同時,大多數情況下,數據鏈路被多種業務共享,實時監管系統的數據采集是持續、穩定的網絡業務。因此,必須在保證數據傳輸效率的基礎上,盡可能降低網絡帶寬占用,減少對其他業務的影響。為提高網絡傳輸效率,客戶端采集數據在傳輸前,對數據采取了過濾和壓縮策略。數據過濾是指基于數據值和時戳對實時數據進行過濾,采用“變則發,不變不發”的原則;數據壓縮是指采用Deflate、GZip等無損壓縮算法對過濾后的數據進行二次處理。通過過濾和壓縮,顯著節約了網絡帶寬,降低或減少了實時數據采集對其他業務的影響。
2.3數據傳輸數據采集模型的核心功能是數據傳輸,為提高數據傳輸效率,保證數據可靠性,從以下幾方面進行處理。
2.3.1網絡鏈路采用長連接在實時監管系統中,數據源與目標服務器大多跨網段,傳輸距離較遠。為了提高傳輸效率,數據傳輸采用長連接模式。當發送數據量較少時,采用周期性發送心跳包的方式維持鏈路,減少由于路由器、防火墻等網絡設備的超時策略導致數據連接頻繁中斷??蛻舳嗽跀祿鬏斨械臓顟B轉換如圖3所示。客戶端為保證數據通信的可靠性,重點處理網絡連接超時、數據發送超時、數據應答超時等異常情況。當鏈路狀態轉入網絡重連后,立即啟用數據緩存,保證發送數據被及時保存;對于發送超時、應答超時發送時,主動關閉現有連接,切換到網絡重連狀態。
2.3.2使用變長數據包根據數據包頭信息,易于完成數據完整性校驗,實現數據拼包、分包及解析。數據包格式如圖4所示。
2.3.3傳輸模塊內嵌數據緩存根據數據實時采集的特性,在傳輸模塊中內嵌數據緩存。數據緩存分為為內存隊列和緩存文件兩級。短時間的網絡故障,數據被緩存到隊列中,系統處理無I/O操作開銷,效率較高;如果故障時間較長,為保證可靠性,自動將數據轉存到本地文件。數據緩存結構如圖5所示。當數據獲取線程從數據源抽取數據后,在異步發送數據中,如果發送速率低于數據獲取速率,導致實時數據隊列超長,數據自動轉入緩存隊列;如果網絡異?;蚱渌驅е掳l送失敗,則數據從發送隊列轉存至本地緩存。當異常時間過長,數據隊列超過上限,則被持久化到本地文件。本地文件以保存到文件中的首筆數據時戳命名,當文件大小超過配置設定上限時,自動切換,生成新的文件。在實時系統中,實時數據優先級最高,在網絡鏈路恢復后,優先發送實時數據,對于歷史數據采取限速發送的策略。
2.3.4通信鏈路冗余配置為了提高數據傳輸的可靠性,在采集模型設計中,采用2路并行通信的冗余策略。2個客戶端部署在獨立的接口機上,從同一數據源采集數據,共同組成一個冗余數據組,當某一個客戶端出現硬件故障或網絡異常時,自動切換到冗余客戶端。服務器側對客戶端的管理采用客戶端Session和Socket動態綁定的方法,每路客戶端首先創建客戶端Session,在客戶端連接成功后,通過客戶端標識將Session與底層的SocketID映射綁定。通過對Session類的操作,完成冗余狀態判定、工作狀態判定、數據流量統計及鏈路超時判定等。客戶端Session基本信息見表3所列。其中,鏈路狀態分為中斷和工作2種,為區分冗余組中2個客戶端的狀態,發送數據的客戶端(主客戶端)標識為工作,發送心跳數據的客戶端(從客戶端)標識為連接。冗余組中的客戶端,在連接服務器成功后,首先向服務器發送冗余組標識,該標識為每個冗余組的唯一標識。服務器根據冗余組標識動態管理多路客戶端,同時根據客戶端接入的先后順序來動態確定主從:先連接的客戶端為主,后連接的為從。被判定為主的客戶端,接收狀態信息后,循環向服務器發送實時數據,判定為從的客戶端連接成功后僅發送心跳包以維持鏈路。服務器端啟用專門的檢測線程管理客戶端。當主客戶端連接超時(即未發送數據的時間間隔超過了設定時限)或異常中斷時,如果從客戶端處于連接在線狀態,則服務器向從客戶端推送冗余切換指令,實現主從客戶端的切換。
2.4數據存儲1)數據分包。服務器側接收到數據后,通信功能模塊完成數據包頭解析。在完成數據校驗后,根據包頭定義的數據長度,判定當前接收數據是否完整。數據包根據長度不同,分為3種情況:接收的數據包完整,包長度和數據定義長度一致;接收數據包長度小于定義長度;接收數據包長度大于定義長度。針對后2種情況,使用數據緩存暫存數據,后續接收到數據后完成數據分包。在獲取到完整的數據包后,將數據包轉至線程池進行解析。通過將數據通信與數據解析異步化,保證了服務器的處理效率和并發能力。2)數據解析與存儲速率控制。對于接收到的完整數據包,按照通信協議,依次進行數據解壓、數據解密及數據存儲。在實時傳輸系統中,優先保證實時數據存儲,歷史數據被首先寫入本地緩存,根據配置調整寫入線程速率,實現了數據入庫時的速率控制。
2.5異常處理及日志系統數據采集傳輸涉及多個環節,異常情況多樣。在每個功能模塊,都需要處理異常并給出較為詳細的日志信息。通過完備的日志系統,幫助工程人員對數據傳輸中的各個環節進行檢查,方便準備定位異常,及時處理。在日志系統處理時,將信息劃分為信息、警告及調試3個等級,每個等級輸出的信息量逐次增加,既保證了調試模式輸出信息完整,又保證在正常運行時,日志模塊不會影響正常的數據處理。
3數據采集模型開發涉及的主要技術
3.1插件技術從不同的數據源抽取數據的方式差異很大,無法在開發時處理完所有的數據接口。針對這種情況,采用組件式插件[6]解決。針對不同數據源,根據已定義的數據訪問接口,開發實時數據抽取插件,通過簡單配置完成不同數據源的切換。在使用C#進行開發時,通過反射方式加載數據抽取DLL[7],實現了多種數據源的統一。
3.2異步網絡通信數據傳輸模塊基于.Net中SocketAsyncEven-tArgs類[8-9]封裝,SocketAsyncEventArgs類為高性能網絡服務器應用程序設計,基于高性能異步Socket實現[9],SocketAsyncEventArgs從設計上避免了在異步套接字I/O量非常大時,需要重復進行對象分配和數據同步,避免頻繁進行垃圾回收,降低了系統開銷。借鑒內存池的處理思想,對高頻使用的數據緩沖區(Buffer)管控進行優化。在網絡通信模塊初始化時完成Buffer數組創建,按照最大連接數乘以單個最大Buffer大小初始化,在使用中以客戶端ID為索引完成快速檢索,同時將發送Buffer和接收Buffer分離,保證了數據處理的效率。
3.3多線程服務器端接收、處理數據,客戶端采集、發送數據等功能均基于多線程實現。根據線程的生命周期長短和工作頻率,把線程分為長、短兩大類。長期工作線程的生命周期和應用程序幾乎等長,此類線程使用單獨線程來處理。對于短線程,如完成數據解析的線程,執行需要時間短,不需要指定線程優先級,不需要對線程進行睡眠、掛起等操作,適合采用線程池來實現。.Net中ThreadPool類[7]針對大量運行線程設計,通過有限的固定線程能為大量并發操作服務,通過使用線程池減少了創建、銷毀線程所需的系統開銷,提高了系統的整體效率。為了保證數據安全,在處理數據時,通過鎖、信號量等機制進行數據同步[7,10]。在多個功能模塊之間進行交互時,使用線程安全隊列,實現讀、寫線程處理異步化,降低了系統各個功能模塊間的耦合度,兼顧了處理效率和數據安全。
4結語
本文以實時監管系統中的實時數據采集為研究基礎,對可靠數據采集中涉及的主要問題進行了討論,該數據采集模型中的主要功能模塊易于復用?;谠撃P烷_發的實時數據采集軟件具有配置查詢簡單、數據轉換方便、網絡傳輸可靠等特點,已在多個工程中得到應用。
作者:王文慶 劉超飛 單位:西安熱工研究院