DSbasic 入門してみる(8)オーバル+待避線【自動運転】
ようやく動いた〜、ということでブログにまとめておきます。
なお本自動運転では、デジタル鉄道模型フォーラムのKAKKAさん投稿を大いに参考とさせて頂きました。ありがとうございます。
やりたかったこと
ポイントを開閉する操作だけで、複数の車両が衝突せずに自動的に運転され続けること。お酒飲みながらそれを見ていられること(重要)。
成果
今回は「5区間・2車両・2ポイント」での自動運転です。動画はこちら。
レイアウトパターン
以下のオーバル+待避線なレイアウトを組みました。
これまで通り、コマンドステーションはDSair2、在線検知センサはNuckyさんの S88-N Train Detector を利用しています。
レールはKATO ユニトラックなので、ギャップはKATO純正の絶縁ジョイナーで手軽に設置できます。
上図内記載の通り、ポイントデコーダの電力をレールから給電していると、在線センサが常時反応してしまいます。そのため、ポイントを含んでいる区間③と⑦は処理対象から除外しました。
ちなみに使っているポイントデコーダは、KATOホビセンやつです。取り付けも楽で便利。
基本ロジック
DSbasicで書いているのは、主に以下のロジックです。なお以下を前提にしていたります。
ポイント状態による判断ロジック
進行方向のポイントが通過できる状態なのか判断します。(if文で判断)
上図の場合、区間②にいる車両Aは出発できませんが、区間①にいる車両Bは出発できます。
前方の区間状態による判断ロジック(前方2つが空いている場合)
区間①にいる車両Bからみると、前方区間である④と⑤が空いているため、通常速度で発進します。(前方ポイントが開いていることも前提)
前方の区間状態による判断ロジック(前方1つが空いている場合)
区間①にいる車両Bからみると、前方区間の④は空いているが、⑤は空いていない(他車両が在線している)状態です。つまり前方区間の一つしか空いていないので、ゆっくりと徐行で発進します。
図の作成を忘れちゃいましたが、前方区間が空いていない場合は、車両が停止します。(区間①の車両Bからみると区間④が空いていない状態)
DSbasicのコード
作成したコード(BASファイル)はここに置いておきます。
次にやりたいこと
今回は単純なオーバルと島式待避線のため、時計回りのみで問題ありませんでした。もうちょっと車両には他の動きもしてもらったほうが楽しいはずなので、以下をやりたい!
- 待避線を使った、各停と急行の動き
- ヤードへ戻る動き
おわり