BDL168 & RX4のLocoNetパケット解析

車両検出機器を自作するにあたり、BDL168 & RX4と完全互換にしたいので、それらがLocoNetに送出するパケットがどのようなものか調べていきます。(車両検出機器の構想についてはコチラを参照ください。)
が、実機をもっていないのでインターネット上の資料からのみ推測します。
Python初心者のNゲージ自動制御に挑戦!さんのJMRIでトランスポンディングという記事のJMRIのLoconet Trafficのスクリーンショットが手がかりでした。(写真は当方で同じ状態を再現したもの)

BDL168 & RX4のLocoNet パケット

BDL168 & RX4のLocoNet パケット

JMRIにはLoconet Trafficを利用するることで、LocoNet上に流れているパケットが説明付きで見れます。また、Send LocoNet Packetを利用することで好きなパケットをLocoNet上に流すこともできます。
これを利用して調べていくことにします。

BDL168

BDL168単体では在線検知しかできません(車両の識別はできない)。Loconet Trafficでは、

General sensor input report: contact 1 (BDL16 1,1) (DS54 switch 1 Aux input) is Hi
General sensor input report: contact 1 (BDL16 1,1) (DS54 switch 1 Aux input) is Lo

というメッセージ部分です。General Sensor Input ということはLocoNet Personal Use Edition 1.0に、

OPC_INPUT_REP 0xB2 ; General SENSOR Input
   ; <0xB2>, <IN1>, <IN2>, <CHK>
    <IN1> =<0,A6,A5,A4,A3,A2,A1,A0>, 7 ls adr bits. A1,A0 select 1 of 4 inputs pairs in a DS54
    <IN2> =<0,X,I,L,A10,A9,A8,A7> Report/status bits and 4 MS adr bits.
      ”I”=0 for DS54 “aux” inputs and 1 for “switch” inputs mapped to 4K SENSOR space.
        (This is effectively a least significant adr bit when using DS54 input configuration)
      ”L”=0 for input SENSOR now 0V (LO) , 1 for Input sensor >=+6V (HI)
      ”X”=1, control bit , 0 is RESERVED for future!

とある部分でしょうね。信号情報ではないので、DS54の方の説明だけを日本語にすると、

