(武漢船舶職業(yè)技術(shù)學院 武漢430050)
羅經(jīng)是船舶上的重要航行儀器,羅經(jīng)誤差的大小直接關(guān)系到船舶航行的經(jīng)濟性和航行的安全性,只有快速地計算出羅經(jīng)的誤差并進行及時地校正,才能確保船舶在計劃航線上安全地航行.船舶在沿岸或近岸航行時,可以利用專設(shè)的疊標或給定的航行物標來測定羅經(jīng)差,但在開闊的海面上時,一般則只有利用天體來測定羅經(jīng)差了.而傳統(tǒng)的利用觀測低高度太陽方位求羅經(jīng)差通常是通過六分儀觀測太陽方位,然后根據(jù)已知數(shù)據(jù)查航海天文歷,再將所得數(shù)據(jù)代入公式進行計算,該方法費時費力,而且所得羅經(jīng)差值精度也不高[1].本文通過分析航海天文歷的數(shù)據(jù)規(guī)律,建立數(shù)據(jù)庫,然后利用Visual Basic語言,編寫計算羅經(jīng)差的計算軟件,避免查表和計算的繁瑣.
觀測低高度太陽方位求羅經(jīng)差ΔC可以利用疊標的真方位TB與其羅方位CB之差求得,即:ΔC=TB-CB.疊標的真方位TB可以從海圖上量取,當疊標“串視”時利用羅經(jīng)可測得疊標的羅方位CB.
由于觀測時的真實船位未知,所以無法求出天體的真方位,在海上是以推算船位(φc,λc)為基準求得的天體的計算方位Ac來代替天體的真方位TB[2-3]來進行計算求羅經(jīng)差的.
1)選擇好觀測太陽低高度的好時機,太陽低高度應(yīng)小于30°,最好小于15°,準備好方位圈,秒表等器材.
2)連續(xù)測量3次太陽的高度,記下此時的低高度太陽的羅方位,取平均值作為對應(yīng)于平均時間的羅方位CB,記下觀測時的平均時間SMT.
1)在航海天文歷的天體位置表中,以觀測日期和整小時世界時為引數(shù),在相應(yīng)天體的一欄中查得整小時世界時的格林時角GHA′,整小時世界時的赤緯Dec′,赤緯差數(shù)d.
2)在航海天文歷附表的時角、赤緯內(nèi)插表中,以分、秒世界時為引數(shù)λ,在相應(yīng)天體的一欄中查得太陽的時角基本變量m.s(分、秒、世界時的時角基本變量,取“+”).
3)在上述時角、赤緯內(nèi)插表同一頁中,以d引數(shù),在d訂正值一欄中查得訂正值d′.
4)根據(jù)以上查得數(shù)據(jù),由公式:LHA=GHA′+m.s±λEc和Dec= Dec′+d′計算出赤緯Dec和地方時角LHA.
觀測低高度太陽求羅經(jīng)差的計算公式為
公式中的數(shù)據(jù)來自觀測以及根據(jù)推算船位查《航海天文歷》所得,將上述觀測及查表計算求得的數(shù)據(jù)代入計算式(1)和(2)即可求得羅經(jīng)差ΔC[4-5].
在航海天文歷的天體位置表中,以觀測日期和整小時世界時為引數(shù),在相應(yīng)天體的一欄中查得的整小時世界時的格林時角GHA′和整小時世界時的赤緯Dec′都有規(guī)律性.每1d,整小時世界時的格林時角GHA′的整“度”部分GHA1是一個以小時為序數(shù)的遞減等差數(shù)列,差值為15°;整小時世界時的格林時角GHA′的“分”部分GHA′2是一個遞減的等差數(shù)列.整小時世界時的赤緯Dec′也有規(guī)律性,在每1d中,“度”部分DEC1不變,“分”部分DEC′2是一個遞減的等差數(shù)列.在研究過程中,找出數(shù)列的差值rule1和rule2是很容易的,根據(jù)航海天文歷中每天00時刻的格林時角GHA′和赤緯Dec′,利用其差值規(guī)律,就可以建立查表數(shù)據(jù)庫.建立的數(shù)據(jù)庫只需要輸入1年365d每天00時刻的格林時角GHA′和赤緯Dec′,利用遞減等差規(guī)律就可以了.每天的赤緯差數(shù)D是一個定值,直接輸入即可,表1是建立數(shù)據(jù)庫的部分輸入數(shù)據(jù)表.
表1 數(shù)據(jù)庫中太陽位置數(shù)據(jù)表
該部分查表取值的代碼程序如下[6-7]:
gha1=rs.Fields(“GHA1”)
gha2=rs.Fields(“GHA2”)
dec1=rs.Fields(“DEC1”)
dec2=rs.Fields(“DEC2”)
str=rs.Fields(“D”)
rule1=rs.Fields(“rule1”)
rule2=rs.Fields(“rule2”)
在查得格林時角、赤緯和赤緯差數(shù)后,另外還需要在時角、赤緯內(nèi)插表中,以分、秒世界時為引數(shù),在相應(yīng)天體的一欄中查得太陽的m.s,并且在同一頁中,以d引數(shù),在d訂正值一欄中查訂正值d′.
由于觀測太陽時一般不精確到秒,通常以整min,0s為引數(shù)查得對應(yīng)的一個值.在建立數(shù)據(jù)庫時需要將0~59分中每1min 0s時的那個分、秒世界時的時角基本變量m.s輸入數(shù)據(jù)庫即可.然后建立以上一個數(shù)據(jù)庫表中D為引數(shù)的第二個數(shù)據(jù)庫表,查得訂正值d′.由于太陽的赤緯差數(shù)d通常不超過1.4,因此,只需要輸入0.0~1.4s對應(yīng)的15個訂正值d′即可.由于數(shù)據(jù)量不大,將所有數(shù)據(jù)輸入也很方便,見表2.
該部分查表取值的代碼程序如下:
ms1=rs.Fields(“du”)
ms2=rs.Fields(“fen”)
d1=rs.Fields(str)
表2 數(shù)據(jù)庫中時角、赤緯內(nèi)插表
通過將航海天文歷中的相關(guān)數(shù)據(jù)輸入數(shù)據(jù)庫,就可以建立完整的查表數(shù)據(jù)庫.因此,建立數(shù)據(jù)庫輸入的數(shù)據(jù)量比較小.另外,航海天文歷每年都需要更新,因之數(shù)據(jù)庫數(shù)據(jù)的更新也比較方便.
計算羅經(jīng)差的軟件程序是在VB環(huán)境中開發(fā)出來的,VB軟件中double變量可以計算到小數(shù)點后14位,為了精確計算,所以把計算方位定義為double類型的變量.由于計算羅經(jīng)差時,利用的已知數(shù)據(jù)有日期、船時、船位數(shù)據(jù)(經(jīng)緯度)、觀測方位,因此可以建立如圖1所示的程序界面.
圖1 羅經(jīng)差軟件界面
為了計算羅經(jīng)差,通過下列程序[8-9]
If((jingdu Mod 15)*60+jingfen)<450Then
zd=j(luò)ingdu\15
ElseIf((jingdu Mod 15)*60+jingfen)>450 Then
zd=j(luò)ingdu\15+1
求得區(qū)時ZD,然后通過下列程序獲得數(shù)據(jù)庫中的查表引數(shù)“日期ri”、“小時shi”、“分鐘fen”
hi=chuanshi-zd
fen=chuanfen/此處得出查表參數(shù)世界時的整分
If shi>24Then
shi=shi-24
ri=ri+1
ElseIf shi<0Then
shi=shi+24/此處得查表參數(shù)世界時的整小時
ri=ri-1/此處為查表參數(shù)日
以上述程序中求得的“日期ri”、“小時shi”、“分鐘fen”為引數(shù),通過下列程序
cnn.ConnectionString="Provider=Microsoft.
Jet.OLEDB.4.0;
Data Source="& App.Path & "\db1.mdb"
連接數(shù)據(jù)庫,然后通過以下程序
rs.Open"select*from Option_table where month="&yue &"and date="&ri,cnn
rs.Open"select*from INC_Table where minute="&fen,cnn
調(diào)用數(shù)據(jù)庫中的數(shù)據(jù),獲得數(shù)據(jù)庫中的格林時角 值 GHA′(度,gha1;分,gha2)、赤緯 Dec′(度,DEC1;分,DEC2)、時角基本變量 m.s(度,ms1;分,ms2)和訂正值d1.再將上述程序求得的值利用下列程序代碼
從而計算得最后的羅經(jīng)差值g.
在上述程序中,三角函數(shù)的計算要用弧度,所以先要將輸入的角度轉(zhuǎn)化為弧度.另外,用4個單選按鈕選擇位置和時間,因為計算出來的是半圓方位,所以要把它轉(zhuǎn)化為圓周方位再進行計算.
例 2004年10月20日,船時SMT 1543,推算船位φc34°23.0′S,λc122°50.7′E,測得低高度太陽羅方位CB 280°,求羅經(jīng)差ΔC.
解析 應(yīng)用下面2種方法求羅經(jīng)差并進行對比.
先通過觀測及查《航海天文利》求得相關(guān)數(shù)據(jù),然后進行如下計算.
1)利用六分儀測得1543時的羅方位CB值為280°,利用世界時計算式有:GMT=ZT+ZD=1543-0800=0743.
2)以觀測日期和整小時世界時為引數(shù),在航海天文歷中相應(yīng)天體的一欄中查得:GHA′=288°48.4′,Dec′=10°29.3′S,D=0.9.
3)以分、秒世界時為引數(shù),在航海天文歷相應(yīng)天體的一欄中查得太陽的 m.s=10°44.3′.
4)以d引數(shù),在上述同一頁中d訂正值一欄中查得訂正值d′=0.7′.
5)由計算式:
6)根據(jù)公式有
7)將半圓周法表示的Ac轉(zhuǎn)換為圓周法表示
最后根據(jù)公式求得羅經(jīng)差
即所求羅經(jīng)差ΔC=-12°.00(在上述計算過程中,由于除不盡計算過程中進行了四舍五入).
將已知數(shù)據(jù)輸入到設(shè)計的VB軟件程序運行界面,并根據(jù)觀測時間(上午或下午)及測者緯度選擇北緯上午、北緯下午、南緯上午、南緯下午中的一個.然后點擊程序運行界面中的控鈕(計算),程序便會自動進行計算,則羅經(jīng)差將在運行界面中顯示出來.程序運行界面見圖2.由圖2可知,利用軟件計算的羅經(jīng)差結(jié)果為-11.984 763 912 394 8°.
圖2 羅經(jīng)差計算軟件運行界面圖
以上2種方法求得的羅經(jīng)差值是一致的,說明了開發(fā)的計算羅經(jīng)差軟件具有可行性.通過對比,利用開發(fā)的求羅經(jīng)差的軟件程序來求羅經(jīng)差,相對原來用計算器求羅經(jīng)差具有計算速度更快、精度更高、更省時省力等優(yōu)點.
開發(fā)求羅經(jīng)差的軟件對于求羅經(jīng)差具有重要的意義,通過應(yīng)用此軟件與傳統(tǒng)的一船計算器計算羅經(jīng)差對照,從而顯示該軟件程序在計算羅經(jīng)差過程中的省時、省力、精度高等優(yōu)越性.如將此軟件應(yīng)用于航海中,可以有效減船員的工作量,提高求羅經(jīng)差的效率,有助于船舶的安全航行.
[1]郭 禹.航海學[M].大連:大連海事大學出版社,2005.
[2]高玉德.航海學[M].大連:大連海事大學出版社,2007.
[3]李 勇.航用恒星測羅經(jīng)差的基本原理[J].航海技術(shù),2001(5):13-14.
[4]趙懷森.對天測羅經(jīng)差計算方位的誤差分析[J].天津航海,2008(4):18-19.
[5]王富華.觀測太陽低高度求羅經(jīng)差有利時機的探討[J].天津航海,2002(1):3-5.
[6]李生山.淺談VB程序設(shè)計要素:數(shù)組[J].科技信息:學術(shù)研究,2008(32):179-179.
[7]鄭佳春.航標遙測遙控系統(tǒng)的關(guān)鍵技術(shù)研究[J].中國航海,2006(4):61-65.
[8]吳建華,李紅祥,周 鵬.虛擬航標系統(tǒng)的開發(fā)與仿真[J].中國航海,2007(4):54-57.
[9]SILER B.Visual Basic6.0開發(fā)使用手冊[M].北京:機械工業(yè)出版社,1999.