本文へ移動

こーげんやさい

列車総括制御システム NS-TPB のこれまでと NITS の野望

投稿:,最終更新:

この記事は Stormworks 第 1 Advent Calendar 2023 第 6 日目の記事です。

メモ: 高原の不手際により画像・動画の収集が間に合わなかったため、後日それらを追加した上で すとーむすきー にて更新をお知らせします。

なお「NITS 試験の現況」以外の部分の文章は十分出来上がっていますので、このままでもお楽しみいただると思います。

NS-TPBNITSニッツ は、高原のな 独自の Stormworks 鉄道車両用 総括制御システムです。

TPB は Train Parallel Bus の頭字語で、車両間連結部のコンポジット信号が 1 本しか引けない環境に R-BUS を導入した上で旅客サービスを提供するというミッションのために開発が始められました。NITS は Nona’s Integrated Train System の頭字語で、車両間通信の遅延を理論値付近まで縮めてかつ大容量通信を行うことを目的に開発中のシステムです。

どちらもかなり狂った目的のために狂いながら作ったシステムですが、ありがたいことに総括制御システムとしてこれらのプロトコルや高原製マイコンを採用してくださった方が大勢いらっしゃいます。ありがとうございます。

今回は、近いうちに開発終了することとなった NS-TPB のこれまでと、これから始める新システム NITS の野望について書き散らしていきます。

NS-TPB のこれまで

ソーヤー島鉄道の願望

高原が Stormworks を始めたのは、2020 年の年末でした。当時のわたしは受験のプレッシャーに押し負け、家ではほとんどの時間を寝て過ごすような状態でした。この時に始めた Stormworks が救世主であったことは間違いありません。

始めてから数日後、わたしは SAFEGE 式モノレール風のものを作っていました。ソーヤー島を縦断するモノレール鉄道という壮大な計画も立てました。何両編成かのモノレール電車を使って、コンテナ・燃料を効率よく 1 人で運びたいというものだったと思います。

レールと車両の研究を続けることしばらくして、連結部の回転自由度を確保するためには、コネクタ 1 個しか繋げられないことに気づきました。

このころモノレール計画はさらなる広がりを見せて、複数名によるプロジェクトとなり、旅客サービスまで行うことになっていました。すでに総括制御システムとして R-BUS を全面採用していたことから、コネクタ 1 個へ R-BUS と旅客サービス機能を同時に乗せる必要に迫られたのです。

(なお、ここで言及したモノレールプロジェクトは 2022 年 10 月までに解散しました……)

多機能・オープンな R-BUS 拡張

2021 年 1 月 17 日、モノレール用車両通信規格が GitHub Gist へ Secret Gist としてアップされました。Secret と名前はついていますが、URL さえ知っていれば誰でも見られるものでした。同年 9 月 2 日にはこのリンクが JP 鯖に貼られ、事実上の公開状態となりました。

2021 年 11 月 22 日に紹介動画をアップロードし、NS-TPB は開かれた R-BUS 拡張機能としての歩みをスタートさせたのでした。高原の知りうる範囲だけでもこれまでに 4 名以上の方に採用していただき、また高原より 4 名以上の方のビークルへの搭載を支援させていただきました。

作者が違う TPB 採用列車を連結して有名な列車が再現された日には大変感激したものです。

NS-TPB の限界

NS-TPB はモノレール用の R-BUS 拡張として始まり、必要になった機能をその都度増築することで増やしてきたために、きめ細かな制御や伝送速度の改善が難しいものとなってきました。制御マイコンをまるきり作り変えるなどして何度か改良を行ってきましたが、ついに既存の TPB で最大手顧客からの要望に応えることが困難になってしまいました。

また、設計上は拡張性を考慮していましたが、その拡張用部分が仇となり、マイコンを再設計するたびに多数のテストを要する状態となっていました。

R-BUS の限界

R-BUS の小規模な改定を提案しましたが、将来を見越した柔軟性よりも、当初から掲げる制御ルールをより厳格に適用するよう求める場所に着地しました。

厳格なルール適用が求められるという空気感が NS-TPB マイコンの作成に与えた影響は少なからずあったでしょう。

NS-TPB そのものの限界、R-BUS のある種の限界に直面したわたしは、v2 のリリースをもって NS-TPB の開発を終了し、メンテナンスのみを行うことにしました。その代わりに後継システム……NITS の開発を加速させています。

NITS 構想

NITS は 2021 年 8 月の命名当初、NS-TPB や(後述する)NS-TN の上に乗ったデータ送信プロトコルにつけた名前でした。多情報を 4 つしかない自由数値チャネルに流すという目標がありましたが、結局完成に至っていません……

その後、新しい電車を開発することとなりました。せっかくの機会でしたので、各車両の状況を先頭車両でモニタリングしようと考えましたが、NS-TPB は力不足でした。

