2台同時動作について説明します。
This section describes the operation of two simultaneous.
import jarray
import jmri
class A_2dai(jmri.jmrit.automat.AbstractAutomaton) :
def init(self):
self.Sensor9 = sensors.provideSensor("9")
self.Sensor8 = sensors.provideSensor("8")
self.Sensor7 = sensors.provideSensor("7")
self.Sensor6 = sensors.provideSensor("6")
self.Sensor5 = sensors.provideSensor("5")
self.Sensor4 = sensors.provideSensor("4")
self.Sensor3 = sensors.provideSensor("3")
self.Sensor2 = sensors.provideSensor("2")
self.Sensor1 = sensors.provideSensor("1")
self.throttle = self.getThrottle(5, True) # address 5
self.t2 = turnouts. provideTurnout("2") # point address 2
self.t1 = turnouts. provideTurnout("1") # point address 1
if (self.throttle == None) :
print "Couldn't assign throttle!"
return
def handle(self):
self.t2.state = CLOSED # point straight
self.waitMsec(500)
self.t1.state = THROWN # point curve
self.throttle.setIsForward(True)
self.throttle.speedSetting = 0.24
self.waitSensorActive(self.Sensor3)
self.t1.state = CLOSED # point straight
self.throttle = self.getThrottle(3, True) # address 3
self.throttle.setIsForward(True)
self.throttle.speedSetting = 0.17
self.waitSensorActive(self.Sensor2)
self.throttle = self.getThrottle(5, True) # address 5
self.waitSensorActive(self.Sensor6)
self.t1.state = THROWN # point curve
self.waitSensorActive(self.Sensor7)
self.waitMsec(700)
self.throttle.speedSetting = 0
self.waitMsec(500)
self.t1.state = CLOSED # point straight
self.throttle = self.getThrottle(3, True) # address 3
self.waitSensorActive(self.Sensor1)
self.waitMsec(500)
self.throttle.speedSetting = 0
self.waitMsec(1500)
return 1# to continue
# create one of these
a = A_2dai()
# set the name
a.setName("2dai script")
# and start it running
a.start()
操作したい車両番号を以下のように都度指定していって、そのあとで方向やスピードを指示します。
self.throttle = self.getThrottle(5, True) # address 5
self.throttle = self.getThrottle(3, True) # address 3
ここで注意が必要なのですが、以下のセンシングではどちらの車両が通過してもアクティブになります。
self.waitSensorActive(self.Sensor3)
self.waitSensorActive(self.Sensor2)
self.waitSensorActive(self.Sensor6)
self.waitSensorActive(self.Sensor7)
self.waitSensorActive(self.Sensor1)
車両の操作はいずれかを指定できるのですが、センシングではそれができません。
なので、車両の動きをある程度想定してスクリプトを組む必要があります。
とはいえ、2台ぐらいであれば特に支障なく、”どちらかでアクティブ” で動作させることができます。
実際に動作させた様子が以下の動画です。
全体のエリアを使って、2台同時に動かしてみます。
スクリプトは、以下のとおりです。
1台出発したあとで、もう1台動き出します。
最後に元の場所で停止します。