見出し画像

Rosso Laboratory

ドア開閉で比較

前回までは踏切にてVRMスクリプトとPythonスクリプトでどちらが簡単かを比較しましたが、今回は同じ鉄道模型シミュレーターNXにて自動センサー制御とPythonスクリプトでどちらが簡単かをドア開閉で比較します。

自動センサーですと、


センサーを踏んでから0秒後に減速開始し435mm先で停止。(5秒以内に止まることをチェックした上で)
センサーを踏んでから5秒後にホームドアを開く。
センサーを踏んでから6秒後に車両のドアを開く。
センサーを踏んでから12秒後に車両のドアを閉じる。
センサーを踏んでから13秒後にホームドアを閉じる。
センサーを踏んでから15秒後に車両出発。
センサーを踏んでから25秒後に加速開始し1000mmで100km/hへ。

となり、全て「センサーを踏んでから何秒後に」という指示になります。一方Pythonスクリプトですと、

LAYOUT ← ホームドアは初期状態で開いているため、これは自動センサー制御でも必要
    if ev == 'init':
        vrmapi.LAYOUT().CrossingGroupCTRL("door01", 2)

TRAIN
    elif ev == 'after':
        if param['eventUID'] == 100:
            obj.CloseDoor(0, False)
            vrmapi.LAYOUT().CrossingGroupCTRL("door01", 2)
            obj.SetEventAfter(3,200)
        if param['eventUID'] == 200:
            obj.AutoSpeedCTRL(400,1.0)
    elif ev == 'autospeed':
        s = obj.GetSpeed()
        if s == 0:
            obj.OpenDoor(0, False)
            vrmapi.LAYOUT().CrossingGroupCTRL("door01", 1)
            obj.SetEventAfter(10,100)

SENSOR
    if ev == 'init':
        obj.SetSNSMode(0)
    elif ev == 'catch':
        train = obj.GetTrain()
        train.AutoSpeedCTRL(435,0)

センサーで検知した車両を435mm先で速度0にし、
autospeedイベント完了時に速度0なら車両とホームドアを開き10秒待つ。
10秒経ったら車両とホームドアを閉じ3秒待つ。
3秒経ったら400mm先で速度MAXへ。

という風に「センサーを踏んでから何秒後」という時間の考え方は必要なくなります。この方が考え方としては自然です。

よってPythonスクリプトが書ける人ならば恐らくスクリプトの方がラクでしょう。プログラムは全然書けないという人なら自動センサー制御しかありませんが、ちょっと考え方が面倒なだけで特に難しい訳ではありませんから心配は無用です。但しこれは駅が1つだけの場合の話で2つ3つと駅が増えてくると自動センサーのコピペとちょっとした書き換えで対応できる自動センサー制御の方がラクであろうと思われます。
PVアクセスランキング にほんブログ村


ランキングに参加中。クリックして応援お願いします!

名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「Pythonスクリプト」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事