Skip to content

Instantly share code, notes, and snippets.

@nona-takahara
Last active July 8, 2023 12:56
Show Gist options
  • Save nona-takahara/fe1f6900592c8518c2698cce79dc8717 to your computer and use it in GitHub Desktop.
Save nona-takahara/fe1f6900592c8518c2698cce79dc8717 to your computer and use it in GitHub Desktop.

NS-TPB v2 (Train Parallel Bus v2) 2.0.0-alpha10~ (draft)

⚠️ 現在下書きです

高原のなが、動力分散型の旅客列車用に使用する通信規格である。

R-BUSの拡張機能として開発を開始したため、R-BUSと通信の互換性はあるが、R-BUS規格に準拠しているかどうかは各車両で検証しなければならない(現状のNona実装はN15の制御が規格違反である)。 NS-TPB v1 との互換性をなるべく確保したが、一部挙動が変わった点がある。

(ちょっと複雑すぎるので、実装難易度を下げた互換モードを提供しようかと思っています)

制御信号情報(マイコン間での解釈)

前提条件

たとえば「A-B-C」のような編成を組んだ時、NS-TPBマイコンは各車両間の連結器を介して「A→B」「A←B」「B→C」「B←C」の通信をする。

車両の間に立って、前から後ろに行く信号と後ろから前に行く信号それぞれ別個に解釈する。たとえば「A→B」のとき、Aが送信側・Bが受信側となる。

なお、使用しない機能はパススルーする。

用語・特殊実装

全般的な用語

定義
A側 信号の送信側から受信側を見たときに左側
B側 信号の送信側から受信側を見たときに右側
制御権条件 自車が制御権を持つときのみ出力できる信号に○がついています。持たない時は必ずパススルーします。

後出し優先排他・自己保持制御

自車から送信する際は、送信ラッチを起動。

他車から新しい値を受け取ったら、送信ラッチをオフ。さらに反対側送信メモリをリセットする。

他車から0を受け取っている間はメモリを更新しない。

(現状のNona実装マイコンはメモリを使用していないため、修正予定)

オフパルス制御

オフパルス(複数回の瞬間的な立ち下がり信号)によってOn出力中の車両をOffにする制御。

なお、オフパルスでオフした場合はオフパルスを再生成するかパススルーするように気を付ける(全車両に確実に配信する)。

信号リスト

チャンネル 制御権条件 内容 備考
N1 ブレーキ 0以上1以下
TPBでは1を受信したとき最大レベルのブレーキが動作することを求める(1以外の値に対する挙動は自由)。
N2 進行方向 信号の送信側に進む際に1、信号の受信側に進む際に-1を与える。中立位置では0。
N3 スロットル 0以上1以下
N4 速度 0以上の実数
R-BUS v1.1で示した指針で設計
N5 - N14 使用しない領域 処理を加えずパススルーする
N15 派生システム番号
マイコン入出力支援
1909または0のとき、チャンネル16以降の機能を有効化する
N16 車両数
マイコン入出力支援
信号の送信側にいる車両数がわかる
車両1両ごとに+1する実装で実現
N17 ドア特殊扱い(A) 0は全扉の開閉。その他の値は各々で定める。
後出し優先排他・自己保持制御
N18 ドア特殊扱い(B) 上に同じ
N19 1号車側設定 1号車の側から-1が送られてくる。制御権側からの信号優先
N20 チャイム・メロディ種別 後出し優先排他・自己保持制御
N21 故障情報 後出し優先排他・自己保持制御
定期的な再送出を推奨
N22 表示器1 設定 後出し優先排他・自己保持制御
N23 表示器2 設定 後出し優先排他・自己保持制御
N24 表示器3 設定 後出し優先排他・自己保持制御
N25 表示器4 設定 後出し優先排他・自己保持制御
N26 追加制御用領域 1 制御権車両のみ書き込み
N27 追加制御用領域 2 制御権車両のみ書き込み
N28 追加制御用領域 3 制御権車両のみ書き込み
N29 追加制御用領域 4 制御権車両のみ書き込み
N30 (予約)
N31 (予約)
N32 (予約)
チャンネル 制御権条件 内容 備考
B1 車両起動(互換領域) R-BUSとの互換領域
B2 制御権 先出し優先の排他制御(なお、強制乗っ取りに対して脆弱な実装を推奨)。言い換えると、他者からB2信号を受けない場合に発信することができ、発信中はN1-N15, B1-B15(及びN26-N29)も発信できる。
B3 - B15 使用しない領域 処理を加えずパススルーする
B16 ドア開(A-S) ドア状態ラッチのセットを行う
B17 ドア閉(A-R) ドア状態ラッチのリセットを行う
ただし、セットが来ている間は閉じない
B18 ドア開状況(A) 開いているドアがある場合はOn
和を送信
B19 ドア開(B-S) ドア状態ラッチのセットを行う
B20 ドア閉(B-R) ドア状態ラッチのリセットを行う
ただし、セットが来ている間は閉じない
B21 ドア開状況(B) 開いているドアがある場合はOn
和を送信
B22 客室照明
B23 客室ヒーター
B24 パンタグラフ上昇 オフパルス制御
B25 乗務員ブザー
B26 非常通報・故障
B27 非常ブレーキ請求 Onの間、制御権所有の車両が自動でN1を1に設定するよう実装する。
また、編成分離を検出した際にOnにすることを推奨。
B28 チャイム・メロディ類起動
B29 チャイム・メロディ類終了
B30 エンジン起動 オフパルス制御
B31 走行用バッテリー オフパルス制御
B32 (予約)

設計の概要

NS-TPB / R-BUSの情報の渡し方

NS-TPBでは、信号がループして状態が固定されないように、次の信号の流れを原則としている。

  • 前から来た信号に、自車状態の情報を加えて、後ろに渡す
  • 後ろから来た信号に、自車状態の情報を加えて、前に渡す

前から来た情報を前に返したり、後ろから来た情報を後ろに返さないようにしてループを防ぎ、円滑な制御を実現する。

NS-TPBの特徴

車両数カウンタを利用した編成分離時の自動ブレーキ実装を推奨している。R-BUSの仕様策定段階で外された機能である「貫通ブレーキの要件を満たさない」部分を緩和している。

v1系からの変更点

扉の開閉について

常時リセットを流すことによってOn/Offのみで扉の開閉が可能になるように変更した(v2唯一の破壊的変更)。

「扉が開かないことは仕方がない」という方針による変更である。

R-BUS規格への適合対策

制御権が通っているときは制御権車が0または1909のときだけ起動する(制御権が通っていないときは1909を通してもよいようである)。

標準実装を定義しない

高原のなによる実装はNona実装と呼ぶこととなった。実装例であり、これを必ず使う必要はない。

TPB に関して今後の検討内容

無線通信規格の検討

Nona実装において、OpマイコンでセットしてSvマイコンで書き込まずに取り出すデータを無線化するシステムは考慮に入れても良いと考えている。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment