2009-02-16 82 views
5

我正在解析發送時間戳毫秒毫秒的設備的NMEA GPS數據。據我所知,這些設備在使用.000時間戳發送句子時會使用特定的觸發點 - afaik GGA語句中的$。GPS時間同步

因此,我解析GGA語句,並在接收到$(我補償在使用串口波特率的同一操作中讀取的任何其他字符)時獲取時間戳。

從這些信息我計算了糾正系統時間的偏移量,但是當我將比較時間設置爲某些NTP服務器時,我會得到一個250ms的恆定差異 - 當我手動更正此偏移時, 20ms,這對我的應用程序來說沒問題。

但是當然我不確定這個偏移量來自哪裏,以及它對於我正在使用的GPS鼠標或我的系統具體是什麼。我使用錯誤的$字符,還是有人知道如何處理?我知道這個問題非常模糊,但是關於什麼可能會導致此偏移量的任何提示將非常有幫助!

這裏是我的設備的一些樣本數據,以$字符我會隨着時間偏移標註:

$GPGSA,A,3,17,12,22,18,09,30,14,,,,,,2.1,1.5,1.6*31 
$GPRMC,003538.000,A,5046.8555,N,00606.2913,E,0.00,22.37,160209,,,A*58 
-> $ <- GPGGA,003539.000,5046.8549,N,00606.2922,E,1,07,1.5,249.9,M,47.6,M,,0000*5C 
$GPGSA,A,3,17,12,22,18,09,30,14,,,,,,2.1,1.5,1.6*31 
$GPGSV,3,1,10,09,77,107,17,12,63,243,30,05,51,249,16,14,26,315,20*7E 
$GPGSV,3,2,10,30,24,246,25,17,23,045,22,15,15,170,16,22,14,274,24*7E 
$GPGSV,3,3,10,04,08,092,22,18,07,243,22*74 
$GPRMC,003539.000,A,5046.8549,N,00606.2922,E,0.00,22.37,160209,,,A*56 
-> $ <- GPGGA,003540.000,5046.8536,N,00606.2935,E,1,07,1.5,249.0,M,47.6,M,,0000*55 
$GPGSA,A,3,17,12,22,18,09,30,14,,,,,,2.1,1.5,1.6*31 
$GPRMC,003540.000,A,5046.8536,N,00606.2935,E,0.00,22.37,160209,,,A*56 
-> $ <- GPGGA,003541.000,5046.8521,N,00606.2948,E,1,07,1.5,247.8,M,47.6,M,,0000*5E 

回答

2

你必須要考慮到的事情是,在GPS設備是怎麼回事:

  • 接收衛星信號並計算位置,速度和時間。
  • 製備NMEA消息,並把它轉換成串行端口緩衝器
  • 發送消息

GPS設備具有相對慢的CPU(相對於現代計算機),因此該等待時間所觀察是處理的結果是,設備必須在產生位置和開始傳輸數據的時刻之間做。

Here is one analysis從2005年起消費級GPS接收機的延遲。您可以找到特定NMEA句子的延遲測量值。

+0

好吧,所以我讀到,啓用PPS信號是一些GPS設備中的專有功能,它可以提供毫秒級的精度 - 一般情況下0.25秒的偏移量,正如您發佈的文章中所建議的,接縫爲好猜:)謝謝! – VolkA 2009-02-16 03:02:45