MIS系统中GPS15L模块的应用
扫描二维码
随时随地手机看文章
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所示。
[!--empirenews.page--]使用时,可将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);
[!--empirenews.page--]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接收机功耗非常小,数据更新很快,而且,其优良的性能既能满足陆地导航的灵敏度要求,也能满足飞行器的动态要求。