route起動のトリガーとその条件設定、だいぶわかってきたのでチャレンジした。
条件により動作を変える。
今まで:列車検知が On したら routeを起動する
今回 :列車検知が On かつ 条件を満たしたら routeを起動する
言い換えれば、条件を満たさなかったら routeは起動しない
*駅進入シミュレーション
「駅構内の状況により進入路を変えたり列車を停止させる。」
本線と待避線とがある駅その駅に列車が来た。本線が空いていれば、本線を通過させる。もし、本線に列車が停車していたら、待避線に入るように分岐器を切り替える。もし、本線と待避線の両方に列車が停止していたら、列車を止める。
これをメルクリンCS2 でやってみる
信号機利用でスマートにできるのだが、持っていないので memoryのみで実現する。
<現場写真>
分岐器:20番
*やらせる事
列車が駅に来たら、以下の動作をさせる。
a.本線が空き かつ 待避線が空き ならば 本線に進入させる
b.本線が空き かつ 待避線が埋まり ならば 本線に進入させる
c.本線が埋まり かつ 待避線が空き ならば 待避線に進入させる
d.本線が埋まり かつ 待避線が埋まり ならば 停止させる
*プログラムフロー
・単純な条件文を実行する。
・複数条件がある場合も、全部実行する。(if then elseはない)
初期値:20番の分岐器は直進状態とする
012型機関車が走ってくる
↓
16番列車検知SWを倒し(Off→On)と変化したら以下の判断を行う
AB両方とも行う。
↓
A:(6番=On) AND (7番=On) THEN 012機関車を停止
B:(6番=On) AND (7番=Off) THEN 20番分岐器を右に変更→ 機関車は待避線に進入
↓
上記の条件が満たされない場合は何もしない
→ 20番分岐器は直進のまま → 機関車は本線に進入
*自動運転プログラム作成
1. 動作部分のrouteを作る
route [S.20:STP] :012蒸気機関車列車を停止させるroute
route [S.20:R]:20番分岐器を直線から右に動かすroute
<2つのroute>
<S.20:STPの内容>
<S.20:Rの内容>
itemが20でPositionが0ということは、20番の分岐器を右にということ。
2. 2つのrouteそれぞれ、起動のトリガーと条件を設定する
<S.20:STPのトリガーと条件の設定、詳細設定画面を開く>
画面下段に名前とコンタクト(列車検知番号)とトリガーの設定がある。簡単な場合は、ここだけで設定できる。条件をつける場合は、その横の[EXT.]詳細設定画面を開いて設定する必要がある。
・Auslöser(トリガー)
利用する列車検知は、16番列車検知。判断する変化は、検知が Off→On への変化。(機関車が進入アイコンは Off → On、機関車が退出アイコンは On→Off の意味。)
利用する機器は、ID:131のLinkS88を使用。(デフォルトはCS2本体になっているのでLinkS88フィードバックモジュール利用している方は変更するのを忘れない事)以上の設定で、16番列車検知が、Off→Onとなると、トリガー引く → route S.20:STPを起動 となるただし、条件が設定されている場合は、条件が満たされている場合にトリガーを引く。
・Condition(条件)
条件が満たされた場合に、トリガーが有効条件が満たされてなければ、トリガーは無効1行1条件になっているてそれぞれの行(条件)は and である。この画面での条件は、1行目:6番列車検知が On状態、使用機器はID:131のLinkS882行目:7番列車検知が On状態、使用機器はID:131のLinkS88(機関車アイコンはOn、線路アイコンはOff の意味。)つまり、6番=On and 7番=On then トリガー有効→ route[S.20:STP]を起動。6番=On and 7番=Off then トリガー無効 → route[S.20:STP]を起動しない。6番=Off and 7番=On then トリガー無効 → route[S.20:STP]を起動しない。6番=Off and 7番=Off then トリガー無効 → route[S.20:STP]を起動しない。
<S.20:Rのトリガーと条件の設定、詳細設定画面を開く>
・Auslöser(トリガー)
利用する列車検知は、16番列車検知。判断する変化は、検知が Off→On への変化。(機関車が進入アイコンは Off → On、機関車が退出アイコンは On→Off の意味。)
利用する機器は、ID:131のLinkS88を使用。(デフォルトはCS2本体になっているのでLinkS88フィードバックモジュール利用している方は変更するのを忘れない事)以上の設定で、16番列車検知が、Off→Onとなると、トリガー引く → route S.20:Rを起動 となるただし、条件が設定されている場合は、条件が満たされている場合にトリガーを引く。
・Condition(条件)
条件が満たされた場合に、トリガーが有効条件が満たされてなければ、トリガーは無効1行1条件になっているてそれぞれの行(条件)は and である。この画面での条件は、1行目:7番列車検知が Off状態、使用機器はID:131のLinkS882行目:6番列車検知が On状態、使用機器はID:131のLinkS88(機関車アイコンはOn、線路アイコンはOff の意味。)つまり、7番=Off and 6番=On then トリガー有効→ route[S.20:R]を起動。7番=Off and 6番=Off then トリガー無効 → route[S.20:R]を起動しない。7番=On and 6番=Off then トリガー無効 → route[S.20:R]を起動しない。7番=On and 6番=On then トリガー無効 → route[S.20:R]を起動しない。
<route起動方法の選択>
route[S.20:STP]とroute[S.20:R]は列車検知により起動する設定はできたが、これだけでは起動しない。デフォルトでは操作モードが手動モードなので、手動と自動の混合モードにする必要がある。
- 手動モード:routeのボタンをタッチするとそのrouteが起動する
- 混合モード:ボタンタッチでの起動+設定した起動条件での自動起動
なを、混合モードに切り替えるのは本当に自動プログラムを動かす直前にして、自動運転が終わったら手動モードに戻した方が良い。混合モードだと、思わぬ時に機関車が勝手に動き出して事故の元である。
route[S.20:STP]とroute[S.20:R]が出来上がってるのがわかる。
両者の右端に、操作モード切替ボタンがある。
手動[手アイコン]から手動+自動[手と機関車のアイコン]に変更する。
モード切り替えは、routeごとの切替設定ではなく、その横列8つのrouteをまとめて行う。
これで完成!
012機関車を16番列車検知にむけて走らせる。
本線と待避線に列車を置いたりなくしたりしてちゃんと思い通りに動くか確かめる。
よかった、ちゃんと動いてます。
0 件のコメント:
コメントを投稿