「 ゆゆぽん☆退避/追越列車とか作っちゃうかMona-(9)−編成が閉塞区間を通過したことを判別する(後編)」
VRMスクリプト禅問答
<<前回へ
前回までで、以下のことが実現されました。
・編成が信号を通過すると同時に、信号を赤にする。
・もう1つ先の信号が赤ではない状態になるまで待つ。
今回はその続きです。
次にやることは“もう1つ先の信号が赤になるまで待つ”です。「え、それは前回やったじゃん?」と早とちりしないように。前回やったのは“もう1つ先の信号が
赤ではない状態になるまで待つ”ですから。
「え、赤ではない状態になるまで待ったのに、今度は赤になるのを待つ?」
混乱するのはごもっともなので、絵で説明しましょう。前回の最後にも述べましたが“もう1つ先の信号が赤ではない状態になるまで待つ”というのは、実は“もう1つ先の閉塞区間に先行する列車がいないことを確認する”と同じ意味を持っています。
上図のαで示した信号(一番右)に注目してください。この信号が受け持っている閉塞区間を薄い緑色で示しています。今、黄色の編成が信号αを通過した(センサーを踏んだ)ので信号αは赤です。つまり、薄い緑色の閉塞区間には黄色い編成がいるので“閉塞している”ということです。
このとき、1つ先の信号βに注目すると、[A]〜[D]のいずれかの状態([C]と[D]の意味合いはほとんど同じですが)であるはずです。信号βの受け持つ水色の閉塞区間に先行する青い編成がいれば、これは水色の区間が閉塞しているということですから、信号βは赤であるはずです。逆に、信号βが赤でない状態(条件待ちメソッドで待った状態)というのは[B]〜[D]のいずれか、つまり水色の区間に編成はいないことを意味しています。ここまではいいですか?
ここで、さらに信号βが赤になるのを待つというのは、下図の状態になるということです。
先行列車がいないことは確認済みなのですから、次に信号βを赤にする可能性のある編成は、信号αを赤にした黄色い編成自身以外はあり得ません。つまり、黄色い編成=薄い緑色の区間を閉塞させていた編成が、この閉塞区間を出ていったということです。
※厳密に言うと、ここで判明するのは“黄色い編成が閉塞区間を出始めた”です。完璧な区間閉塞を実現するには、さらに黄色い編成の末尾台車が信号βを通過したことを確認すべきですが、話が複雑化するので無視します。挑戦したい人はやってみてください。
薄い緑の区間から編成が出ていったのですから、信号αにはこの区間を閉塞する理由がなくなりました。つまり、もう信号は赤でなくていい、ということです。なので・・・
この時点で、信号αを黄色に切り換えます。やっと信号が遷移しました。後は、同様に信号βが黄色になるのを待って信号αを緑にしてやれば、一連の動作は完了です。
「えー、でも信号βはどうやって黄色になるの?」
なんてコトを聞かないように。信号βにも信号αと同じスクリプトが書いてあればいいだけの話です。ただし、信号βはもう1つ先の信号γの状態を監視するワケです。
黄色い編成が左へ向かって走り続ければ、遅かれ早かれ信号γのセンサーを踏みます。もちろん、信号γにも同じスクリプトが書かれているので赤になります。すると、信号βが、信号αがβの状態に合わせて動作したのと同じ理屈で黄色になります。これが上図の状態。
この時点で信号αを緑にすれば万事OK。これで課題(3)-3“編成が閉塞区間を通過したことを判別する”が達成できたことになります。次回、この一連の流れをスクリプト化するために、改めてフローチャートにまとめます。