彭 遠 方, 賴 真 明, 杜 光 勇, 周 波
(中電建水電開發集團有限公司,四川 成都 610041)
隨著國家十四五規劃的出臺,加速了企業數字化轉型。面對能源革命與數字革命的雙重疊加及 “國有企業數字化轉型”的戰略要求,電力生產企業不斷進行探索。利用數據可視化、信息物理融合等數字孿生技術可為更好地服務于企業生產運營。數據驅動三維場景是數字孿生體系的重要組成部分,數據驅動的智能是當前國際學術前沿與應用過程智能化的發展趨勢[1]。目前部分研究主要依賴信息空間的數據進行數據處理、仿真分析、虛擬驗證、及運行決策等,缺乏應用實體對象的物理實況小數據(如設備實時運行狀態、突發性擾動數據、瞬態異常小數據等)的考慮與支持,存在“仿而不真”的問題。
數字水電站是水電行業發展過程中工業化與信息化融合的產物。近年來,在信息技術引入到生產實際應用中后,工業技術并沒有與信息技術產生相互促進與彼此帶動的效應[2],數字水電站的提出與應用迎合了智慧運營管理的要求,實現工業化、信息化相互融合,彼此帶動。當前行業在數字工廠及培訓方向已有一些研究,趙暉等[3]設計了具備工程設計、工廠生產管理、DNC單元遠程控制功能的數字化工廠系統,具備靈活性與實用性;隋少春等[4]基于工業大數據的方式構建了一種數字化工廠,具備對設備的三維可視化監控、加工數據統計可視化以及設備預警等功能;謝天宇,吳馨等[5]通過Unity引擎引入SQL Server數據庫的連接使用,實現了變壓設備的交互性教學,具備實際應用價值。
實時數據驅動數字車間及培訓的研究在智能制造、軍事、航天、醫療等領域應用較廣泛,但在水電領域應用較少。
Unity3D作為被廣泛使用的實時3D創作平臺,在多個領域被應用,如工業中數字孿生。使用 Unity 能夠對模型數據、傳感器數據或點云數據進行實時傳輸和渲染,在添加物理特性和行為邏輯后,不僅可以將簡單、抽象的模型和數據處理為照片級的實時渲染效果,還可以在多個平臺以 AR/VR/MR 的形式進行交互。
Unity是實現數字線程的良好平臺,提供了實時渲染、物理引擎、MR等關鍵技術,同時具備面向工業標準的支持,這對實現實時數據驅動數字水電站具有獨特優勢。
采用Unity的實時數據驅動數字水電站技術實現主要包括三維建模、實時數據準備、Unity編程驅動幾個部分。三維建模可選擇Revit、SolidWorks、3DMax等多種建模軟件,將三維模型文件導出為內嵌材質的FBX文件后導入Unity,實現對三維模型的驅動。實時數據驅動主要通過Socket、UnityWebRequest等方法與實時數據平臺通信定時獲取實時數據,也可通過將Unity與實時數據平臺建立長連接的方式,將實時數據通過變位上送的策略上送給Unity引擎,Unity調用獲取的實時數據改變三維場景中模型的顏色、位置、運動狀態等,實現數據驅動。Unity驅動三維場景技術框架見圖1。
Unity3D支持主流的CAD格式模型導入和輕量化:CATIA、IGES、STEPS、SolidWorks、Pro/Engineer、ALIAS、JT、FBX、3dxml、OBJ、DAE、3DS、STL等。構建一個常規Unity3D項目可使用Revit、SolidWorks、3DMax等建模軟件建立的模型導出為一種通用模型格式FBX模型并導入Unity項目中應用。
三維模型建模中應考慮項目在實際驅動中需用到的模型對象,針對這部分對象需是可運動或改變材質的獨立組件,此外的其他模型應做合并處理,項目導出為FBX時應勾選內嵌模型材質,同時考慮在不影響整體使用體驗的前提下適當減少模型面數,此操作將會在最終項目生成運行時節省設備性能,提升用戶體驗。

