景月娟,張會彥,喬榮川
(1. 中國科學院國家授時中心,西安 710600;2. 中國科學院精密導航定位與定時技術重點實驗室,西安 710600;3. 中國科學院研究生院,北京 100039)
衛(wèi)星定軌軟件的移植與測試分析
景月娟1,2,3,張會彥1,2,3,喬榮川1,2
(1. 中國科學院國家授時中心,西安 710600;2. 中國科學院精密導航定位與定時技術重點實驗室,西安 710600;3. 中國科學院研究生院,北京 100039)
為改變衛(wèi)星定軌軟件對Unix平臺的依賴性和Unix平臺命令式操作等因素制約后續(xù)的開發(fā)和應用的狀況,進行了將精密定軌軟件從Unix平臺移植到Windows平臺下的工作。闡述了衛(wèi)星定軌軟件移植的步驟,主要包括根據(jù)2個平臺下軟件的差異,對衛(wèi)星定軌軟件程序進行刪除、追加、修改等。對衛(wèi)星定軌軟件移植前、后得到的有關數(shù)據(jù)進行了比較,結果表明移植工作是成功的。
衛(wèi)星定軌;Fortran語言;軟件移植
中國區(qū)域導航定位系統(tǒng)(CAPS)日常運行使用的衛(wèi)星定軌軟件,是基于Solaris系統(tǒng)(Unix操作系統(tǒng)的衍生版本之一)的一個非常成功的軟件,但它對操作系統(tǒng)的依賴性和命令式操作等因素制約了后續(xù)的開發(fā)和應用工作,同時運行該軟件的SUN工作站的運行維護成本較高,所以對該軟件系統(tǒng)的高保真移植工作勢在必行。把精密定軌軟件從SUN工作站平臺上移植到微機平臺上,將為我們后續(xù)維護優(yōu)化工作和實現(xiàn)軟件操作可視化、圖形化帶來方便。
目前,不論是對于普通的家庭娛樂,還是科學研究,Windows系統(tǒng)平臺已經是隨處可見,它以界面友好,操作方便等特點深受用戶的歡迎。同時無論是從經濟還是技術的角度而言,從Unix系統(tǒng)到Windows系統(tǒng)下的軟件移植已經成為一種趨勢。因此能否將衛(wèi)星定軌軟件高保真地從Unix平臺移植到Windows平臺,也是人們普遍關注的問題,本文將介紹我們在這方面所做的工作。
衛(wèi)星定軌軟件程序是用于衛(wèi)星動力學衛(wèi)星精密定軌的大型軟件,整個軟件包括1個主程序和250多個子程序,約2萬多條語句。衛(wèi)星定軌基于統(tǒng)計定軌原理,在程序中采用的統(tǒng)計定軌估值方法是成批處理。所謂成批處理就是將所要處理的觀測資料一起進行解算[1-2]。成批處理的具體計算是一迭代過程[3]。該程序成批處理流程示于圖1。
圖1 衛(wèi)星定軌Shorde程序成批處理流程圖
衛(wèi)星定軌軟件移植目標是:
1)將原衛(wèi)星定軌軟件從SUN工作站平臺移植到微機平臺上,并保持與原軟件相同的程序功能和計算精度。
2)移植后的軟件,其操作應更加簡捷,運行性能更好。
3)糾正原軟件中可能存在的錯誤。
軟件移植的可行性分析主要考慮2個方面:1)經濟可行性—對開發(fā)費用與軟件移植后所獲得的效益之比進行評價;2)技術可行性—研究軟件的可移植性以及軟件的功能、性能和可能影響一個可接收系統(tǒng)的能力的程度[4]。
在經濟可行性方面,Windows平臺穩(wěn)定性能越來越好,同時具有運行成本低、界面友好,操作方便等特點,因而深受用戶的歡迎,并且近年來隨著Windows平臺軟件的不斷開發(fā),其發(fā)展勢頭迅猛。此外,會使用Windows系統(tǒng)的人數(shù)遠遠超過其他系統(tǒng),因此需要的培訓費用較少。這將為定軌軟件的推廣應用或者功能擴展工作帶來方便。
就技術可行性而言,我們的原軟件系統(tǒng)是基于Unix系統(tǒng)的32位程序,而現(xiàn)在32位編譯器環(huán)境已經普遍存在,硬件技術和軟件技術都有長足的進步,這些狀況為軟件移植提供了可靠的技術保證。其次,原軟件是采用Fortran語言寫成的,通過Unix命令在SUN工作站上運行。Fortran語言是國際上廣泛流行的一種適于科學計算的高級語言,在許多平臺下都配有該語言,雖然有眾多的版本,但總體上大同小異,因此該系統(tǒng)軟件具有較強的可移植性。另外,在計算機高速發(fā)展的今天,保證原軟件在PC機上成功運行的軟、硬件條件也是可以達到的。同時,在x86的平臺上,使用Intel的編譯器會獲得更高的計算性能。最后我們看到,雖然Unix環(huán)境與Windows環(huán)境有很大的不同,但Unix環(huán)境中的許多特性和Windows環(huán)境有相似之處,2個系統(tǒng)在很大程度上相互兼容。再者,Unix環(huán)境應用程序依賴的許多傳統(tǒng)系統(tǒng)調用可以在Win32應用程序中使用。兩者文件系統(tǒng)結構類似,采用多級樹形目錄結構;兩者都支持多任務,多用戶,支持共享庫(Unix中稱為shared library,Windows中稱為dynamic link library(動態(tài)鏈接庫)[5])。
由上述分析可以得到明確的結論:Unix系統(tǒng)上大多數(shù)軟件至Windows平臺的移植是可以實現(xiàn)的。在了解Unix平臺和Windows平臺,以及這2個平臺下各自開發(fā)環(huán)境的差異基礎上,對源程序進行有目的的修改,然后在Windows平臺下重新編譯就可能運行成功。
綜上所述,高精度衛(wèi)星定軌軟件移植的方案在經濟和技術上是可行的。
2.3.1 硬件平臺
衛(wèi)星定軌軟件在運行過程中需要處理大量的原始數(shù)據(jù)和中間結果。例如解算與地球引力場相關的參數(shù)的測量方程,還有其他的地球物理參數(shù)的測量方程,有時達成百上千個?,F(xiàn)有的軟件運行的硬件環(huán)境是SUN(V280)工作站,其運算精度高、數(shù)據(jù)吞吐量大的特點為衛(wèi)星定軌軟件順利運行提供了良好的硬件環(huán)境,保證了數(shù)據(jù)處理的計算速度和計算精度。
衛(wèi)星定軌軟件移植后的硬件平臺將選用Intel Core 2Duo處理器的64位微型計算機,主頻2 800 MHz,內存2 G,圖形顯示卡為NVIDIA GeForce G100,顯示內存512 M。移植后的衛(wèi)星定軌軟件運行時間有望明顯縮短,同時滿足數(shù)據(jù)處理結果顯示的需要和可望改善軟件運行結果的精度。
2.3.2 軟件平臺
原衛(wèi)星定軌軟件以Solaris 9為軟件平臺,以Emacs為集成開發(fā)環(huán)境,F(xiàn)ortran77語言為程序設計語言。移植后的衛(wèi)星定軌軟件將以Windows XP為軟件平臺,以Microsoft Visual Studio 2005集成Intel(R)Visual Fortran Compiler Professional 11.0為圖形用戶界面開發(fā)工具,程序設計語言為Fortran90語言。
Windows是目前微機上主導的操作系統(tǒng),提供功能強大的應用程序接口API(application programming interface)和風格一致的操作界面。程序員易于通過調用應用程序接口和資源編輯器來創(chuàng)建Windows圖形界面的各種元素。
Microsoft Visual Studio是目前最流行的Windows平臺應用程序開發(fā)環(huán)境,其提供的使用接口包括文字編輯功能、項目管理、調試工具等。Microsoft Visual Studio 2005是.net框架下的編程IDE(integrated development environment集成開發(fā)環(huán)境),其支持的語言有二十幾種,并且使用同一個IDE。
Intel Visual Fortran(IVF)編譯器能夠對軟件執(zhí)行自動優(yōu)化和并行處理,從而充分利用英特爾多核處理器(包括雙核移動平臺、桌面平臺以及企業(yè)平臺),同時可以作為插件融入Microsoft Visual Studio環(huán)境,并提供直接來自英特爾的技術支持。
衛(wèi)星定軌軟件程序在Unix平臺和Windows平臺可采用不同的編譯器進行編譯、連接生成執(zhí)行代碼。因此,根據(jù)軟件工程思想,優(yōu)化編譯衛(wèi)星定軌軟件源代碼是移植開發(fā)中不可缺少的內容。
Fortran90對Fortran77作了以下幾方面較大的擴充和完善:1)引入數(shù)組運算,2)提高了數(shù)值計算的功能,3)內在數(shù)據(jù)類型的參數(shù)化,4)用戶定義的數(shù)據(jù)類型,5)用戶定義的運算與賦值,6)引入模塊數(shù)據(jù)及過程定義的功能,7)引入指針概念[6]。由于這些方面的擴充和完善,同時由于Fortran90比Fortran77語法要求更加嚴格等,當衛(wèi)星定軌軟件程序從Unix平臺移植到Windows平臺下時,在Microsoft Visual Studio 2005 + Intel(R)Visual Compiler Professional 11.0環(huán)境下源代碼編譯結果顯示錯誤較多,同時運行計算過程中存在許多數(shù)據(jù)結果存取不正確之處,基本可以歸納為變量重復定義、變量類型未說明、變量未初始化、數(shù)組內容不一致、啞實結合不正確、字符串長度不一致、中間結果存取不正確和動態(tài)數(shù)組問題等幾個方面,其中最重要的是動態(tài)數(shù)組問題。經過努力,我們一一解決了這些問題。對于所作的修改,下面列舉幾點作簡要的說明:
1)刪除:指有些變量在x.h文件和源文件中都作了定義,有些在源文件中作了兩次定義或者是語法錯誤,這些情況下在Unix平臺下編譯不會出現(xiàn)錯誤,但是在Windows平臺下編譯將會暴露這種問題,所以需要刪除重復定義處等,如表1中第1行所示。
2)追加:指在Unix平臺下的變量未定義或未初始化、啞實結合中啞元數(shù)不一致等情況,當軟件從Unix平臺移植到Windows平臺下時,就需要對源代碼進行增添,如表1中第2行所示。
3)修改:指在Unix平臺下的數(shù)組的長度及內容、字符串的長度等,當軟件從Unix平臺移植到Windows平臺下時,會出現(xiàn)數(shù)組越界、字符串長度不符,需要對源代碼進行修改,如表1中第3行所示。
表1 源代碼修改列舉
為測試移植后的衛(wèi)星定軌軟件的性能、精度和可靠性,我們在對參考系、測量模型和攝動模型選取及求解參數(shù)的設置完全相同的情況下,分別利用微機平臺上的定軌軟件及SUN工作站上的定軌軟件進行精密定軌測試。
作為常規(guī)軌道計算,選取2005年6月6日CAPS系統(tǒng)的5個觀測站對鑫諾-1衛(wèi)星1 d的偽碼測距觀測數(shù)據(jù)進行計算。運行時間方面,SUN工作站平臺用了20 min 40 s,Windows平臺用了10 min 13 s,說明移植后衛(wèi)星定軌軟件數(shù)據(jù)處理時間明顯縮短。對計算結果的比較表明,2個平臺下解得的歷元時刻的初始軌道根數(shù)改正量的小數(shù)點后四位數(shù)均相同(見表2)。在表3(SUN工作站平臺下計算結果)和表4(Windows平臺下計算結果)中,對2個平臺而言,解得的新的衛(wèi)星位置(X,Y,Z)值的小數(shù)點后五位數(shù)均相同,而在小數(shù)點后第六位數(shù)上,X值相同,Y值和Z值略有偏差,解得的新的衛(wèi)星速度Vx和Vz值相同,而Vy值的最后一位有差別;解得的在地心天球坐標系中衛(wèi)星新軌道與初始軌道對應的衛(wèi)星位置及速度的差值(xyz difference,包括ΔX,ΔY,ΔZ,ΔVx,ΔVy,ΔVz)中,表3和表4中的ΔX相同,而ΔY的小數(shù)點后前五位數(shù)相同,小數(shù)點后第六位數(shù)則不同;ΔZ也如此;表3和表4中的ΔVz值相同,而ΔVx和ΔVy值都是小數(shù)點后前五位數(shù)相同,小數(shù)點后第六位數(shù)值則不同;在RTN地心軌道平面坐標系中的差值(rtn difference,包括ΔR,ΔT,ΔN,ΔVr,ΔVt,ΔVn)中,表3和表4中的ΔR相同,而表3和表4中的ΔT與表3和表4中的ΔN都是小數(shù)點后前五位數(shù)相同,而小數(shù)點后第六位數(shù)不同;至于表3和表4中的ΔVr,ΔVt和ΔVn,則分別兩兩相等。
表2 2個平臺下對歷元時刻的初始軌道根數(shù)的計算結果
表3 SUN工作站平臺下計算結果(鑫諾-1衛(wèi)星2005-06-06T00∶00∶00)
表4 Windows平臺下計算結果(鑫諾-1衛(wèi)星2005-06-06T00∶00∶00)
計算結果的比較表明,由衛(wèi)星定軌軟件分別在SUN工作站平臺上和微機平臺上解得的軌道在RTN地心軌道平面坐標系中的差在-10-5m~10-5m范圍內,幾乎為0,可以認為兩者的軌道坐標是一致的。
為進行更嚴格的比較,我們選取Lageos衛(wèi)星1995年1月中15 d的激光測距資料進行測試。衛(wèi)星定軌軟件的運行時間在SUN工作站平臺用了5 min,Windows平臺用了2 min 16 s,表明移植后衛(wèi)星定軌軟件運行時間縮短了約一半時間,即數(shù)據(jù)處理時間明顯縮短;通過對微機平臺和SUN工作站平臺運行后所得到的有關結果進行比較,得到如下結果:
1)初始時刻的UTC(協(xié)調世界時)、TDT(地球動力學時)、TAI(國際原子時)、UT1(世界時)值相同,說明移植后的時間系統(tǒng)轉換程序正確;
2)從地心天球坐標系轉換到瞬時真赤道地心坐標系,再從瞬時真赤道地心坐標系轉換到準地固坐標系后,2個平臺所得衛(wèi)星位置坐標值一致,說明移植后的坐標轉換程序沒問題;
3)從地心天球坐標系經過一系列變換后,解算出的軌道根數(shù)對2個平臺而言是一致的,說明移植后從地心天球坐標系進行變換,解算軌道根數(shù)的程序是正確的;
4)該軟件移植前、后所得地球定向參數(shù)的值相同,說明移植后的程序中地球定向參數(shù)的計算模型正確;
5)該軟件移植前、后所得3個赤道歲差角Aζ,Aθ,ZA值分別相同,說明移植后的計算赤道歲差角的公式程序正確;
6)該軟件移植前、后所得章動序列基本角引數(shù)1,1′,F(xiàn),D′,Ω值分別相同,說明移植后的計算章動序列基本角引數(shù)的公式程序正確;
7)該軟件移植前、后所得幾何固體潮模型參數(shù)值相同,說明移植后的幾何固體潮模型程序正確;
8)該軟件移植前、后所得地球引力場輸入系數(shù)檢核結果一致,說明移植后的地球引力場模型程序沒問題;
9)該軟件移植前、后所得動力固體潮模型參數(shù)和分潮波有關系數(shù)一致,說明移植后的動力固體潮模型程序正確;
10)該軟件移植前、后所得海洋潮汐模型系數(shù)檢核結果一致,同時移植前后所得分潮波有關系數(shù)值相同,說明移植后的海潮模型程序正確;
11)從地心天球坐標系到地固坐標系轉換后,2個平臺所得坐標值一致,說明移植后的從地心天球坐標系到地固坐標系的轉換程序沒有問題;
12)對應于Lageos衛(wèi)星第一條觀測資料時刻、最后一條觀測資料時刻和最后外推時刻,在2個平臺下計算所得的軌道根數(shù)相同,說明移植后的程序軌道外推沒有問題;
13)SUN工作站平臺下的雙精度是14位有效數(shù)字,Windows平臺下的雙精度是16位有效數(shù)字,移植后的程序在相同時刻,計算地球自轉參數(shù)的偏導數(shù)的數(shù)值在雙精度情況下,可保證有效位數(shù)13位相同。由于計算機字長不等,會影響最后所得參數(shù)解在小數(shù)點后第6位及第6位之后的數(shù)值不同。
14)SUN工作站平臺下的雙精度是14位有效數(shù)字,Windows平臺下的雙精度是16位有效數(shù)字;SUN工作站平臺下的四倍精度是36位有效數(shù)字,Windows平臺下的四倍精度是33位有效數(shù)字。但我們可保證移植前、后雙精度時13位有效數(shù)字相同,四倍精度時32位有效數(shù)字相同。所以對衛(wèi)星定軌運行后數(shù)據(jù)批處理的最后一次迭代計算出來的軌道和軌道根數(shù)進行比較發(fā)現(xiàn),部分值的小數(shù)點后前五位數(shù)相同而第六位不同。
通過對衛(wèi)星定軌軟件分別在Windows平臺和SUN工作站平臺運行后所得到的有關結果進行比較可以得出以下結論:
1)在SUN工作站平臺下和Windows平臺下,解算了3個站的坐標,結果完全相同,如表5所示。
表5 站坐標
2)在SUN工作站平臺下和Windows平臺下,解得的衛(wèi)星軌道測距殘差(O-C)結果也完全一樣,如表6所示。
表6 測距殘差的統(tǒng)計表
3)SUN工作站平臺下和Windows平臺下解得的極移和日長變化的改正量稍有偏差,通過對數(shù)據(jù)進行比較,可以看出極移改正量至少可以保證小數(shù)點后四位數(shù)據(jù)相同;日長變化改正量可以保證小數(shù)點后六位數(shù)據(jù)相同。存在的偏差是計算機字長不等引起的。具體數(shù)據(jù)如表7、表8、表9和表10所示。
表7 SUN工作站平臺下計算得到的極移改正量
表8 Windows 平臺下計算得到的極移改正量
表9 SUN工作站平臺下計算得到的日長變化改正量
表10 Windows 平臺下計算得到的日長變化改正量
上一節(jié)的測試和結果分析表明,衛(wèi)星精密定軌軟件從SUN工作站平臺向微型機Windows平臺的移植工作是非常成功的,不但實現(xiàn)了高保真的程序移植,而且使軟件運行時間明顯縮短,數(shù)據(jù)計算精度也達到了要求。
將衛(wèi)星精密定軌軟件從SUN工作站平臺向Windows平臺上移植,經過對源程序的修改,不但彌補了其語法上的不足,同時增強了定軌軟件的可靠性,更重要的是使用戶更加便于使用此軟件,同時極大地降低了運行成本,簡化了后續(xù)的維護工作。這些都為我們下一步實現(xiàn)該軟件的操作可視化、輸出結果圖形化等工作打下了良好的基礎。另外,這個移植過程是個不斷修改源代碼,不斷在目標平臺編譯測試的過程,在此過程中,我們加深了對2種平臺體系結構的理解,獲得了豐富的移植經驗,從而使以后的同類移植工作能更加順利地進行。
致謝 衛(wèi)星定軌軟件移植工作過程得到了馮初剛和程宗頤老師,弓劍軍、雷輝和陳亮同志的熱心幫助,在此向諸位表示衷心的感謝!
[1] TAPLAY B D. Statistical Orbit Determination Theory[C] // Recent Advances in Dynamical Astronomy Proceeding of the Advanced Study Institute. Italy: [s.n], 1973: 396-425.
[2] 黃珹, 馮初剛. SLR數(shù)據(jù)處理及其軟件實現(xiàn)[K]. 上海: 中國科學院上海天文臺天文地球動力學研究中心, 2003.
[3] 黃珹. 利用Lageos激光測距資料精密確定地球自轉參數(shù)[D]. 上海: 中國科學院上海天文臺, 1985.
[4] 劉杰. 淺談軟件移植[J]. 有色礦業(yè), 1995, 4(11): 53-55.
[5] ZHANG Yuan. Study on a Method of Software Migration From Unix to Windows Platform and the Application[D]. 武漢: 華中科技大學, 2007.
[6] 鄧巍巍, 王越男. Visual FORTRAN編程指南[M]. 北京: 人民郵電出版社, 2000.
Transplantation and Test Analysis of Satellite Orbit Determination Software
JING Yue-juan1,2,3, ZHANG Hui-yan1,2,3, QIAO Rong-chuan1,2
(1. National Time Service Center, Chinese Academy of Sciences, Xi’an 710600, China;
2. Key Laboratory of Precision Navigation and Timing Technology, National Time Service Center, Xi’an 710600, China;
3. Graduate University of Chinese Academy of Science, Beijing 100039, China)
Since the dependence of the satellite orbit determination software on the UNIX platform and the UNIX platform’s command-style operation and so on have restricted the development and application of the satellite orbit determination software, we have transplanted the high accuracy satellite orbit determination software from the UNIX platform to the Windows platform. This article describes the steps of this transplantation, mainly including deletion, supplement and modification to the original program according to the difference between Unix platform and Windows platform. We compared the data resulted from the software before transplantation with that after transplantation and the comparison shows that the transplantation is successful.
satellite orbit determination; Fortran language; software transplantation
P185
A
1674-0637(2010)02-0146-09
2010-02-05
國家自然科學基金資助項目(10573018,10873014)
景月娟,女,碩士研究生,主要從事衛(wèi)星定軌軟件方面的研究。