ユニキャスト UDP を使用して NTP サーバーからタイムスタンプを取得するには、次の手順に従います。

1. NTPサーバのIPアドレスとポート番号を設定し、UDPソケットを作成
標準的なNTP通信では、UDPポート123を使用します。ここでは、NTPサーバのIPアドレスを 10.152.4.60 とします。
2. NTPリクエストパケットを作成し、UDPで送信
NTPリクエストは48バイトのパケットで、以下のように構成されます:
- 1バイト目:LI(うるう秒)、VN(バージョン)、Mode(通信モード)
例:0x1B(LI=0, VN=3, Mode=3) - 2〜48バイト目:通常はゼロで埋める
この結果、1バイト目は10進数で 27 となり、残りはすべて 0 の48バイトのリクエストパケットになります。
3. 応答を受信し、「Transmit Timestamp」を抽出
NTP応答も48バイトで、最後の8バイトに Transmit Timestamp が格納されています:
- 最初の4バイト:整数部
- 後半の4バイト:小数部(2の32乗で割ることで小数に変換)
4. NTP時刻をLabVIEW Timestampに変換
NTP時刻をLabVIEWのTimestampに変換するには、以下の式を使用します:
- UNIX秒 = NTP秒 − 2208988800
- LabVIEW Timestamp = UNIX秒 + 2082844800
- よって:LabVIEW Timestamp = NTP秒 − 126144000