今回からテーマを変えて、PNT(Positioning, Navigation and Timing::測位、ナビゲーション、タイミング)の話を取り上げてみようと思う。ちょうどタイミング良く、GPS(Global Positioning System)に関する面白い話題があったので、まずはその話から。

GPS週数ロールオーバー

もう過ぎた話だが、4月7日に「GPS週数ロールオーバー」という出来事があった。週数のロールオーバーとは、いったい何事か。

あまり知られていないかもしれないが、GPSは緯度・経度「だけ」を知る手段ではない。高度の情報も得ることができるし、実は精度の高い測時情報も得ることが可能だ。電波の到達時間差に基づいて位置を割り出すという動作原理上、精度の高い時計が必要で、そのために衛星に原子時計を積んでいるおかげといえようか。

筆者が使用しているデジタル一眼レフカメラ「EOS 5D Mark IV」はGPS受信機を内蔵しているが、カメラ内部の時刻合わせにGPSの情報を使える。GPSを使うと精確な時刻合わせを行えるという身近な事例。

  • EOS 5D Mark IVは、GPSの設定画面でカメラの時刻合わせを自動的に行う指定が可能

その、GPSが扱う時刻の情報は、1980年1月6日の午前0時を起点として、「○週間と○日経過した」という形で記述しているのだという。考え方は、Microsoft Excelのセルで日付・時刻のデータを扱う時に使用する「シリアル値」と似ている。

もっとも、Excelのシリアル値は「1900年1月1日午前0時を起点に、1日ごとに1ずつインクリメント」という形だから、記述の形式は違うけれど。

問題は、その週数を記述するためのビット数にあった。割り当てられているビット数は10ビットなので、記述できる週数の上限は2^10=1,024週。つまり1,024週目に入ると週数のビットは0に戻る。これが問題の「週数ロールオーバー」。

ということは、1980年1月6日から1,024週(7,168日)が経過した1999年8月22日に、週数のビットが0に戻っていたことになる。Excelで、まずA1セルに「1980/1/6」と入力して、次にB1セルに「=A1+1024*7」という数式を入力すれば、結果は「1999/8/22」になる。

では、C1セルに「=B1+1024*7」という数式を入力すると、どうなるか。結果は「2019/4/7」になる。つまり、この日に2度目の週数ロールオーバーが発生したわけだ。

週数ロールオーバーが発生した時、どう対処すべきか

シンプルに考えれば、それまで順調にインクリメントしていた週数のビットが0に戻った時点で、ロールオーバーが発生したのだと認識して、日時を適切に修正するロジックがあればよい。それがないと、測時結果が「1980年1月6日」に逆戻りしてしまう。

ただし実際には、すでに週数ロールオーバーが2度発生しているから、3週目に入ったという前提で計算するロジックを用意しておかないと、具合が悪いことになる。今後も、1,024週が経過するごとに同じ処理が必要になるわけだ。

もっとも、次の週数ロールオーバーが発生するのは2038年11月21日。その頃には、現用中のGPS受信機の大半は代替わりしている……かと思ったが、そうとも言い切れない。最近のウェポン・システムの寿命の長さを考えると、今あるものが2038年になっても使われている可能性はある。あえて具体的な名前を挙げればF-35。

もっとも、週数ロールオーバーを考慮に入れたファームウェアを使用していれば、問題はないのだが。

なお、2018年12月23日に1号機が打ち上げられたGPSブロックIII衛星では、民間用新波を実装している。その前の世代に当たるブロックIIFで民間用新波のL5を実装したのに続いて、ブロックIIIでは民間用新波のL1Cが加わった。

このL5やL1Cでは週数のビット数を13ビットに増やしているので、上限は2^13=8,192週に増える。これまでは20年にちょっと足りないインターバルで週数ロールオーバーが発生していたが、L5やL1Cでは160年近いインターバルになる計算。これなら、われわれの目の玉が黒いうちに週数ロールオーバーが発生することはない。

年を1桁で済ませたNR-1

「軍事とIT」という観点からすると、データ・フォーマットを決める際にどの情報に何ビットを割り当てるかによって、後で問題が生じる可能性がある、という話になる。そこで、10ビットすら実は豪勢だった、という話を1つ。

もう退役したが、アメリカ海軍にかつて、「NR-1」という原子力深海潜水艇があった。竣工したのが1969年10月27日だから、計画・設計・建造は、当然ながらさらに前の話。

そんな時代のフネでもコンピュータは積んでいたのだが、なにせ1960年代のテクノロジーである。処理能力もメモリ容量も、今の基準からすれば皆無に等しい少なさだった。プログラムを記述するにしても、データを保持するにしても、サイズをギリギリまで切り詰めないといけない。

それで、NR-1のコンピュータでは年の情報を一桁で済ませていたそうだ。つまり10年ごとに0に戻る。竣工した途端に1970年に入り、その時点で最初の逆戻りが発生していたはずだ。いわば、2000年問題を30年早く体験したようなものである。

著者プロフィール

井上孝司


鉄道・航空といった各種交通機関や軍事分野で、技術分野を中心とする著述活動を展開中のテクニカルライター。
マイクロソフト株式会社を経て1999年春に独立。『戦うコンピュータ(V)3』(潮書房光人社)のように情報通信技術を切口にする展開に加えて、さまざまな分野の記事を手掛ける。マイナビニュースに加えて『軍事研究』『丸』『Jwings』『航空ファン』『世界の艦船』『新幹線EX』などにも寄稿している。