Nona’s Integrated Train System (NITS)
NITS(ニッツ)は、Stormworks鉄道向けのデイジーチェーン方式の中で最も情報到達時間差が少なくなるよう設計された、コマンドベース総括制御システムである。動力分散システムの車両への適用を推奨する。
NITSの低到達時間差の恩恵を受けるには、「NITS Line Node」マイコンの実装法を利用すること。公開しているマイコンをそのまま使うことが望ましい。
NITSに載せる情報の生成・読み取りについては各自で制作する前提であるが、自分でNITSの0x41-0x47コマンドを実装することが難しい場合は、「NITS Simple Bridge」マイコンが利用可能である。Simple Bridgeでも0x48-0x4fの拡張コマンドが利用可能となる(作者の高原も今後はこのマイコンを基本的に使う予定である)。
基本マイコンのインターフェース
入力
- B1: Lua動作異常なし
- B2: 前後選択 前
- B3: 前後選択 後
- B4: 非常ブレーキ
- B5: 単行 前後選択成立
- B6: 前後選択 短絡
- N1: 後方へのNITS情報(下表参照)
- N2: 前方へのNITS情報(下表参照)
出力
- 自分より前の車両の情報が小さい番号のチャンネル(N1-N15)に並ぶ
- 自分より後の車両の情報が大きい番号のチャンネル(N31-N17)に並ぶ
- 自車情報はN16にある
- コモンライン情報はN32にある。また、Boolean情報もコモンライン情報
共通信号(0x41-0x47)割り当て
| コマンド(HEX) | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x41 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 非常ブレーキ | 連絡ブザー | 故障 | 扉 A側が開扉している | 扉 B側が開扉している | パンタグラフ 上 | パンタグラフ 下 | エンジン 始 | エンジン 停 | バッテリ 始 | バッテリ 停 | ダイナミックブレーキ(自動) | ダイナミックブレーキ(手動) | 前進 | 後退 | 力行 | 制動 | 共通モード | |||||||
| 0x42 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 案内表示 起動 | 案内表示 停止 | チャイム 起動 | チャイム 停止 | 室内灯 起動 | 室内灯 停止 | ヒータ 起動 | ヒータ 停止 | 扉A 開扉 | 扉A 閉扉 | 扉B 開扉 | 扉B 閉扉 | 共通モード | ||||||||||||
| 0x43 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 力行パラメータ(10 bits) | ブレーキ力(kPa単位とし、半分の値を伝送) | 共通モード | ||||||||||||||||||||||
| 0x44 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 数値記録ID | 値 | NS-TPB互換動作用(使用非推奨) | ||||||||||||||||||||||
| 0x45 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 予約 | 予約 | |||||||||||||||||||||||
| 0x46 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | ウォッチドッグ | 自車がR-BUS制御権相当 | Lua故障伝送線 | 前後選択 後線 | 前後選択 前線 | 非常ブレーキ | (後方両数オーバー 伝送無し) | (後方両数 伝送無し) | 前方両数オーバー | 前方両数 | コモンライン用 | ||||||||||||||
| 0x47 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | ユーザ固有ID | ユーザ別選別ID | 選別ID 詳細は別欄 | ||||||||||||||||||||||
0x41-0x43 共通の信号(b19-b23)について
以下のアルゴリズムでデータを更新する。
- 車両が存在していて、新たな信号を受け取った場合は、その車両から受け取ったとする信号を更新する
- 車両が存在していて、新たに信号を受け取っていない間は、その車両から受け取ったとする信号は直前に更新したときの値を使う
- 車両が存在しない場合は、受け取った値を消去する
以上のアルゴリズムで得られた値について、存在する全車両分の論理和を取り、編成全体の値として使用する。
0x47 について
ペイロードの上位8ビットまたは16ビットを個人に割り当てておりユーザ固有IDと呼ぶ。ユーザ固有IDを除いた残りの下位ビットの利用法は個人に委ねている。掲載のない値は未割当だが、ユーザ固有ID 0と201~255は今後のために予約。
両数が変化した場合とその他必要なトリガによって宣言を行い、宣言から3秒後に固有モードに移行する。宣言後3秒以内に異議申し立てとして0x47000000が届いた場合は移行を阻止する。
デバッグ用の0xD000はテスト作業中は自由に使用して良いが、ワークショップ等で公開する際には使用しないようにする。
8ビット割り当て(0x01 - 0xCF)
- 0x00 (0)
- 0x05 (5)
- 0x07 (7)
- 0x09 (9)
- 0x24 (36)
- 0x72 (114)
16ビット割り当て(0xD000 - 0xFFFF)
- 0xD000 (208-0) デバッグ用途・未申請時に利用
その他の信号について
- 0x41は、もっとも最近送られてきた値を編成全体の制御情報とする
- 0x41-0x42共通情報及び0x42情報はラッチを使って保持する
- 1両に複数の運転室がある車両でも、NITS Line Nodeは1両に1つしか積むことができない
- NS-TPBからの劣化点の一つである
- A側は「前」を向いて右側、B側は「前」を向いて左側
- 前後選択は、運転操作を行う先頭車両は「前」、もう一方の先頭車両は「後」にする
- このように設定しないと非常ブレーキが作用する。この仕組みによって編成分離時に全体ブレーキが作用する動作を実現する
- 単行車が1両で動く場合に困るため、単行車で整備できたと判定される場合は「単行 前後選択成立」を送る
- 編成の組成作業中や、編成分離状態での非常ブレーキを無効化するためには「前後選択 短絡」を送る