摘要接收天線的方位角、仰角的確定是衛星地面接收站能否有效進行數據通信的關鍵。目前大部分的方位角、仰角計算工作都是在計算器或相關的電腦軟件程序輔助下完成。這些計算工具在機動模式或緊急情況等特殊工作環境下使用、攜帶和操作起來十分不方便。本文提出了基于J2ME平臺下實現手機計算衛星方位角、仰角的解決方案。
關鍵詞J2ME 手機 衛星接收天線 方位角 仰角
中圖分類號:TN91文獻標識碼:A
1 引言
接收天線的尋星精度是影響衛星通信信號強弱好壞的重要指標,在鎖定天線方位角、仰角的時候,目前都需要事先使用計算器或相關的電腦軟件程序進行計算,再把得出的數據應用到實際對星工作中。當天線頻繁跨地區大范圍機動或者需要調試的設備數量眾多而參數又各不相同時,那么傳統的計算工具就無法快速的進行計算處理;如果在緊急情況下正好沒有相關的計算工具,那只能套用公式進行人工計算了。目前絕大多數人都配備有手機,本文根據手機攜帶方便、運算能力強的特點,提出了基于J2ME平臺下實現手機計算衛星方位角、仰角的解決方案。
2 J2ME介紹
J2ME即JAVA 2 Micro Edition,是Java2的組成部分,與J2SE、J2EE并稱。J2ME是一種高度優化的Java運行環境,應用于大量的消費類電子設備,如蜂窩電話、可視電話、數字機頂盒、汽車導向系統等,同時也廣泛被移動通信設備所采用,如移動電話、雙向尋呼機、智能卡、個人電腦記事本和掌上電腦等。J2ME技術具有以下特點:(1) 內在的一致性或跨平臺性,使得他可以在任何地方、任何時間、任何設備上運行;(2) 強大的、高級的面向對象的編程語言,有廣大開發者支持的基礎;(3) 代碼可移植性;(4) 網絡傳輸的安全性;(5) 技術可擴展性。
3 系統設計
本文將方位角、仰角計算模塊整合在同一個窗口中。如圖1所示,當用戶在手機上輸入衛星經度和接收天線所在地的經緯度后,系統便能夠快速的算出衛星接收天線的方位角、仰角。
圖1系統運行流程圖
4 實現與關鍵技術
4.1 角度和弧度的轉換
由于計算方位角和仰角的計算是角度值的換算,而J2ME中三角函數的計算為弧度值的換算。所以在J2ME調用相關三角函數時需要先將角度值轉換成弧度值,得到相應的函數值后再將弧度值轉換成角度值。在J2ME中提供了角度值和弧度值換算的方法:
Math.toDegrees(angrad);//將弧度值轉換成角度值;
Math.toRadians(angdeg);//將角度值轉換成弧度值。
4.2 反正切函數構建
J2ME中只提供了Sin、Cos、Tan三個三角函數方法,而在方位角、仰角計算中需要調用反正切三角函數arcTan,所以需要根據反正切三角函數的特性構造arcTan方法。構造arcTan的方式很多,可以利用遍歷查表法,也可以利用泰勒公式的算法。本文舉例代碼部分如下:
public class SuperMath {
public static double arcTan(double radian) {
double retval = 0d;
if (Math.abs(radian) <= 1.0d) {
retval = radian / (1.0d + 0.3d * sqr(radian));
} else {
retval = -radian / (sqr(radian) + 0.295d);
if (radian < -1.0d) {
retval = retval - Math.PI / 2;
} else {
retval = retval + Math.PI / 2;
}
}
return retval;
}
public static double arcTan(double y, double x) {
if (y == 0.0d x == 0.0d) {
return 0.0d;
}
if (x > 0.0d) {
return arcTan(y / x);
}
if (x < 0.0d) {
if (y < 0.0d) {
return (-(Math.PI - arcTan(y / x)));
} else {
return (Math.PI - arcTan(-y / x));
}
}
return y >= 0.0d ? Math.PI / 2 : Math.PI / 2;
}
public static double sqr(double x) {
return x * x;
}
}
4.3 方位角、仰角計算
方位角的計算公式為:A=arctan{tan(s-g)/sin};
仰角的計算公式為:
根據公式本文設計以下代碼
double x1 = Math.sin(Math.toRadians(Integer.parseInt(jsdwd.getString())));
double y1 =Math.tan(Math.toRadians(Integer.parseInt(jsdjd.getString())
-Integer.parseInt(wxjd.getString())));
double a1 = Math.toDegrees(SuperMath.arcTan(y1 / x1));
//將sin的值賦予變量x1并將tg(s-g)的值賦予變量y1,把得到的arcTan(y1/x1)值賦予變量a1。
double a2 =Math.cos(Math.toRadians(Integer.parseInt(jsdjd.getString())
-Integer.parseInt(wxjd.getString())));
double b2 = Math.cos(Math.toRadians(Integer.parseInt(jsdwd.getString())));
double x2 = a2 * b2 - 0.15127;
double y2 = Math.sqrt(1 - (a2 * b2) * (a2 * b2));
double c2 = Math.toDegrees(SuperMath.arcTan(x2 / y2));
//將cos(s-g)的值賦予變量a2并將cos的值賦予變量b2,把a2 * b2 - 0.15127值賦予變量x2,將的值賦予變量y2,最后把得到的arcTan(x2 / y2)值賦予c2。
5 實驗案例
本系統在任何一款可以運行JAVA軟件的手機上運行。系統的界面包含:衛星經度輸入框,接收地接收地經度輸入框,接收地緯度輸入框,方位角、仰角顯示標簽和計算鍵。當三個輸入框輸入相應的數據后,通過觸發計算鍵監聽功能進行方位角、仰角的計算,而得到的結果將對應顯示在方位角、仰角顯示標簽中。
如圖2所示,以亞太6號通信衛星(134€癊)為例,假設接收天線所在地為福建邵武(117€癊,27€癗),通過計算得到的方位角約為-33.96€埃黿竊嘉?3.25€啊?
6 結束語
值得注意的是,在本系統中為了滿足小數點的運算精度應使用CLDC1.1以上的版本。CLDC(Connected Limited Device Configuration,聯網的受限設備配置)是用來開發在無線設備上運行的應用程序所要用到的一組最小的 API。本文提出的手機計算方位角、仰角程序具有良好的便攜性、成本較低、使用方便,實現了手機運算和接收天線對星工作的有效結合,在一定程度上拓展了手機軟件業務的應用。
參考文獻
[1]欒喆.衛星地面站接收天線仰角、方位角的計算程序.有線電視技術,2003.10(12).
[2]李江,薛全.J2ME平臺下基于手機定位實現的移動GIS導航系統.現代電子技術,2007.30(8):43~45.
[3]徐子焜.J2ME里面的一些未實現的三角函數.2008-05-04.18:23:00.http://blog.csdn.net/xzknet/archive/2008/05/04/2384620.aspx.