単純折り返し動作(センサ+ポイント)について説明します。

Simple wrapping behavior (sensor + point) describes.

以下の”エリア4”、”エリア5”と”エリア8”をセンシングすることで、ポイント(分岐器)を交えた自動運転してみます。

実際のスクリプトは、以下のとおりです。

これで実行すると、「”エリア4”→”エリア5”→”エリア8”→”エリア5”→元に戻る」

を繰り返す動作をします。

import jarray

import jmri


class A_singlepoint(jmri.jmrit.automat.AbstractAutomaton) :

    def init(self):

        self.Sensor8 = sensors.provideSensor("8")

        self.Sensor5 = sensors.provideSensor("5")

        self.Sensor4 = sensors.provideSensor("4")

        self.throttle = self.getThrottle(5, True)  # address 5

        self.t2 = turnouts. provideTurnout("2") # point address 2


        if (self.throttle == None) :

            print "Couldn't assign throttle!"

        return


    def handle(self):


        self.t2.state = CLOSED # point straight


        self.throttle.setIsForward(True)

        self.throttle.speedSetting = 0.31

        self.waitSensorActive(self.Sensor5)

        self.waitMsec(500)

        self.throttle.speedSetting = 0

        self.waitMsec(1500)


        self.t2.state = THROWN # point curve


        self.throttle.setIsForward(False)

        self.throttle.speedSetting = 0.31

        self.waitSensorActive(self.Sensor8)

        self.throttle.speedSetting = 0

        self.waitMsec(1500)


        self.throttle.setIsForward(True)

        self.throttle.speedSetting = 0.31

        self.waitSensorActive(self.Sensor5)

        self.waitMsec(500)

        self.throttle.speedSetting = 0

        self.waitMsec(1500)


        self.t2.state = CLOSED # point straight


        self.throttle.setIsForward(False)

        self.throttle.speedSetting = 0.31

        self.waitSensorActive(self.Sensor4)

        self.throttle.speedSetting = 0

        self.waitMsec(1500)


        return 1# to continue


# create one of these

a = A_singlepoint()


# set the name

a.setName(" A_singlepoint script")


# and start it running

a.start()

上記の赤文字部分が、ポイント設定部になります。

例をとって説明します。


    self.t2 = turnouts. provideTurnout("2") # point address 2



ポイントアドレス”2”に設定されたポイントを”t2”とします。

※:ポイントアドレスの設定はDSC50Kにて事前に行っておきます)


    self.t2.state = CLOSED # point straight



“t2”を”まっすぐ”に設定します。

上記スクリプトでは、車両を動かす前にまずデフォルトの”まっすぐ”にしています。


    self.t2.state = THROWN # point curve


“t2”を”まがる”に設定します。

上記スクリプトでは、エリア5に到着したあとでポイントを”まがる”にしています。


実際に動かした動かした様子が以下の動画です。