GPS 入門 4 —— GPS NMEA-0183協議

GPS可以輸出實時定位數據讓其他的設備使用,這就牽扯到了數據交換協議。幾乎現在所有的GPS接收機都遵循美國國家海洋電子協會(National Marine Electronics Association)所指定的標準規格,這一標準制訂所有航海電子儀器間的通訊標準,其中包含傳輸資料的格式以及傳輸資料的通訊協議。NMEA協議有0180、0182和0183三種,0183可以認爲是前兩種的超集,現在正廣泛的使用,0183有幾個版本,V1.5 V2.1。所以,如果大家的GPS接收機如果要聯上筆記本里通用的GPS導航程序,比如OZIEXPLORER和俺的GPSRECEIVER,就應該選擇NEMA V2.0以上的協議。NMEA規定的通訊速度是4800 b/S。現在有些接收機也可以提供更高的速度,但說實話,沒有什麼用,4800就足夠了。

  象GARMIN,自己有一個mapsource軟件,爲了不讓其他品牌的GPS使用該軟件,就設計了私有的GARMIN協議,只有GARMIN的機器才能輸出這種數據,而MAPSOURCE只能接收GARMIN協議,這樣一來MAPSOURCE就只能讓GARMIN的機器使用.

SIFR 天寶、摩托羅拉也有自己的專用二進制協議,但都支持NMEA協議輸出的,通過專用的設置軟件可以更改輸出方式。

下面是NMEA協議常用的幾種輸出類型:

GPRMC(建議使用最小GPS數據格式)

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF>
1) 標準定位時間(UTC time)格式:時時分分秒秒.秒秒秒(hhmmss.sss)。
2) 定位狀態,A = 數據可用,V = 數據不可用。
3) 緯度,格式:度度分分.分分分分(ddmm.mmmm)。
4) 緯度區分,北半球(N)或南半球(S)。
5) 經度,格式:度度分分.分分分分。
6) 經度區分,東(E)半球或西(W)半球。
7) 相對位移速度, 0.0 至 1851.8 knots
8) 相對位移方向,000.0 至 359.9度。實際值。
9) 日期,格式:日日月月年年(ddmmyy)。
10) 磁極變量,000.0 至180.0。
11) 度數。
12) Checksum.(檢查位)

GPGSV(所示衛星格式)

$GPGSV, <1>,<2>,<3>,<4>,<5>,<6>,<7>,⋯<4>,<5>,<6>,<7>,<8><CR><LF>
1) 天空中收到訊號的衛星總數。
2) 定位的衛星總數。
3) 天空中的衛星總數,00 至 12。
4) 衛星編號, 01 至 32。
5) 衛星仰角, OO 至 90 度。
6) 衛星方位角, OOO 至 359 度。實際值。
7) 訊號噪聲比(C/No), 00 至 99 dB;無表未接收到訊號。
8) Checksum.(檢查位).





GPGSA(GPS精度指針及使用衛星格式)
$GPGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7><CR><LF>

1)模式 2:M = 手動, A = 自動。
2)模式 1:定位型式 1 = 未定位, 2 = 二維定位, 3 = 三維定位。
3) PRN 數字:01 至 32 表天空使用中的衛星編號,最多可接收12顆衛星信息。
4) PDOP-位置精度稀釋 0.5 至 99.9.
5) HDOP-水平精度稀釋 0.5 to 99.9.
6) VDOP-垂直精度稀釋 0.5 to 99.9.
7) Checksum.(檢查位).  



