以下の内容は「ThunderBolt GPS Disciplined Clock User Guide Version 5.0」による。

RS-232Cによる通信では、独自のTSIPプロトコル(Trimble Standard Interface Protocol)が使われている。またデフォルトでは、1秒ごとに以下2つのパケットを吐き出しているので、それを捉えてLCDに表示すれば、大抵の情報が得られるらしい。

  Packet: 0x8F-AB Primary timing packet
  Packet: 0x8F-AC Supplemental timing packet

<RS-232Cの設定>
 ボーレート 9600bps
 ビット数 8
 パリティ なし
 ストップビット 1

<パケット構造>
 通信に使われるパケットは以下のようなバイトのシーケンスで組み立てられている。
  <DLE><id><data><DLE><ETX>
  <DLE>は1バイトの 0x10
  <ETX>も1バイトの 0x03
  <id>は1バイトの ID
  <data>にはいわゆる通信データがはいる。データとしての<DLE>があれば、その直前にもう1バイトの<DLE>が挿入されるので、<DLE><ETX>との混乱が避けられる。また、2バイト以上の整数や実数では、上位バイトの順に送られる。

<Primary timing packet>
 パケットID: 0x8F

111106-3.png

PCにてUTC(協定世界時)に設定しておいたほうが見やすいだろう。日本時間との時差は9時間(UTC零時には日本時間9時)。10~16バイト目の情報による日付や時刻が分かる。時差によっては日付の修正が必要。そこからツェラー公式を使って曜日を正しく算出したようがいいだろう。また、9バイト目の2ビット目と4ビット目にも注意を払う必要があり。

日本時間の表示だと海外では使えない。かと言って経度からローカル時間を割り出すこともほぼ不可能。解決策として基板上にDIPロータリースイッチ2つを組み込んで、スイッチを回して強制的に時差を修正する方法が適当だろう。サマータイムにも有効。時差の最大範囲は-12~+12。

<Supplemental timing packet>
 パケットID: 0x8F

111106-4.png111106-5.png111106-6.png

パケットに含まれる情報が多すぎる。整理しないと表示しきれない。
 1バイト目 レシーバ状態。値7が正常状態
 2バイト目 校正状態。値1が正常状態
 8~9バイト目 重大警告。値0が正常状態
 10~11バイト目 マイナー警告。値0が正常状態
 12バイト目 GPS状態。値0が正常状態
 13バイト目 校正関係の活動状態。値0が正常状態
 16~19バイト目 PPSの誤差
 20~23バイト目 10MHzの誤差
 32~35バイト目 内部温度
 36~43バイト目 緯度
 44~51バイト目 経度
 52~59バイト目 標高

4行20文字LCDを使うので、取り敢えずは
 1行目には 日付時刻
 2行目には 出力誤差(PPS Offset、10MHz Offset)
 3行目には 校正に関する情報(DiscipliningMode、DiscipliningActivity)
 4行目には 状態に関する情報(CriticalAlarms、GPSDecodingSatus)
を表示したい。

なお、PICマイコンは非同期通信がサポートされているので、RS-232C通信の電気信号レベル変換(12V→5V、受信専用ならデジタルトランジスタ1つで可)以外に、ファームウェアですべて対応可能。TSIPプロトコルにおける実数の扱いはやってみないと分からないが、C言語なら簡単にいけると予測する。ということで、パーツとしては、PIC、PIC用バイパスコンデンサ、4行20字LCD、LCDコントラスト調整用半可変抵抗、デジタルトランジスタ、DIPロータリスイッチ2つ(UTC→ローカル時間対応)ぐらいか。

10MHz出力信号を3股に分岐したい。分配器自体は格安で売っているが、コネクタが高価だし面倒。デジタルトランジスタ3つで回路を組んで対応しよう。

Comments are closed.

Post Navigation