iNeuOS工業聯網平台,實時窗口聚合計算和變化率計算的設計與實現


目       錄

1.      概述... 2

2.      應用場景... 2

3.      設計實現... 2

1.1           自定義時鍾... 3

1.2           服務驅動時鍾窗口事件... 4

1.3           實時計算... 4

4.      應用效果... 5


 1.   概述

      iNeuOS工業互聯網操作系統集成了實時窗口聚合計算和實時數據變化率計算,這是能源行業的用戶在使用的過程中提出來的需求,我們對需求、框架和實現技術進行綜合評審后,最終實現了這個需求。考慮到其他計算的方式,具有很好的擴展性。

      能夠實現的路徑有很多,例如比較流行的flink、spark等框架,但是這些框架比較重,另外實現產品化應用需求有一定的技術積累和深度。我們的技術實現與iNeuOS平台的業務結合更緊密。

2.   應用場景

      一般系統使用上下限來對數據進行判斷,但是上下限無法准確判斷數據的變化趨勢。當前數據點的值與過去一般窗口時間范圍的均值進行變化率計算,並且對變化率進行預警判斷,就算當前數據點值在上下限范圍,但是出現數據變化抖動的情況也能准確監測到。例如能源行業,用電、用水、設備振動等參數進行變化率的監測,能夠准確掌握數據的細節變化。

     當然,數據變化監測還有其他方式,例如復合條件邏輯推理、機器學習的數據空間判斷等手段。

3.   設計實現

      設計實現包括三部分:自定義時鍾、驅動時鍾窗口事件和實時計算。代碼部分省略。

1.1    自定義時鍾

       一般使用時鍾都是周期性事件觸發,這種周期性的開始和結束取決於時鍾第一次啟動的時間點。

       而窗口聚合計算在周期時間間隔的基礎上,還要確定事件觸發的時間點,例如小時窗口的均值計算,00點、01點、…、23點分別要觸發時鍾事件。窗口示意如下圖:

       CustomTimer類的Interval屬性代表時鍾的間隔時間和能夠被整除的時間點觸發,CustomTimerManager類可以增加多個不同間隔時間的時鍾,並且進行管理和資源的銷毀。

       自定義TimerEventHandler委托事件,傳遞TimerEventArgs自定義類作為參數,其中包括:Interval間隔時間和EventTime當前時鍾觸發的時間。

       代碼類結構,如下圖:

1.2    服務驅動時鍾窗口事件

     在服務實例中集成CustomTimer自定義時鍾,並且在自定義事件觸發委托函數中對當前設備驅動和數據點進行CPU的並行操作,提高執行過程的效率。

     代碼類結構,如下圖:

1.3    實時計算

      在設備驅動完成兩個線程的操作:(1)接收時鍾委托事件的觸發,計算小時均值,使用AvgCalculate類完成;(2)實時數據流計算當前數據點值的變化率,使用PreCalculate類完成。這兩個線程即相互獨立、但是在計算過程中又有交互,涉及到線程之間數據的原子操作。

       當然,在設備驅動中計算過程中還涉及到其他的業務問題,例如計算的結果自動生成新的數據點以及與其他數據點的關系等。

       代碼類結構,如下圖:

4.   應用效果

     實際應用過程中只需要配置數據點:是否小時均值計算、是否實時變化率真計算和預警正負偏差等,會在當前設備驅動自動生成均值數據點和變化率數據點,在業務模型、資產模型、組態建模等工具中應用這些數據。如下圖:

     數據查詢,如下圖:


物聯網&大數據技術 QQ群:54256083
物聯網&大數據合作 QQ群:727664080
網站:http://www.ineuos.net
聯系QQ:504547114
合作微信:wxzz0151
官方博客:https://www.cnblogs.com/lsjwq
iNeuOS工業互聯網操作系統 公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM