DCCでプラレールアドバンスのマネ自動運転(3列車) [自動運転]
今週はKiCADを始める予定だったのですが、プラレールアドバンスを見たため、予定変更です。(KiCADはインストールして、雑誌の記事だけだとよくわからないので、本屋さんに行って、なごでんの日記様が使用した本を立ち読みして、バージョンが違うから(雑誌の付録はVer4.0)買わずに帰ってきて、その後、雑誌の付録DVDに説明動画が付いていることを発見して・・・ぐらいまでやって本日は終了でした。つまり進んでません)
ということで、プラレールアドバンスの連続発車ステーションのマネです。基本的なところは、S88のセンサを踏んだら、自分の前方にいる電車が強制的に出発するという、現実の閉塞区間と真逆の発想の恐怖の運転方式です。最初そんなことには気づかずに、一生懸命スクリプトを組んでいて、途中で気づいて、やる気をなくしつつ、まあ、単線の周回コースに電車をいくつも並べて自動運転は初めてなので楽しみました。
ただし、プラレールアドバンスの連続発車ステーションはホームの後ろの電車が突っ込んできた瞬間にホームにいる前の列車がロケットスタートしますが、さすがにそれをNゲージでやると、追突しまくって、すぐに運転席周りが悲しいことになりそうですので、閉塞区間を一つだけ設けて置きました。
少し前にスッペさまのBlogの動画を見て、単線に二列車走っている!と思ったのもやりたいなあと思った動機だったりします。
で、レイアウトというかセンサ配置です。
写真です。
動画です。
スクリプトの説明ですが、(と言いながら、相当読みにくいかと思います。)
まず、電車は
DCC:9(49161) 横須賀線(初期位置センサの5-1間)
DCC:8(49160) 東海道線(初期位置センサの2-3間)
DCC:21(49173) 京急(初期位置センサの4-5間)
です。
電車の方向は反時計回りです。
横須賀線から動かします。
まず、初期値を入れるために下記のスクリプトが電源投入と同時に実行されます。
setup(開始条件 Flag0==0)
-------------
DESKTOPSTATION,SCRIPT,2013
LABEL,setup,,0
SETFLAG,0,1,0
SETFLAG,1,1,0
SETFLAG,2,1,0
SETFLAG,3,3,0
SETFLAG,4,3,0
SETFLAG,5,2,0
EXIT,,,0
-------------
初め、開始トリガを「電源投入時」を選んでやってみたのですが、動かなかったので、
上記スクリプトにしております(Ver 095d3)。Flag0は電源投入時に0なので、トリガとなって、
Flag1~Flag5に値を設定します。一回だけ実行してほしいのでFlag0に1を代入して、
もうイベントが起きないようにしています。
Flag1~5は各S88センサのどの列車が通るかの状態フラグです。
で、S88の各センサのスクリプトですが、例としてS88センサ1のスクリプトです。
S88_1(開始条件 センサアドレス1 進入)
-------------
DESKTOPSTATION,SCRIPT,2013
LABEL,train?,,0
JUMP,pattern_a,1,1
JUMP,pattern_b,1,2
JUMP,pattern_c,1,3
EXIT,,,0
LABEL,pattern_a,,0
SPEED,49160,512,1
WAIT,5,,0
SETFLAG,1,2,0
SPEED,49161,0,1
EXIT,,,0
LABEL,pattern_b,,0
SPEED,49161,512,1
WAIT,5,,0
SETFLAG,1,3,0
SPEED,49173,0,1
EXIT,,,0
LABEL,pattern_c,,0
SPEED,49173,512,1
WAIT,5,,0
SETFLAG,1,1,0
SPEED,49160,0,1
EXIT,,,0
-------------
センサ1を踏んだら、Flag1(1~3)によって、動作が変わります。
pattern_a:Flag1=1の時は、横須賀線(DCC9)がセンサを踏んだ時で自列車の前にある東海道線(DCC8)を出発させて、横須賀線(DCC9)を止めます。Flag1を2にします。
pattern_b:Flag1=2の時は、京急(DCC21)がセンサを踏んだ時で自列車の前にある横須賀線(DCC9)を出発させて、京急(DCC21)を止めます。Flag1を3にします。
pattern_c:Flag1=3の時は、東海道線(DCC8)がセンサを踏んだ時で自列車の前にある京急(DCC21)を出発させて、東海道線(DCC8)を止めます。Flag1を1にします。
で、センサ2~5は、上記スクリプトのFlag1をそれぞれFlag2~Flag5に入れ替えただけのものになります。(電車番号などは全く同じ)
多分、センサを踏んだ時、(一個後ろの閉塞区間が空くはずなので)後続の列車を発車させるように変えてやれば、実際の閉塞区間っぽい運転に見えるのかなあと思います。また停止でなくトロトロ運転に変えてやれば、3列車のぶつからないノロノロ運転スクリプトになるかなあと思います。
スクリプトの少しの入れ替えなので、そのうちやってみようかなあと思います。
ということで、プラレールアドバンスの連続発車ステーションのマネです。基本的なところは、S88のセンサを踏んだら、自分の前方にいる電車が強制的に出発するという、現実の閉塞区間と真逆の発想の恐怖の運転方式です。最初そんなことには気づかずに、一生懸命スクリプトを組んでいて、途中で気づいて、やる気をなくしつつ、まあ、単線の周回コースに電車をいくつも並べて自動運転は初めてなので楽しみました。
ただし、プラレールアドバンスの連続発車ステーションはホームの後ろの電車が突っ込んできた瞬間にホームにいる前の列車がロケットスタートしますが、さすがにそれをNゲージでやると、追突しまくって、すぐに運転席周りが悲しいことになりそうですので、閉塞区間を一つだけ設けて置きました。
少し前にスッペさまのBlogの動画を見て、単線に二列車走っている!と思ったのもやりたいなあと思った動機だったりします。
で、レイアウトというかセンサ配置です。
写真です。
動画です。
スクリプトの説明ですが、(と言いながら、相当読みにくいかと思います。)
まず、電車は
DCC:9(49161) 横須賀線(初期位置センサの5-1間)
DCC:8(49160) 東海道線(初期位置センサの2-3間)
DCC:21(49173) 京急(初期位置センサの4-5間)
です。
電車の方向は反時計回りです。
横須賀線から動かします。
まず、初期値を入れるために下記のスクリプトが電源投入と同時に実行されます。
setup(開始条件 Flag0==0)
-------------
DESKTOPSTATION,SCRIPT,2013
LABEL,setup,,0
SETFLAG,0,1,0
SETFLAG,1,1,0
SETFLAG,2,1,0
SETFLAG,3,3,0
SETFLAG,4,3,0
SETFLAG,5,2,0
EXIT,,,0
-------------
初め、開始トリガを「電源投入時」を選んでやってみたのですが、動かなかったので、
上記スクリプトにしております(Ver 095d3)。Flag0は電源投入時に0なので、トリガとなって、
Flag1~Flag5に値を設定します。一回だけ実行してほしいのでFlag0に1を代入して、
もうイベントが起きないようにしています。
Flag1~5は各S88センサのどの列車が通るかの状態フラグです。
で、S88の各センサのスクリプトですが、例としてS88センサ1のスクリプトです。
S88_1(開始条件 センサアドレス1 進入)
-------------
DESKTOPSTATION,SCRIPT,2013
LABEL,train?,,0
JUMP,pattern_a,1,1
JUMP,pattern_b,1,2
JUMP,pattern_c,1,3
EXIT,,,0
LABEL,pattern_a,,0
SPEED,49160,512,1
WAIT,5,,0
SETFLAG,1,2,0
SPEED,49161,0,1
EXIT,,,0
LABEL,pattern_b,,0
SPEED,49161,512,1
WAIT,5,,0
SETFLAG,1,3,0
SPEED,49173,0,1
EXIT,,,0
LABEL,pattern_c,,0
SPEED,49173,512,1
WAIT,5,,0
SETFLAG,1,1,0
SPEED,49160,0,1
EXIT,,,0
-------------
センサ1を踏んだら、Flag1(1~3)によって、動作が変わります。
pattern_a:Flag1=1の時は、横須賀線(DCC9)がセンサを踏んだ時で自列車の前にある東海道線(DCC8)を出発させて、横須賀線(DCC9)を止めます。Flag1を2にします。
pattern_b:Flag1=2の時は、京急(DCC21)がセンサを踏んだ時で自列車の前にある横須賀線(DCC9)を出発させて、京急(DCC21)を止めます。Flag1を3にします。
pattern_c:Flag1=3の時は、東海道線(DCC8)がセンサを踏んだ時で自列車の前にある京急(DCC21)を出発させて、東海道線(DCC8)を止めます。Flag1を1にします。
で、センサ2~5は、上記スクリプトのFlag1をそれぞれFlag2~Flag5に入れ替えただけのものになります。(電車番号などは全く同じ)
多分、センサを踏んだ時、(一個後ろの閉塞区間が空くはずなので)後続の列車を発車させるように変えてやれば、実際の閉塞区間っぽい運転に見えるのかなあと思います。また停止でなくトロトロ運転に変えてやれば、3列車のぶつからないノロノロ運転スクリプトになるかなあと思います。
スクリプトの少しの入れ替えなので、そのうちやってみようかなあと思います。
2016-06-13 00:21
コメント(2)
トラックバック(0)
こんにちは。3列車の自動制御凄いですね。これに退避線で追い越しするスクリプトなどを考えたら頭がパンクしそうです。。
by MECY (2016-06-14 02:01)
コメントありがとうございます。
そうですね。もうパンクしてますね。今回のものも、もう余り細部を考えずに作っています。
今回はS88センサ基準で作っているのですが、電車基準で作ると少し見やすくなるかなあと思っております。
by fujigaya2 (2016-06-15 00:23)