「ゆゆぽん☆退避/追越列車とか作っちゃうかMona-(17)−特殊開放センサーで全体の流れを制御する(後編)」
VRMスクリプト禅問答
<<前回へ
前回、待避線に退避列車が入りきった時点で、後続(追越)列車のために閉塞を開放するところまで解説しました。今回は、追越列車の通過を待って退避列車を出発させる方法を解説します。
今、本線(追越線)/待避線の両方に列車がいます。信号灯火はそれぞれ緑/赤ですから、追越列車が先に出発します。待避線の出発信号(図中の[出])を緑にするためには・・・
・追越列車が既に出発したこと。
・追越列車が駅から十分に離れたこと。
を知る必要があります。どうすればこれを知ることができるでしょうか。
出発した追越列車は、遅かれ早かれ[閉B]を踏むはずです。つまり、この時点で[閉B]の信号が赤になります。逆に、[閉B]の信号は、追越列車が出発するまでは緑であるはずです。
つまり“追越列車が既に出発した”というのは、[閉B]が赤になるのとイコールです。ということは、これは閉塞信号でやったのと同様に、条件成立待ちメソッドの出番です。[閉B]信号の灯火色(VarSignalColor)を調べ、赤(1)でなければ自分自身を少し待って再実行するメソッドを作ればいいんですね。
このメソッドの実行開始、つまり、待避線信号を緑にしてよいかどうかの条件待ちの開始と等しいワケですが、これは・・・
・待避線に列車が入っている。
・追越列車の通過の可能性が生じた。
の時点です。これは前回、本線上の[閉@]信号の閉塞を強制開放したのとタイミング的に同じです。よって、前回の閉塞開放メソッドの続きで、このメソッドをcallすれば良いことになります。
続いて“追越列車が駅から十分に離れた”はどうすればわかるでしょう。もう簡単ですね。今度は[閉B]信号が緑になるまで待てば良いワケです。基本的な考え方は閉塞信号と同じですね。
この時点で[出]を緑にします。
前々回組み込んだ“出発信号とポイントを連動させる”仕組みがありますから、[出]を緑にすれば[出ポ]は反位に切り替わります。
加えて、後ろからさらに他の列車が突っ込んでくることに備えて、本線の信号は閉塞すべきです。これは、[閉A]センサーの閉塞メソッドをcallするだけで実現できます。本来は編成を検知して実行されるメソッドを、この時点でcallするワケです。これで[閉A]信号は赤になります。
ただし、このやり方だと[閉@]信号は緑のままなので、後続列車は最高速の状態で[閉A]信号に突っ込んでくる可能性があります。信号換呼の際の減速のやり方にもよりますが、停車しきれずに突っ込んでくるかも知れません。これを避けるには、できれば上図のように[閉@]を黄にして、赤の[閉A]信号に接近してくる列車を事前に減速させておきたいところです。
これも既に閉塞の仕組みが完成しているのでやり方は簡単で・・・
・最初に[閉@]センサーの閉塞メソッドをcallする。
・少し待って[閉A]センサーの閉塞メソッドをcallする。
これだけです。要するにこれは、列車が[閉@]→[閉A]の順にセンサーを通過する状態を、call命令で代替したものです。まず[閉@]信号が赤になり、続いて[閉A]信号が赤になると、これを受けて[閉@]信号が黄になります(上図の状態)。
あとは、放っておけば退避列車が[閉B]を通過した時点で[閉A]「閉@]は閉塞のルールに従って勝手に緑へ向かって遷移します。これが先に“すべての部品は出揃っている”と述べた理由です。閉塞の仕組みは、このように、単に信号の色を変化させるのみならず、列車走行位置の把握と、それに連動しての複雑な信号切替にそのまま利用することが出来る、というワケです。
加えて、退避列車が出発した後は[出]信号は赤に戻った方がリアルですから、[出]センサーからは[出]信号を赤にするメソッドをcallしておきましょう。この信号が次に緑になるのは、ここまで述べた流れ以外ありませんから、[出]信号には閉塞の仕組みは必要ありません。