そんな中、23 日のてーにしさんの記事で紹介される話を聞き、これならば大容量・高速データ通信が可能と考えました。これが発展して現在の NITS となっています(なお NITS は 23 日の記事とは詰め込み方が異なっています)。

試作に終わった無線システム:NS-TN

NITS の前に、鉄談鯖に昔からいる人しか知らない NS-TN の話をしなくてはなりません。これは NS-TPB や R-BUS とは別の総括制御システムを作ろうとして消えた、無線併用の試みでした。

NS-TPB の情報が車両間を渡るとき、非常に大きな遅延が発生することが課題となっていました。R-BUS では 1 両を通過するのに 1 ~ 3 Tick 程度で済むのに対し、NS-TPB では 4 ~ 6 Tick かかるのが普通でした。

のちに NS-TN と名付けるシステムでは、無線を使用することで到達時間を均一にしようという試みました。おおむね NS-TPB と同じ形の情報を無線で飛ばし、また有線にて保安上重要な情報を送るという方法でした。

しかし、NS-TN は成功とはみなされず、他の車両への適用拡大は行われませんでした。多くの鉄道システムで無線が使用されていること(特に Donkk 諸島向けの鉄道システムは無線を多く使用しています)、また同型の車両を複数スポーンさせることがあるため、周波数の衝突への配慮が必要でした。このため自動周波数決定が難しく、無線周波数を手動入力とせざるを得ませんでした。無線を使用したことで車両を通過する遅延が無くなったものの、短編成を頻繁に出し入れする運用が多い高原の電車への適用では手間が多く、相対的に魅力が失われていったのでした。

1 Tick 入魂

それでも、デイジーチェーンを使う限り、車両間で発生する遅延を減らすためにはマイコン内で通る制御ブロックの数を少なくする以外の方法はありません。マイコンを使う場合は、入出力直結の場合と入出力の間に 1 つだけ制御を挟む場合に遅延が最小となり、1 Tick になるそうです。

低遅延通信の方法の検討に無駄な時間をかなり費やしてしまいましたが、結局 NITS はデイジーチェーンを採用し、最小遅延となるよう設計を工夫することになりました。

NITS の確定版の仕組みでは、高速通信チャンネル(全 15 チャンネル)と低速通信チャンネルがあります。高速通信チャンネルはマイコン内遅延最小理論値となる構成になっており、総括制御の主体となっています。低速通信チャンネルは各車両での書き込みチャンネルを指定するなどの目的で用意しており、TPB の 2 倍遅いくらいの速度で通信しています。低速通信チャンネルの情報はめったに変化しないため、これで十分です。

なお、高速通信チャンネルは各車両 1 チャンネルずつ情報を書き込むため、データの読み出しに Lua を要するようになってしまいました。しかし、スポーン後に特別な作業をすることなく高速に情報送信ができるメリットは圧倒的で、魅力にあふれています。

NITS のこれから

NITS 試験の現況

NITS は複雑で繊細な通信を行うため、重要な局面(セーブ・ロード・マルチプレイの同期など)に耐えるか非常に不安でした。現時点でも 2 種類の試験搭載・運用をおこなって情報収集をしています。

NITS 構造の試験

NITS で採用した (8 + 24) × 車両 というデータ構造が有効であるかの試験を行っています。

https://stormskey.works/notes/9ir3eyvr4l のモニタ右側で二つ光る緑色の点と一つ光るオレンジ色の点が試験内容にあたります。

NITS 単独運用

NS-TPB を採用されている方に依頼して、NITS の実運用試験を行っています。

NITS と他システムの相互運用 計画

世の中には数多くの鉄道総括制御システムが存在していますが、そのうちでも日本のコミュニティや高原がいるコミュニティでデファクトスタンダードとなっているシステムとの相互運用を行っています。

R-BUS 系車両との連結

NITS は R-BUS と完全に無関係なシステムですが、世の中には R-BUS 系車両が大量に存在します。それらの車両との連結がまったく行えないことは損であるので、R-BUS ブレーキ値 1 を NITS 非常ブレーキと読み替えるためのマイコンをオプションとして提供予定です。

NS-TPB からの乗り換え

NS-TPB 向けに作成したマイコンに一切変更を加えないまま NITS を利用できるように、変換マイコンを提供する計画です。前述の NITS 単独運用試験において提供している変換マイコンを改良の上で提供する予定です。

NITS の野望

NITS はシステム構成が非常に複雑で、仕様もまだ完全には確定していないため、現時点ではクローズドのシステムになっています。近いうちに詳細な仕様を開示し、また搭載支援マイコンをリリースしたいと考えています。

ゆくゆくは NS-TPB を完全に置き換え、また競合する旅客サービスプロトコルと競争できれば面白いと思っています。