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

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

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