2008-10-31

関東私鉄空線の仕様

私鉄の空線のデコードですが、大まかな仕様がわかってきたので、まとめてみます。ただ、独自に解析した結果であって、正式な仕様とは違っている可能性は十分あります。あくまでも参考ということでお願いします。

前回の記事でチェック方式は、CRC12ではなかろうかということでしたが、予告通りを総当りしたところ、生成多項式が見つかったので、CRC12で確定とします。なお、パリティはありませんでした。
あと、変調方式ですがMSKといってましたが、おそらく正しくはCPFSK(位相連続のFSK)ではなかろうかと思ったので、そう書いておきます。

変調仕様
変調方式変調速度マーク周波数スペース周波数
CPFSK1200ボー1800Hz1200Hz

初期信号、いわゆる空線時の信号は「マーク・スペース」の連続となります。空線間に送出される信号(アップリンクで一回に送られるものも同様)をとりあえずパケットということにします。

パケット仕様
初期信号フレーム初期信号フレーム初期信号フレーム初期信号

要するにパケットは、同じ内容のフレームが複数個存在しているということです。含まれるフレームの数は、可変で鉄道会社によって変わるようですし、フレームの内容によって数が増えることもあるようです。
フレーム間の信号は、基本的には8個のマーク・スペースの連続(16シンボル)となります。

フレーム仕様
同期パターンデータ終了文字CRC
16ビット可変長8ビット12ビット

データは、鉄道会社によって長さが異なるようですが、会社毎に長さは一定で4の倍数ビットとなるようです。終了文字も鉄道会社毎に異なりますが、データの長さによって決まっているかもしれません。いまのところ、異なる鉄道会社において同じデータ長を使用しているところがあるかはわかりません。
予想としては、データ長と終了文字で鉄道会社を識別できるのではないかと思っています。そういった意味では、終了文字というよりは会社識別用ビット列なのかもしれません。

データ内の仕様ですが、2つに分けられると思われます。そのうち前半は、おそらく識別符号として使われていて、この部分が全て「1」のパターンが存在しており、これは一斉呼び出しなどの相手を特定しない場合に送られると考えられます。そのため、ダウンリンクのみに存在するのではないかと思います。

データの後半は、なんだかの制御用に使用されているものだと思われます。少なくともダウンリンクとアップリンクでは、この部分のビットの立ち方が異なります。また、同じ識別符号を持つパケットが2回連続で送られているようですが、そのときに2回目には1つだけビットが増えていて、再送フラグではないかと思われます。

2008-10-28

私鉄の空線のデコード(7)

相変わらず、私鉄の空線のデコードを続けています。その後、デコード精度を上げてみたところ、西武線以外の空線もデコードできるようになり、フレームのフォーマット(プロトコル)がなんとなく見えてきました。
ただ、まだデータの収集は十分ではないので、正しいかはわかりません。

かつては、フレームは可変長ではないかということをいっていたのですが、どうやら基本的には固定長であるようです。ただし、解釈によっては1ビット増えたり減ったりしているとも思えます。
フレームの後にいわゆる空線パターンの「10」の連続があるのですが、それが固定長なのかどうかはよくわからないといった感じです。

現段階で想像されるフォーマットは以下のような感じになっています。

同期パターンデータデータ終了チェック
16bitXbit16bit13bit

このうち、「データ」の長さは鉄道会社によって違うようですが、もしかしたら複数の長さのパターンがあるかもしれません。あと、いずれの場合も長さは4の倍数になっているようです。
「データ終了」のパターンも会社によって異なるように思えます。

あと、チェックだと思われるビット列ですが12bitかもしれません。よくはわからないのですが、パリティで1bit付加されるような仕様なのかもしれません。ここだけ奇数なのはやはりあやしいので、パリティではないかという予想も含まれていますが。
12bitが何かのチェックではないかというのは、以前も書いたのですがここだけがかなりランダムのようなビット配列になります。ただ、12bitのチェックアルゴリズムというと、CRCぐらしか思いつかないのですが、生成多項式がわからないので確認はしていません。
ちなみにネットで調べたところによると12bitのCRCというがあるらしいです。ただし、どこが規定したものかはわかりませんでした。12bitなら、総当りで計算してもたいしたことはないので、最悪それで見つけてみようかとは思っています。

2008-10-12

私鉄の空線のデコード(6)

関東私鉄の空線のデコードの続きですが、フレームのサイズが変わるのが気になったので、ビットの同期を少し精度を上げてみたのですが、やはり違ったサイズのフレームが送られているように思われます。
1ビット違うというのであれば、デコードを失敗しているのではないかとも思うのですが、サイズが3分の2ぐらいのものがあるので、さすがにそこまでは失敗はしないはずなので、やはり可変長なフレームになっているのではないでしょうか。

といったわけで、これから先の解析はデータの収集が必要ではなかろうかと思いつつ、面倒なので、とりあえずこのへんでいったん中断しようかと思います。ただ、作ったソフトが中途半端だと再開したときに訳がわからなくなるので、デコードしたデータを表示するだけという、かなり寂しげなソフトですが、いちおうそれなりにデコードはできるので、形だけということで現状版としてFIXしてしまおうかと思っています。

あえてスナップショットを見せるほどのものではありませんが、折角なので画像をアップしておきます。画像をそのままアップすると例の電波法に引っかかると叩かれそうなので、一部モザイクをかけました。一部でいいのか?という気もしますが…。

デコードしたのは、西武線のアップリンクです。データの中身の意味はわかりませんが、フレームの前半は比較的規則性のありそうな数字の並びになってますが、後半の16ビットぐらいはどちらかというとランダムな感じのする数字になってます(モザイクで見えないですが)。
そういう意味から推測すると、後半は何かエラーチェック用のデータであると思います。16ビットで間違えがなければCRC16かもしれませんが、そうでなければBCHかもしれません。前半のデータが何も加工されずに送られているのであれば、エラーチェックは無視しても問題はないとは思うので、ある程度の解析はできるのかもしれません。