王瑞鵬,王 力,李廣云,任飛明,荊海峰
(1.信息工程大學(xué),河南 鄭州 450001; 2.北京金旗華瑞科技發(fā)展有限公司,北京 100022)
?
天寶測繪解決方案專欄
天寶全站儀機載油罐測量程序開發(fā)
王瑞鵬1,王 力1,李廣云1,任飛明2,荊海峰1
(1.信息工程大學(xué),河南 鄭州 450001; 2.北京金旗華瑞科技發(fā)展有限公司,北京 100022)
目前我國國內(nèi)的大型油庫超過萬家,使用先進的計量儀器和方法精確測量出大型油罐的容量具有十分重要的現(xiàn)實意義。
全站儀具有優(yōu)越的無合作目標(biāo)測距和自動驅(qū)動功能,因此使用全站儀進行油罐容量的標(biāo)定逐漸被油罐容量計量部門所青睞。天寶提供的基于用戶的軟件開發(fā)包(TASDK)對所有用戶開放,而且提供了用戶界面和儀器的訪問接口,可以根據(jù)全站儀油罐測量的流程開發(fā)機載測量軟件模塊,實現(xiàn)油罐的高精度自動化測量,使油罐的容量測量在較短時間內(nèi)自動完成,從而簡化外業(yè)操作,提高計量檢定的效率。
本文利用天寶公司提供的TASDK軟件開發(fā)平臺,在天寶聯(lián)合社區(qū)下載TIM(Trimble installation manager),對開發(fā)所需要的模擬器、工具及語言進行選擇和安裝,采用C++語言在Visual Studio 2008環(huán)境下對全站儀機載油罐測量程序進行開發(fā)。程序在實現(xiàn)儀器控制、點坐標(biāo)測量與存儲等問題的基礎(chǔ)上,依據(jù)油罐國家計量檢定規(guī)范《立式金屬罐容量檢定規(guī)程》(JJG 168—2005)的要求進行計量數(shù)據(jù)的采集與處理。
1.天寶S系列全站儀
Trimble S系列全站儀包括S3、S6、S8,以及最新款的S5、S7、S9、S9HP。本次開發(fā)以Trimble S7全站儀為例進行測試,它是一款生產(chǎn)效率很高的全站儀,將掃描、成像和測繪等功能組合成一套功能強大的解決方案。
2.Trimble Access軟件開發(fā)包
Trimble Access軟件開發(fā)包是通過TIM安裝到電腦上的軟件組件,包括:
1) 應(yīng)用程序編程接口(API),即開發(fā)所需的小工具,以及底層的頭文件和lib庫,允許開發(fā)者將自己編寫的程序與Trimble Access進行交互,可使用程序通用的基本功能。
2) Trimble Access全站儀模擬器,可以在電腦上模擬全站儀的界面和操作環(huán)境對編寫好的程序進行測試,從而提高編程的效率。
3) 源代碼示例,舉例說明了如何在全站儀上開發(fā)完整的應(yīng)用,以及數(shù)據(jù)庫、全站儀控制、UI等的使用,開發(fā)人員可以學(xué)習(xí)和修改,從而開發(fā)新的測量應(yīng)用模塊。
1.開發(fā)內(nèi)容和流程
油罐計量系統(tǒng)主要包括球型油罐測量,以及立式油罐的內(nèi)測、外測和罐底測量,如圖1所示。
圖1 油罐計量系統(tǒng)組成
在油罐計量系統(tǒng)開發(fā)過程中,由于TASDK軟件開發(fā)包已經(jīng)實現(xiàn)了測站的新建和打開、測站設(shè)置、參數(shù)改正及測量數(shù)據(jù)輸出等功能,并且標(biāo)準(zhǔn)函數(shù)中也包含了坐標(biāo)幾何計算、坐標(biāo)系統(tǒng)轉(zhuǎn)換相關(guān)的方法,因此在開發(fā)過程中,測量界面的設(shè)計和特定測量流程的實現(xiàn)是開發(fā)的重點,根據(jù)SDK提供的類和函數(shù)對用戶界面進行設(shè)計、儀器控制,以及對采集的點進行存儲和調(diào)用,具體開發(fā)的流程如圖2所示。
圖2 開發(fā)流程
通過Visual Studio 2008創(chuàng)建SC工程完成后,會生成5個文件,分別為[ApplicationName].cpp、MyApplication、MyMainWiondow、MyUITask、[ApplicationName].tdb。其中,UITask的注冊和MyApplication的調(diào)用是在[ApplicationName].cpp中完成的,MyMainWiondow用來創(chuàng)建主窗口,X_code的創(chuàng)建是通過[ApplicationName].tdb來實現(xiàn)的。
2.全站儀開發(fā)相關(guān)的類
1) 基本的核心類(core classes):主要包括與應(yīng)用初始化、注冊圖標(biāo)、注冊應(yīng)用、創(chuàng)建主窗口、對文件的操作,以及時間處理相關(guān)的類。
2) 用戶界面相關(guān)的類(user interface classes):主要包括與窗體、按鈕、文本框、下拉菜單,以及向?qū)嚓P(guān)的類。
3) 任務(wù)數(shù)據(jù)相關(guān)的類(job database classes):主要包括對采集的點坐標(biāo)的讀取和存儲,以及點坐標(biāo)類型相關(guān)的類。
4) 坐標(biāo)類型相關(guān)的類(coordinate classes):主要包括不同類型的坐標(biāo)系相關(guān)的類,以及坐標(biāo)系之間轉(zhuǎn)換的函數(shù)。
5) 全站儀支持的類(total station support classes):主要包括全站儀控制和監(jiān)控、獲取和設(shè)置全站儀測量模式、合作目標(biāo)相關(guān)信息,以及外界環(huán)境相關(guān)的類。
其中,tsc_TsModes用來對全站儀進行控制、狀態(tài)查詢及執(zhí)行測量;tsc_ITsMonitor用來處理全站儀相關(guān)的全局事件;tsc_TsEnvironment用來處理全站儀測量時的環(huán)境信息,包括儀器自身參數(shù)、靶標(biāo)信息、測站數(shù)據(jù),以及與大氣相關(guān)的信息;tsc_Form用來實現(xiàn)簡單的對話框窗體,tsc_WizardPage用來實現(xiàn)工作流向?qū)υ捒颍瑃sc_WizardMenu用來實現(xiàn)菜單式向?qū)υ捒?;?shù)據(jù)的管理是通過tsc_Database來實現(xiàn)的,其中數(shù)據(jù)的讀取是通過tsc_Points完成的,數(shù)據(jù)的寫入是通過tsc_Observation來完成的;Measure()函數(shù)用來實現(xiàn)全站儀的測量點功能;SetTurnToHoriz()、SetTurnToVertical()及SetFace()函數(shù)分別用來實現(xiàn)對全站儀水平角、豎直角及盤左盤右的定向控制;TurnTo()函數(shù)用來使全站儀轉(zhuǎn)向已知的坐標(biāo)點。
4.油罐計量系統(tǒng)的實現(xiàn)
根據(jù)油罐測量的流程,對天寶全站儀的向?qū)Ы缑?、測量主界面及消息相應(yīng)按鈕進行設(shè)計,通過對話框?qū)Π甯摺y量點間隔、圈板個數(shù)及母線號等參數(shù)進行設(shè)置,并在測量主界面上對一些參數(shù)的值進行實時顯示,從而實現(xiàn)對全站儀油罐容量測量的自動控制。
定制的油罐計量系統(tǒng)開發(fā)完成后,通過TASDK將應(yīng)用程序集成到Trimble Access外業(yè)軟件中,使油罐計量軟件與已經(jīng)發(fā)布的常規(guī)測量、道路、礦場等模塊具有相統(tǒng)一的界面風(fēng)格。軟件開發(fā)完成后,進入測量界面,打開DR(Direct Reflex)和LP(Laser Pointer)模式進行測量,使天寶全站儀能夠像激光掃描儀一樣按照設(shè)定的參數(shù)進行自動測量。在測量過程中油罐測量系統(tǒng)的主界面如圖3所示,測量控制界面如圖4所示,參數(shù)設(shè)置界面如圖5所示。
圖3 油罐測量系統(tǒng)的主界面
圖4 測量控制界面程
圖5 參數(shù)設(shè)置界面
本文基于TASDK全站儀機載軟件開發(fā)平臺,結(jié)合全站儀自身軟硬件和油罐容量測量的特定流程,開發(fā)了應(yīng)用于油罐容量自動化測量的全站儀控制應(yīng)用程序,擴展了天寶全站儀操作軟件的功能模塊,使全站儀更加智能化,從而簡化了油罐測量過程中的外業(yè)操作,提高了生產(chǎn)效率。
(本專欄由天寶測量部和本刊編輯部共同主辦)