GPS固定數據輸出語句($GPGGA)   
這是一幀GPS定位的主要數據,也是使用最廣的數據。爲了便於理解,下面舉例說明$GPGGA語句各部分的含義。例1是用GN-77N和筆者開發的軟硬件接口,在筆者所在地接收到的$GPGGA語句的內容。
例1:$GPGGA,050901,3931.4449,N,11643.5123,E,1,07,1.4,76.2,M,-7.0,M,,*65   
其標準格式爲:$GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)  
各部分所對應的含義爲:   
(1)定位UTC時間:05時09分01秒  
(2)緯度(格式ddmm.mmmm:即dd度,mm.mmmm分);  
(3)N/S(北緯或南緯):北緯39度31.4449分;  
(4)經度(格式dddmm.mmmm:即ddd度,mm.mmmm分);  
(5)E/W(東經或西經):東經116度43.5123分;  
(6)質量因子(0=沒有定位,1=實時GPS,2=差分GPS):1=實時GPS;  
(7)可使用的衛星數(0~8):可使用的衛星數=07;  
(8)水平精度因子(1.0~99.9);水平精度因子=1.4;  
(9)天線高程(海平面,-9999.9~99999.9,單位:m);天線高程=76.2m);   
(10)大地橢球面相對海平面的高度(-999.9~9999.9,單位:m):-7.0m;   
(11)差分GPS數據年齡,實時GPS時無:無;   
(12)差分基準站號(0000~1023),實時GPS時無:無;   
*總和校驗域;  
hh 總和校驗數:65   
(CR)(LF)回車,換行。   

GPGLL地理定位信息

例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D
字段0:$GPGLL,語句ID,表明該語句爲Geographic Position(GLL)地理定位信息
字段1:緯度ddmm.mmmm,度分格式(前導位數不足則補0)
字段2:緯度N(北緯)或S(南緯)
字段3:經度dddmm.mmmm,度分格式(前導位數不足則補0)
字段4:經度E(東經)或W(西經)
字段5:UTC時間,hhmmss.sss格式
字段6:狀態,A=定位,V=未定位
字段7:校驗值


$GPVTG地面速度信息

例:$GPVTG,89.68,T,,M,0.00,N,0.0,K*5F
字段0:$GPVTG,語句ID,表明該語句爲Track Made Good and Ground Speed(VTG)地面速度信息
字段1:運動角度,000 - 359,(前導位數不足則補0)
字段2:T=真北參照系
字段3:運動角度,000 - 359,(前導位數不足則補0)
字段4:M=磁北參照系
字段5:水平運動速度(0.00)(前導位數不足則補0)
字段6:N=節,Knots
字段7:水平運動速度(0.00)(前導位數不足則補0)
字段8:K=公里/時,km/h
字段9:校驗值


收到的信息就是這樣的:

$GPGSA,A,1,,,,,,,,,,,,,99.9,99.9,99.9*09

$GPVTG,000.0,T,,M,000.0,N,000.0,K*60

$GPGGA,062320,3537.8333,N,13944.6667,E,0,00,99.9,0100,M,,M,000,0000*7D

$GPGLL,3537.8333,N,13944.6667,E,062320,V*3B

$GPRMC,062320,V,3537.8333,N,13944.6667,E,000.0,000.0,030222,,*0D

$GPZDA,062320,03,02,2022,,*4E

$GPGSV,1,1,00,,,,,,,,,,,,,,,,*79

$GPVTG,000.0,T,,M,000.0,N,000.0,K*60

$GPGGA,062321,3537.8333,N,13944.6667,E,0,00,99.9,0100,M,,M,000,0000*7C

$GPGLL,3537.8333,N,13944.6667,E,062321,V*3A

$GPRMC,062321,V,3537.8333,N,13944.6667,E,000.0,000.0,030222,,*0C

$GPZDA,062321,03,02,2022,,*4F

$GPGSA,A,1,,,,,,,,,,,,,99.9,99.9,99.9*09

$GPVTG,000.0,T,,M,000.0,N,000.0,K*60

$GPGGA,062322,3537.8333,N,13944.6667,E,0,00,99.9,0100,M,,M,000,0000*7F

$GPGLL,3537.8333,N,13944.6667,E,062322,V*39

$GPRMC,062322,V,3537.8333,N,13944.6667,E,000.0,000.0,030222,,*0F

$GPZDA,062322,03,02,2022,,*4C

第<3>,<4>,<5>,<6>項個別衛星會重複出現,每行最多有四顆衛星。其餘衛星信息會於次一行出現,若未使用,這些字段會空白。

這下,超級終端中顯示的數據就能看懂了吧,其實所有的軟件也都是對這些標準的輸出數據進行處理和運算!

發佈了16 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章