周 灏
(苏州广播电视总台,江苏 苏州 215006)
iOS系统寻卫星参数计算器的设计
周灏
(苏州广播电视总台,江苏苏州215006)
鉴于数字卫星新闻采集在电视传输的广泛应用,方便、快速和准确地寻找卫星变得非常重要。依靠iOS系统的设备,iOS卫星参数计算器软件能够轻易地在移动电话上使用,因此它也可以成为许多包含有卫星参数计算器功能的天线控制器的备件。首先,介绍了寻找卫星的几个参数,之后提出了核心计算方法。最后,仿真器测试和iPhone测试表明该软件可以支持快速寻找卫星。
iOS;DSNG;寻星参数
为了实现新闻的快速报道,广电工作者通常采用3G、4G以及卫星传输等方式,由于基站以及带宽方面的限制,有大型新闻事件时,为确保传输质量,通常采用卫星直播连线的方式。在卫星连线中,寻星是非常重要的,寻星的关键是调整到正确的俯仰角、方位角和极化角以搜寻卫星信标。许多有自动寻星的卫星天线控制器也是通过调整这3个角度参数完成寻星的,但是利用设备自动寻星往往耗时长,为争取时间,对于常用的几颗卫星,通常采用手动寻星的方式,即手动控制天线控制器完成卫星天线的俯仰角、方位角和极化角的调整。该方法需要一个能够根据当地经纬度坐标精确计算卫星天线3个角度参数的软件,经过调查发现智能手机几乎都有GPS定位的功能,因此可以设计一个软件,根据手机内部的GPS定位信息获得当地经纬度,根据选择卫星的经度,进而计算出卫星天线的3个角度参数,完成寻星。
在智能手机中,鉴于苹果公司的iPhone智能手机具有较高的市场占有量,以及系统稳定等特点,本文的软件选定在苹果iOS系统上进行开发实验。
在调节抛物面天线接收卫星信号时,关键在于调节3个参数,即天线的俯仰角、方位角和极化角。
根据文献[1-3],首先介绍位置矢量的概念,位置矢量就是从接收点指向同步卫星的矢量。
天线俯仰角是位置矢量与地平面的夹角,如图1所示。
图1 天线俯仰角示意图
对于偏馈天线,由于其高频头不在天线的中心轴线上,高频头与天线的中心轴线之间存在一个偏馈角,所以此时的偏馈天线俯仰角等于正馈天线的俯仰角加上偏馈角。
天线方位角是位置矢量在地平面的投影与接收点正南方向的夹角,如图2所示。
图2 天线方位角示意图
天线极化角是顺着电磁波传输方向,接收点地平面与水平极化波电场平面之间的夹角。在接收天线的口面上,极化角就是水平极化波电场矢量与水平方向之间的夹角,或者垂直极化电场矢量与垂直方向之间的夹角,如图3所示。
图3 天线极化角示意图
根据文献[3],得到卫星接收天线仰角和方位角如下
(1)
(2)
(3)
式中:θ为地面站的纬度值;φ1为地面站的经度;φSAT为卫星在地球上的投影所对应的经度。
本软件编写采用的是苹果公司的XCODE7.1,iPhone的iOS9.1系统做为真机测试。
对于iOS移动设备的定位,即获取当地的地理经度、纬度坐标,主要来源于3种渠道。第一,GPS系统,美国政府发射了多颗卫星组成全球定位系统(GlobalPositionSystem),利用GPS接收器就可以获得当地的经纬度信息。该方法得到的经纬度坐标较准确,不过比较费电,而且需要接收地点相对空旷,在隧道以及密集的楼宇之间往往接收不到信号。第二,蜂窝通信基站,各大移动通信商都在当地有着众多的蜂窝通信基站用于信号传输,手机可以利用离它很近的蜂窝基站近似定位自己的位置。该方法得到的经纬度精度低于GPS,它取得定位位置实际上是移动通信基站的位置,但是只要有移动通信信号,楼道里面也可以获得定位信息。第三,WiFi定位,通过查询一个WiFi路由器的地理位置的信息。该方法最省电,不依赖卫星,也不依赖基站,不过精度也最差。
以上3种定位方式中,GPS定位的精度最佳,如果设备里面含有GPS接收器,iOSSDK的设备定位框架CoreLocation会首先使用GPS。如果没有GPS接收器硬件,或者GPS无法获取当地位置时,CoreLocation才会采用蜂窝基站或者WiFi。
3.1定位并获取当地经纬度
首先,绘制软件界面。该界面需要有当地经纬度、地图显示、卫星经度,以及计算出当地寻找卫星时天线需要调节的俯仰角、方位角和极化角。最后需要一个地图显示当地的地理位置,其界面布局如图4所示。
图4 软件布局图(截图)
其中,定位并获得当地经纬度的主要程序如下:
- (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对象包含定点相关的信息,有以下几个主要属性,coordinate,altitude,horizontalAccuracy,verticalAccuracy,timestamp等。
Loc是CLLocation的实例,在core Location框架中用来存储CLLocationCoordinate2D实例的coordinate,包含longitude(经度)和altitude(纬度)的结构。
可以输入本地经纬度的初始参数,以苏州为例,软件输入的本地经度为120.634 195,本地纬度为31.293 51。为了让软件计算有更好的精度,数据都采用浮点型的格式,保留小数点后6位。
本软件定位的基本步骤如下:
1)先启动CLLocationManager ,使用startUpdatingLocation方法启动所有定位硬件,反之,通过调用stopUpdatingLocation方法关闭定位服务器更新,为了省电必须在不用的时候调用该方法关闭定位服务。自iOS6.0版本开始,苹果公司在保护用户的隐私权利上有较大进步,首次访问用户的位置时,需要获得用户的授权。此外,该程序还会判断用户的定位服务是否已经打开,本程序自动设定永久打开。用户也可以在手机设定中手动关闭定位服务。
2)定位服务开启之后,随着设备的不断移动,需要根据需要更新当前的地理位置坐标,判断定位精度有多个标准,即kCLLocationAccuracyNearestTenMeters,10 m,kCLLocationAccuracyHundredMeters,100 m,kCLLocationAccuracyKilometer,1 000 m,kCLLocationAccuracyThreeKilometers,3 000 m,kCLLocationAccuracyBest,最好的精度。本软件采用最高精度,精度越高,定位越频繁,移动设备的耗电量也会比较高。
3)开启定位委托,获取经纬度信息。CLLocationManagerDelegate是定位服务的委托,常用的位置变化回调方法是:
locationManager:didUpdateToLocation:fromLocation: locationManager:didFailWithError。
CLLocationManager 是定位服务管理类,用CLLocation的实例 CLLocationCoordinate2D来得到coordinate的结构,取coordinate的经纬度信息,并用浮点型的形式记录。
3.2显示当地地图的程序
插入一个地图控件,选择Map View控件,对该控件写入相应的程序如下。
先在viewDidLoad方法里面用setShowsuserLocation来实现地图定位,设置Map View的委托类如下:
- (void)viewDidLoad {
[self.mapViewsetDelegate:self];
[self.mapViewsetShowsUserLocation:YES];
[superviewDidLoad];
}
设置Map View的委托为自身,并确定标注自身位置。
实现地图显示程序如下:
-(void)mapView:(MKMapView*)mapViewdidUpdateUserLocation:(MKUserLocation *)userLocation {
CLLocationCoordinate2Dloc= [userLocationcoordinate];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 1500, 1500);
[self.mapViewsetRegion:regionanimated:YES];
}
MKMapView可以通过 setShowsUserLocation:YES这个方法来获取自己的位置,并且当地图更新自己的位置后会调用如下程序中一个协议的委托方法以实现地图定位:
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
首先,在viewDidLoad方法里,调用setShowsUserLocation方法来实现地图的定位,并且设置MapView的委托类,本程序中设置委托为自己,即self.mapview setDelegate:self,再标注自身位置self.mapView setShowsUserLocation:YES。
最后,通过如下方法来定位用户当前位置,并以此为中心显示地图:
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
其中,MKCoordinateRegionMakeWithDistance(loc,1 500,1 500)是显示地图放大的程度,两个1 500分别表示显示的高度以及显示半径。
3.3计算天线参数
在通过CLLocation获得当地定位的经纬度信息后,根据经纬度以及设定的卫星经度信息,根据式(1)~(3),计算相应天线调节的俯仰角、方位角和极化角。点击“计算”按钮,计算天线方位角的程序为:
newlong =[longitude.textfloatValue];//当地经度
newsat = [_satlong.textfloatValue];//选择卫星的经度
longdelta = (newlong-newsat)* 3.1415926/180;//选择卫星的经度与当地经度之差
newlat = [latitude.textfloatValue];//当地纬度
latitudehudu = newlat*3.1415926/180;//当地纬度换算为弧度值
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];
注意到计算中,需要把角度值换算为弧度值进行数学运算。该计算方法中,方位角为正南时,其方位角为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时,从电磁波入射方向来看,为逆时针旋转,否则即为顺时针旋转。
在Xcode里面用simulator进行仿真,显示如图5所示。
图5 软件界面仿真图(截图)
在仿真器里需要设置定位信息,参考位置如图6所示。选中香港作为定位,得到地图显示如图7所示。选择卫星经度时,键盘弹出时会覆盖天线的角度参数,如图8所示。
图6 定位坐标图(截图)
图7 模拟器仿真图(截图)
图8 输入卫星经度(截图)
需要在写好卫星经度时消除键盘,否则键盘会遮挡天线的一些参数,消除键盘的程序为:
-(IBAction)backgroundtap:(id)sender;
本地经度、本地纬度、卫星经度以及3个卫星天线角度参数这些需要键盘输入数值的地方,都需要消除键盘,所以程序编写如下:
- (IBAction)backgroundtap:(id)sender {
[longituderesignFirstResponder];
[latituderesignFirstResponder];
[_satlongresignFirstResponder];
[_elevresignFirstResponder];
[_polresignFirstResponder];
[_azimresignFirstResponder];
}
软件仿真得到卫星天线参数,如图9所示。
图9 卫星参数的模拟器仿真图(截图)
之后在iPhone5c手机上,iOS系统为9.0版本,以苏州本地的环境真机测试,结果如图10所示。
图10 真机测试结果图(截图)
经过真机测试,该软件能够在iPhone手机上顺利运行,较快可以获取当地地图、经纬度坐标,根据所需寻找的卫星经度,准确计算出卫星天线的3个角度参数,能够帮助工程技术人员迅速寻找卫星,节约时间。
本文以工作中的实际遇到的问题为例,提出了在iPhone手机上制作iOS系统的工作软件,该软件可以利用iPhone手机内置的定位系统迅速获得经纬度,并通过所要寻找的卫星的经度,计算可以得到天线的俯仰角、极化角、方位角。该软件对于手动迅速寻星有直接的帮助。经过实际检测,该软件计算速度较快,精度较高,能够满足卫星天线调节的要求。由于作者经验不足,论文中间的不当之处,请批评指正。
[1]车晴,张文杰,王京玲.数字卫星广播与微波技术[M].北京:中国广播电视出版社,2003.
[2]邓四化. 卫星接收天线仰角和方位角计算公式的推导[J]. 中国有线电视,1998(8):45-46.
[3]陈建林,周灏,张姗姗. Windows Mobile嵌入式手机天线参数计算器的设计[J]. 电视技术,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
文献引用格式:周灏.iOS系统寻卫星参数计算器的设计[J].电视技术,2016,40(10):82-87.
ZHOU H.Design of iOS satellite searching parameter calculator[J].Video engineering,2016,40(10):82-87.
周灏,苏州广电总台技术中心传输工程师。
责任编辑:时雯