あそびっと

back index next

2016年1月25日
[DCC]

DesktopStationで自動運転

Desktop Station社の「DS-main R5」というハードウェアと、「Desktop Station」という無料のWindowsソフトを使って、DCC車輌の自動運転をしてみる.
前回 2015年12月30日の記事より簡単にできる.

(1)
DS021

「Desktop Station」アプリは http://desktopstation.net/download_jp.html#DS からダウンロードする.
利用したバージョンはV0.94e.
基本的な設定は、 2015年9月20日 の記事を参照.
上図は起動画面(=運転画面=キャブ)だが、画面左上に並んだメニューの「ハンマー」アイコンで、下図の「オプション」画面に切り替えて設定を変更する.

(2)
DS041

センサーを利用する場合は「S88設定」をセットする.
DCCのポイント制御を利用する場合は「DCC設定」をセットする.

(3)
DS042

運転画面右上の機関車アイコンで上図の「車両の編集」画面が出る.
ここでロコのデータを登録する.
「速度調整設定」はロコごとに適切な値を選ぶ.
これらの画面で「MM2」とか「Mfx」とかはメルクリンの規格で、DCCとは関係がないので無視する.

(4)
DS043

上図は運転画面の左上メニューにある、複数ロコの制御画面.
ここで8種類のロコを選択して、それぞれ同時に速度の制御できる.
さらに、この画面はそれぞれ左上から下へSlotA,SlotB・・という名前が付いて、このSlot名を次のEV(イベント)設定で利用する.

(5)
DS50

ロコの自動運転を設定するのが、運転画面の左上メニューのEV画面で、上図左枠のAからVまで22種類のイベントを作成できる.
例えば、ランダムに汽笛を鳴らす、停止中はベルを鳴らす、センサーを感知したら停止する、といったイベントを別々に作成して同時に動作させる、ということになる.
イベントの動作は次の「開始トリガ」をきっかけに設定する.
「進入」センサーが車輌を検知した(ONになった)
「退出」センサーの検知がOFFになった
「在線」センサーが検知中
「非在線」センサーが検知していない
※これらはセンサーに関するトリガなので、S88インターフェースが必要になる.
LDT社のS88インターフェースである「RM-GB-8-N」については 2015年12月30日 の記事を参照.
「定周期」設定した一定周期の時間になった
「時刻」設定した(PCの)時刻になった
「ランダム」指定した範囲内のランダムの時間になった
「走行中」車両が走行中
「停止中」車両が停止中

・「開始トリガ」の「プロパティ」で、センサーアドレスといったそれぞれに必要な設定をする.
・RM-GB-8-Nのようなギャップセンサーで、ロコが検知区間内で停止するなら、「進入」と「退出」は別の検知になる.
・フォトリフレクタのようなセンサーの場合、通過して停止するのでOFF->ON->OFFという検知になり、「進入」でも「退出」でも動作することになる.

(6)
DS51

「開始トリガ」を設定後「スクリプト」に命令(=コマンド)をセットする.
マウス右ボタンで「追加」を選ぶと、次のコマンド・サブメニューが出る.
「SPEED」機関車の速度変更(0で停止)
「DIRECTION」進行方向変更
「FUNCTION」機関車のファンクション操作
「ACCESSORY」ポイントの操作
「WAIT」一定時間待つ(0.1sec単位、10で1秒)
「EXIT」スクリプトを終了してトリガ待ちに戻る
※ここまでがよく使うコマンド
「POWER」線路に電源投入
「GOTO」LABEL関数で設定したラベルに飛ぶ
「JUMP」フラグの値が指定値と一致したら指定ラベルにジャンプする
「JUMPS88」S88センサの状態に応じて指定ラベルにジャンプする
「SETFLAG」フラグに値をセットする
「LABEL」ラベルを付ける
「INCFLAG」フラグの値を増やしたり減らしたりする
「RUNFILE」他のアプリを起動する

・「EXIT」がなければ、最後のコマンド行以降で強制終了する.
・「JUMP」のフラグは外部変数なので、イベント間でデータのやりとりができる.
・イベント実行中の同一トリガ検知は無視される.
・同一の「開始トリガ」で、複数のイベントを書くことができる.

(7)
DS063

コマンドの追加や編集の際は、必要に応じてサブ画面が出る.
SPEEDコマンドの場合、速度と遷移時間を指定するが、速度の最大値は1024で、これはロコの「速度調整設定」データで設定した最大値に連動している.
つまりロコごとにあらかじめ最大速度が決められるということ.

(8)
DS062

これはランダムに汽笛を鳴らすイベントの例.
SlotAにセットされた「車両アドレス」に対して、F2ファンクションをONし、1.0秒待って、F2をOFFする.
これが「プロパティ」で指定した頻度(約1分)で発生する.
「イベントを実行可にする」にチェックを入れると動作を開始するが、このイベントにはロコの走行コマンドがないので、ロコを走らせる場合は、運転画面に戻って手動で操作する.
その際、運転画面上のF2アイコンは、マウスのクリックにもイベントの発効にも反応する.

(9)
DS024

これはセンサーで検知した地点で、スピード0まで6秒で減速し、5.0秒待ってから、最大速度まで8秒で加速するイベント.
例えば前項「ランダム汽笛」とこの「センサー停止/発進」の2つのイベントを実行した時、ロコアドレスを変更するには、(4)項の画面でSlotAのロコを入れ替えればよい.
これが「車両アドレス」を直接選択せず、Slotを利用する利点である.
このイベントも、停止状態のロコは動かないままなので、運転画面でロコをスタートさせれば、あとは停止/発進を繰り返す.
ただし、運転画面の手動制御とイベントの制御は同等に働くので、運転画面の加速したスライダーを中位に戻しておかないと、停止後即発進という状態になる.

(10)
DS025

これは「センサー停止/発進」をさらに高度化したもので、減速中にベルを鳴らし、停止後ライトを消し、その後、ライト点灯、汽笛一声、加速する.
工夫次第でかなりリアルな動きを再現できる.

(11)
DS028

これは、イベントの「実行状態」を表示する画面.
条件判断のフラグの値も表示される.
イベント編集で選択したものだけでなく、すべてのイベントの動作状態がわかる.

自動運転をさせる手順としては、
EV画面で
・A〜Vのどれかに任意のイベント名を付け
・「開始トリガ」を設定
・「スクリプト」に命令をセットする
・「車両アドレス」をセットする
・「イベントを実行可にする」にチェックを入れる
運転画面で
・ロコをスタートさせる

センサーがなくて「定周期」「時刻」「ランダム」「走行中」「停止中」のトリガだけでも、それなりの動きができる.
イベントで動かしているロコと並行して、運転画面で別のロコを手動操作するのも面白い.
センサー検知イベントでロコが停止している最中に、別のトリガ(例えばランダム汽笛)が発効すれば、複数のイベントが同時に動作する.
Desktop Stationソフトはよくできている.
Arduinoのスケッチでこういう多重処理プログラムを書くのは、私には至難の技である.
このアプリは、急速にバージョンアップを繰り返しており、WiFi無線を通してiPhoneのような端末からコントロールする機能が加わった.
それは次回に紹介する.


back home next