4.Märklin-Motorola (MM) プロトコル


以下の記述はいわゆるMärklin-Motorola (MM)プロトコルと呼ばれるものについてです。MMプロトコルには古いバージョンと新しいバージョンがあるそうですが、新しいバージョンでは速度調整がより細かくなり、制御できるファンクションも増えています。もちろん、“新しい”といっても現時点ではどちらも、えらく古いプロトコルなわけで、現在のmfx系とは通信方法がまったく異なっています。ただし、これらの“古い”プロトコルも、メルクリンから販売されているコマンドステーション (CS3(2), MS2) でサポートされています。MMプロトコルについては、以下のWebサイトに詳しく述べられていますので、ご参照下さい。

古いMM:http://home.kpn.nl/rvdhof/digisigold.htm
新しいMM:http://home.kpn.nl/rvdhof/digisignew.htm

4.1. 一般的なパケットのプロファイル


デジタル情報は±19 Vの矩形波の形でB線(中央レール)とO線(左右のレール)に流されます。この電圧に関しては、文献によって±15 ~ ±22 Vと幅があるのですが、私の使っているCS2では実測値がだいたい±19 Vであり、CS2画面の”システム”の”情報”で表示されている電圧の値も18.9 Vということなので、こんなところではないでしょうか。

 実際のパルスのプロファイルを下に示します。

Osc

 これはアイドルパケットと呼ばれるものの一部です。コマンドステーションから積極的に指示を出していない時に出力されるパケットで、“みんな、いまのままやっといて”という意味のコマンドです。デジタル信号は220 μsの等間隔で出力されていて、0と1は以下のように表されます。

2進数 ”1”  長いパルス

- - - - - - -

        -
1 2 3 4 5 6 7 8
____220 μs____


2進数 ”0”  短いパルス

-

 - - - - - - -
1 2 3 4 5 6 7 8
____220 μs____

つまり、1は220*7/8 =192.5μs、0は220*1/8=27.5μsのパルスで表され、0と1が連続して出力されている状態では、各パルス間が11または10の場合は27.5μs、00または01の場合は192.5μsのlowレベルとなります。

 1個の命令パケットは18 bitからなっており、8 bitのアドレス部、2 bitのファンクション部、8 bitのデータ部に分割できます。このパケットは、同じものが13.5 msの間隔をおいて出力され、ダブルパケットと呼ばれています。ダブルパケット中の二つのパケットを比較して、同じであれば正しく受信されたものとして命令を実行します。ダブルパケットは、1個のパケットの長さである4 ms (18 ×0.22 ms) 以上の間隔をもって出力されます。

Protocol


4.2. 3進法のアドレス

最初の8 bitは機関車やアクセサリのアドレスを表します。この8 bitは、そのまま2進数の8 bitとしては解釈しません。2 bit一組を1 bitと見なし、4 bitのデータとして扱います。アドレスは3進数で表現しており、00を0、11を1、10を2として取り扱います。01は未使用です。また、4 bitの最小桁(the Least Significant Bit:LSB)は左側、最大桁(the Most Significant Bit:MSB)は右側となります。時系列的に小さい桁から出力すると、このような並びとなります。
 例えば、上図の例では、アドレス部分が”00””10””00””11”となっていますので、3進数の0201という変換ができます。更に、一般的な数字の並び方にするために、並び方を左右ひっくり返すと、1020となります。これを10進数で表すと、

1×33 + 0×32 + 2×31 + 0×30 = 33

となり、アドレス番号33を表していることが分かります。

 なんとも、ややこしいアドレスの付け方ですね。ややこしいことに加えて、情報量もずいぶん無駄に使っています。普通に8 bitを使えば、256個のアドレッシングが可能なのに、4桁の3進法では81までしかカウントできません。(アドレスとしては0を用いないことにしているので、実際は80個)このような冗長化は、おそらく将来の拡張性を担保するためのものと思われますが、結局、MMプロトコルは生き残らず、NMRA-DCC的なmfxに移行して、現在に至っています。

4.3. ファンクション部、データ部

2 bitのファンクション部、8 bitのデータ部も2 bitを1 bitと見なして扱いますので、ファンクション部は1 bit分、データ部は4 bit分の情報となります。これらはアドレス部とは異なり、2進数として扱います。すなわち、00を0、11を1として、10、01は未使用です。ファンクション部はある一つのファンクション(ライトやサウンドなど)のOn/Offの制御、またデコーダのタイプの違いを表すのに用いられます。データ部の情報は機関車向けの場合、進行方向とスピード、また、拡張ファンクションのOn/Offの制御に使います。詳細については前掲のWebサイトをご参照ください。もちろん、このサイトの目標であるアクセサリデコーダの場合については、次章で詳しく述べます。


3.開発環境     TOP pageへ 5.アクセサリデコーダ
inserted by FC2 system