コラム
GPSが1.5秒刻みで時刻をカウントする理由

  • タイミング市場

江戸時代の日本では、日の出と日の入りを境に1日を昼夜に分かち、昼と夜をそれぞれ6等分して「一刻」を定めていました。これは不定時法と呼ばれ、夏と冬では一刻の長さが最大50分も違っていました。時計が広く行き渡ってはおらず、暮らしのサイクルに刻時を合わせる、当時ならではの作法だったかもしれません。さて今回は、GPSに存在する、独自の時間のカウントの作法を話題にしたいと思います。

週番号ロールオーバーという「ほころび」の理由は

GNSS衛星が送信する航法メッセージには測位演算に必要な情報がすべて含まれています。中でも時刻情報はとりわけ重要度の高い情報です。
先のコラムで、最初のGNSSであるGPSを例に、航法メッセージの構造についてご紹介しました。限られたbit数に必要な情報をみっちりと詰め込まれながらも基本的には問題なく機能していますが、20年に一度ぐらい「ほころび」が顔を出すこともあります。みなさんも耳にしたことがあるかもしれません「週番号ロールオーバー(Week Number Rollover)」というのがそれです。
GPSでは時刻を週と秒のみで表現しており、週数には10bitが割り当てられています。10bitしかないので0~1023までしか表現できず、起点である1986年1月6日から1024週後の1999年8月22日に、ゼロにもどってしまいトラブルを引き起こしました。さらに2048週後の2019年4月7日ではすでに経験済みの事象のため、受信機側にロールオーバーを前提としたさまざまな工夫が施され、古い受信機を除けば大きな問題は生じなかったようです。航法メッセージを送信する衛星システム側でも、新規の測位信号では週数の割当てビット数を増やし、当面はロールオーバーが起こらないよう配慮しています。限られたビット数の中に必要な情報を詰めに詰めたGPSだからこその出来事と言えるでしょう。

素朴な疑問、GPSの「1.5秒問題」

さて「週数が10bit」だけが、GPSの特徴というわけではありません。初学者として以前引っかかったことが他にもありました。それが「1.5秒問題」です。「信号機はなぜ、青・黄・赤の順なの?」というような素朴な疑問かもしれませんが、先のコラムの調べを進めるうち自力で答えらしきところにたどり着けたような気がします。かなりマニアックな話だとは思いますが、考えの道筋を示してみましょう。

1)GPSは週番号と秒数のみで時刻を表します。これはZ-countと呼ばれる29bitの数値で、上位10bitが週番号を意味するWN(Week Number)、下位19bitは週のはじまりからの秒数を表わすTOW(Time-Of-Week)です。

2)そしてなぜか「TOWは1.5秒を単位(unit)としてカウントする」、と記されています。これが疑問でした。

3)1週間は、7日x24時間x60分x60秒=604,800秒です。もれなく表現するには2進数では20bit(2^20=1,048,576)が必要です。

4)1.5秒刻みでカウントするTOWだと、最大値は403,200(=604,800÷1.5)になり、たしかに19bitに収まります(403,200 < 524,288=2^19)。秒をそのまま表現するより1ビットだけ節約できました。

5)ところがGPSの航法メッセージでは、TOWへの割り当ては17bitしかありません。仕様書に"TOW 17bit (TRANCATED)"と書いてあるのです。そもそも403,200まで数えるには19bitを必要とするはずなのに、2bitも切り捨て(trancate)ちゃっていいんでしょうか?

GPS航法メッセージ(L1C/A信号)の基本構造と、TOWに関わる部分の拡大図。Interface Standard (IS-GPS-200M.pdf)から抜粋(出典:https://gps.gov

6の倍数と4の倍数で◯◯になる

6)時刻は測位衛星における最重要情報ですので、切り捨てても問題ないような工夫がされている、と考えたほうがいいようです。それはどんな工夫なのでしょうか?

7)先のコラムでもご紹介しましたが、航法メッセージのビットレートは50bps (bit per second)と、むかしの「テレックス」と同等のゆっくりしたデータ通信速度です。そして航法メッセージにおけるサブフレームというひとかたまりの先頭の時刻(送信時刻)が、その直前のサブフレームに書き込まれています。そしてサブフレームのサイズは300bitです。

8)ビットレートが50bpsということは、300bitのサブフレームの先頭は6秒ごとにやってきます。これを言い換えると、「GPSの航法メッセージが扱う秒数は、すべて6の倍数である」ということになります。

9)時刻を1.5秒刻みで数えるTOWは、秒で表現される時刻を1.5で割った値となります。6の倍数を1.5で割る(3で割って2倍する)と4の倍数になるため、TOWはつねに4の倍数となります。

10)10進数の「4」を2進数で表現すると「100」となります。2進数表現での4の倍数の末尾2桁はいつも「00」です。したがってつねに4の倍数であるTOWの下位2bitもかならず「00」となります。

11)なので本来19bit必要なTOWの下位2bitを切り捨て、全体を17bitに切り詰めても、伝えるべき情報が欠けることがないわけです!

TOW-Count MessageとZ-Countの関係。週数に10bit、秒数に19bitが割り当てられるが、実際に送信されているTOWは17bitのみ。1週間の秒数604,800秒を6で割った100,800は、2の17乗(131,072)より小さいため17bitに収まる。(図は国土地理院資料より)

精緻な巨大システムの秘密を語る一端かもしれない

例えが大げさかもしれませんが、荘厳壮大な伽藍のタイルの1ピースの形状に見入り、そこから建物全体の構造全体に関わる意味のつながりを見出したときのような、感動と感慨を味わうことができました。でも考えてみれば、そもそも1.5で除して末尾2bitを切り捨てる操作は、6で割るのと同じこと。GPSが扱う時刻は6秒刻みなので、これでなんの過不足もなく必要かつ十分であるわけです。答えにたどり着いてみれば、バイナリを扱い慣れた方にとってはあたり前すぎるトピックなんだろうな、とも思いました。
現に専門家にこの話をしたところ、「気づきましたね、そうなんですよ(笑)」とニンマリされてしまいました。初学者である私に、少し毛の生えた瞬間だったかもしれません。 
いずれにせよ GPSというシステムを成立させるためには気が遠くなるほど多く複雑なトレードオフがあったはず。情報量の制限から生まれたZ-CountやTOWの作法とその理由に、先人の苦労と工夫の一端を見たような気がしましたし、おそらくまだ多くの秘密が隠されているはずとも思わされました。

記事のライター

喜多 充成氏

喜多 充成   科学技術ライター

1964年石川県生まれ。産業技術や先端技術・宇宙開発についての取材経験をもとに、子供からシニアまでを対象に難解なテーマを面白く解きほぐして伝えることに情熱を燃やす。宇宙航空研究開発機構機関誌「JAXA's」編集委員(2009-2014)。著書・共著書に『あなたにもミエル化? ~世間のなりたちを工学の視点から~』(幻冬舎mc)、『私たちの「はやぶさ」その時管制室で、彼らは何を思い、どう動いたか』(毎日新聞社)、『東京大学第二工学部70周年記念誌 工学の曙を支えた技術者達』(東京大学生産技術研究所)ほか。

※本文中で使用した登録商標は各権利者に帰属します。

ピックアップ

コラム一覧

フルノコラム

科学技術ライター 喜多充成氏