見出し画像

Rosso Laboratory

1閉塞1センサーで簡単閉塞スクリプト

1本道の単純な閉塞を1閉塞あたり1個のセンサーで再現しました。それぞれで設定する項目は赤文字のところです。

#----------------
#複線閉塞センサー
#----------------
#OBJID=62
import vrmapi
def vrmevent_62(obj,ev,param):
    di = obj.GetDict()
    if ev == 'init':
        di['previous_area'] = '閉塞05' #前閉塞
        di['present_area'] = '閉塞01' #現閉塞
        di['next_area'] = '閉塞02' #次閉塞
        di['stp_distance'] = 1000.0 #停止距離
        di['rs_distance'] = 300.0 #再始動距離
        di['rs_voltage'] = 0.8 #再始動電圧
        di['train'] = 0
        di['evid'] = 0
    elif ev == 'broadcast':
        dummy = 1
    elif ev == 'timer':
        if param['eventUID'] == 100:
            if vrmapi.LAYOUT().GetStatusDataInt(di['next_area']) == 0:
                di['train'].AutoSpeedCTRL(di['rs_distance'],di['rs_voltage'])
                obj.ResetEvent(di['evid'])
    elif ev == 'time':
        dummy = 1
    elif ev == 'after':
        dummy = 1
    elif ev == 'frame':
        dummy = 1
    elif ev == 'catch':
        if obj.GetForward() == 1:
            di['train'] = obj.GetTrain()
            vrmapi.LAYOUT().SetStatusDataInt(di['previous_area'] , 0)
            vrmapi.LAYOUT().SetStatusDataInt(di['present_area'] , 1)
            if vrmapi.LAYOUT().GetStatusDataInt(di['next_area']) == 1:
                di['train'].AutoSpeedCTRL(di['stp_distance'],0.0)
                di['evid'] = obj.SetEventTimer(1.0,100)

おまけの閉塞2灯信号機スクリプトです。信号機にスクリプトを書き込んでいて単独で動作するので信号機なしでも複線閉塞センサーは動作します。
#----------------
#閉塞2灯信号機
#----------------
#OBJID=58
import vrmapi
def vrmevent_58(obj,ev,param):
    di = obj.GetDict()
    if ev == 'init':
        di['next_area'] = '閉塞02' #監視対象閉塞
        obj.SetEventTimer(1.0,100)
    elif ev == 'broadcast':
        dummy = 1
    elif ev == 'timer':
        if param['eventUID'] == 100:
            if vrmapi.LAYOUT().GetStatusDataInt(di['next_area']) == 0:
                obj.SetStat(0,6)
            elif vrmapi.LAYOUT().GetStatusDataInt(di['next_area']) == 1:
                obj.SetStat(0,1)
    elif ev == 'time':
        dummy = 1
    elif ev == 'after':
        dummy = 1
    elif ev == 'frame':
        dummy = 1
    elif ev == 'set':
        dummy = 1

レイアウトは全部で5個の閉塞で構築されています。それでは動画でどうぞ(^^)/

鉄道模型シミュレーターNX1閉塞1センサーで簡単閉塞スクリプト
PVアクセスランキング にほんブログ村


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

名前:
コメント:

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

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

 

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

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

最新の画像もっと見る

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

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