5.アクセサリデコーダ


5.1. どうやって機関車とアクセサリのアドレスを区別するのか?

CS2のキーボードのページを開けるとアクセサリ用のボタンがずらりと並び、それぞれのボタンには1から始まる通し番号がつけられています。この番号がそのままポイントや信号機などのアドレスとなる訳です。

キーボード

 一方、機関車に対するアドレスも1からの通し番号でつけることができます。mfx、mfx+の場合はコマンドステーションが勝手に空いている番号をつける仕様ですが、MMやDeltaの場合はユーザーが自分の好きな(制限はありますが)番号をつけることができます。アクセサリと機関車のアドレスは数字の上ではまったく区別はありません。また、前章で見たとおり、パケット中のアドレスの表記にもアクセサリと機関車を区別する情報は含まれていないのです。では、例えば、アクセサリの3番と機関車の3番をどうやって区別するのでしょうか。
 実はアクセサリ用のパケットは機関車用のパケットの倍の周波数(半分のパルス幅)で出力されています。下図に機関車用のパケットとアクセサリ用のパケットを示します。

Osc1

機関車用パケット

Osc2

アクセサリ用パケット


 機関車用のデコーダでは220μsごとにサンプリングするのに対して、アクセサリ用のデコーダでは110μsごとにサンプリングするようになっています。このような単純な区別で誤動作を起こさないのか、厳密に絶対ない、と証明するのは難しいと思いますが、まず無いのではないでしょうか。これはパルス幅による区別に加えて、ダブルパケットが一致する条件で、意味のあるデータとなる場合が極めて少ないと考えられるからです。

5.2. アクセサリ(ソレノイド)デコーダへのパケット

それでは、アクセサリ用のデコーダに送られるパケットの中身はどうなっているのでしょうか。次のサイトに情報が書かれていました。

THE MANUAL OF THE NEW MÄRKLIN-MOTOROLA FORMAT

このサイトによると

ソレノイド: A1 A2 A3 A4 0 D0 D1 D2 S
(倍の周波数、新旧MMプロトコル)
     -> A4 A3 A2 A1 アドレス部 (3進法);
     -> "0" 固定トリット;
     -> D2 D1 D0    k83のポートを指定する2進数
               範囲:0…7; D2=MSB, D0=LSB
     -> S k83の状態:
                 "1"=on
                 "0"=off(D2 D1 D0に関わらず全部オフ)

アドレス部は前章で説明したとおり、3進法で80個のアドレスを指定することができます。ファンクション部は0で固定値となっています。ここが1の場合は旧MMプロトコルのadditional functions decoders用の命令パケットになるそうです。よく分かりませんが、サウンドデコーダなどに使われていたものかもしれません。

 D0, D1, D2の3 bitで0から7までの8つのk83のポートを指定します。ここはなかなか興味深いところで、アクセサリはk83を使うことを前提にした思想を感じさせます。アナログからデジタルへ移行する創成期に、これまでアナログで使用していたポイントや信号機のソレノイドをデジタルで駆動するのにk83を使った、ということの名残りではないでしょうか。このk83のポート割当とアドレスとの関係については後述します。

k83

 最後の1 bitはk83の出力のオン、オフです。CS2でk83を使うと出力端子から-19 Vのパルスが出力されます。パルスの長さはCS2で任意に設定できますが、デコーダ本体にはパルス幅を調整する機能は無く、CS2が決めていたんですね。例えば、パルスの長さを200 msに設定した場合は、CS2はまずS=1のパケットを流し、その200 ms後にS=0のパケットを流すことで、幅200 msのパルスを実現する仕組みになっています。

5.3. コマンドステーション上のアドレスとパケットの関係

前節で説明したとおり、パケットのデータ部にはk83の使用を意識したポート割り振りが指定されています。しかし、現在ではk83の有無にかかわらず、個別にポイントデコーダなどを使うことができます。それでは、CS2やMS2のキーボードに表れる10進数のアドレス番号とパケット中のデータとの対応はどのようになっているのでしょうか。MS2のキーボードから出力されるパケットを受信してみました。結果は以下のとおりです。

Address
on MS2 Red/Green             Packet
 1    R               110000000000110011
                       1000 0 0001
 1    G               110000000011000011
                       1000 0 1001
 2    R               110000000000110011
                       1000 0 0101
 2    G               110000000011110011
                       1000 0 1101
 3    R               110000000000001111
                       1000 0 0011
 3    G               110000000011001111
                       1000 0 1011
 4    R               110000000000111111
                       1000 0 0111
 4    G               110000000011111111
                       1000 0 1111
 5    R               100000000000000011
                       2000 0 0001
 5    G               10000000001000011
                       2000 0 1001
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 10   R                001100000000110011
                       0100 0 0101
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 13   G                111100000011000011
                       1100 0 1001


ざっと、この結果を見て分かることをまとめてみました。

1. パケット中のアドレス部は1から始まる。
2. デコーダアドレスはMS2アドレスが4つ大きくなると1つ大きくなる。
3. 赤と緑でMS2アドレスは同じ値であるが、赤でD0=0、緑でD0=1
4. Sは1のみが検出された。


以上の結果より、MS2アドレスはパケット中のアドレス部A1,A2,A3,A4とデータ部のD1,D2を使って表わせることが分かりました。
 MS2アドレスをxとすると

(x−1)を4で割った余りがD2D1の2 bitの0…3の値となる
(x−1)を4で割った商に1足して3進数で表示→A4A3A2A1となる

数字の並び方がパケット中では逆に並ぶことに注意が必要です。このようにデータ部の一部も実質的にはアドレスとして使われているため、デコーダを二つ一組で使う信号機(ポイント)として使用可能なアドレスの数は80×4 = 320(個)、デコーダ単独で使う場合はこの倍の640個になります。

 以上のアドレスに加えて、信号機の場合はD0=0で赤、D0=1で緑、ポイントの場合であればD0=0で直進、D0=1で分岐という解釈ができます。アンカプラーのようにデコーダを単独で使う場合には、例えば3aが3のD0=0、3bが3のD0=1に対応します。

 実測でS=1のパケットしか計測されなかったのはちょっと検討が必要なところです。実際にはS=0のオフパケットが出力されていたものの測定できていないだけか、あるいはMS2ではS=0のパケットを出力していないか、どちらかは現有の測定器では決められません。今回はどちらの場合でも対応できるよう、製作する信号機ではS=1のパケットのみで動作する仕様とします。


4.Märklin-Motorola (MM) プロトコル TOP pageへ 6.テスト用回路          
inserted by FC2 system