magicant / bve-autopilot

Bve trainsim 用自動運転車両プラグイン
GNU Lesser General Public License v2.1
21 stars 6 forks source link

ORP が動作すべきでないときに動作する #66

Closed magicant closed 4 years ago

magicant commented 4 years ago

今は 12 番地上子を通過したときに必ず ORP を起動しているので、信号が ORP を現示していなくても ORP の動作が開始してしまう。

さて、次の場合の動作は?

magicant commented 4 years ago

ちなみに、メトロ総合プラグインで信号インデックスが 35 になったのに 12 番地上子が置かれていない場合、パターンの針が直前の信号の速度よりわずかに高い速度を指したまま下がらない模様。

また、直前の閉塞の信号インデックスに関係なく、12 番地上子の Optional で指定された距離(とそれに対応する初速度)でパターンが決まる。

magicant commented 4 years ago

メトロ総合プラグインの動作としては、12 番地上子通過時点で現在閉塞の信号インデックスが 35 であれば ORP 動作開始し、35 でなければ 12 番地上子を無視する。12 番地上子にどの閉塞を対応させてあるかは関係ない。 したがって、bve-autopilot の動作としても、「12 番地上子を通過したが信号が ORP を現示していない場合」は 12 番地上子を無視すればよい。

magicant commented 4 years ago

「31, 1012 番地上子で ORP 現示の前方予告を受けた後、対象の閉塞の現示が ORP 以外に変わった場合」で、もう一度前方予告を通過して新しい現示を受信できた場合はすぐさま減速パターンを消去したいところだが、それをするには二つの地上子が同じ閉塞を指していたかどうかを判定するために閉塞の位置を覚えておかなくてはいけない。となると通常の前方予告の処理と同様に閉塞型に受信データを保管する設計が良そうである。

メトロ総合プラグインの動作仕様上、ORP が動作すべき時は必ず現在閉塞の現示が 35 になってから 12 番地上子が来ることを前提とすることができる。この前提から以下の定理が得られる。

これを踏まえて、

という動作にすると良い。上記の動作仕様から、以下の定理が導かれる。


現示が 35 になったのに 12 番地上子が見当たらない場合、メトロ総合プラグイン本体では照査パターンが下がらないが、bve-autopilot では以下の動作になる。どのみちこのようなケースは路線側の設定ミスだろうから細かい動作は気にしないことにする。