圖1 Unity驅動三維場景技術框架
FBX格式的三維模型文件可直接導入Unity項目資源文件夾。如出現FBX模型材質丟失,可點中FBX模型,在Inspector窗口中將Meterials下的Location模式改為Use Embedded Meterials即可。
數字水電站的實時數據資源來源于生產現場電力監控系統(含機組、升壓站、公用、閘門等控制單元)、在線監測系統(含機組、主變、GIS等監測系統)等,根據電力監控系統安全防護要求將數據經正向隔離裝置后送往生產管理大區,通過建一套靈活的實時數據處理服務系統,按數字水電站三維場景驅動需求,加工整理數據。處理流程為:采集-整理-傳輸-加工-服務,系統結構為:生產現場傳感器-采集系統-安全隔離裝置-專用網絡-實時數據服務平臺。
實時數據從電站現場到數據服務平臺采用單向傳輸,不與生產設備交互。傳感器采集生產數據,經現地控制單元采集、監控系統上位機處理后打包送出。數據打包時只傳送變量值,加上必要的校驗信息,使用計算機網絡UDP協議,可以很好地滿足傳輸要求。
實時數據處理平臺部署在互聯網接入區域,生產控制大區、管理大區與數據服務平臺之間部署單向隔離裝置,確保傳輸安全。平臺采用Java語言編寫,功能包括實時數據接收校驗、分析計算、數據存儲、向外主要以HTTP方式提供服務,數據調用靈活方便。
Unity中實時數據資源獲取通過C腳本實現。實時數據獲取方式有多種,如Socket、UnityWebRequest等方法。實時數據接口可定義為標準JSON數組(key-value)格式,如:
[{″id″:″A00001″,″value″:0}, {″id″:″A00002″,″value″:13.423}]
其中″id″表示點號,″value″表示數值,一個數據對象即為一個測點對應的點號及數據。此時應將該字符串解析為模擬量數據類型,才能在Unity腳本中進行數值調用。JSON解析可通過開源的LitJSON插件進行解析,此外,在解析腳本中還應創建模擬量實時數據的實體類用于JSON解析,解析出的實時數據即可調取用于數字水電站的各種三維模型控制。
在Unity中,驅動對象運動給出了多種方案,主要有Transform組件、Rigidbody(剛體)組件及CharacterController(角色控制)組件。
Transform組件可實現3D物體的平移(Translate)、縮放(scale)、旋轉(Rotate)的控制,其中來自物理水電站的實時數據如轉速、位移距離等數據可根據物體運動特點傳入到對象的速度控制參數中,實現對運動距離、運動速度、旋轉速度等控制,配合位置坐標插值算法(Lerp、SLerp)可實現平滑運動的效果,通過參數調教,實現數字水電站與物理水電站一致的孿生應用。
Rigidbody(剛體)組件可以使三維模型能夠受到物理系統中力的影響。Rigidbody組件提供了大量參數設置,可提供豐富的外力控制效果,該組件需與碰撞盒(CollisionBox)搭配使用,利用碰撞檢測(Collision Detection)屬性實時計算物體碰撞后的運動狀態,可用于機組零件拆裝擺放等仿真。
Character Controller(角色控制)組件是Unity為了使開發者能方便地開發第一人稱視角而封裝的一個組件,可以看做是受限的剛體,會表現出一定的物理效果,但不受力的作用。該組件也提供了大量參數用于對象控制,場景中虛擬人物或攝像機運動控制時,使用character controller來控制對象的移動,可以獲取更加豐富的碰撞信息,完成更好的控制。
水電站生產現場的PLC控制屏柜中,有大量指示燈用于指示設備狀態,一般有紅色、綠色、橙色、白色等。在三維場景中,相關指示燈對象可通過實時數據中對應的開關量(DI)控制,如開關量狀態為0顯示綠色,狀態為1顯示紅色。在Unity中,通過腳本獲取實時數據并監控狀態變化,調用Unity自帶的Color方法進行對象顏色控制,如:obj.GetComponent
Unity引擎V4.6以后版本自帶了功能強大圖形用戶界面UGUI(unity Graphical User Interface),開發者可自主搭建各種用戶圖形界面用來顯示信息或與用戶交互。通過UGUI,可快速搭建出用于用戶操作的功能菜單、數據展示、設備信息展示等功能。Canvas組件上設置Render Mode(渲染模式),可實現UI顯示渲染方式的調整,UGUI提供了覆蓋、攝像機、世界空間三種模式,可適用于不同的應用場景,如要將UI設置在三維模型旁,則將渲染模式選擇世界空間模式,將UI的Canvas坐標調整到三維模型旁即可。
基于UGUI,開發者們也開發了大量操作簡單實用的開源插件,如XCharts圖表插件,可通過簡單配置實現條形圖、柱狀圖、雷達圖、液位圖、熱力圖等多種可視化圖表配置,并支持上萬數據量的可視化呈現,為數字水電站的數據可視化提供了很好的支持。
數字水電站220 kV出線場見圖2。

圖2 數字水電站220 kV出線場
面對能源革命與數字革命的雙重疊加,面對 “國有企業數字化轉型”的戰略要求,傳統的電力生產企業積極應變。根據水電站實時數據構成、生產管理大區實時數據平臺現狀,從數字水電站三維模型資源準備、實時數據資源準備、Unity與實時數據通信、實時數據驅動數字水電站的技術實現及UI呈現等方面進行了闡述,驗證了應用Unity3D引擎實現電力生產實時數據驅動數字水電站的可行性,該方法亦可在數字風電、數字光伏、數字儲能等場景中應用,在一定程度為電力生產企業在數字化轉型中的探索提供支持。
Unity3D引擎使用C語言編程,通過腳本驅動數字場景,同時具備豐富的插件庫及開發文檔,降低了開發門檻。分析了一個簡單實例,在實際項目中,應充分考慮企業生產實時數據現狀,提前做好數據應用規劃,這將為項目落地及擴展帶來便利。