Kuinka käyttää NTP:tä Aduino Leonardon kanssa

Asetettu päälle

Miten NTP toimii?

NTP käyttää UDP/IP-paketteja tiedonsiirtoon nopeiden yhteysasetusten ja vastausaikojen vuoksi. NTP:n virallinen porttinumero (jolle ntpd ja ntpdate kuuntelevat ja puhuvat) on 123. Aikayksikkö on sekunneissa ja aikakausi on 1. tammikuuta 1900.

NTP-aikaleima on 64-bittinen binääriarvo, joka on rakennettu etumerkittömästä 32-bittisen sekunnin arvosta ja 32-bittisestä murto-osasta. Tässä merkinnässä arvoa 3,5 edustaa 64-bittinen merkkijono:

0000|0000|0000|0000|0000|0000|0000|0011 . 1000|0000|0000|0000|0000|0000|0000|0000

Jos otat kaikki bitit 64-bittisenä etumerkittömänä kokonaislukuna, tallennat sen liukulukumuuttujaan, jossa on vähintään 64 bittiä mantissaa (yleensä kaksinkertainen) ja teet liukulukujaon 2^32:lla, saat oikea vastaus. Valitettavasti tavallisessa Arduino meillä ei ole 64-bittisiä tuplauksia, mutta useimmissa RTC:issä on vain toisen tason tiedot, joten toista puoliskoa (tai ensimmäistä tavua mahdollisesti) ei tarvitse saada. Vain lähtevän NTP-paketin neljä ensimmäistä tavua tarvitsee olla asetettu sille, mitä haluamme saavuttaa

sopivasti loput voivat olla mitä tahansa.

NTP-viestin otsikkokentät ovat seuraavat:

  • LI-hypyn ilmaisin (2 bittiä)
    • Tämä kenttä osoittaa, käytetäänkö kuluvan päivän viimeiseen minuuttiin karkaussekuntia. Kenttien arvot ovat seuraavat:
      • 0: Ei karkaussekunnin säätöä
      • 1: Päivän viimeisellä minuutilla on 61 sekuntia
      • 2: Päivän viimeisellä minuutilla on 59 sekuntia
      • 3: Kelloa ei ole synkronoitu
  • VN NTP -versionumero (3 bittiä) (nykyinen versio on 4).
  • Mode NTP-pakettitila (3 bittiä)
    • Tila-kentän arvot ovat seuraavat:
      • 0: Varattu
      • 1: Symmetrinen aktiivinen
      • 2: Symmetrinen passiivi
      • 3: Asiakas
      • 4: Palvelin
      • 5: Lähetys
      • 6: NTP-ohjausviesti
      • 7: Varattu yksityiskäyttöön
  • Aikalähteen kerrostaso (8 bittiä)
    • Stratum-kentän arvot ovat seuraavat:
      • 0: Määrittelemätön tai virheellinen
      • 1: Ensisijainen palvelin
      • 2–15: Toissijainen palvelin
      • 16: Ei synkronoitu
      • 17–255: Varattu
  • Poll Poll-väli (8-bittinen etumerkillinen kokonaisluku)
    • Peräkkäisten NTP-viestien välisen enimmäisajan log2-arvo sekunneissa.
  • Tarkkuuskellon tarkkuus (8-bittinen etumerkillinen kokonaisluku)
    • Järjestelmän kellon tarkkuus, log2 sekuntia.
  • NTP ensimmäiset neljä tavua 0xEC0600E3

Tämä on NTP-pyynnön otsikko, mutta tarvitsemme vain ensimmäiset 32 bittiä. Määritämme NTP PAKETIN KOON, joka on 48 tavua, koska NTP-aikaleima on viestin ensimmäisissä 48 tavussa onnistuneen kyselyn jälkeen, saamme 48 tavun vastauksen NTP-palvelimelta.

Jos haluat ymmärtää NTP-kyselyn ja vastauksen rakenteen, katso http://www.cisco.com/c/en/us/about/press/internet-protocol-journal/back-issues/table-contents-58/154-ntp.html

Joten jos haluamme lukea "Transmit Timestamp", meidän on luettava kokonaisluku, joka on tavua 40, 41, 42, 43, jos haluamme pyöristää lähimpään sekuntiin, jos haluamme jonkin verran tarkkuutta, murto-osa on tavu 44, 45,46,47 jos se on suurempi kuin 500 ms, tavu 44 on > 128 ja näin ollen vain tarkistamalla vastauksen tavu 44, voimme pyöristää seuraavaan sekuntiin; 90 prosentilla NTP-palvelimista verkkoviiveet ovat alle 100 ms

Voimme myös ottaa huomioon oletetun 50 ms:n keskimääräisen verkon viiveen, joten 128:aan vertaamisen sijaan voit verrata arvoon (0,5 s - 0,05 s) * 256 = 115;

Tämänhetkinen sivu 3. Miten NTP toimii? 1. Johdanto 2. Kaavio 3. Miten NTP toimii? 4. DS3231 moduuli 5. LCD 6. ESP8266 7. Koko ohjelma lähettänyt

Kommentit

Webwinkelkeur Kiyoh Trustpilot Opencircuit