周 灝
(蘇州廣播電視總臺,江蘇 蘇州 215006)
?
iOS系統(tǒng)尋衛(wèi)星參數(shù)計算器的設(shè)計
周灝
(蘇州廣播電視總臺,江蘇蘇州215006)
鑒于數(shù)字衛(wèi)星新聞采集在電視傳輸?shù)膹V泛應(yīng)用,方便、快速和準(zhǔn)確地尋找衛(wèi)星變得非常重要。依靠iOS系統(tǒng)的設(shè)備,iOS衛(wèi)星參數(shù)計算器軟件能夠輕易地在移動電話上使用,因此它也可以成為許多包含有衛(wèi)星參數(shù)計算器功能的天線控制器的備件。首先,介紹了尋找衛(wèi)星的幾個參數(shù),之后提出了核心計算方法。最后,仿真器測試和iPhone測試表明該軟件可以支持快速尋找衛(wèi)星。
iOS;DSNG;尋星參數(shù)
為了實現(xiàn)新聞的快速報道,廣電工作者通常采用3G、4G以及衛(wèi)星傳輸?shù)确绞?,由于基站以及帶寬方面的限制,有大型新聞事件時,為確保傳輸質(zhì)量,通常采用衛(wèi)星直播連線的方式。在衛(wèi)星連線中,尋星是非常重要的,尋星的關(guān)鍵是調(diào)整到正確的俯仰角、方位角和極化角以搜尋衛(wèi)星信標(biāo)。許多有自動尋星的衛(wèi)星天線控制器也是通過調(diào)整這3個角度參數(shù)完成尋星的,但是利用設(shè)備自動尋星往往耗時長,為爭取時間,對于常用的幾顆衛(wèi)星,通常采用手動尋星的方式,即手動控制天線控制器完成衛(wèi)星天線的俯仰角、方位角和極化角的調(diào)整。該方法需要一個能夠根據(jù)當(dāng)?shù)亟?jīng)緯度坐標(biāo)精確計算衛(wèi)星天線3個角度參數(shù)的軟件,經(jīng)過調(diào)查發(fā)現(xiàn)智能手機幾乎都有GPS定位的功能,因此可以設(shè)計一個軟件,根據(jù)手機內(nèi)部的GPS定位信息獲得當(dāng)?shù)亟?jīng)緯度,根據(jù)選擇衛(wèi)星的經(jīng)度,進(jìn)而計算出衛(wèi)星天線的3個角度參數(shù),完成尋星。
在智能手機中,鑒于蘋果公司的iPhone智能手機具有較高的市場占有量,以及系統(tǒng)穩(wěn)定等特點,本文的軟件選定在蘋果iOS系統(tǒng)上進(jìn)行開發(fā)實驗。
在調(diào)節(jié)拋物面天線接收衛(wèi)星信號時,關(guān)鍵在于調(diào)節(jié)3個參數(shù),即天線的俯仰角、方位角和極化角。
根據(jù)文獻(xiàn)[1-3],首先介紹位置矢量的概念,位置矢量就是從接收點指向同步衛(wèi)星的矢量。
天線俯仰角是位置矢量與地平面的夾角,如圖1所示。
圖1 天線俯仰角示意圖
對于偏饋天線,由于其高頻頭不在天線的中心軸線上,高頻頭與天線的中心軸線之間存在一個偏饋角,所以此時的偏饋天線俯仰角等于正饋天線的俯仰角加上偏饋角。
天線方位角是位置矢量在地平面的投影與接收點正南方向的夾角,如圖2所示。
圖2 天線方位角示意圖
天線極化角是順著電磁波傳輸方向,接收點地平面與水平極化波電場平面之間的夾角。在接收天線的口面上,極化角就是水平極化波電場矢量與水平方向之間的夾角,或者垂直極化電場矢量與垂直方向之間的夾角,如圖3所示。
圖3 天線極化角示意圖
根據(jù)文獻(xiàn)[3],得到衛(wèi)星接收天線仰角和方位角如下
(1)
(2)
(3)
式中:θ為地面站的緯度值;φ1為地面站的經(jīng)度;φSAT為衛(wèi)星在地球上的投影所對應(yīng)的經(jīng)度。
本軟件編寫采用的是蘋果公司的XCODE7.1,iPhone的iOS9.1系統(tǒng)做為真機測試。
對于iOS移動設(shè)備的定位,即獲取當(dāng)?shù)氐牡乩斫?jīng)度、緯度坐標(biāo),主要來源于3種渠道。第一,GPS系統(tǒng),美國政府發(fā)射了多顆衛(wèi)星組成全球定位系統(tǒng)(GlobalPositionSystem),利用GPS接收器就可以獲得當(dāng)?shù)氐慕?jīng)緯度信息。該方法得到的經(jīng)緯度坐標(biāo)較準(zhǔn)確,不過比較費電,而且需要接收地點相對空曠,在隧道以及密集的樓宇之間往往接收不到信號。第二,蜂窩通信基站,各大移動通信商都在當(dāng)?shù)赜兄姸嗟姆涓C通信基站用于信號傳輸,手機可以利用離它很近的蜂窩基站近似定位自己的位置。該方法得到的經(jīng)緯度精度低于GPS,它取得定位位置實際上是移動通信基站的位置,但是只要有移動通信信號,樓道里面也可以獲得定位信息。第三,WiFi定位,通過查詢一個WiFi路由器的地理位置的信息。該方法最省電,不依賴衛(wèi)星,也不依賴基站,不過精度也最差。
以上3種定位方式中,GPS定位的精度最佳,如果設(shè)備里面含有GPS接收器,iOSSDK的設(shè)備定位框架CoreLocation會首先使用GPS。如果沒有GPS接收器硬件,或者GPS無法獲取當(dāng)?shù)匚恢脮r,CoreLocation才會采用蜂窩基站或者WiFi。
3.1定位并獲取當(dāng)?shù)亟?jīng)緯度
首先,繪制軟件界面。該界面需要有當(dāng)?shù)亟?jīng)緯度、地圖顯示、衛(wèi)星經(jīng)度,以及計算出當(dāng)?shù)貙ふ倚l(wèi)星時天線需要調(diào)節(jié)的俯仰角、方位角和極化角。最后需要一個地圖顯示當(dāng)?shù)氐牡乩砦恢?,其界面布局如圖4所示。
圖4 軟件布局圖(截圖)
其中,定位并獲得當(dāng)?shù)亟?jīng)緯度的主要程序如下:
- (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocationfromLocation:(CLLocation *)oldLocation
{
if (wasFound) return;
wasFound = YES;
CLLocationCoordinate2Dloc = [newLocationcoordinate];
longitude.text = [NSStringstringWithFormat:@"%f", loc.longitude];
latitude.text = [NSStringstringWithFormat:@"%f", loc.latitude];
}
CoreLocation中使用CLLocationManager對象來做用戶定位,CLLocation對象包含定點相關(guān)的信息,有以下幾個主要屬性,coordinate,altitude,horizontalAccuracy,verticalAccuracy,timestamp等。
Loc是CLLocation的實例,在core Location框架中用來存儲CLLocationCoordinate2D實例的coordinate,包含longitude(經(jīng)度)和altitude(緯度)的結(jié)構(gòu)。
可以輸入本地經(jīng)緯度的初始參數(shù),以蘇州為例,軟件輸入的本地經(jīng)度為120.634 195,本地緯度為31.293 51。為了讓軟件計算有更好的精度,數(shù)據(jù)都采用浮點型的格式,保留小數(shù)點后6位。
本軟件定位的基本步驟如下:
1)先啟動CLLocationManager ,使用startUpdatingLocation方法啟動所有定位硬件,反之,通過調(diào)用stopUpdatingLocation方法關(guān)閉定位服務(wù)器更新,為了省電必須在不用的時候調(diào)用該方法關(guān)閉定位服務(wù)。自iOS6.0版本開始,蘋果公司在保護用戶的隱私權(quán)利上有較大進(jìn)步,首次訪問用戶的位置時,需要獲得用戶的授權(quán)。此外,該程序還會判斷用戶的定位服務(wù)是否已經(jīng)打開,本程序自動設(shè)定永久打開。用戶也可以在手機設(shè)定中手動關(guān)閉定位服務(wù)。
2)定位服務(wù)開啟之后,隨著設(shè)備的不斷移動,需要根據(jù)需要更新當(dāng)前的地理位置坐標(biāo),判斷定位精度有多個標(biāo)準(zhǔn),即kCLLocationAccuracyNearestTenMeters,10 m,kCLLocationAccuracyHundredMeters,100 m,kCLLocationAccuracyKilometer,1 000 m,kCLLocationAccuracyThreeKilometers,3 000 m,kCLLocationAccuracyBest,最好的精度。本軟件采用最高精度,精度越高,定位越頻繁,移動設(shè)備的耗電量也會比較高。
3)開啟定位委托,獲取經(jīng)緯度信息。CLLocationManagerDelegate是定位服務(wù)的委托,常用的位置變化回調(diào)方法是:
locationManager:didUpdateToLocation:fromLocation: locationManager:didFailWithError。
CLLocationManager 是定位服務(wù)管理類,用CLLocation的實例 CLLocationCoordinate2D來得到coordinate的結(jié)構(gòu),取coordinate的經(jīng)緯度信息,并用浮點型的形式記錄。
3.2顯示當(dāng)?shù)氐貓D的程序
插入一個地圖控件,選擇Map View控件,對該控件寫入相應(yīng)的程序如下。
先在viewDidLoad方法里面用setShowsuserLocation來實現(xiàn)地圖定位,設(shè)置Map View的委托類如下:
- (void)viewDidLoad {
[self.mapViewsetDelegate:self];
[self.mapViewsetShowsUserLocation:YES];
[superviewDidLoad];
}
設(shè)置Map View的委托為自身,并確定標(biāo)注自身位置。
實現(xiàn)地圖顯示程序如下:
-(void)mapView:(MKMapView*)mapViewdidUpdateUserLocation:(MKUserLocation *)userLocation {
CLLocationCoordinate2Dloc= [userLocationcoordinate];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 1500, 1500);
[self.mapViewsetRegion:regionanimated:YES];
}
MKMapView可以通過 setShowsUserLocation:YES這個方法來獲取自己的位置,并且當(dāng)?shù)貓D更新自己的位置后會調(diào)用如下程序中一個協(xié)議的委托方法以實現(xiàn)地圖定位:
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
首先,在viewDidLoad方法里,調(diào)用setShowsUserLocation方法來實現(xiàn)地圖的定位,并且設(shè)置MapView的委托類,本程序中設(shè)置委托為自己,即self.mapview setDelegate:self,再標(biāo)注自身位置self.mapView setShowsUserLocation:YES。
最后,通過如下方法來定位用戶當(dāng)前位置,并以此為中心顯示地圖:
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
其中,MKCoordinateRegionMakeWithDistance(loc,1 500,1 500)是顯示地圖放大的程度,兩個1 500分別表示顯示的高度以及顯示半徑。
3.3計算天線參數(shù)
在通過CLLocation獲得當(dāng)?shù)囟ㄎ坏慕?jīng)緯度信息后,根據(jù)經(jīng)緯度以及設(shè)定的衛(wèi)星經(jīng)度信息,根據(jù)式(1)~(3),計算相應(yīng)天線調(diào)節(jié)的俯仰角、方位角和極化角。點擊“計算”按鈕,計算天線方位角的程序為:
newlong =[longitude.textfloatValue];//當(dāng)?shù)亟?jīng)度
newsat = [_satlong.textfloatValue];//選擇衛(wèi)星的經(jīng)度
longdelta = (newlong-newsat)* 3.1415926/180;//選擇衛(wèi)星的經(jīng)度與當(dāng)?shù)亟?jīng)度之差
newlat = [latitude.textfloatValue];//當(dāng)?shù)鼐暥?/p>
latitudehudu = newlat*3.1415926/180;//當(dāng)?shù)鼐暥葥Q算為弧度值
azimhudu = atanf(sinf(longdelta)/(cosf(longdelta)*sinf(latitudehudu)));
if (azimhudu*180/3.1415926<0) {
azimlabel.text = @"南偏東";
}
else
{
azimlabel.text = @"南偏西";
}
_azim.text= [NSStringstringWithFormat:@"%f", azimhudu*180/3.1415926];
注意到計算中,需要把角度值換算為弧度值進(jìn)行數(shù)學(xué)運算。該計算方法中,方位角為正南時,其方位角為0。該值小于0時,表示為南偏東;否則,為南偏西。
同樣方法計算俯仰角:
elevhudu = atanf((cosf(latitudehudu)*cosf(longdelta)-0.15127)/sqrtf(1-cosf(longdelta)*cosf(longdelta)*cosf(latitudehudu)*cosf(latitudehudu)));
_elev.text = [NSStringstringWithFormat:@"%f", elevhudu*180/3.1415926];
計算極化角:
polhudu = -1*atanf(sinh(longdelta)/(tanf(latitudehudu)));
if (polhudu*180/3.1415926>0) {
pollabel.text = @"逆時針";
}
else
{
pollabel.text = @"順時針";
}
_ pol.text=[NSStringstringWithFormat:@"%f",polhudu*180/3.1415926];
該弧度值大于0時,從電磁波入射方向來看,為逆時針旋轉(zhuǎn),否則即為順時針旋轉(zhuǎn)。
在Xcode里面用simulator進(jìn)行仿真,顯示如圖5所示。
圖5 軟件界面仿真圖(截圖)
在仿真器里需要設(shè)置定位信息,參考位置如圖6所示。選中香港作為定位,得到地圖顯示如圖7所示。選擇衛(wèi)星經(jīng)度時,鍵盤彈出時會覆蓋天線的角度參數(shù),如圖8所示。
圖6 定位坐標(biāo)圖(截圖)
圖7 模擬器仿真圖(截圖)
圖8 輸入衛(wèi)星經(jīng)度(截圖)
需要在寫好衛(wèi)星經(jīng)度時消除鍵盤,否則鍵盤會遮擋天線的一些參數(shù),消除鍵盤的程序為:
-(IBAction)backgroundtap:(id)sender;
本地經(jīng)度、本地緯度、衛(wèi)星經(jīng)度以及3個衛(wèi)星天線角度參數(shù)這些需要鍵盤輸入數(shù)值的地方,都需要消除鍵盤,所以程序編寫如下:
- (IBAction)backgroundtap:(id)sender {
[longituderesignFirstResponder];
[latituderesignFirstResponder];
[_satlongresignFirstResponder];
[_elevresignFirstResponder];
[_polresignFirstResponder];
[_azimresignFirstResponder];
}
軟件仿真得到衛(wèi)星天線參數(shù),如圖9所示。
圖9 衛(wèi)星參數(shù)的模擬器仿真圖(截圖)
之后在iPhone5c手機上,iOS系統(tǒng)為9.0版本,以蘇州本地的環(huán)境真機測試,結(jié)果如圖10所示。
圖10 真機測試結(jié)果圖(截圖)
經(jīng)過真機測試,該軟件能夠在iPhone手機上順利運行,較快可以獲取當(dāng)?shù)氐貓D、經(jīng)緯度坐標(biāo),根據(jù)所需尋找的衛(wèi)星經(jīng)度,準(zhǔn)確計算出衛(wèi)星天線的3個角度參數(shù),能夠幫助工程技術(shù)人員迅速尋找衛(wèi)星,節(jié)約時間。
本文以工作中的實際遇到的問題為例,提出了在iPhone手機上制作iOS系統(tǒng)的工作軟件,該軟件可以利用iPhone手機內(nèi)置的定位系統(tǒng)迅速獲得經(jīng)緯度,并通過所要尋找的衛(wèi)星的經(jīng)度,計算可以得到天線的俯仰角、極化角、方位角。該軟件對于手動迅速尋星有直接的幫助。經(jīng)過實際檢測,該軟件計算速度較快,精度較高,能夠滿足衛(wèi)星天線調(diào)節(jié)的要求。由于作者經(jīng)驗不足,論文中間的不當(dāng)之處,請批評指正。
[1]車晴,張文杰,王京玲.數(shù)字衛(wèi)星廣播與微波技術(shù)[M].北京:中國廣播電視出版社,2003.
[2]鄧四化. 衛(wèi)星接收天線仰角和方位角計算公式的推導(dǎo)[J]. 中國有線電視,1998(8):45-46.
[3]陳建林,周灝,張姍姍. Windows Mobile嵌入式手機天線參數(shù)計算器的設(shè)計[J]. 電視技術(shù),2011,35(18):78-80.
Design of iOS satellite searching parameter calculator
ZHOU Hao
(SuzhouBroadcastingSystem,JiangsuSuzhou215006,China)
Considering digital satellite news gathering (DSNG) is widely used in TV transmission,the convenience, high speed and accuracy is important in satellite searching. Based on iOS instruments, the iOS satellite parameter calculator software, which is shown in this paper, can be easily used in cell phone, so that it can be a standby instrument for many antenna controllers which may always contain satellite parameter calculator. Firstly, in this paper,satellite searching parameters are introduced, then the kernel calculating method is described.At last, simulator tests and iPhone tests indicate that this software can support satellite searching rapidly.
iOS;DSNG;satellite searching parameters
TN949
BDOI:10.16280/j.videoe.2016.10.017
2015-10-23
文獻(xiàn)引用格式:周灝.iOS系統(tǒng)尋衛(wèi)星參數(shù)計算器的設(shè)計[J].電視技術(shù),2016,40(10):82-87.
ZHOU H.Design of iOS satellite searching parameter calculator[J].Video engineering,2016,40(10):82-87.
周灝,蘇州廣電總臺技術(shù)中心傳輸工程師。
責(zé)任編輯:時雯