楊 碩,楊文英,王海群
(國能網信科技(北京)有限公司,北京 100010)
火電廠條形煤場斗輪機對自動化堆、取料作業的實現,是利用安裝于大機懸臂兩側的三維動態激光掃描儀作為檢測裝置,通過對煤場的目標煤堆進行實時掃描,利用三維成像建模技術,對掃描獲得的實時數據進行三維成像建模,利用圖像識別與分析技術提取煤堆三維模型中關鍵作業參數,計算出堆料落料點,料堆高度、寬度、長度、取料作業每層切入點、旋臂旋回角度、開層長度等數據,為實現自動堆、取料功能提供數據依據。同時,通過多重安全防護措施,在確定安全的前提下,及時調整單機的走行、俯仰和回轉動作,從而控制斗輪機進行自動堆、取料作業。在斗輪機智能化無人值守作業系統中,煤場煤堆及斗輪機的三維點云數據至關重要,它為整個煤場實現全自動化無人值守控制提供有力的數據支撐。
整個煤場的三維激光掃描成像多選擇應用最廣泛的激光掃描成像技術。火電廠條形煤場中,一般在斗輪機的懸臂前端兩側或在煤場頂棚軌道上,安裝德國進口品牌SICK LD-LRS3611 型高精度激光掃描設備,實時對煤場當前煤堆進行快速掃描,獲取煤堆及斗輪機的實時輪廓及位置數據,并將斗輪機運行機構編碼器信息(行走、俯仰、回轉)進行空間坐標轉換,轉換計算成后臺控制程序可以處理的三維點云數據。三維點云數據經過去噪(濾波)、精簡、拼接、網格規格化、空點補充處理后成為標準的網格數據,最大程度趨近于真實煤堆數據并寫入系統數據庫。
煤堆三維數字模型的建立,為智能堆取料無人作業系統模塊提供最新的料場工況信息,指導大機完成快速、穩定、精準的堆取料作業。掃描測量完成的數據通過有線或無線的方式傳輸到服務器上進行數據合成計算,生成煤場料堆的數字模型及相關展示圖形,并同步計算出煤場的料堆體積,結合不同區域煤種堆存比重,得出相應的儲煤量和盤存報表。
煤場三維可視化方面,采用目前比較流行的三維圖形開發技術WebGL 和封裝好的Three.js 3D 引擎庫。WebGL(Web GrapHics Library,Web 圖形庫)是一項在瀏覽器中展示基于硬件加速的3D 圖像的WebGL 技術。目前Web 網頁形式的三維模型動畫的交互普遍存在2 個問題:①如果要對建立好的三維設備模型進行渲染的話,需要在瀏覽器訪問端安裝許多兼容的插件才可進行渲染工作,而這些插件的運行會影響整個網頁端訪問的穩定性和可用性;②有些設計好的三維模型動畫要想看到最好的效果,只能在指定的環境或平臺上運行,沒法在其他類似的環境中運行,兼容性和跨平臺性太差,客戶體驗也不是很好。本文中描述的系統采用的WebGL 可以很好地解決這兩個問題,因為它采用HTML 腳本對三維模型進行整體的渲染,不需要再安裝任何額外的插件,即可以實現網頁端的交互式瀏覽及各種動畫制作,腳本運行穩定,與其他平臺也有著較好的兼容性,三維模型的渲染速度很快,客戶體驗很好。
基于WebGL 技術實現三維模型數據的可視化,采用開源的3D 引擎Three.js 可以獲得期望的效果。Three.js 不僅掩蓋了3D渲染細節、面向對象、功能豐富、速度快、支持交互、內置文件支持、拓展性強,同時還支持HTML5、2D、Canvas。
在本系統中,采用WebGL 最受歡迎的開源框架Three.js 來進行煤場三維模型的渲染,以Three.js 框架為基礎,構建一套煤場3D 可視化系統,主要實現流程如圖1 所示。
在html 頁面引入.js 文件。
引入three.js 庫文件,可以下載到本地或直接引用線上地址。
相機控制:OrbitControls.js。
引入外部.FBX 模型:inflate.min.js、FBXLoader.js。
添加容器:
var container=document.createElement('div');
document.body.appendChild(container);
場景聲明:
var threeScene=new THREE.Scene();
添加相機:
var k=window.innerWidth/window.innerHeight;//長寬比
var threeCamera=new THREE.PerspectiveCamera(45,k,0.1,100000000);
相機位置:
threeCamera.position.set(0,1800,3500);
設置渲染器:
var threeRenderer=new THREE.WebGLRenderer();
threeRenderer.setSize(window.innerWidth,window.innerHeight);
container.appendChild(threeRenderer.domElement);
點光源:
var threePoint=new THREE.PointLight(0xffffff);
點光源位置:
threePoint.position.set(0,4500,1000);
環境光:
var threeAmbient=new THREE.AmbientLight(0x444444);
將光源添加進場景:
threeScene.add(threePoint,threeAmbient);
相機控制:
var threeControls=new THREE.OrbitControls(threeCamera,threeRenderer.domElement)
創建模型:
創建一個平面對象Plane
var threePlane=new THREE.PlaneGeometry(100,100);
創建材料對象Material
var threeMaterial=new THREE.MeshLambertMaterial({color:'#34495E' });
創建網格模型對象Mesh
var mesh=new THREE.Mesh(threePlane,threeMaterial);
將網格模型添加到場景中
threeScene.add(mesh);
加載模型:
var loader=new THREE.FBXLoader();
loader.load("SambaDancing.fbx",function(obj){
obj.visible=false;//模型隱藏
threeScene.add(obj);//將模型添加到場景中
}
function rendererAnimate(){
threeControls.update();
requestAnimationFrame(rendererAnimate);
threeRenderer.render(threeScene,threeCamera);
}
rendererAnimate();
通過.ajax 獲取數據,并把實際數據轉換成三維數據。
基于WebGL 三維建模技術,同時使用Three.js 3D 圖形引擎庫,繪制和渲染后的煤堆及堆取料機模型效果圖,如圖2 所示。使用封裝好、開源的Three.js 3D 圖形引擎庫,可以減少開發人員對于代碼的開發工作量,并且可以快速地對建立符合現場生產要求的三維設備模型,并對其進行渲染及需要的動畫腳本設計。

圖2 煤堆及堆取料機三維模型
本系統在某電廠斗輪堆取料機改造項目中得以成功應用,實現了煤場三維模型使用盤煤儀輸出的點云數據,實現動態建模、即時渲染、數據顯示和模型實時更新功能。煤場模型與操作員站HMI 人機界面融為一體統一展示,具體實現了以下功能:①煤場3D 模型實現煤垛實時信息、煤垛各層的起止位置、煤場位置、形態數據顯示功能,同時可在模型上進行誤差修正操作;②煤場3D 模型實現煤種/煤量顯示功能,實時顯示各煤垛的煤種及存煤量(實現實時盤煤功能);③煤場3D 模型實現斗輪機在作業時(含手動、半自動、全自動),根據盤煤結果自動實時更新煤場的存煤信息(煤種、煤量、煤位)功能;④煤場3D 模型實現鼠標交互操作(縮放、旋轉、拖拽),以三維效果顯示煤場煤垛和斗輪機姿態,同時可基于系統歷史數據,實現三維場景下的歷史數據回放功能。
本系統已經成功應用于多個火電廠的條形煤場,應用效果達到了預期的設定目標,客戶在HMI 人機操作界面上可以實時查看整個煤場的三維模型及煤堆堆取情況,了解煤場的存煤現狀。同時,在煤控室操作員站可以對煤場斗輪機進行虛擬仿真作業演示,通過比較仿真結果與期望目標的差異,適當調整作業任務參數,有效指導實際作業,提高作業效率。本系統為實現斗輪機無人化作業的深層次應用提供了關鍵要素,能夠適應火電廠煤場智能管控需求。