鉄道模型フォーラム Model Train

信通区

167 / 246 ←次へ | 前へ→

【80】JAMでDCC自動運転を展示
 橋本孔明  2004/08/25 15:26

橋本孔明@結伝杜です。

今回のJAMの結伝杜ブースで、今まで開発したDCC制御関連の集大成として
・全自動ダイヤ運転(仙石線)
・電車でGo!コントローラを使ってトレインスコープを走らせる
という展示を行い、好評を博せたようですので、ご報告しておきます。

---------------------------------------------------------------------------

自動運転はLoconetをPC制御することで行っています。

線路
||
||
||
||====フィーダー========[DCS100]--------[USB]--[PC(Loconetドライバ)]
||
||----[センサ入力]----[センサユニット]--[USB]--[PC(センサドライバ)]
||

今回は御殿場と同じく、試作のUSBのものを利用していますが、MS100でも同等の動
作を行うようデバイスドライバ側で吸収しています。
デバイスドライバはTCP/IPのサーバになっており、クライアントプログラムはここ
と通信することで、Windows上で起動する任意の複数のプログラムがLoconetを弄る
ことができるようになっています。

センサはCdSセルを利用しています。線路に埋め込み、その入力を、PC用ジョイパッ
ド基板のボタンのスイッチ部分に繋ぐことで、「CdSが通電中はジョイパッドのボタ
ンが押されていることにする」という構造にしてみました。こうすることで入力回
路は安いジョイパッドを分解することで得られ、プログラムからもDirectXという安
定動作するシステムを利用することができます。

自動運転システムについては、COMサーバをひとつ作成しました。このCOMサーバは
上記のTCP/IPのクライアントとなっており、メソッドからLoconetの命令を発行でき
ます。コードネームは「SkyBlue(青22号)」です。
このサーバは、Loconetとのやりとりの他、上記のセンサの入力や、ダイヤ運転用の
スケール(任意倍速)タイマ(別途起動してあります)と通信して時刻を入出力す
るメソッドも実装しています。

COMサーバとすることで、VBScriptやJavaScriptからこれらを操作できるようになり
ます。
下記は路面等で使える「3秒ごとにポイントを切り替える」スクリプトの例です。

>>Option Explicit
>>Dim obj
>>Dim nSwitch
>>
>>nSwitch = 33          ' ポイントデコーダID
>>
>>Set obj = CreateObject("SkyBlue.AutoTrain")
>>
>>while true
>>    obj.SetSwitch nSwitch, true ' ポイントを true(closed)に
>>    obj.Sleep 3000        ' 3000ミリ秒待つ
>>    obj.SetSwitch nSwitch, false ' ポイントを false(thrown)に
>>wend
>>
>>Set obj = Nothing

ダイヤを別途作成してもらい、それを元に列車ごとにタイムチャートを作成して、
1列車1スクリプトという構造にしました。

下記は仙石線ダイヤ運転の一部の抜粋です。10時〜18時で一巡します。
「obj.WaitRunStop nSlot, nRunSpeed, nDay, 12, 50, 1」というのは「nDay日の
12時50分になったら発車し、1番センサを踏んだら止まれ」という命令です。
nDayは「何日目」という変数で、一日のダイヤが終了したらインクリメントして10
時に戻ります。

>>obj.AllocateSlot 10, nSlot1, false
...
>>nSlot = nSlot1
...
>>obj.DebugPrint " 10:00  石巻   待機"
>>obj.DebugPrint " 10:10  石巻   待機"
>>obj.DebugPrint " 10:20  石巻   上り発車"
>>obj.SetSlotDirection nSlot, false
>>obj.WaitRunStop nSlot, nRunSpeed, nDay, 10, 20, 6
>>obj.DebugPrint " 10:30  松島海岸 発車"
>>obj.WaitRunStop nSlot, nRunSpeed, nDay, 10, 30, 4
>>obj.DebugPrint " 10:40  多賀城  発車"
>>obj.WaitRunStop nSlot, nRunSpeed, nDay, 10, 40, 2
>>obj.DebugPrint " 10:50  仙台   終着    2"
>>obj.DebugPrint " 11:00  仙台   待機"
>>obj.DebugPrint " 11:10  仙台   下り発車"
>>obj.SetSlotDirection nSlot, true
>>obj.WaitRunStop nSlot, nRunSpeed, nDay, 11, 10, 3
...
>>obj.DebugPrint " 12:50  多賀城  上り発車  ポイント転換"
>>obj.WaitForScaleTime nDay, 12, 50, 0
>>obj.SetSwitch nSwitch, false
>>obj.WaitRunStop nSlot, nRunSpeed, nDay, 12, 50, 1
>>obj.DebugPrint " 13:00  仙台   終着1番線 ポイント復元"
>>obj.SetSwitch nSwitch, true


ダイヤが10分区切りのためこのように10分ごとのタイムチャートベース構造として
います。他の列車の動作に干渉していないため、行き違い駅で「対向列車が来るま
で発車しない」などの動作が行えない難点がまだあります。

---------------------------------------------------------------------------

