如果我的Raspberry Pi 3持續連接到Internet但沒有RTC,時間將有多精確?
如果我的Raspberry Pi 3持續連接到Internet但沒有RTC,時間將有多精確?
由於 NTP
協議嘗試測量並補償網絡延遲和其他延遲,因此即使使用公共時間服務器,該協議也非常準確。
RTC
用於維護掉電後的系統時間,在樹莓派PI啟動並從 NTP
,即使網絡斷開連接,它也將繼續計數時間而無需 RTC
。
使用 NTP
時,您不會持續與網絡同步,系統時間由基於cpu時鐘的計時器維護。
與本地網絡時間服務器一起運行時, NTP
可以達到 <1ms
的精度。
在公共互聯網上,數據包的動態路由和潛在的非對稱路由導致對網絡延遲的估計更差。但是,您可以期望在 1s
以下的精度很高,大多數文檔聲稱在公共互聯網上的精度為 100ms
。
如果您需要更好的同步性,如果沒有更好的準確性,您可能會考慮運行本地NTP服務器,以使彼此之間的多個樹莓派pi同步,同步效果要優於 1ms
(對傳感器數據進行對齊)。
如果需要準確性和同步性,則可以使用GPS作為時間源來運行Stratum 1 NTP服務器。
根據維基百科,Raspbian和數百萬其他聯網設備和計算機默認使用的網絡時間協議:
旨在將所有參與的計算機同步到實際上,在具有RTC的系統(服務器,PC等)上使用NTP來校正可能存在的漂移計算機時鐘,實際上是在幾毫秒之內。意思是,如果添加了RTC,則使用已經用於設置OS“軟件”時鐘的完全相同的網絡機制(實際上與處理器頻率有關,即在那裡存在晶體)將保持準確。可以有效地節省系統啟動時間的地方。
是否存在RTC與計時精度無關。純粹是為了在關閉設備電源時保持當前時間(近似),以便在啟動網絡設備和ntpd之前系統時間正確。
請注意,如果如果您想要一個安全的遠程時鐘源而不是普通的ntp,則需要了解當前時間的粗略概念(在月度範圍內準確)才能驗證證書;這可能是RTC在連接互聯網的設備上的主要現代用途。
使用sys / time.h函數gettimeofday(**)和wirePiPi API在RPI3(Stretch)上使用C ++進行了實驗,然後對示波器進行了測量,精簡的應用程序可以獲得不到毫秒的分辨率和計時精度。
現在,如果您在RPI上使用其他語言,則可能無法獲得這些速度。
在復雜而繁忙的網絡的另一端,使用公共NTP服務器,我們在幾台設備上獲得了優於一秒的精度。我們還只需要1s的精度(開機時系統時鐘可以保持幾天的精度)。
簽出 ntpd手冊頁,但是在配置服務器之後,確保在啟動時運行 ntpd -g
即可。 -g
可讓您在時鐘耗盡的情況下(例如斷電後)返回到實時。