OPC_INPUT_REP 0xB2 ; 一般センサー
   ; <0xB2>, <IN1>, <IN2>, <CHK>
    <IN1> =<0,A6,A5,A4,A3,A2,A1,A0>, アドレスの下位7ビット
    <IN2> =<0,X,I,L,A10,A9,A8,A7> 情報と、アドレスの上位4ビット
      ”I”=0のときAux入力 1のときSwitch入力
        (chibiegg追記:BDL168では更なるアドレスの最下位ビットとして使われているようです)
      ”L”=0のときLo(未検出) 1のときHi(検出0
      ”X”=常に1 (0は予約)

 ということで、Send LocoNet Packetから流してみます。

この情報を元に作ったパケットをいくつか送信してみました。そのときのLoconet Trafficの表示です。

[B2 00 40 0D] General sensor input report: contact 1 (BDL16 1,1) (DS54 switch 1 Aux input) is Lo
[B2 00 50 1D] General sensor input report: contact 1 (BDL16 1,1) (DS54 switch 1 Aux input) is Hi
[B2 00 60 2D] General sensor input report: contact 2 (BDL16 1,2) (DS54 switch 1 Sw input) is Lo
[B2 01 40 0C] General sensor input report: contact 3 (BDL16 1,3) (DS54 switch 2 Aux input) is Lo
[B2 01 60 2C] General sensor input report: contact 4 (BDL16 1,4) (DS54 switch 2 Sw input) is Lo
[B2 02 40 0F] General sensor input report: contact 5 (BDL16 1,5) (DS54 switch 3 Aux input) is Lo
[B2 02 60 2F] General sensor input report: contact 6 (BDL16 1,6) (DS54 switch 3 Sw input) is Lo
[B2 03 40 0E] General sensor input report: contact 7 (BDL16 1,7) (DS54 switch 4 Aux input) is Lo
[B2 03 60 2E] General sensor input report: contact 8 (BDL16 1,8) (DS54 switch 4 Sw input) is Lo
[B2 04 40 09] General sensor input report: contact 9 (BDL16 1,9) (DS54 switch 5 Aux input) is Lo
[B2 04 60 29] General sensor input report: contact 10 (BDL16 1,10) (DS54 switch 5 Sw input) is Lo
[B2 05 40 08] General sensor input report: contact 11 (BDL16 1,11) (DS54 switch 6 Aux input) is Lo
[B2 05 60 28] General sensor input report: contact 12 (BDL16 1,12) (DS54 switch 6 Sw input) is Lo
[B2 06 40 0B] General sensor input report: contact 13 (BDL16 1,13) (DS54 switch 7 Aux input) is Lo
[B2 06 60 2B] General sensor input report: contact 14 (BDL16 1,14) (DS54 switch 7 Sw input) is Lo
[B2 07 40 0A] General sensor input report: contact 15 (BDL16 1,15) (DS54 switch 8 Aux input) is Lo
[B2 07 60 2A] General sensor input report: contact 16 (BDL16 1,16) (DS54 switch 8 Sw input) is Lo
[B2 08 40 05] General sensor input report: contact 17 (BDL16 2,1) (DS54 switch 9 Aux input) is Lo
[B2 08 60 25] General sensor input report: contact 18 (BDL16 2,2) (DS54 switch 9 Sw input) is Lo

正しいみたいですね。BDL16一つにつき、16セクションまで認識されています。

RX4(トランスポンディング)

つづいてトランスポンディングです。最初のスクリーンショットのうちの、

という部分です。残念ながらLocoNet Personal Use Editionには説明がありません。仕方が無いので、いろいろなコマンドを0xB2付近をしらみつぶしにSend LocoNet Packetから送信してみて同じ表示がでるまで探しました。以下はその結果なので公式の情報からではありません。で、最終的に納得した結果を上のようにまとめると、

0xD0 ; トランスポンディング
   ; <0xD0>, <IN1>, <IN2>, <IN3>, <IN4>, <CHK>
    <IN1> =<0,0,L,S7,S6,S5,S4,S3>情報とセクション番号の上位5ビット
      ”L”=0のときAbsent(未検出) 1のときPresent(検出)
    <IN2> =<0,S2,S1,S0,Z3,Z2,Z1,Z0> セクション番号の下位3ビットとゾーン番号の4ビット
    <IN3> =<0,A13,A12,A11,A10,A9,A8,A7> 車両アドレスの上位6ビット
      ショートアドレスのときは0x7Dを指定。
    <IN4> =<0,A6,A5,A4,A3,A2,A1,A0> 車両アドレスの下位6ビット 

となります。ただし、あくまでも実験から推測した結果ですので、これを利用したことによるいかなる損害も責任を負いません。

これに基づいていくつかパケットを流した結果です、

[D0 20 00 7D 01 73] Transponder present in section 0 zone A decoder address 1 (short)
[D0 00 00 7D 01 53] Transponder absent in section 0 zone A decoder address 1 (short)
[D0 00 01 7D 01 52] Transponder absent in section 0 zone decoder address 1 (short)
[D0 00 02 7D 01 51] Transponder absent in section 0 zone B decoder address 1 (short)
[D0 00 03 7D 01 50] Transponder absent in section 0 zone decoder address 1 (short)
[D0 00 04 7D 01 57] Transponder absent in section 0 zone C decoder address 1 (short)
[D0 00 05 7D 01 56] Transponder absent in section 0 zone decoder address 1 (short)
[D0 00 06 7D 01 55] Transponder absent in section 0 zone D decoder address 1 (short)
[D0 00 07 7D 01 54] Transponder absent in section 0 zone decoder address 1 (short)
[D0 00 08 7D 01 5B] Transponder absent in section 0 zone E decoder address 1 (short)
[D0 00 09 7D 01 5A] Transponder absent in section 0 zone decoder address 1 (short)
[D0 00 0A 7D 01 59] Transponder absent in section 0 zone F decoder address 1 (short)
[D0 00 0B 7D 01 58] Transponder absent in section 0 zone decoder address 1 (short)
[D0 00 0C 7D 01 5F] Transponder absent in section 0 zone G decoder address 1 (short)
[D0 00 0D 7D 01 5E] Transponder absent in section 0 zone decoder address 1 (short)
[D0 00 0E 7D 01 5D] Transponder absent in section 0 zone H decoder address 1 (short)
[D0 00 0F 7D 01 5C] Transponder absent in section 0 zone decoder address 1 (short)
[D0 00 00 00 01 2E] Transponder absent in section 0 zone A decoder address 1 (long)

Zoneは偶数のときだけアルファベットの名前がついているようです。Zone Hまであります。当分足りなくなるまではこの偶数番目だけを利用する事にします。

この記事はDCC機器の自作に投稿されました タグ: , , , , , . このパーマリンクをブックマークする。 コメントを投稿するか、トラックバックをどうぞ: トラックバック URL.

コメントする

あなたのメールは 絶対に 公開されたり共有されたりしません。 * が付いている欄は必須項目です

次の HTML タグと属性が使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
*