実際の運用結果ですが、「ランタイムトラブルさえ発生しなければいつまででも安
定動作できる」という結果を得ました。
ここでのランタイムトラブルは

・集電不良で走らなくなる(メンテを入念にしてこれは激減しました)
・観客、特に子供が車両や線路を触ってしまう
・観客がポイントを勝手に転換してしまい誤動作する、あるいはポイントデコーダ
 動作不良でポイントが転換してくれなかったりする
・観客がセンサを覗き込むことでセンサが誤検知する(発生しませんでした)
・DCS100のパケロスで列車暴走など(過負荷時に何度か発生)
・当方作成プログラムのバグ(確証がありませんがどうやらあった模様)
・Loconet-USBインターフェースの不具合(まだ開発中なので‥‥)

といったものです。できるだけプログラム側でトラブルを吸収できるようにはして
いますが、ポイント転換ミスなどハードウェアトラブルはどうしようもありません
ので、この場合はタイマを停止し、列車を初期配置に戻して再開するなどしました。
結論としては3日間あまり弄ることなく動作し、鑑賞に堪え得る結果を見せてくれた
と判断します。

---------------------------------------------------------------------------

列車が走るだけでは観客も何がなんだかわかりませんので、駅の電光掲示を各駅の
前に設置した液晶モニタに表示するシステムも開発しています。
こちらだけは昨年のJAMで手動ダイヤ運転用に作ったものをベースにほとんど流用し
ており、自動運転システムとはスケールタイマの時刻を共有している以外は独立し
て動作します。
内容的には、XMLファイルに記述された各駅の時刻・列車種別情報を元に、デザイン
テンプレートのHTMLファイルの中の変数を置き換えて表示更新するというものにし
ました。このデータはLANで共有されたフォルダの中にHTMLファイルで出力します。
すなわちビューアにはInternetExplorerを利用する形ですが、単なるIEのウィンド
ウでは不格好ですので、ActiveXコントロールとして自前のプログラムに埋め込んだ
独自のブラウザを作成して利用しています。表示更新はこのブラウザがIEに2秒おき
に更新命令を発行する形で、各駅のPCはLANで接続されていますので、上記の共有フ
ォルダのデータが更新されれば表示も更新される仕組みです。
もうちょっと発展すればhttpサーバとして実装もできるかと思います。

---------------------------------------------------------------------------

今回のもうひとつの展示が「トレインスコープ+電車でGo!コントローラ」です。
トレインスコープ自体は御殿場でも試用していましたのでご覧になった方もおられ
るかと思いますが、画質は満足のいくものです。
さすがに価格が安くなったためJAMの他のサークルでも導入してきたようで、今回も
1件だけ他サークルとの信号混信が発生しました。
トレインスコープを液晶テレビに映し、手前にあるノートPCにMS-100と電車でGo!コ
ントローラを接続して上記の自動運転と同様にLoconetのPC制御を行いました。
コントローラは「電車でGo!コントローラ TYPE2」という PlayStation2専用のもの
です。こちらはPCに繋いでも汎用のゲームコントローラとは認識してくれませんで
したので、自分でデバイスドライバから自作しました。といってもそこまで詳しく
ないため、USB解説書に付録で付いていた汎用のものを小加工した程度です。
以前販売されていた、Windows用の電車でGo!コントローラなら、汎用のゲームパッ
ドとして認識されますので、DirectXで入力を得ることができます。
いずれにしても、入力を得たらそれをもとに実車のような加速・減速動作をエミュ
レーションするプログラムを作成し、車載デコーダへのスピード設定命令として
Loconetに送ります。以上でカメラカーのコントローラ操作が可能になります。

---------------------------------------------------------------------------

というわけで、今回は結伝杜が今まで開発してきたDCC関連の技術をフル動員する形
の展示となりました。一応の成果を得ましたので成功だったと思います。

システム設計にあたっては、ソフトウェアは私の担当ですが、センサやジョイパッ
ド改造などハードウェア設計(山口氏)やダイヤ作成(こしょう氏)など分業する
形となりました。とても一人で全部設計できるものではありません。
写真はあまりありませんが、当方のウェブサイトの8月23日の日記に掲載しましたの
で、よろしければご笑覧下さい。

---------------------------------------------------------------------------

橋本孔明 / Yoshiaki "Koumei" Hashimoto
http://train.khsoft.gr.jp/

<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR...@naan3.webtech.co.jp>

【80】JAMでDCC自動運転を展示 橋本孔明 2004/08/25 15:26
【81】RE: JAMでDCC自動運転を展示 真水博之 2004/08/26 09:26
【82】Re:RE: JAMでDCC自動運転を展示 橋本孔明 2004/08/26 14:36
【83】Re2:RE: JAMでDCC自動運転を展示 真水博之 2004/08/27 23:00
【85】Re:Re2:RE: JAMでDCC自動運転を展示 橋本孔明 2004/08/28 02:26

167 / 246 ←次へ | 前へ→
アクセス数:76,722 (SS)C-BOARD v3.5.4 is Free.