MIS系统中GPS15L模块的应用
全球定位系统(Global PosiTIoning System——GPS)是上世纪70年代由美国国防部批准开始研制,并在子午仪卫星导航系统的基础上发展起来的。GPS系统一般包括三大部分。第一是空间部分,即GPS卫星星座;第二是地面控制部分,也就是地面监控系统;第三是用户设备部分,主要指GPS信号接收机。
GPS信号接收机的任务是捕获一定卫星高度截止角所选择的待测卫星的信号,并跟踪这些卫星,然后对所接收到的GPS信号进行变换、放大和处理,以便测量出GPS信号从卫星到接收机天线的传播时间,再解译出GPS卫星所发送的导航电文,最后实时计算出测站的三维位置、位置、甚至三维速度和时间。由于GPS卫星发送的导航定位信号是一种可供无数用户共享的信息资源,因此,对于陆地、海洋和空间的广大用户,只要拥有能够接收、跟踪、变换和测量GPS信号的接收设备。即GPS信号接收机,就可以在任何时候用GPS信号进行导航定位和测量。
1 GPS15L接收机模块性能
GARMIN的GPS15L接收机的功耗非常小,数据更新率为每秒一次。其优良的性能既能满足陆地导航的灵敏度要求,也能满足飞行器的动态要求。其OEM板无论是硬件和软件,都十分易于使用。非常适合做系统集成。GPS接收机OEM板中可以将卫星轨道参数、上次定位位置、时间和日期等数据保存在静态存储器中,GPS15L接收机内部有备用电池来为存储器供电。
GPS15L的技术指标包括物理指标、电气指标、GPS指标、接口、环境特性、产品配置等。
(1)物理指标
◇尺寸:35.56mm×45.85mm×8.31mm;
◇重量:14克。
(2)电气指标
◇输入电压(直流):3.3~5.4 V;
◇输入电流:峰值100 mA,标称值85 mA;
◇备用电池充电电压(直流):2.8~3.4 V;
◇接收机灵敏度:最小可达-165 dBW。
(3)GPS指标
◇接收机通道:12;
◇定位时间:重新捕获时间小于2秒,热启动约为15秒(所有数据已知)。冷启动约为45秒(初始位置、时间和历书已知,星历未知),自动定位时间为5分钟(历书已知,初始位置和时间未知),搜索天空(所有数据均未知);
◇更新率:1秒;
◇精度:定位精度小于15米(95%),速度精度0.05米/秒RMS(稳定状态),差分精度小于5米(95%),PPS精度±1微秒;
◇动态性能:速度上限为1850 kg/h,加速度上限为6 g,高度上限为18000 m。
(4)接口
◇接口特性:RS-232输出,输入可为RS-232或者具有RS-232极性的TTL电平。可选波特率为300,600,1200,2400,4800,9600,19200,38400;
◇串口1接口协议:输出NMEA0183版2.00的ASCII码语句,包括GPALM,GPGGA,GPGLL,GPGSA,GPGSV,GPRMC,GPVTG(NMEA标准语句);PGRMB,PGRME,PGRMF,PGRMM,PGRMT,PGRMV(GARMIN定义的语句)。还可以将串口1设置为输出包括GPS载波相位数据的二进制数据。输入初始位置、时间、秒脉冲状态、差分模式、NMEA输出间隔等设置信息;
◇串口2接口协议:输人为实施差分改正数据(RTCM SC-104信息类型1,2,3,7,9);
◇秒脉冲PPS特性:1Hz,脉宽可调,精度±1微秒。
(5)环境特性
◇温度范围:工作温度为-30℃~+80℃,储存温度-40℃~+90℃。
(6)产品配置
◇标准配置:GPS OEM板,排线,GAER-MIN OEM设置软件,产品说明书;
可选配置:GPS天线为G505,BNC接口;转接线30厘米,BNC转MCX。
GPS15L的串口1与PC的串口连接示意图如图1所示。
使用时,可将GPS15L的串口1与S3C2410A的串口2进行连接。由于ARM主控板提供的串口是孔状的,所以,GPS15L要和针状的串口接头进行连接,连接时可将图1中的数据出线和数据入线两线对调,并分别连接到针状串口接头的PIN3(DATAOUT)和PIN2(DATAIN)。
2 GPS数据提取程序的设计
2.1 串口通信程序的设计
由于GPS模块是通过串行口1与S3C2410的串口2进行连接来进行通信的,因此,本文设计了Linux系统下的相应串口通信程序。
在整个 *** 作过程中,与串口的通信只用到了3个功能,即打开、读和关闭串口。
(1)打开串口
在Linux下,所有的硬件设备都被看成是普通文件,系统中每一个设备都用一种特殊的设备相关文件来表示,并存放在/dev/目录下。串口文件就位于/dev下,串口一为/dev/ttvS0,串口二为/dev/ttyS1,打开串口可通过使用标准的文件打开函数来进行 *** 作,具体如下:
500)this.style.width=500;">
(2)读串口
由于在整个通信过程中,需要的只是从GPS模块读取数据,所以,这里只用到读串口程序,其代码如下:
500)this.style.width=500;">
(3)关闭串口
关闭串口实际就是关闭文件,其代码如下:
close(m_nFDGPSDevice);
2.2 GPS数据提取
一般情况下,GPS接收机只要处于工作状态,就会源源不断地把接收到的信息通过串口传送到主控制板中。它的每一条NMEA语句都是以“$”为开始标志、以“\n”为结束标志。接收到的GPRMC语句格式为:
500)this.style.width=500;">
其中,CR、LF分别表示ASCII字符“回车”和“换行”,hh代表了“$”和“*”之间所有字符的按位异或值(不包括这两个字符)。其含义见表1所列。
500)this.style.width=500;" border=0>
通过读串口得到的数据可能会出现两种情况,一种情况是每次读到的数据中都会有完整的GPRMC语句,另一种情况是GPRMC分两次获得。获得完整的句子之后。接着判断得到的句子是否为GPRMC语句(即判断句子是否以GPRMC开头),如果是GPRMC语句,再就开始判断每个数据格式是否正确,包括表1中的UTC时间格式、定位有效性、纬度格式、纬度半球表示方法、经度格式、经度半球表示方法、UTC日期格式信息等,最后还将“$”和“*”之间的所有字符按位异或(不包括这两个字符),并计算校验和,看其是否为hh值(“*”之后的值)。
判断语句是否为GPRMC语句的流程如图2所示。
其部分关键函数如下所示:
int Init();初始化函数,用来打开串口,进行串口设置(波特率、数据位、校验位)等;
void TIck ();读串口数据函数;
void Cleanup ();关闭串口函数;
void Decode(char*szData);判断GPRMC语句函数;
bool VeriLine(char*szBuffer);判断GPRMC语句中数据格式是否正确函数;
void DecodeLine (char*szBuffer);提取GPRMC语句中有用信息并打印,包括时间、经
纬度、日期。
以下是部分相关函数:
bool VeriLine(char*szBuffer);判断GPRMC语句中数据格式是否正确函数;
bool VeriTImeForm(char*szBuffer2);判断时间格式函数;
bool VeriLonForm(char*szBuffer2);判断经度格式函数;
bool VeriLatForm(char*szBuffer2);判断纬度格式函数;
bool VeriDayForm(char*szBuffer2);判断日期格式函数;
如果语句为正确的GPRMC语句,接下来就可以提取所需信息,提取时间、经纬度和日期信息的部分程序如下:
void PrintTIme(char*szBuffer2);打印时间函数,在此要将UTC时间转换为北京时间;
void PrintLonLat (char*szBuffer2,int n);打印经纬度函数;
void PrintDay (char*szBuffer2);打印日期函数,以年/月/日形式打印。
3 结束语
全球定位系统具有性能好、精度高、应用广等特点,是迄今最好的导航定位系统。随着全球定位系统的不断改进,以及硬件和软件的不断完善,其应用领域还在不断地开拓。目前,GPS应用已开始逐步深入人们的日常生活。GARMIN的GPS接收机功耗非常小,数据更新很快,而且,其优良的性能既能满足陆地导航的灵敏度要求,也能满足飞行器的动态要求。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)